Ниже написан триггер, который работал, до перехода с 6-ти до 12-ти игроков, а конкретно он менял надпись для определённого игрока, надпись показывала хп героя соответствующего игрока. Помогите пожалуйста заставить его снова работать.
Life
....Events:
.......Unit - Any Unit Life changes
....Local Variables:
....Conditions:
....Actions:
........Variable - Modify Hp[(Triggering player)]: + (Triggering unit property change)
........Dialog - Set HP[(Triggering player)] text to ("HP " + (Text(Hp[(Triggering player)]))) for Player[(Triggering player)]
........Unit - Set (Triggering unit) Life to Hp[(Triggering player)]
........General - If (Conditions) then do (Actions) else do (Actions)
............If
................Hp[(Owner of (Triggering unit))] <= 0
............Then
................Variable - Set Hp[(Owner of (Triggering unit))] = 0
................Unit - Set (Triggering unit) Life to Hp[(Owner of (Triggering unit))]
................Dialog - Set HP[(Owner of (Triggering unit))] text to ("HP " + (Text(Hp[(Owner of (Triggering unit))]))) for Player[(Owner of (Triggering unit))]
............Else
........General - If (Conditions) then do (Actions) else do (Actions)
............If
................Hp[(Owner of (Triggering unit))] >= 101
............Then
................Variable - Set Hp[(Owner of (Triggering unit))] = 100
................Unit - Set (Triggering unit) Life to Hp[(Owner of (Triggering unit))]
................Dialog - Set HP[(Owner of (Triggering unit))] text to ("HP " + (Text(Hp[(Owner of (Triggering unit))]))) for Player[(Owner of (Triggering unit))]
............Else
Пояснение:
Hp - переменная, которая хранит здоровье юнита.
Элемент диалога HP - переменная, через которую я "ловлю" текст, который надо поменять для показа игроку.
Группа игроков Player - переменная, массив, каждая ячейка массива отвечает за своего игрока.
Что сейчас происходит
Вот, что сейчас происходит в совокупности этого триггера и триггера возрождения.
Работа данного триггера:
Как вы можете видеть здоровье морпеха ровно 100 (первое число), а урон, который равен 0 должен быть равен отрицательному числу.
А вот скриншот, показывающий действие триггера перерождения.
Вот это произошло после небольшого по продолжительности времени нахождения под атакой.
Дополняю: после перехода обратно на 6 игроков через некоторое время стрельбы в голиафа и обратно (он стрелял в меня) триггер начал работать нормально. Высказывайте хоть предположения че за у меня "бардак" такой.

Принятый ответ

prog:
Ну и да, собственно, не понимаю я что мешает просто брать HP юнита напрямую вместо того чтобы записывать каждое изменение в переменную?
Я пытался так сделать изначально, но не смог, пришлось обходными путями идти.
Вот строка:
libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 100, c_anchorCenter, 0, 0, StringExternal("Param/Value/740E5475"), ColorWithAlpha(0,0,0,0), false, 2.0);
Так же мелькала 1017 строка:
gv_hPJangles += EventUnitPropertyChangeInt();
И, чего дальше? Я в этом мало чего понимаю. Но это строки из другого триггера, который отвечает за конкретного юнита.
prog, работает! Это был конфликт между двумя триггерами (тем, который я выложил, и тем, который я упомянул выше). После установки во втором триггере условия, чтоб не срабатывал, когда не надо (он на конкретного юнита забит, а юнита на момент срабатывания в переменной нет).
Короче, УРА!
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
24
8 лет назад
Отредактирован prog
1
Размер массивов не забыл поменять? Ну и запись значений в массивы, естественно.
P.S. триггер делает что-то странное, не говоря уже о полном отсутствии локальных переменных и вынесения повторяющегося кода в функции, но ломаться там вроде не чему - беда, скорее всего, в другом месте - в триггере инициализации или в объявлении массива.
P.P.S симптомы "не работания" в следующий раз тоже выкладывай, а то телепатия дорого обходится
0
9
8 лет назад
0
Массив в норме. А единственный триггер, который может оказывать влияние непосредственно на этот триггер (он создаёт диалог) тоже в норме.
Признаки дописал.
0
24
8 лет назад
0
Признаки дописал.
Куда дописал? Что-то не вижу я нигде описания что именно происходит сейчас при выполнении этого триггера - какие ошибки в консоль, если есть и происходит ли что-нибудь вобще.
Массив в норме
Массивов у тебя три, судя по коду. Все три в норме? Первичное заполнение для всех трех в норме?
0
9
8 лет назад
0
Все массивы в норме, можешь посмотреть скриншоты, надеюсь поймёшь.
0
24
8 лет назад
Отредактирован prog
0
Nekron, у тебя в левом верхнем углу есть квадратик, нажми его, должно открыться окно с ошибками, если я ничего не путаю
0
9
8 лет назад
Отредактирован Nekron
0
Тебе оттуда что надо? Я в курсе про него.
0
24
8 лет назад
0
Nekron, ну, очевидно, там может быть что-то, связанное с этим триггером...
0
9
8 лет назад
0
Не знаю, я без понятия, что и к чему там относится и отображается.
Я так понимаю вот эта часть относится к моему триггеру.
Загруженные файлы
0
24
8 лет назад
0
В gt_HP_Func при вызове DialogSetVisible не существует значения у triggerDialog и, соответственно, попытка показать "ничего" приводит к ошибке (видимо ты пытаешься использовать triggerDialog в триггере, который был запущен событием, не относящимся к диалогам)
0
9
8 лет назад
0
Я ничего не понял. Поясни, пожалуйста, что такое DialogSetVisible и triggerDialog.
Проверил на другой карте. Выяснил, что триггер барахлит на действии Variable - Modify Hp[(Triggering player)]: + (Triggering unit property change). Теперь надо придумать как это исправить.
0
9
8 лет назад
0
prog, не бросай меня, ты единственный кто откликнулся.
0
24
8 лет назад
Отредактирован prog
0
Nekron, ну не могу я быть тут 24/7
DialogSetVisible - функция смены видимости диалога
triggerDialog - то, что в гуи показывается как Triggering Dialog
Если не можешь быстро сообразить в каком триггере находится строка, вызывающая эту ошибку - рекомендую посмотреть на код триггеров всей карты в виде галакси скрипта, а точнее на строку 1023 и посмотреть к какому триггеру эта строка относится (сообщение об ошибке именно на эту строку показывает)
Ну и да, собственно, не понимаю я что мешает просто брать HP юнита напрямую вместо того чтобы записывать каждое изменение в переменную?
0
9
8 лет назад
Отредактирован Nekron
0
prog:
Ну и да, собственно, не понимаю я что мешает просто брать HP юнита напрямую вместо того чтобы записывать каждое изменение в переменную?
Я пытался так сделать изначально, но не смог, пришлось обходными путями идти.
Вот строка:
libNtve_gf_CreateDialogItemLabel(DialogLastCreated(), 200, 100, c_anchorCenter, 0, 0, StringExternal("Param/Value/740E5475"), ColorWithAlpha(0,0,0,0), false, 2.0);
Так же мелькала 1017 строка:
gv_hPJangles += EventUnitPropertyChangeInt();
И, чего дальше? Я в этом мало чего понимаю. Но это строки из другого триггера, который отвечает за конкретного юнита.
prog, работает! Это был конфликт между двумя триггерами (тем, который я выложил, и тем, который я упомянул выше). После установки во втором триггере условия, чтоб не срабатывал, когда не надо (он на конкретного юнита забит, а юнита на момент срабатывания в переменной нет).
Короче, УРА!
Принятый ответ
0
6
8 лет назад
0
Я пытался так сделать изначально, но не смог, пришлось обходными путями идти.
Есть функция для этого
UnitGetPropertyFixed(lv_your_unit, c_unitPropLife, c_unitPropCurrent)
0
9
8 лет назад
0
BaHeK, а действие как выглядит?
0
6
8 лет назад
0
Nekron, такого действия нет (по крайней мере я не нашёл). Нужно делать через custom script.
0
24
8 лет назад
0
BaHeK, Nekron, наркоманим?
это не действие, это функция, потому искать надо в разделе функций при присвоении значения переменной или передаче параметра.
0
9
8 лет назад
0
Спасибо.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.