Доброго времени суток, знатоки. У меня возникла проблема с воскрешением героев после их смерти.
Иногда (не всегда), случается такое, что умерший герой не воскрешается (то таймер в таблице не появляется, из-за чего и не воскрешается герой, то таймер появится, пройдет до ноля, а герой не воскресится), при чем один игрок (герой) воскрешается а другой нет.
Иногда (не всегда), случается такое, что умерший герой не воскрешается (то таймер в таблице не появляется, из-за чего и не воскрешается герой, то таймер появится, пройдет до ноля, а герой не воскресится), при чем один игрок (герой) воскрешается а другой нет.
Короче есть три основных триггера которые и отвечают за воскрешение героев, см. ниже:
Тут при смерти героя, задается значение таймера (последнее действие триггера "set T[(player number of dying unit)] = (Hero level of dying unit * 5) + 10")
Тут у нас идет отчет времени (каждую секунду) до момента воскрешения (отчет записывается в таблицу, чтоб игроку было видно когда воскреснет герой), по завершении отчета, если переменная Т(номер трупа игрока =) ) равна нолю, и в то же время герой игрока еще мертв, то бежит к след. триггеру.
В этом триггере происходит само воскрешение героя.
Так вот, господа знатоки, подскажите что не так? (полюзуюсь исключительно граф интерфейсом триггеров, jass не получается осилить =(( )
За ранее благодарен, с уважением, Cardinal
Проблема решена, багов с воскрешением нет. (возможно проблема была в вейтах)
Принятый ответ
Cardinal, за такое именование переменных нужно по рукам бить.
то бежит к третьему триггеру которій и воскрешает
Не плодите триггеров, все нужные действия можно и в цикле сделать.
У вас переменная T отвечает за состояние героя, зачем проверять жив юнит или нет?
T<0 Жив
T==0 Нужно воскресить прям сейчас
T>0 Ждёт воскрешения
Cardinal:
T<0 Жив
T==0 Нужно воскресить прям сейчас
T>0 Ждёт воскрешения
Cardinal:
T[номер героя] болше или равна 1
больше или равна 0 => T[] = T[] -1
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Как же сложно составил систему.
У каждого игрока только один герой? Не обладает ли багующий герой способностью Иллюзии?
Ещё проблема может быть с циклом по А, не приходилось лично с этим сталкиваться, но люди рассказывали о проблемах, когда используют одновременно несколько циклов по А в одном или нескольких триггерах, типа значение А из одного цикла передаётся другому, в итоге они сбоят. Нужно использовать и циклы по А, и по В, и по своим переменным.
NazarPunk, ну я пока на версии 1.30 сижу, вижу в ин-нете пишет что что-то там на 1.31 не так с переходом, пока не рискую.. а на счет lua может быть, визуально он мне php напоминает, но пока хочу только GUI ограничится.. должен же быть способ решить эту проблему и на GUI =)
Отредактирован nazarpunk
Запускаете HERO_REVIVE_TIMER с периодом в секунду и проверяете HERO_REVIVE_TIME.
Если меньше ноля, то герой жив, здоров и радуется жизни.
Если больше, то ожидает воскрешения в курилке
Если равно, то с вещами на рэспаун в HERO_REVIVE_LOC.
Надеюсь уточнять, что с каждым тиком нужно уменьшать HERO_REVIVE_TIME не нужно)
NazarPunk, есть переменные:
uHero[1-12] - боевая еденица на каждого игрока
T[1-12] - целочисленная, равна кол-ву секунд до воскрешения
есть еще две области (StartTeam1/StartTeam2) - области где восрешается герой той или иной команды
T<0 Жив
T==0 Нужно воскресить прям сейчас
T>0 Ждёт воскрешения
Cardinal:
если T[] = 0, то T[] = T[] -1, и тут же воскрешаем героя
а если T[] = -1, то ничего уже и не делаем, ибо герой уже воскрешен, я правильно Вас понял? и тогда отпадает смысл в проверке жив или мертв герой..?
и третий триггер всунуть во второй в цикл, так?
Отредактирован Cardinal
проверка для того что бы не писало лишних значений если не играет игрок.. что-то вроде того..
If ((Integer A) меньше 7) Then Воскресить в StartTeam1 Else Воскресить в StartTeam2
Отредактирован Cardinal
Возможно XGM будет первым ресурсом где опубликую карту))