28

» WarCraft 3 / Как сделать уменьшение жизни или ограниченное время жизни нас.

Принятый ответ
Нужно сделать воину чтобы здоровье автоматически убовлялось
Выбрать поле со значением Регенерации в Редакторе Объектов, нажать Shift+Enter, написать отрицательное число, нажать Enter.
Перед этим нужно разрешить редактору ставить отрицательные значения. Об этом сказано тут.
как сделать Ограниченное время жизни например как у способности призыва кабана
Это только через Редактор Триггеров. Действия -> Боевая единица -> появится список действий, в котором и есть необходимое действие.
28

» Wisp TD / Механики

Скриншоты добавлю, как только приду домой.
База будет потихоньку пополняться, это титульная статья, в подстатьях будет раскрываться больше.
Залил скриншоты, оставляйте свои замечания.
28

» Гильдия «Черамор» / Библиотека Lua-Warcraft3

Привычка, типа возвращает "none" в непредвиденных ситуациях, т.е. что якобы ничего не сделал или не получал, что-то вроде дебаг-ретурна. Пора бы избавится от этой вредной привычки.
У тебя было 2 ветки: при true и при false, потому последний ретурн никогда бы не выполнился, это недосягаемый кусок кода.

Я бы назвал не optype, а type_orig.
28

» WarCraft 3 / [Lua] Инжект функций

А где мой комментарий про инжект main?
Я же верно понимаю, что сначала выполнится блок do end с инжектом, и во время инициализации запуститься изменённая функция main?
Нашёл, спасибо за ответ.
28

» Гильдия «Черамор» / Библиотека Lua-Warcraft3

KingMaximax, а зачем в конце ещё 1 return?
раскрыть
function usertype(ptr)
    local typ = type(ptr)
    if typ == "userdata" then
        typ = string.match(tostring(ptr),"([^%%s]+):")
        if typ == nil then
            typ = string.match(tostring(ptr),"([^%%s]+)")
        end
    end
    return typ
end
28

» WarCraft 3 / [Lua] Инжект функций

По поводу инжекта main: иными словами я вовсе могу изменить данную функцию, и во время инициализации запустится моя версия?
28

» WarCraft 3 / Вопросы по Lua

'A0E5'
В Lua одинарные кавычки означают строку. Нужно либо вручную переводить равкоды в числа, либо воспользоваться встроенной функцией FourCC, которая сконвертирует строку в равкод во время выполнения.
28

» WarCraft 3 / Два мультиборда в игре

Неправда.
Правда на 1.26, а на последнем патче я бы предпочёл кастомный мультибоард, ибо у стандартного багов много.
28

» WarCraft 3 / Скрыть способность юнита

crusader556, эта функция могла быть добавлена и раньше, может, в 1.29, то раз ты в 1.26, то не подойдёт.
28

» WarCraft 3 / Скрыть способность юнита

На последнем патче есть такая функция, но я ей не пробовал, может, то, что нужно.
native BlzUnitHideAbility                          takes unit whichUnit, integer abilId, boolean flag returns nothing
28

» WarCraft 3 / Скрыть способность юнита

Если вертолёт единственен для игрока, то можно просто блокировать способности для игркока.
28

» WarCraft 3 / Событие на вход в воду

+когда я уничтожал таймер, то появлялся баг и он тупо прогонял if
Перед уничтожением периодического таймера его нужно ставить на паузу, так как нередко бывали ситуации, что таймер запускал коллбек и удалялся, GetExpiredTimer() возвращало null. Особенно это касается малых периодов и периода в 0. Поэтому у тебя всё и заработало при паузе таймеров.

и не стоит использовать условия триггеров
на них есть множество ограничений
не только по количеству операций но и по времени работы
Лично я в это слабо верю, у меня вся карта на структкрах vJass, который абузит triggercondition, проблем не видел.
Кроме того, некоторые говорят только их и использовать, так как triggeraction создаёт объект, который никак нельзя удалить. Но и в это мне слабо верится.

в нём нельзя вызывать функции
это не только в jass
это в любом структурном яп так
Функции вызывать можно, но не все. Так-то в той же Java я могу вызвать функцию из другого класса при объявлении константы к другом классе. Но лучше так не делать.

CreateRegion() фаталит карту при вызове в блоке глобалок скорее потому, что вызовы в блоке глобалок делаются во время создания лобби карты. Во время лобби ландшафта нет, потому и регионов не может быть.
28

» WarCraft 3 / Локальный массив Jass

TeX13, никак, он всегда постоянный. На патчах игры до 1.29 размер 8192, с 1.29 - 32768.
28

» WarCraft 3 / Локальный массив Jass

Принятый ответ
Только так.
local integer array arr
28

» WarCraft 3 / Не создаётся предмет

Работает! Спасибо, нда вот такие тонкости Lua... :)
FourCC просто конвертирует строку в число, Lua тут не причём.
28

» WarCraft 3 / Не создаётся предмет

Принятый ответ
DarkLigthing, в Lua одинарные кавычки означают строку. Нужно обернуть равкод в вызов функции FourCC.
CreateItem(FourCC('pmna'), GetUnitX(u), GetUnitY(u))
Также рекомендую не называть переменную unit, всё-таки это нативный тип.
28

» WarCraft 3 / Событие - игрок ливает

событие лива
function InitTrig_zi1 takes nothing returns nothing
    local integer a = 0
    set gg_trg_zi1 = CreateTrigger( )
    call TriggerAddAction( gg_trg_zi1, function player_left )
    loop
        call TriggerRegisterPlayerEventLeave( gg_trg_zi1, Player(a) )
        set a = a + 1
        exitwhen a == bj_MAX_PLAYERS
    endloop
endfunction
28

» WarCraft 3 / Как исправить "бесконечную" покупку нестандартных героев?

Принятый ответ
ap6y3uk, во время инициализации поставь лимит на тренировку героев.
Событие: Инициализация карты
Действия:
Вместо Footman поставь тип своего героя. И так для каждого типа, то есть в цикле должно быть 3 таких действия в твоём случае.
Загруженные файлы