XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
DarkRaven Best

offline
Опыт: 8,116
Активность:
При выполнении триггера игра вылетает
Довольно нестандартный вопрос, но всё же. Я сделал триггер, который должен наносить урон в размере 10% от хп атакующего юнита, когда цель получает урон. Но когда триггер срабатывает игра крашится. Я не понимаю с чем это может быть связано.
Прикрепленные файлы
Тип файла: w3x Map.w3x (12.0 Кбайт, 12 просмотров )
Старый 24.03.2015, 19:52
Tobi123

offline
Опыт: 7,826
Активность:
А слабо подумать? Прокрутите у себя в голове, что будет. Цель получает урон->цели наносится еще урон и снова срабатывает условие. И так до бесконечности.
Старый 24.03.2015, 21:17
DarkRaven Best

offline
Опыт: 8,116
Активность:
Проклятье, это входит в рекурсию. Это конечно можно банально обойти, через простой триггер юнит атакован, но чёрт он ну будет таким точным, как триггер который срабатывает ровно тогда, когда юнит получает урон. Эту рекурсию никак нельзя обойти, при это оставив ивент юнит получает урон?
Старый 24.03.2015, 22:38
Doc

offline
Опыт: 63,163
Активность:
Эту рекурсию никак нельзя обойти
Можно
Я предлагаю попробовать подумать, как же так сделать чтобы событие срабатывало когда нужно, а когда не ну нужно не срабатывало
Еще предлагаю всем остальным готовых решений не давать
Старый 24.03.2015, 23:20
adic3x

offline
Опыт: 107,539
Активность:
Можно. Насколько помню я, при нанесение урона триггерно данный поток ставиться на паузу, и запускаются все сотальные, которые реагируют на нанесение урона. Впрочем я не уверен, проверьте это с помощью отладочной печати. Думаю, ваша проблема легко решается одним логическим флагом.
Старый 24.03.2015, 23:21
Doc

offline
Опыт: 63,163
Активность:
^ взял и бессовестно все рассказал
Старый 24.03.2015, 23:22
DarkRaven Best

offline
Опыт: 8,116
Активность:
Doc:
^ взял и бессовестно все рассказал
Не то что бы всё. Так как в триггерах я понимаю крайне мало, и порой не знаю, что и как правильно реализовать. Так что мне всё равно придётся подумать.

Отредактировано DarkRaven Best, 24.03.2015 в 23:41.
Старый 24.03.2015, 23:34
Melissa
Я всегда хочу как лучше!
offline
Опыт: 30,496
Активность:
Чтобы избежать зацикливания нужно чтобы твой бонусный урон не вызывал такую же реакцию, что и основной. На это тебе намекнули.
Старый 24.03.2015, 23:45
DarkRaven Best

offline
Опыт: 8,116
Активность:
Увы, из-за моих скудных познаний в триггерах, я пока не вижу как убрать зацикливание, при этом, чтобы смысл триггера остался тем же.
DarkRaven Best добавил:
Так, я вроде разобрался. Просто решил попробовать то, о чём думал позднее, но сомневался, так как считал, что триггер вообще перестанет работать. Ну в общем у меня получилось заставить работать триггер когда надо и не работать когда не надо.

Отредактировано DarkRaven Best, 25.03.2015 в 00:31.
Старый 25.03.2015, 00:18
quq_CCCP
Я белый и пушистый!
offline
Опыт: 94,774
Активность:
Паузим триггер (DisableTrigger) и наносим урон, запускаем таймер на 0.00 сек и по истечению таймера врубаем триггер, так гарантированно не будет вылетов, можно использовать wait (TriggerSleepActions) но у него слишком большой период, для таких целей.
Старый 25.03.2015, 07:45
Melissa
Я всегда хочу как лучше!
offline
Опыт: 30,496
Активность:
quq_CCCP, таймер не нужен
выключить триггер
нанести урон
включить триггер
Старый 25.03.2015, 10:31
DarkRaven Best

offline
Опыт: 8,116
Активность:
Лол, но я вроде же написал, что разобрался что к чему). Как раз с вкл и выкл.
Старый 25.03.2015, 14:37
DioD

offline
Опыт: 45,184
Активность:
что за дно
зачем чтото выключать, ведь можно просто выставить флаг "игнорировать урон который будет след Х раз" или еще лучше "следующие х раз урон обрабатывать иначе вот например этим обработчиком"
Старый 25.03.2015, 17:32
DarkRaven Best

offline
Опыт: 8,116
Активность:
DioD:
что за дно
зачем чтото выключать, ведь можно просто выставить флаг "игнорировать урон который будет след Х раз" или еще лучше "следующие х раз урон обрабатывать иначе вот например этим обработчиком"
Ну и как выставлять флаги в триггерах, в каком разделе они находятся?
Старый 25.03.2015, 18:07
adic3x

offline
Опыт: 107,539
Активность:
Ну и как выставлять флаги в триггерах, в каком разделе они находятся?
boolean, или "логическая" переменная в редакторе. Просто проверяйте ее значение.
Старый 25.03.2015, 18:33
Melissa
Я всегда хочу как лучше!
offline
Опыт: 30,496
Активность:
DioD:
что за дно
зачем чтото выключать, ведь можно просто выставить флаг "игнорировать урон который будет след Х раз" или еще лучше "следующие х раз урон обрабатывать иначе вот например этим обработчиком"
что за дно
зачем выставить флаг "игнорировать урон который будет след Х раз" или еще лучше "следующие х раз урон обрабатывать иначе вот например этим обработчиком", ведь можно просто чтото выключать
Melissa добавил:
Минус выключения в том, что если у тя триггерный отхил есть на любой урон, то он(хил) не сработает на вот етот бонусный урон, если конечно не делать все отхилы в другом триггере с событием получения урона.
Старый 25.03.2015, 20:39
DarkRaven Best

offline
Опыт: 8,116
Активность:
Melissa:
DioD:
что за дно
зачем чтото выключать, ведь можно просто выставить флаг "игнорировать урон который будет след Х раз" или еще лучше "следующие х раз урон обрабатывать иначе вот например этим обработчиком"
что за дно
зачем выставить флаг "игнорировать урон который будет след Х раз" или еще лучше "следующие х раз урон обрабатывать иначе вот например этим обработчиком", ведь можно просто чтото выключать
Melissa добавил:
Минус выключения в том, что если у тя триггерный отхил есть на любой урон, то он(хил) не сработает на вот етот бонусный урон, если конечно не делать все отхилы в другом триггере с событием получения урона.
Да вроде отхилл находится в одном триггере с уроном, но в принципе работает корректно.
DarkRaven Best добавил:
ADOLF:
Ну и как выставлять флаги в триггерах, в каком разделе они находятся?
boolean, или "логическая" переменная в редакторе. Просто проверяйте ее значение.
Про логическую переменную, я более-менее понимаю, но просто не знаю как реализовать флаг. То есть в каком триггере его вписать, и что будет проверять boolean compasition.
Старый 25.03.2015, 21:59
Melissa
Я всегда хочу как лучше!
offline
Опыт: 30,496
Активность:
DarkRaven_Best:
Да вроде отхилл находится в одном триггере с уроном, но в принципе работает корректно.
Да ты что) Волшебник прямо.
» пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
Да шучу, ты просто кривой
Прикрепленные файлы
Тип файла: w3x Puk.w3x (16.5 Кбайт, 7 просмотров )
Старый 25.03.2015, 22:15
DarkRaven Best

offline
Опыт: 8,116
Активность:
Да, и в твоей карте отхил стоит перед уроном, ведь тогда как раз он и не будет же учитываться. Ведь сначала идёт отхил и только потом наносится доп.урон от триггера. Конечно ты прав и доп.урон от триггера не учитывается, но даже если я выставляю урон вперед перед выключение триггера он тоже не работает, так как он ведь стоит как раз перед получением этого урона. Плюс, когда я запустил твою карту, чтобы посмотреть как триггер работает, то атакующий юнит не хилился вообще.

Отредактировано DarkRaven Best, 25.03.2015 в 23:09.
Старый 25.03.2015, 23:03
Melissa
Я всегда хочу как лучше!
offline
Опыт: 30,496
Активность:
DarkRaven_Best:
в твоей карте отхил стоит перед уроном,
Хочешь - передвинь действие вниз, ничего не изменится)
DarkRaven_Best:
то атакующий юнит не хилился вообще
Атакующий? Мб атакованный? хилится, хилит урона нанесенный с руки, не хилит дополнитльные 111 урона, нанесенные с выключением триггера.
Melissa добавил:
А ну да, атаковать надо гороного короля, мне лень было добавлять событие в триггер.
Старый 26.03.2015, 10:44
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:07.