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

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

Мне в итоге неоткуда брать этот h - ключ, по которому я всё записал...
Это будет юнит, которого атаковали т.е. GetTriggerUnit(). Вся задача шаринга между несколькими триггерами в том, чтобы определить какие данные между этими триггерами у нас уже есть общие и отталкиваясь от них записать другие данные в хеш. В данном случае мы вешаем данные на GetSpellAbilityUnit() и загружаем по GetTriggerUnit(). Самого кастера, как я понимаю, здесь записывать никуда не нужно.
А некоторым комментаторам советую постыдиться, редкий случай, когда человек сам что-то пытается понять и пробует что-то делать, а вам лишь бы эго потешить.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
11
5 лет назад
0
Так как я в первом триггере и сохраняю, и загружаю все данные. Может, не обязательно все мне нужны в первом триггере. Но сути не меняет. Я просто не понимаю, как мне во втором триггере объявить хоть что-то из первого, что является неизменным
0
26
5 лет назад
0
что появляется во втором триггере? какие объекты?
0
11
5 лет назад
0
Hate:
вам написали про юнита, вы продолжаете долбиться в таймер
у каждого объекта на карте есть свой хэндл, это уникальный номер, будь то таймер, юнит, или разрушаемая декорация, разница на кого сохранять нулевая
Понимаю. Ну вот представьте: в первом триггере вы жмёте абилку. Во втором триггере она срабатывает при условии, что вы атакованы. Через что вы юнита запишите таким образом, чтобы второи триггер понял, по какому ключу загружать? Для того, чтоб когда 100 человек юзали одновременно абилку, она срабатывала у каждого правильно.
Hate:
что появляется во втором триггере? какие объекты?
Во втором есть спецэффекты. Которых нет в первом
1
26
5 лет назад
1
вы на ключ юнита пишете все данные, и достаете с его же ключа. что непонятного то, с таймера вы достаете, а юнит непреодолимая стена?
0
11
5 лет назад
0
И позиция кастера есть во втором триггере. А в первом только позиция точки-цели заклинания
А юнита с какого ключа достать тогда?
1
26
5 лет назад
1
а кастует значит не юнит, да? а кто же? мммм?)
0
30
5 лет назад
0
DopaMine, можно выделять курсором (или пальцем) часть сообщения, тогда цитироваться будет только она. Невозможно же простыни эти читать!
0
11
5 лет назад
0
а кастует значит не юнит, да? а кто же? мммм?)
Он кастует в первом триггере, а во втором не кастует.
Какая команда сработает сразу в двух триггерах? Вот пример щас напишу
local unit caster = GetSpellAbilityUnit()
local location point = GetSpellTargetLoc()
local integer h = GetHandleId(caster)
call SaveUnitHandle(udg_hash,h,StringHash("caster"),caster)
call SaveLocationHandle(udg_hash,h,StringHash("point"),point)
Это был триггер номер 1
А это второи:
Мне нужно зафиксировать того же юнита. Пробую так:
local unit u = LoadUnitHandle(udg_hash,h,StringHash("caster"))
И варкрафт спрашивает: ЧТО ТАКОЕ h??
1
26
5 лет назад
1
потому что это локальная переменная. сами же написали это, и сами удивляетесь?
0
11
5 лет назад
0
local unit u = LoadUnitHandle(udg_hash,h,StringHash("caster"))
И варкрафт спрашивает: ЧТО ТАКОЕ h??
А чтоб мне указать, что такое h, мне нужно взять от того же юнита(уже из хэша), и его хэндлу присвоить h. Я не прав разве?
0
26
5 лет назад
0
от чего срабатывает второй триггер? или это функция? как бы это разные вещи
0
11
5 лет назад
0
Hate:
потому что это локальная переменная. сами же написали это, и сами удивляетесь?
Так я не понял, это я не понимаю, как сделать или сделать невозможно? Глобальная переменная отменит вариант с МУИ спеллом, нет разве?
Hate:
от чего срабатывает второй триггер? или это функция? как бы это разные вещи
Второи именно триггер. Срабатывает, когда после нажатия абилки(в первом триггере) кастер атакован.
0
26
5 лет назад
Отредактирован PT153
0
вы полностью покажите код, скринами или скопируйте с соответствующим форматированием, а не думайте что "это неважно"
DopaMine:
Так я не понял, это я не понимаю, как сделать или сделать невозможно? Глобальная переменная отменит вариант с МУИ спеллом, нет разве?
Второи именно триггер. Срабатывает, когда после нажатия абилки(в первом триггере) кастер атакован.
ну так Кастер - юнит, и тот кто атакован - юнит! в чем ваша проблема??
0
11
5 лет назад
Отредактирован PT153
0
цитата
Не до конца понял, но тогда опишу и покажу триггеры, на которых это сделано.
Способность сделана по аниме Наруто(заезженная тема...)) и называется "Техника обмена". Если не знаете, что это такое, то вот логика: если юнита бьют, он может нажать кнопку и заменит себя на бревно, исчезнет(hide), появится бревно, эффекты и звук, и через 1.5 секунды появится(unhide) в точке, которая указана, как цель заклинания. А если не бьют, то ничего не произоидёт. Так же эффект работает всего 1 секунду(то есть применять типо надо прям перед ударом), а не весь кулдаун.
У способности "Техника обмена" кулдаун 5 секунд. Направленная на точку.
Есть два триггера, "CastOfObmen" включается и выключается в "Attacked".
Attacked:
Когда юнит юзает способность "Техника обмена", записываются в глобалы(а надо в хеш, видимо), а потом в локалки: кастер, точка-цель заклинания.
Включается "CastOfObmen", ждём секунду, выключается "CastOfObmen".
CastOfObmen:
Если кастер(из глобала, а надо из хеша, видимо) атакован, то:
записываются в переменные: атакованныи юнит, звук и эффекты, которые сработают, точка-позиция атакованного юнита, точка-цель заклинания из первого триггера.
Соответственно, дальше прячу юнита, создаю эффекты в его местоположении, жду 1.5 секунды(в целом, они разбиты на несколько отрезков для постепенного появления эффектов), перемещаю нашего шиноби в точку-цель заклинания и перестаю прятать его.
По логике я понимаю, что все эти данные, которые у меня в глобальных переменных - мне нужно в хеш сохранять. Хочу понять, как это сделать. И желательно переписать с триггеров на Jass, а я не особо шарю, позавчера начал делать.
На скрине1- Первыи триггер, на скринах2-3 - Второи триггер. На втором я выделил строку, чтоб было ясно, откуда читать 3 скрин.
Чтоб было понятнее, я выше описывал, в чём суть. Но там ещё на гуи, а щас ещё и на джассе есть варинт
Hate:
вы полностью покажите код, скринами или скопируйте с соответствующим форматированием, а не думайте что "это неважно"
ну так Кастер - юнит, и тот кто атакован - юнит! в чем ваша проблема??
В том, что они в разных триггерах и это один и тот же юнит. И себя через себя он не может вызвать.
0
26
5 лет назад
0
почему это он не может? я выше чем вписал что юнит объект и имеет номер как таймер. так что не может?
вам указывали писать данные на юнита, я вы вцепились в таймер.
0
11
5 лет назад
0
почему это он не может?
Щас код скину
0
33
5 лет назад
Отредактирован Кет
0
А чтоб мне указать, что такое h, мне нужно взять от того же юнита(уже из хэша), и его хэндлу присвоить h. Я не прав разве?
DopaMine, если второй триггер запускается событием «Юнит атакован», то h в первом триггере нужно записать на юнита, который будет атакован. Типа перекрёстную ссылку сделать.
В целом с логикой работы что-то не так.
0
11
5 лет назад
0
Я ВСЁ ПОНЯЛ, ВСЕМ СПАСИБО!
3
29
5 лет назад
Отредактирован Doc
3
Мне в итоге неоткуда брать этот h - ключ, по которому я всё записал...
Это будет юнит, которого атаковали т.е. GetTriggerUnit(). Вся задача шаринга между несколькими триггерами в том, чтобы определить какие данные между этими триггерами у нас уже есть общие и отталкиваясь от них записать другие данные в хеш. В данном случае мы вешаем данные на GetSpellAbilityUnit() и загружаем по GetTriggerUnit(). Самого кастера, как я понимаю, здесь записывать никуда не нужно.
А некоторым комментаторам советую постыдиться, редкий случай, когда человек сам что-то пытается понять и пробует что-то делать, а вам лишь бы эго потешить.
Принятый ответ
1
28
5 лет назад
1
Clamp, убрал все простыни.
0
30
5 лет назад
0
PT153, aww... <3
Чтобы оставить комментарий, пожалуйста, войдите на сайт.