30

» WarCraft 3 / Warcraft III: Reforged PTR – Версия 1.35

А шаринг сломанных 1.26 разлетаются как горячие пирожки, даже модерировать не успеваем.
А можно легально скачать 1.26?
30

» WarCraft 3 / UjAPI + lua: Настройка

Кау использовать конвертор xgm.guru/p/wc3/237543
Спс, добавил в статью.
А тфу, это тулза. Она без изъянов работает?
Одиночные либы норм конвертит, с зависимостями могут быть проблемы. Гуи конверт вообще идеально.
30

» WarCraft 3 / Проблема в триггерах

Принятый ответ
Заводишь группу игроков. После поражения игрока добавляешь его в группу. Потом считаешь игроков в группе. Если их три, то отображаешь победу.
30

» WarCraft 3 / Проблема в триггерах

Предупреждение автору публикации
замечание: 10.4 Создание ресурса, название которого не отражает суть вопроса.
30

» WarCraft 3 / [lua]Не получается запустить редактор и игру,Lua+VScode|cheapack

Остался один вопросик, у меня почему то карта сразу не запускается с пустым кодом?
Потому что, в том же репозитории это описано.
Проблема в том, что сложно отличить пользовательский код от сгенерированного редактором и удалить его, а так же поместить его в то же место, куда помещает его редактор. Поэтому было найдено простое решение - пометить место вставки Custom code, чтоб не заниматься семантическим анализом. Что позволило значительно ускорить запуск и работу сборщика, но потребовало один раз сохранить карту в редакторе после сборки. Это маленькое неудобство позволило сэкономить огромное количество времени.
Загруженные файлы
30

» WarCraft 3 / Warcraft III: Reforged PTR – Версия 1.35

Запрещена загрузка пользовательских кампаний, названных так же, как официальные кампании, чтобы предотвратить блокировку сохранения.
Тоесть пользовательские сохранения можно перетирать?
30

» WarCraft 3 / [lua]Не получается запустить редактор и игру,Lua+VScode|cheapack

Принятый ответ
Папка src должна быть не в карте, а в той же папке. Зачем импортировать в карту скрипты, которые нужны только для сборки?
Загруженные файлы
30

» WarCraft 3 / Где в Warcraft 3 Reforged запустить доп. кампании?

Предупреждение автору публикации
замечание: 10.4 Создание ресурса, название которого не отражает суть вопроса.
30

» WarCraft 3 / Как запретить юниту/герою брать определённый предмет?

Принятый ответ
Или подменять предмет в инвентаре на пустышку с надписью Не даёт эффекта или просто выбрасывать на землю.
30

» WarCraft 3 / Как сменить вид прицела на скилле?

Принятый ответ
Наверное любой скилл с радиусом, как огненный столб
Как уже писалось выше, круг прицела зависит от поля Раса у юнита.
Стандартным заклинаниям добавить/убрать круг прицеливания невозможно штатными средствами.
При использовании Канал для триггерных заклинаний, круг прицелвания можно настроить соответствующей галкой.
30

» WarCraft 3 / Культисты 3.5 | Многопользовательская детектив-игра в Warcraft 3

Ибо, мне тестить её не с кем, а в одиночку нельзя нормально проверить её. Ибо игра - кооперативная.
MultiWindow в помощь.
30

» В гостях у Эльрата / Новогодние карикатуры

Новогодняя карикатура точно поможет сделать сайт лучше ;)
Карикатура врятли, а новогодняя аватарка может придать праздничного настроения.
30

» WarCraft 3 / Связанные юниты

native UnitAlive takes unit u returns boolean

//! zinc
    library DeathTie {
        hashtable HT = InitHashtable();
        key K;
        
        function onInit() {
            integer i;
            trigger ts = CreateTrigger();
            trigger td = CreateTrigger();
            player p;
    
            for (0 <= i < bj_MAX_PLAYER_SLOTS) {
                p = Player(i);
                TriggerRegisterPlayerUnitEvent(ts, p, EVENT_PLAYER_UNIT_SPELL_EFFECT, null);
                TriggerRegisterPlayerUnitEvent(td, p, EVENT_PLAYER_UNIT_DEATH, null);
            }

            // spell
            TriggerAddCondition(ts, Filter(function() -> boolean {
                return GetSpellAbilityId() == 'Ainf';
            }));

            TriggerAddAction(ts, function() {
                unit caster = GetTriggerUnit();
                unit target = GetSpellTargetUnit();
                integer cid = GetHandleId(caster);
                integer tid = GetHandleId(target);
                SaveUnitHandle(HT, cid, K, tid);
                SaveUnitHandle(HT, tid, K, cid);
                caster = null;
                target = null;
            });

            // die
            TriggerAddAction(td, function() {
                unit u = GetTriggerUnit();
                integer uid = GetHandleId(u);
                unit t;
                
                if (HaveSavedHandle(HT, uid, K)) {
                    t = LoadUnitHandle(HT, uid, K);
                    if (UnitAlive(t)) {
                        KillUnit(t);
                    }
                }

                u = null;
                t = null;

            });

            // leaks
            ts = null;
            td = null;
        }

    }

//! endzinc