28

» WarCraft 3 / Вопрос по механике вампиризма (триггерного) и отложению урона

Ну, я думаю как-то так?
А зачем условие про отданный приказ?
Далее, каждый раз, когда будет атакован твой героя, тени будет даваться таймер на смерть. Лучше ловить детектом урона, а не детектом атаки.
28

» WarCraft 3 / Аттач группы триггеров

Для того же стана - не годятся таймеры, не говоря про псевдоконтроль.
А почему?
28

» WarCraft 3 / Отслеживание приказов

По этому вопросу поймал GetIssuedOrderId, в common.j, теперь бы узнать список айди приказов.
Тут почти тоже самое, что и выше.
28

» WarCraft 3 / Есть у кого наработка смены имени юнита триггерно?

В 1.26 без мемхака нельзя изменить имя ЮНИТА, это сделано в следующих версиях.
28

» WarCraft 3 / Вопрос по макросам

Поподробней, пожалуйста. Я могу легко написать код на Python, который сделает желаемое.
28

» WarCraft 3 / Максимум призванных существ

А твоему комментарию у меня отображалось оценка 0 (+2/-2).
Странно всё это.
Загруженные файлы
28

» WarCraft 3 / Не скрывается абилка

Мне удалось решить проблему, но я не понимаю почему оно так работает.
Когда игроку дается дамми итем, не важно включена ли обработка призыва иллюзий или нет, просто когда он дается - не срабатывает отключение способности которая была закастована только что. Другие - можно отключить, эту - нет.
Но только если она отключалась до выдачи дамми-итема. Если всучить дамми-итем, а потом уже отключить абилку - она отключается. Логика JASS хуже женской логики.
Я смоделировал такую же ситуацию в пустой карте, бага нет. Могу кинуть, если надо.
Нужно продебажить любой кусок кода, где способность разблокируется. Я использую такие функции.
function DebugMsg takes string s returns nothing
    debug call DisplayTimedTextToPlayer(LocalPlayer, 0., 0., 5., s)
endfunction

function DebugMsgIf takes boolean bool, string s returns nothing
    static if DEBUG_MODE then
        if bool then
            call DebugMsg(s)
        endif
    endif
endfunction

function DebugMsgIfElse takes boolean bool, string s1, string s2 returns nothing
    static if DEBUG_MODE then
        if bool then
            call DebugMsg(s1)
        else
            call DebugMsg(s2)
        endif
    endif
endfunction
Выводим сообщения кому и что разблокируется. Вероятнее всего что-то ломается, и сразу после блокировки она снимается.
28

» WarCraft 3 / Не скрывается абилка

Держи
Хорошо, а настройки проблемных способностей (что на основе канала и берсерка)?
28

» WarCraft 3 / Максимум призванных существ

заплюсовал все ваши комментарии, какие смог и отменил минус у комментария!.
Лучше не плюсовать и минусовать всё подряд, это не поощряется и даже наказывается. А отмена минуса странная: отображается ноль, но при наведении +2/-0. xD
Спасибо за разъяснение. С телефона перед оценкой рекомендую максимально увеличить изображение и только тогда тыкать.
28

» WarCraft 3 / Помогите создать способность

Ну, может у него как в моей разрабатываемой кампании - при попытке атаки дружественного воина - отмена приказа. В итоге самые страшные враги из дебафферов врага внезапно оказываются усыпляющие:)
В таком случае надо переходить на JASS, потому что это легко реализовать с хеш-таблицей.
При рождении каждому юниту записываем в таблицу его родного игрока. При касте смотрим, кто захватывает. Если родной игрок (перехватывает назад), то удаляем таймер, который был создан ранее, и чистим таблицу. Если не свой, то проверяем, есть ли такой таймер на юните. Если нет, то создаём таймер, сохраняем по id таймера юнита и захватившего игрока, а по id юнита таймер. Если да, то перезапускаем таймер и заменяем сохранённого игрока на нового. По истечению таймера удаляем таймер и чистим таблицу.
28

» WarCraft 3 / Не скрывается абилка

Мне удалось решить проблему, но я не понимаю почему оно так работает.
Когда игроку дается дамми итем, не важно включена ли обработка призыва иллюзий или нет, просто когда он дается - не срабатывает отключение способности которая была закастована только что. Другие - можно отключить, эту - нет.
Но только если она отключалась до выдачи дамми-итема. Если всучить дамми-итем, а потом уже отключить абилку - она отключается. Логика JASS хуже женской логики.
Мистика какая-то, JASS работает именно так, как написано.
Настройки предмета и способности хотелось бы увидеть, а также настройки способностей, что внутри предмета.
28

» WarCraft 3 / Не скрывается абилка

Так. Всё работает до тех пор, пока игроку не даётся дамми-итем, который собсна и призывает иллюзию. Попробую проверить дальше что там. Хотя триггер обрабатывающий призыв иллюзии вообще ничего не скрывает\показывает.
Это уже что-то. Советую проверить приказы способности того итема и заменяемых способностей, а также продебажить все места где скрываются и открываются способности.
Drulia_san:
EVENT_PLAYER_UNIT_SPELL_EFFECT
Требуемые ресурсы и кд стартуют только после завершения действий в триггере с таким событием, если внутри нет пауз. Если есть, то после старта паузы.
Я ловил баг-не-баг, когда заменял одну способность с каналом на другую с этим событием, у которых одинаковые id приказа, по итогу юнит вечно проигрывал анимацию первого спела. Лови каст событием EVENT_PLAYER_UNIT_SPELL_ENDCAST, если нужно, чтобы всегда срабатывало, или EVENT_PLAYER_UNIT_SPELL_FINISH, если только при успешном применении (если каст был сбит после Cast Point, EVENT_PLAYER_UNIT_SPELL_FINISH не срабатывает).
28

» WarCraft 3 / Не скрывается абилка

Поставь дебаг на отображение abId и p. Также вопрос про то, какое событие ловит каст, в силе.
28

» WarCraft 3 / Не скрывается абилка

Замени GetTriggerUnit на GetSpellAbilityUnit.

Ещё есть проблема со скрытием способности, что на основе обмена ресурсов, но, как я понял, тут все способности на основе канала.

Ещё. Какое событие регистрирует каст спела? Одинаковые ли приказы у заменяемых способностей?
28

» WarCraft 3 / Максимум призванных существ

Например, поднятых некромантами скелетов не может быть более 20
Может быть, это легко отключить inject-ом или во время инициализации убрать лимит.
Эм, просто ставим в способности проверку на лимит другого юнита и спавним сколько хотим.

prog:
Есть более важная проблема - теряется связь с призывателем, замененные перестанут сами умирать при смерти призывателя, если это важно, то придется делать триггерную систему для этого.
Это у кого так работает? У некромантов скелеты остаются после его смерти.

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

Может быть, это легко отключить inject-ом или во время инициализации убрать лимит.
Чтобы было неограниченное кол-во юнитов, надо ставить -1 в ограничении, но из-за проверки на лимит внутри способности созданные скелеты будут сразу умирать, так как их должно быть -1. Также я выяснил, что ограничение вообще можно не снимать, оно работает только на тренировку. Достаточно только в способности поставить проверку на лимит на другого юнита, и призывай сколько хочешь.Ещё также можно поставить во время инициализации или в inject очень большой лимит в пределах int32.
EHP_Sequence, а минусы-то за что. :(
Загруженные файлы
28

» Администрация XGM / Ссылки на статьи в профиле пользователя

Был уже об этом вопрос, как я понял, счётчик всегда увеличивается, если что-то было удалено\скрыто, счётчик не уменьшается.
28

» WarCraft 3 / Помогите создать способность

но она не на время
Смысла тогда нет, все умные игроки будут убивать захваченного юнита до того, как он перейдёт назад к своему владельцу. Лучше сразу убивать.
Ниже карта, где реализовано с убийством по истечению указанного времени.
Загруженные файлы
28

» WarCraft 3 / Выбор всех реальных игроков.

function IsPlayer takes player p, mapcontrol c, playerslotstate s returns boolean
    if not (GetPlayerController(p) == c) then
        return false
    endif
    if not (GetPlayerSlotState(p) == s) then
        return false
    endif
    return true
endfunction
Что так сложно-то.
function IsPlayer takes player p, mapcontrol c, playerslotstate s returns boolean
    return GetPlayerController(p) == c and GetPlayerSlotState(p) == s
endfunction
28

» WarCraft 3 / Группа типов юнитов

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

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

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

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

Ну когда переменную создаешь там начальное значение надо указывать. стандартно ноль
Какой ноль у массива групп? Скрин переменной CreepsGroup, пожалуйста.
У групп нельзя никакое начальное значение задать, там по умолчанию создаётся группа.