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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
11
5 лет назад
0
Hate:
никак это не работает, сами подумать не можете вообще?
Спасибо! Я думаю уже 12 часов, знаете ли. Просто непонятно, как устроено. В примере из статьи про хэш таблицы парень записывает в таблицу хэндл таимера
local timer t = CreateTimer()
local integer h = GetHandleId(t)
А в другои функции он обращается к истёкшему таимеру. А у меня, к примеру таимер истёк ещё в предыдущем триггере и я не могу его никак вызвать в новом триггере...
0
26
5 лет назад
0
ну вы подумайте как передать нужные данные куда вам нужно. без скринов или кода другим людям остается гадать на кофейной гуще как вы сделали и что у вас не выходит
0
11
5 лет назад
Отредактирован PT153
0
Hate:
ну вы подумайте как передать нужные данные куда вам нужно. без скринов или кода другим людям остается гадать на кофейной гуще как вы сделали и что у вас не выходит
Для чего вы это пишите?) Чтоб я посчитал себя глупым?:D
Даже здесь есть тролли, чтолли?
Hate:
ну вы подумайте как передать нужные данные куда вам нужно. без скринов или кода другим людям остается гадать на кофейной гуще как вы сделали и что у вас не выходит
Я ж говорю, что думал и пока до конца не понял. А вы рофлите(-:
Hate:
ну вы подумайте как передать нужные данные куда вам нужно. без скринов или кода другим людям остается гадать на кофейной гуще как вы сделали и что у вас не выходит
Мне их надо не передать, а обратиться к ним в другом триггере так, чтоб кастеров могло быть 100000, и чтоб каждыи получил свои данные из предыдущего триггера.
Как сохранить и загрузить - ясно. А что использовать в качестве ключа, которыи есть в обоих триггерах - непонятно
Вот собственно код. На первом - первыи триггер. Там я по аналогии с уроком по хэш решил проверить, будет ли у меня работать, если я тоже хэндл старого таимера запишу. На втором - другои триггер, в нём я пытаюсь(явно неправильно) обратиться ко всем хэндлам.
То, что ниже и не видно - не играет роли.
Загруженные файлы
0
29
5 лет назад
Отредактирован PT153
0
DopaMine, отталкиваться нужно от имеющихся данных, в Вашем случае сохранять данные в первом триггере нужно на юнита, которого атакуют во втором
0
11
5 лет назад
Отредактирован PT153
0
Doc, тогда выходит так:
В первом триггере сохраняю через кастера
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"))
Мне в итоге неоткуда брать этот h - ключ, по которому я всё записал...

И выскакивает ошибка в первом триггере о том, что он не понимает, что это за кастер
Загруженные файлы
0
26
5 лет назад
0
вам написали про юнита, вы продолжаете долбиться в таймер
у каждого объекта на карте есть свой хэндл, это уникальный номер, будь то таймер, юнит, или разрушаемая декорация, разница на кого сохранять нулевая
0
11
5 лет назад
0
Так как я в первом триггере и сохраняю, и загружаю все данные. Может, не обязательно все мне нужны в первом триггере. Но сути не меняет. Я просто не понимаю, как мне во втором триггере объявить хоть что-то из первого, что является неизменным
0
26
5 лет назад
0
что появляется во втором триггере? какие объекты?
0
11
5 лет назад
0
Hate:
вам написали про юнита, вы продолжаете долбиться в таймер
у каждого объекта на карте есть свой хэндл, это уникальный номер, будь то таймер, юнит, или разрушаемая декорация, разница на кого сохранять нулевая
Понимаю. Ну вот представьте: в первом триггере вы жмёте абилку. Во втором триггере она срабатывает при условии, что вы атакованы. Через что вы юнита запишите таким образом, чтобы второи триггер понял, по какому ключу загружать? Для того, чтоб когда 100 человек юзали одновременно абилку, она срабатывала у каждого правильно.
Hate:
что появляется во втором триггере? какие объекты?
Во втором есть спецэффекты. Которых нет в первом
1
26
5 лет назад
1
вы на ключ юнита пишете все данные, и достаете с его же ключа. что непонятного то, с таймера вы достаете, а юнит непреодолимая стена?
0
11
5 лет назад
0
И позиция кастера есть во втором триггере. А в первом только позиция точки-цели заклинания
А юнита с какого ключа достать тогда?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.