28

» WarCraft 3 / Скилл под лупу (Утечки)

Я сам не верил, пока лично не столкнулся.
А что с периодическим таймером не так?
Кроме бага с ResumeTimer().
28

» WarCraft 3 / Что я сделал не так?

AserJes:
Поставь своему даммику Abilities - Cast Point и Abilities - Backswing Point на 0.
28

» WarCraft 3 / Что я сделал не так?

нет.
Ну вообще-то да. В настройках юнита ставишь время каста на ноль (Cast Point и Cast Backswing), и все абилки кастуются мгновенно. Проверял кучу раз.
28

» WarCraft 3 / Что я сделал не так?

Fakov:
0.02 секунды вейт слишком короткий, каст ножа не успевает произойти - даммик удаляется раньше.
Надо даммику время каста поставить на 0, и увеличить немного вейт. А лучше вместо вейта триггер с событием "Юнит закончил применять способность".
28

» WarCraft 3 / Кель из Heroes of the Storm

IsUnitType(u, UNIT_TYPE_DEAD) вернет false, если u == null. То есть функция скажет, что несуществующий юнит еще живой.
Я об этом и написал в комментарии. Такое поведение логично, нужно отдельно проверять, если юнита нет.
DracoL1ch:
есть четкая нативка UnitAlive
Я почему-то думал, что это функция берёт integer как аргумент.
28

» WarCraft 3 / Кель из Heroes of the Storm

Многие программисты говорят, что в загруженных картах эта функция (и именно цифра 0.405) лучше и надежнее.
Лучше и надёжнее использовать эти функции.
function UnitIsAlive takes unit u returns boolean
    return not IsUnitType(u, UNIT_TYPE_DEAD)
endfunction

function UnitIsDead takes unit u returns boolean
    return IsUnitType(u, UNIT_TYPE_DEAD) // returns false, if unit does not exist.
endfunction
28

» WarCraft 3 / Некорректные числа в таблицах после слк оптимизации

Есть же "Найти и заменить".
Открываем .slk Excel, жмём Ctrl+H, пишем что ищем и на что заменяем. Там также будет кнопка "Найти всё", "Заменить всё".
Можешь мне кинуть в ЛС, заменю, вышлю с заменёнными.
slk можно и блокнотом открыть.
28

» WarCraft 3 / Некорректные числа в таблицах после слк оптимизации

Есть же "Найти и заменить".
Открываем .slk Excel, жмём Ctrl+H, пишем что ищем и на что заменяем. Там также будет кнопка "Найти всё", "Заменить всё".
28

» WarCraft 3 / Приказ строить через способность здания

crusader556:
Extremator:
Топорно, но... суть думаю поймёшь
Годнота , как раз то что я хотел. Можно как то будет запилить способность-спеллбук для здания , чтобы поместить туда все способности-приказы к строительству ? Достаточно будет переделать дефолт способность предмета ?
Да, достаточно. Про спеллбук прочитай тут.
28

» WarCraft 3 / Приказ строить через способность здания

В инкубаторе ничего не нанимается (кроме королев), там есть кнопка "Выбрать личинок".

Нужен 1 триггер на использование способности. Юнит использует такую-то способность -> снять выделение и выделить того-то.
28

» WarCraft 3 / Награда за юнитов противника

Fly123:
quq_CCCP, это надо в константах искать или в редакторе объектов?
В редакторе триггеров при инициализации.
28

» WarCraft 3 / Как прикрепить оружие и броню на юнита

Ползуй флаг альянса
Вот только визуального эффекта знамёна не дают.

Вот карта, где показано, что абилки флага визуального эффекта не дают.
Тестировали бы сначала, перед тем как советы давать.
UPD: способности флага чисто предметные способности, в предметах работают как надо. Если же дать способности юниту, то они не работают.
Загруженные файлы
28

» WarCraft 3 / vjass структуры, проблема наследования

Прошёл день, а кода в ЛС я не увидел, проблема решена?

Ты делаешь каст integerа в Tracker, потому вызывается метод, описанный в Tracker.
А вот это неправда, и в этом случае вызывается так, как я описал в комментарии 7.
То есть даже код из вопроса работает, как нужно.
Небольшой совет: определение метода нужно писать над кодом, в котором этот метод передаётся как code, иначе на самом деле будет передана функция, что вызывает триггер, в котором уже вызывается указанный метод.

Карта, в которой есть подтверждения моих слов.
Загруженные файлы
28

» WarCraft 3 / vjass структуры, проблема наследования

у меня есть привычка проверять сначала, если не уверен) так что да, тестировал, не работает, getTrack, который принадлежит Tracker, его и возвращает.
Попробуй так.
    static method defaultTrack takes nothing returns nothing
        local thistype h = getTrack(GetHandleId(GetTriggeringTrackable()))
        call h.OnTrack()
    endmethod
Если и это не сработает, то правьте руки кинь свой код Tracker и его детей в мне в ЛС. Я уж гляну, что к чему.
28

» WarCraft 3 / vjass структуры, проблема наследования

да вот только thistype возвращает структуру из которой он вызван, а не структуру инстанса идентификатора, т.е. getTrack будет всегда возвращать тип Tracker. Вопрос в том, как по идентификатору определить конкретный тип структуры и к нему привести.
Этот код тестировал? Он должен работать.

Структуры в vJass - массивы. Объект структуры - integer.
У каждой структуры есть массив, куда записывается тип каждого объекта структуры. Пусть у Trackle айди 1, а у Button 2. При создании объекта структуры будет сделано следующее: set массив_куда_записывается_тип[объект_структуры] = айди_структуры. При создании объекта Button и в массив типа структуры Button, и в массив структуры Trackle будет записано 2.

Перезаписываемые методы - массив триггеров, у которых в качестве условия записано тело метода.
Вызов такого метода - call TriggerEvaluate(массив_триггеров[массив_куда_записывается_тип[объект_структуры]]).
В нашем случае это будет выглядеть call TriggerEvaluate(массив_триггеров_OnTrack[массив_куда_записывается_тип[getTrack(h)]]).

Потому должно работать.
28

» WarCraft 3 / vjass структуры, проблема наследования

вот только беда в том, что при регистрации TriggerAddAction(trk.t_track,function Tracker.defaultTrack) я должен указать именно статичную функцию, а вот с нее уже вызвать наследованную.
Так должно работать как нужно.
struct Tracker
    static method getTrack takes integer h returns thistype
        return LoadInteger(hash, h, 1)
    endmethod

    stub method OnTrack takes nothing returns nothing
        call echo("track1")
    endmethod

    static method defaultTrack takes nothing returns nothing
        local integer h = GetHandleId(GetTriggeringTrackable())
        call getTrack(h).OnTrack()
    endmethod
endstruct

struct Button extends Tracker
    stub method OnTrack takes nothing returns nothing
        call echo("track2")
    endmethod
endstruct
интерфейсы юзай
Ему же нужно создавать объект типа Tracker.
28

» WarCraft 3 / vjass структуры, проблема наследования

Я не понял, что ты хочешь, но в vJass есть каст структур Нужный_тип(переменная_структуры_другого_типа).

Также по правилам ООП в переменной типа Tracker может быть как объект типа Traker, так и объект его детей.
struct MyTracker extends Tracker
    method OnTrack takes nothing return nothing
        call DisplayTextToPlayer(Player(0), 0., 0., 5. "HAHAHAH")
    endmethod
endstruct
...
function f takes nothing returns nothing
    Tracker t = MyTracker.create();
    t.OnTarck(); // выведет текст "HAHAHAH" и ничего больше не сделает.
endfunction

Вроде понял.
Ты делаешь каст integerа в Tracker, потому вызывается метод, описанный в Tracker. Если делаешь каст в Button, то сработает метод Button. Тебе нужно сделать метод defaultTrack не статичным и перезаписываемым.

Вот как я решил твою проблему.
struct Tracker
    ...
    static method getTrack takes nothing returns thistype
        return LoadInteger(hash,H2I(GetTriggeringTrackable()),1)
    endmethod

    stub method OnTrack takes nothing returns nothing
        call echo("track1")
    endmethod
endstruct

struct Button extends Tracker
    method OnTrack takes nothing returns nothing
        call echo("track2")
    endmethod
endstruct
...
function f1 takes nothing returns nothing
    local Button t = Tracker.getTrack()
    call t.OnTrack() // будет вызвано echo("track2").
endfunction

// Делает тоже самое, что и f1.
function f2 takes nothing returns nothing
    call Button(Tracker.getTrack()).OnTrack() // будет вызвано echo("track2").
endfunction
28

» WarCraft 3 / Экран статистики

pro100master прав, перед концом игры удаляешь всех героев или передаёшь их нейтралам.
28

» WarCraft 3 / Урон в зависимости характеристик

Не надо ловить 0.
Верно, 0 урона ещё также наносится как начало и конец некоторых баффов, при касет Канала на цель (если стоит галка Physical Spell), и если цель неуязвима.
28

» WarCraft 3 / эффект

знамя альянса
Сколько раз уже говорилось, что предметы типа "знамя" не работают. Вот тут есть исчерпывающие ответы.
28

» WarCraft 3 / Воскрешение с шанцем

Вместо тысячи слов...
Вот карта, где есть воскрешение с шансом.

В карте есть Рыцарь с этой способностью.

  1. Напишите в чат ', чтобы убить Рыцаря.
  2. Будет сообщение о детекте смерти с отображением случайного из {1, 2, 3} числа.
  3. Если способность на кд, то сообщения о детекте смерти не будет, и, что логично, Рыцарь не будет воскрешён.
  1. Если 1, то Рыцарь будет воскрешён своей способностью. Способность уйдёт в кд.
  2. Если же не 1, то Рыцарь умрёт.
  3. Чтобы воскресить Рыцаря, не используя его способность, напишите в чат '.

Если будут вопросы по этой наработке, пишите.
Сделал для одного юнита на гуи, со структурами или хештаблицей можно такое же сделать для нескольких юнитов на карте.
Загруженные файлы