Ломаю голову: хочу сделать так, чтоб в зону входил юнит, и выводился на экран в типе string, к примеру, ID этого юнита(не ID типа юнита, а ID юнита!). Не знаю, как к нему обратиться. И я не понял, в каком типе данных оно хранится. Как я понял - integer. На скринах просто показано, как по дефолту работает отображение уровня юнита при входе в зону. Думаю, должно быть похоже чем-то. Если тема заезженная, подскажите, где искать плз.
screen0 - на триггерах(с конвертированием to string).
screen1 - просто конвертировал в текст на jass. Утечки не устранял.

Мне в итоге неоткуда брать этот h - ключ, по которому я всё записал...
Это будет юнит, которого атаковали т.е. GetTriggerUnit(). Вся задача шаринга между несколькими триггерами в том, чтобы определить какие данные между этими триггерами у нас уже есть общие и отталкиваясь от них записать другие данные в хеш. В данном случае мы вешаем данные на GetSpellAbilityUnit() и загружаем по GetTriggerUnit(). Самого кастера, как я понимаю, здесь записывать никуда не нужно.
А некоторым комментаторам советую постыдиться, редкий случай, когда человек сам что-то пытается понять и пробует что-то делать, а вам лишь бы эго потешить.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
11
Hate:
потому что это локальная переменная. сами же написали это, и сами удивляетесь?
Так я не понял, это я не понимаю, как сделать или сделать невозможно? Глобальная переменная отменит вариант с МУИ спеллом, нет разве?
Hate:
от чего срабатывает второй триггер? или это функция? как бы это разные вещи
Второи именно триггер. Срабатывает, когда после нажатия абилки(в первом триггере) кастер атакован.
26
вы полностью покажите код, скринами или скопируйте с соответствующим форматированием, а не думайте что "это неважно"
DopaMine:
Так я не понял, это я не понимаю, как сделать или сделать невозможно? Глобальная переменная отменит вариант с МУИ спеллом, нет разве?
Второи именно триггер. Срабатывает, когда после нажатия абилки(в первом триггере) кастер атакован.
ну так Кастер - юнит, и тот кто атакован - юнит! в чем ваша проблема??
11
цитата
Не до конца понял, но тогда опишу и покажу триггеры, на которых это сделано.
Способность сделана по аниме Наруто(заезженная тема...)) и называется "Техника обмена". Если не знаете, что это такое, то вот логика: если юнита бьют, он может нажать кнопку и заменит себя на бревно, исчезнет(hide), появится бревно, эффекты и звук, и через 1.5 секунды появится(unhide) в точке, которая указана, как цель заклинания. А если не бьют, то ничего не произоидёт. Так же эффект работает всего 1 секунду(то есть применять типо надо прям перед ударом), а не весь кулдаун.
У способности "Техника обмена" кулдаун 5 секунд. Направленная на точку.
Есть два триггера, "CastOfObmen" включается и выключается в "Attacked".
Attacked:
Когда юнит юзает способность "Техника обмена", записываются в глобалы(а надо в хеш, видимо), а потом в локалки: кастер, точка-цель заклинания.
Включается "CastOfObmen", ждём секунду, выключается "CastOfObmen".
CastOfObmen:
Если кастер(из глобала, а надо из хеша, видимо) атакован, то:
записываются в переменные: атакованныи юнит, звук и эффекты, которые сработают, точка-позиция атакованного юнита, точка-цель заклинания из первого триггера.
Соответственно, дальше прячу юнита, создаю эффекты в его местоположении, жду 1.5 секунды(в целом, они разбиты на несколько отрезков для постепенного появления эффектов), перемещаю нашего шиноби в точку-цель заклинания и перестаю прятать его.
По логике я понимаю, что все эти данные, которые у меня в глобальных переменных - мне нужно в хеш сохранять. Хочу понять, как это сделать. И желательно переписать с триггеров на Jass, а я не особо шарю, позавчера начал делать.
На скрине1- Первыи триггер, на скринах2-3 - Второи триггер. На втором я выделил строку, чтоб было ясно, откуда читать 3 скрин.
Чтоб было понятнее, я выше описывал, в чём суть. Но там ещё на гуи, а щас ещё и на джассе есть варинт
Hate:
вы полностью покажите код, скринами или скопируйте с соответствующим форматированием, а не думайте что "это неважно"
ну так Кастер - юнит, и тот кто атакован - юнит! в чем ваша проблема??
В том, что они в разных триггерах и это один и тот же юнит. И себя через себя он не может вызвать.
26
почему это он не может? я выше чем вписал что юнит объект и имеет номер как таймер. так что не может?
вам указывали писать данные на юнита, я вы вцепились в таймер.
33
А чтоб мне указать, что такое h, мне нужно взять от того же юнита(уже из хэша), и его хэндлу присвоить h. Я не прав разве?
DopaMine, если второй триггер запускается событием «Юнит атакован», то h в первом триггере нужно записать на юнита, который будет атакован. Типа перекрёстную ссылку сделать.
В целом с логикой работы что-то не так.
29
Мне в итоге неоткуда брать этот h - ключ, по которому я всё записал...
Это будет юнит, которого атаковали т.е. GetTriggerUnit(). Вся задача шаринга между несколькими триггерами в том, чтобы определить какие данные между этими триггерами у нас уже есть общие и отталкиваясь от них записать другие данные в хеш. В данном случае мы вешаем данные на GetSpellAbilityUnit() и загружаем по GetTriggerUnit(). Самого кастера, как я понимаю, здесь записывать никуда не нужно.
А некоторым комментаторам советую постыдиться, редкий случай, когда человек сам что-то пытается понять и пробует что-то делать, а вам лишь бы эго потешить.
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.