А зачем условие про отданный приказ?
Далее, каждый раз, когда будет атакован твой героя, тени будет даваться таймер на смерть. Лучше ловить детектом урона, а не детектом атаки.
Мне удалось решить проблему, но я не понимаю почему оно так работает.
Когда игроку дается дамми итем, не важно включена ли обработка призыва иллюзий или нет, просто когда он дается - не срабатывает отключение способности которая была закастована только что. Другие - можно отключить, эту - нет.
Но только если она отключалась до выдачи дамми-итема. Если всучить дамми-итем, а потом уже отключить абилку - она отключается. Логика 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
Выводим сообщения кому и что разблокируется. Вероятнее всего что-то ломается, и сразу после блокировки она снимается.
заплюсовал все ваши комментарии, какие смог и отменил минус у комментария!.
Лучше не плюсовать и минусовать всё подряд, это не поощряется и даже наказывается. А отмена минуса странная: отображается ноль, но при наведении +2/-0. xD Спасибо за разъяснение. С телефона перед оценкой рекомендую максимально увеличить изображение и только тогда тыкать.
Ну, может у него как в моей разрабатываемой кампании - при попытке атаки дружественного воина - отмена приказа. В итоге самые страшные враги из дебафферов врага внезапно оказываются усыпляющие:)
В таком случае надо переходить на JASS, потому что это легко реализовать с хеш-таблицей.
При рождении каждому юниту записываем в таблицу его родного игрока. При касте смотрим, кто захватывает. Если родной игрок (перехватывает назад), то удаляем таймер, который был создан ранее, и чистим таблицу. Если не свой, то проверяем, есть ли такой таймер на юните. Если нет, то создаём таймер, сохраняем по id таймера юнита и захватившего игрока, а по id юнита таймер. Если да, то перезапускаем таймер и заменяем сохранённого игрока на нового. По истечению таймера удаляем таймер и чистим таблицу.
Мне удалось решить проблему, но я не понимаю почему оно так работает.
Когда игроку дается дамми итем, не важно включена ли обработка призыва иллюзий или нет, просто когда он дается - не срабатывает отключение способности которая была закастована только что. Другие - можно отключить, эту - нет.
Но только если она отключалась до выдачи дамми-итема. Если всучить дамми-итем, а потом уже отключить абилку - она отключается. Логика JASS хуже женской логики.
Мистика какая-то, JASS работает именно так, как написано.
Настройки предмета и способности хотелось бы увидеть, а также настройки способностей, что внутри предмета.
Так. Всё работает до тех пор, пока игроку не даётся дамми-итем, который собсна и призывает иллюзию. Попробую проверить дальше что там. Хотя триггер обрабатывающий призыв иллюзии вообще ничего не скрывает\показывает.
Это уже что-то. Советую проверить приказы способности того итема и заменяемых способностей, а также продебажить все места где скрываются и открываются способности. 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 не срабатывает).
Например, поднятых некромантами скелетов не может быть более 20
Может быть, это легко отключить inject-ом или во время инициализации убрать лимит.
Эм, просто ставим в способности проверку на лимит другого юнита и спавним сколько хотим.
Есть более важная проблема - теряется связь с призывателем, замененные перестанут сами умирать при смерти призывателя, если это важно, то придется делать триггерную систему для этого.
Это у кого так работает? У некромантов скелеты остаются после его смерти.
Воткарта, где скелетов сколько хочешь, а также есть тест на смерть после убийства призывателя.
Может быть, это легко отключить inject-ом или во время инициализации убрать лимит.
Чтобы было неограниченное кол-во юнитов, надо ставить -1 в ограничении, но из-за проверки на лимит внутри способности созданные скелеты будут сразу умирать, так как их должно быть -1. Также я выяснил, что ограничение вообще можно не снимать, оно работает только на тренировку. Достаточно только в способности поставить проверку на лимит на другого юнита, и призывай сколько хочешь.Ещё также можно поставить во время инициализации или в inject очень большой лимит в пределах int32. EHP_Sequence, а минусы-то за что. :(
Смысла тогда нет, все умные игроки будут убивать захваченного юнита до того, как он перейдёт назад к своему владельцу. Лучше сразу убивать.
Ниже карта, где реализовано с убийством по истечению указанного времени.
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
Ну когда переменную создаешь там начальное значение надо указывать. стандартно ноль
Какой ноль у массива групп? Скрин переменной CreepsGroup, пожалуйста.
У групп нельзя никакое начальное значение задать, там по умолчанию создаётся группа.
» WarCraft 3 / Вопрос по механике вампиризма (триггерного) и отложению урона
Далее, каждый раз, когда будет атакован твой героя, тени будет даваться таймер на смерть. Лучше ловить детектом урона, а не детектом атаки.
» WarCraft 3 / Аттач группы триггеров
» WarCraft 3 / Отслеживание приказов
» WarCraft 3 / Disease cloud
Ред. PT153
» WarCraft 3 / Есть у кого наработка смены имени юнита триггерно?
Ред. PT153
» WarCraft 3 / Вопрос по макросам
» WarCraft 3 / Максимум призванных существ
Ред. PT153
» WarCraft 3 / Не скрывается абилка
Нужно продебажить любой кусок кода, где способность разблокируется. Я использую такие функции.
» WarCraft 3 / Не скрывается абилка
» WarCraft 3 / Максимум призванных существ
Спасибо за разъяснение. С телефона перед оценкой рекомендую максимально увеличить изображение и только тогда тыкать.
Ред. PT153
» WarCraft 3 / Помогите создать способность
При рождении каждому юниту записываем в таблицу его родного игрока. При касте смотрим, кто захватывает. Если родной игрок (перехватывает назад), то удаляем таймер, который был создан ранее, и чистим таблицу. Если не свой, то проверяем, есть ли такой таймер на юните. Если нет, то создаём таймер, сохраняем по id таймера юнита и захватившего игрока, а по id юнита таймер. Если да, то перезапускаем таймер и заменяем сохранённого игрока на нового. По истечению таймера удаляем таймер и чистим таблицу.
Ред. PT153
» WarCraft 3 / Не скрывается абилка
Настройки предмета и способности хотелось бы увидеть, а также настройки способностей, что внутри предмета.
Ред. PT153
» WarCraft 3 / Не скрывается абилка
Drulia_san:
Я ловил баг-не-баг, когда заменял одну способность с каналом на другую с этим событием, у которых одинаковые id приказа, по итогу юнит вечно проигрывал анимацию первого спела. Лови каст событием EVENT_PLAYER_UNIT_SPELL_ENDCAST, если нужно, чтобы всегда срабатывало, или EVENT_PLAYER_UNIT_SPELL_FINISH, если только при успешном применении (если каст был сбит после Cast Point, EVENT_PLAYER_UNIT_SPELL_FINISH не срабатывает).
Ред. PT153
» WarCraft 3 / Не скрывается абилка
Ред. PT153
» WarCraft 3 / Не скрывается абилка
» Администрация XGM / Перемещение ресурса в ленте при склейке комментариев.
Ред. PT153
» WarCraft 3 / Максимум призванных существ
Может быть, это легко отключить inject-ом или во время инициализации убрать лимит.Эм, просто ставим в способности проверку на лимит другого юнита и спавним сколько хотим.
prog:
EHP_Sequence, а минусы-то за что. :(
» Администрация XGM / Ссылки на статьи в профиле пользователя
» WarCraft 3 / Помогите создать способность
Ниже карта, где реализовано с убийством по истечению указанного времени.
» WarCraft 3 / ZM - The Last Survivor - Save New Year (v.0.9.8c) rus+eng
» WarCraft 3 / Способности, отдающие приказ всей группе
Ред. PT153
» WarCraft 3 / Выбор всех реальных игроков.
Ред. PT153
» WarCraft 3 / Группа типов юнитов
Если нужно выбрать юнитов в радиусе или в области с конкретным типом, то нужно сделать так.
Ред. PT153
» WarCraft 3 / Не работает триггер на создание лесных крипов
» WarCraft 3 / Не работает триггер на создание лесных крипов
У групп нельзя никакое начальное значение задать, там по умолчанию создаётся группа.