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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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
И позиция кастера есть во втором триггере. А в первом только позиция точки-цели заклинания
А юнита с какого ключа достать тогда?
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
потому что это локальная переменная. сами же написали это, и сами удивляетесь?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.