NazarPunk #1 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Игровые зоны.

Так можно добавить все Rect в Region и использовать IsPointInRegion().
NazarPunk #2 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Высота камеры

Можно взять наработку со строками.
NazarPunk #3 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Как триггерно толкать юнита

Установи Escape System, там всё с коробки есть.
NazarPunk #4 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Стоит курьеру сдохнуть над непроходимым местом (именно рельефом, а не деструктаблами, склон или еще чего ).
А если ему перерождение выдать?
NazarPunk #5 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Стаки с атак(чек описание)

я пытался так сделать, не вышло
Странно. Почему не вышло то?
NazarPunk #6 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Стаки с атак(чек описание)

Можно запилить три разных бафа и тупо их перекастовывать.
NazarPunk #7 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Где???
Здесь я помню делал разложение в ноль, чтоб сразу исчезали. А так да, проще сохранить предметы и количество зарядов в таблицу и тупо пересоздавать.

Или можно проще, сразу создавать нового курьера, передавать ему вещи и хайдить.
NazarPunk #8 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Bergi_Bear, Так установить время разложения летуна в 100500 и ручками удалять.

Код там правильный
Зато мой вариант читабельней)
NazarPunk #9 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Итак попросил одного грамотного человека в Jass
Что то я сомневаюсь в его грамотности, скорее всего это гуишник. Грамотный человек бы использовал zinc.
//! zinc
library Courier {
    function onInit() {
        udg_GAME_BASE_RECT = gg_rct_Baza;
        udg_GAME_RECT_BACKCOUR = gg_rct_KURA;
        udg_GAME_COURIER_UP_COST[1] = 100;
        udg_GAME_COURIER_UP_COST[2] = 500;
        udg_GAME_BUYER_TYPE = 'H017';
    
        udg_GAME_COURIER_TYPE[1] = 'u000';
        udg_GAME_COURIER_TYPE[2] = 'u00J';
        udg_GAME_COURIER_TYPE[3] = 'u00A';
    
        udg_GAME_COURIER_SPELLS[1] = 'A0EA';
        udg_GAME_COURIER_SPELLS[2] = 'A0E9';
        udg_GAME_COURIER_SPELLS[3] = 'S001';
        udg_GAME_COURIER_SPELLS[4] = 'S002';

        trigger t = CreateTrigger();

        for (0 <= i < bj_MAX_PLAYER_SLOTS){
            TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null);
        }

        TriggerAddCondition(t, Filter(function() -> boolean {
            return GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[1] 
                    || 
                    GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[2] 
                    || 
                    GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[3];
        }));

        TriggerAddAction( t, function() {
            unit d = GetDyingUnit();
            player p = GetOwningPlayer(d);
            item ITEM[];
            timer t = CreateTimer();
            timerdialog td = CreateTimerDialog(t);
            integer i, HNDL = GetHandleId(t);
            for (0 <= i < 6){
                ITEM[i] = UnitItemInSlot(d, i);
            }
            TimerStart(t, 30.00, false, null);
            TimerDialogSetTitle(td, "Курьер: ");
            if (GetLocalPlayer() == p){
                TimerDialogDisplay(td, true)
            }
            TriggerSleepAction( 30.00 );
            
            unit cu = CreateUnit(p, GetUnitTypeId(d), GetRectCenterX(udg_GAME_RECT_BACKCOUR), GetRectCenterY(udg_GAME_RECT_BACKCOUR), 270.00);
            DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ReviveHuman\\ReviveHuman.mdl", GetRectCenterX(udg_GAME_RECT_BACKCOUR), GetRectCenterY(udg_GAME_RECT_BACKCOUR)));
            
            for (0 <= i < 6){
                UnitAddItemByIdSwapped( GetItemTypeId(ITEM[i]), cu);
            }
            cu = null;
            d = null;
            DestroyTimer(t);
            t = null;
            DestroyTimerDialog(td);
            td = null;
        });

        t = null;    
    }
}
//! endzinc
TriggerSleepAction это вобще зло и нужно нормально на таймерах/хэштаблицах делать.
NazarPunk #10 - 1 year ago 2
Голосов: +2 / -0

» WarCraft 3 / Проверка типа переменной

с typescript не знаком, но выглядит интересно.
Там основная идея отлавливать ошибки в compile-time, а не гадать, что же лежит в переменной.
NazarPunk #11 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Проверка типа переменной

Nelloy, зачем в рантайме проверки типа переменной делать? Если хочется строгих проверок типов, то typescript в помощь. Там и ООП есть)
NazarPunk #12 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Проверка типа переменной

Это для случаев, когда сам не знаешь что в переменной?
NazarPunk #13 - 1 year ago 2
Голосов: +3 / -1

» WarCraft 3 / Оптимизация.

Открой любую старую компанию близавскую, и посмотри как они в 10 тригеров вмещают часовую компанию с заданиями.
Так у них же все способности стандартные.
У них используются тригеры с одним событием, а дальше куча условий и действий для них. это никак не ломает и не тормозит игру, если не сидеть в ней по 10 часов.
Каждый случай нужно разбирать отдельно, вот например в отлове урона на 1.26 используется один триггер и для каждого юнита вешается событие.
Оптимизируй лучше вес карты, выкидывай тригерные способности которые можно заменить обычными правками в ПО
Зааачем? Если все способности триггерные, то к ним легче добавить нестандартное поведение. Например столкновение снарядов.
в 1.26 лучше все делать на jass.
Не просто jass, а vjass / zinc.
NazarPunk #14 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Есть ли у вакрафта проблема со строками и вывода текста?

понял что там какая то таблица, которая не дает генерировать похожие строки
Если в кратце то есть таблица строк, в которой все строки уникальны и если генерить 100500 разных строк, то она быстро засрётся. По логике вещей она должна очищаться со временем, но это варкрафт.
а нужно ли записывать все тексты в глобальный массив.
Это целиком вопрос удобства разработки. Тобишь делай как угодно.
Как это делает в гуи. Если записать текст в гуи, и создать. Потом эта строка заносится в массив
Гуи складывает всё в war3map.wts. При длительной разработке там может много хлама собраться.
но думаю можно попробовать искусственно вызвать тормоза
Можешь попробовать убрать весь текст и проверить, действительно ли в нём проблема.
NazarPunk, спасибо за отклик на глупые вопросы
Блин, забыл сказать, чё ты как нубяра на гуи пишешь, переходи на zinc/lua и будь нормальным мужиком!
NazarPunk #15 - 1 year ago (изм. ) 1
Голосов: +1 / -0

» WarCraft 3 / Есть ли у вакрафта проблема со строками и вывода текста?

О лимитах строк можно почитать здесь. И если память не изменяет, там ещё какой-то баг, был, из-за которого строки навсегда оставались в памяти.
NazarPunk #16 - 1 year ago 0
Голосов: +0 / -0

» Гильдия «Черамор» / Набор кандидат на пост руководителя с 2021 года

четкий план составь по разрешению на бухло, с пометками где брать бухло и как пить, что бы не обнаружить на утро заблеванный персидский ковер, которого не было раньше)
Это уже индивидуально
NazarPunk #17 - 1 year ago 0
Голосов: +0 / -0

» Гильдия «Черамор» / Набор кандидат на пост руководителя с 2021 года

Почему меня не включили?, я тоже предвыборный план скидывал.
NazarPunk #18 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Оптимизация.

Чтобы оптимизировать гуй муй, нужно перейти на jass(vjass/zinc) в 1.26 или lua в Reforged. Дальше в 1.26 о количестве триггеров можно не волноваться, а на lua можно сделать например так.
NazarPunk #19 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Возрождение с помощью камня воскрешения

вероятно люди не хотят тратить несколько недель своей жизни на изучение языка ради какой-то простой механики, вроде обычного камня-воскрешалки
И потом тратят гораздо больше чтобы накостылить на gui.

Как сделать с помощью триггеров, и чтобы было не так поломано, воскрешение с помошью камня воскрешения, как в кампании рексара?
Скопировать из кампании Рексара.
NazarPunk #20 - 1 year ago 4
Голосов: +4 / -0

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

Какие все добрые, раньше посылали статьи читать а теперь 3 примера скинули
Это демо версия сообщества, по истечении пробного периода включается токсичность участников)
NazarPunk #21 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

так не муи же
Дык берём индексер, запускаем таймер и при касте записываем в массив нужное количество хп, добавляем в группу героя и перебираем на каждый тик)
NazarPunk #22 - 1 year ago 1
Голосов: +1 / -0
NazarPunk #23 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

нужна хештаблица или структура, чтобы юнита через таймер передать, ты упустил самое важное
Если один герой на игрока, то 24 таймера и массив)
NazarPunk #24 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

Я уже не помню есть ли абилка с регеном не в %, а в абсолютных значениях.
Кажись у фонтана можно выбирать в каких значениях лечить.
NazarPunk #25 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

Боюсь это невозможно, слишком много триггеров.
Мой внутренний экстрасенс говорит, что если переписать на lua, то их станет в разы меньше.
NazarPunk #26 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Отнятие 50% хп и восстановление их обратно в течении времени

и там в настройках невозможно поменять язык кода с джаз на луа.
Если удалить весь custom code то можно.

но на джасс сложнее.. потребуется хештаблицы или структуры
Тут человек в gui не может, а ты такие умные слова говоришь))
NazarPunk #27 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Пример красивого анимированного loadscreen'a

На ресурсе нет такого Гайда :)
Всё в ваших руках)
NazarPunk #28 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Пример красивого анимированного loadscreen'a

Так поверх экрана можно ещё фрэймы рисовать.

Было бы неплохо, если бы был гайд как такое чудо делать)))
А поиск зачем придумали?
NazarPunk #30 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Что не так с комьюнити?

В целом что происходит на Xgm очень похоже на дедовщину, меня тоже шпуняли когда только сюда пришел
Я конечно пришёл позже, но вот как-то не заметил на себе шпыняния.
а некоторые из них админы (дарова, NazarPunk).
Возле моей аватарки значка админсостава не наблюдается и посему я такой же как и все нубы.
NazarPunk #31 - 1 year ago 0
Голосов: +0 / -0
NazarPunk #32 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Что не так с комьюнити?

в том то и дело он не задаёт вопрос как пользоваться ложкой, он на нас ругается, что его не покормили или не дали ложку
Как же ты не понимаешь, комьюнити же всем обязана.
NazarPunk #33 - 1 year ago -1
Голосов: +2 / -3

» WarCraft 3 / Что не так с комьюнити?

Мы ждём от вас, как от активных участников комьюнити, действий по исправлению токсичной атмосферы.
Некоторые участники думают что комьюнити им что-то должно. А от них вклада в развитие не дождёшся.
В данный момент сложилась ситуация, когда многие люди, которые разбираются в вопросах моддинга, ведут себя агрессивно. Но без них ответов и вовсе бы не было.
Вот какие негодяи, нашли время, разобрались в вопросе и сидят на знаниях, не делятся нискем.
NazarPunk #34 - 1 year ago (изм. ) 0
Голосов: +3 / -3

» WarCraft 3 / Что не так с комьюнити?

Хоть кто-нибудь кроме меня замечал это? Какого хрена задавая вопрос, ты позиционируешь себя в глазах общества, идиотом?
На нормально заданные вопросы приходят нормальные ответы.
Во-первых ты объективно не человек, потому что только представители ЛГБТ сообществ пишут не GUI.
А что, так сложно буквами писать?
Весь интернет и в том числе наш, священный сайт, полон ответов на твои вопросы.
Вообще-то в большинстве случаев помогает гугл, но почему-то люди предпочитают тратить чужое время.
А знаешь ли ты, как поставить голос? А как называется лицевая часть корпуса скрипки? Можешь ли ты свести вокал и музыку? Знаешь что такое рефлекс, светотень, лайн, набросок, чистка наброска, мид, сустейн, рефлексия, что такое асексуальность.
Но я же не лезу на профильные форумы с тупыми вопросами?
Ваши знания не делают вас лучше меня, и не дают прав, рассуждать, как мне следует расходовать свое время, и свои умственные ресурсы.
А расходовать чужое время право у вас есть?
NazarPunk #35 - 1 year ago 0
Голосов: +0 / -0

» Гильдия «Черамор» / Набор кандидат на пост руководителя с 2021 года

Если интересны итоги текущих руководителей, могу описать.
Огласите весь список)
NazarPunk #36 - 1 year ago 0
Голосов: +0 / -0

» Мир безумного / Ветераны Blizzard создали студию Frost Giant

хз, смотря какой будет подход
Исследование аудитории покажет широкий спрос на мобильные д*о*ильни)
NazarPunk #38 - 1 year ago 0
Голосов: +1 / -1

» WarCraft 3 / Утечки

векторы удобны тем что код упрощают. разве не так?
Многие вещи с векторами становится делать проще, но вот для простого движения по параболе зачем они нужны?
this.l = this.l + BarrelSpeedAdd;
this.x = this.x + BarrelSpeedAdd * this.cos;
this.y = this.y + BarrelSpeedAdd * this.sin;
this.z = ParabolaZ2(this.zs, this.ze, this.h, this.d, this.l);
                
SetUnitX(this.barrel, this.x);
SetUnitY(this.barrel, this.y);
SetUnitZ(this.barrel, this.z);
NazarPunk #39 - 1 year ago 1
Голосов: +1 / -0

» WarCraft 3 / Утечки

я не знаю cJass и vJass, я этим даже воспользоваться не смогу
Если не собираетешься переходить на Reforged, то ИМХО лучше разобраться с zinc, он реально удобен.
в той наработке вроде Zinc, если я не путаю с какой-то другой )
Для 1.26 у меня все наработки на zinc. Который по сути есть vJass.
Если на 1.26 работаешь, используй vJass и векторы
В чём удобство векторов на простых снарядах?
NazarPunk #40 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Утечки

Вот карта с вашим ограничением полёта, господи
Вот карта со снарядом без утечек.
Камон, мне просто нужна помощь, пожалуйста
Не у всех варкрафт установлен, а без него код не глянуть.
Прикрепленные файлы
NazarPunk #41 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / [Lua] Совместная работа над WC3 проектами

в исходный код глянь и разберись
обожаю советы в стиле почитать чужие исходники)
Я сам вот нашёл ceres-mpqtool где всё в одну строчку реализовано без всяких разбирательств:
$ mpqtool extract myarchive.mpq -o ./out
$ mpqtool view myarchive.mpq war3map.j
$ mpqtool new ./mydir myarhive.mpq 
$ mpqtool list myarchive.mpq -f "*.mdx"
NazarPunk #42 - 1 year ago 2
Голосов: +2 / -0

» WarCraft 3 / [Lua] Совместная работа над WC3 проектами

патч когда вышел с этим функционалом? месяца 3 назад
я старааааюсь...
NazarPunk #43 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / [Lua] Совместная работа над WC3 проектами

и когда ты добавил BlzFrameGetChildrenCount BlzFrameGetChild?
Судя по репозиторию в прошлом месяце.
Мне в админской телеге постучали и сказали что народ жаждет новых функций)
Прикрепленные файлы
NazarPunk #44 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Создаём фрейм на русских гуи триггерах

маловато, нужна функция для создания такого окна, нужна возможность задать его положение, поле для описания героя...
Ну так я же троеточие поставил, туда всё и поместим.
ну и самое печальное, так это допданные для triggerdata
Что-то я не понял насчёт допданных.
NazarPunk #45 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / Создаём фрейм на русских гуи триггерах

На старкрафте в общем в 1 строчку такое делается, так что сё таки придётся писать свои BJ, на стандарте будет по 10 строк
С интерфейсом удобнее из кода работать. Я всёравно склоняюсь готовым решениям и выведения настроек в гуи.
Напримерм выбор героя на фрэймах сделать, а из гуи только функции:
  • добавить героя
  • заблокировать героя
  • убрать героя
  • показать для игрока
  • ...
  • profit

Ну и везде в юнитах добавить вариант [Главный герой игрока]
NazarPunk #46 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Создаём фрейм на русских гуи триггерах

Самый лол, этот пост Дизлайкнуло 2 гуишника.
Так гуишники привыкли по кнопочкам из менюшечек тыкать, а не разрабатывать инструменты для своей же пользы.
NazarPunk #47 - 1 year ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 / [Lua] Совместная работа над WC3 проектами

у prog была своя програмка exe, хз даст ли он добро в публичный доступ это выложить?
Насколько я помню он сам её из плагина взял. Вот бы кто сравнение всех сборщиков сделал, я бы у самого быстрого попросил код для сборки))
ты вообще молодец, дал мне сборщика и пропал, а я с ним "долблюсь" по сей день.
Не судите меня строго, я вот файлы sdk в актуальности держу, чтоб у пользователей актуальные нативки были.
Хочешь программиста из меня сделать?
А за чем по твоему я на xgm пришёл?
мне нужна 1 кнопка Сделать всё хорошо
NazarPunk #48 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / [Lua] Совместная работа над WC3 проектами

Вспомнил, тест карты из WE копирует же оригинал в свою папку и игра запускается оттуда, почему не сделать также?
По идее можно собирать карту в папку backup и запускать уже её. как со своими конями разберусь, займусь этим)
NazarPunk #49 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / [Lua] Совместная работа над WC3 проектами

который позволит запускать игру при открытом WE
так WE блокирует файлы и игра крашится.

Во влажных мечтах вообще написать плагин для Intellij, чтоб редактор открывать только для ланда)
NazarPunk #50 - 1 year ago 0
Голосов: +0 / -0

» WarCraft 3 / Переключатель графического режима

я ему дал 3 war3map.w3i, которые я сделал методом сохранения и переключения параметра графики, а он на основе их запилил эту программку
Так скинь их сюда, через _file diff_ гляну.