Ломаю голову: хочу сделать так, чтоб в зону входил юнит, и выводился на экран в типе string, к примеру, ID этого юнита(не ID типа юнита, а ID юнита!). Не знаю, как к нему обратиться. И я не понял, в каком типе данных оно хранится. Как я понял - integer. На скринах просто показано, как по дефолту работает отображение уровня юнита при входе в зону. Думаю, должно быть похоже чем-то. Если тема заезженная, подскажите, где искать плз.
screen0 - на триггерах(с конвертированием to string).
screen1 - просто конвертировал в текст на jass. Утечки не устранял.
screen0 - на триггерах(с конвертированием to string).
screen1 - просто конвертировал в текст на jass. Утечки не устранял.
Принятый ответ
Мне в итоге неоткуда брать этот h - ключ, по которому я всё записал...
Это будет юнит, которого атаковали т.е. GetTriggerUnit(). Вся задача шаринга между несколькими триггерами в том, чтобы определить какие данные между этими триггерами у нас уже есть общие и отталкиваясь от них записать другие данные в хеш. В данном случае мы вешаем данные на GetSpellAbilityUnit() и загружаем по GetTriggerUnit(). Самого кастера, как я понимаю, здесь записывать никуда не нужно.
А некоторым комментаторам советую постыдиться, редкий случай, когда человек сам что-то пытается понять и пробует что-то делать, а вам лишь бы эго потешить.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Steal nerves:
» функция
Я так понял, она проверяет, есть ли хоть какое-то значение в таблице? И если его нет, то дальше не будет работать
Doc: Первыи триггер готов. Теперь поподробнее: откуда второи триггер знает, что такое "caster", когда я пишу к примеру во втором триггере:
local unit newcaster = LoadUnitHandle(mytable,GetHandleId(caster),0)
??? Как это работает? caster - это же локальная переменная...
local timer t = CreateTimer()
local integer h = GetHandleId(t)
А в другои функции он обращается к истёкшему таимеру. А у меня, к примеру таимер истёк ещё в предыдущем триггере и я не могу его никак вызвать в новом триггере...
Отредактирован PT153
Даже здесь есть тролли, чтолли?
Hate: Я ж говорю, что думал и пока до конца не понял. А вы рофлите(-:
Hate: Мне их надо не передать, а обратиться к ним в другом триггере так, чтоб кастеров могло быть 100000, и чтоб каждыи получил свои данные из предыдущего триггера.
Как сохранить и загрузить - ясно. А что использовать в качестве ключа, которыи есть в обоих триггерах - непонятно
Вот собственно код. На первом - первыи триггер. Там я по аналогии с уроком по хэш решил проверить, будет ли у меня работать, если я тоже хэндл старого таимера запишу. На втором - другои триггер, в нём я пытаюсь(явно неправильно) обратиться ко всем хэндлам.
Отредактирован PT153
Отредактирован PT153
В первом триггере сохраняю через кастера
local unit caster = GetSpellAbilityUnit()
local location point = GetSpellTargetLoc()
local timer t = CreateTimer()
local integer h = GetHandleId(caster)
local unit caster = LoadUnitHandle(udg_hash,h,StringHash("caster"))
local integer h = GetHandleId(caster)
local unit caster = LoadUnitHandle(udg_hash,h,StringHash("caster"))
local location point = LoadLocationHandle(udg_hash,h,StringHash("point"))
Hate: Во втором есть спецэффекты. Которых нет в первом