'''
local e=GetTriggerEventId()
print(e)
print(EVENT_UNIT_SELECTED)

''''
или
''''
local e=GetTriggerEventId()
print(e)
print(EVENT_PLAYER_UNIT_SELECTED)
''''
Ломал голову почему не работает if then и решил проверить.
Выдают разные ID по этому в условии невозможно сравнить...Либо я баран либо близы накосячили.

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

сравнивай результат функции GetHandleId
if GetHandleId(GetTriggerEventId()) == GetHandleId(EVENT_PLAYER_UNIT_SELECTED) then
	...
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
7
5 лет назад
1
На хайве уже обсуждалось, значит все же близы.
2
3
5 лет назад
2
сравнивай результат функции GetHandleId
if GetHandleId(GetTriggerEventId()) == GetHandleId(EVENT_PLAYER_UNIT_SELECTED) then
	...
end
Принятый ответ
0
24
5 лет назад
0
Начнем с того, что это явно разные типы - eventid. unitevent, playerunitevent. Более того, то что вы видите после двоеточия, это не айди, это адрес в памяти, так выводятся все переменные нативных типов - тип, двоеточие, адрес в памяти. Что с этим делать - понятия не имею, не было необходимости пока сравнивать тип события. Возможно действительно сработает предложеный выше вариант сравнения по хендлу.
0
3
5 лет назад
Отредактирован Drynwhyl
0
prog, Просто дело в том что на JASS это всегда работало так как (из common.j)
type playerunitevent    extends     eventid
type unitevent          extends     eventid
0
24
5 лет назад
0
Drynwhyl, Скорее всего, близы не научили Lua понимать наследование нативных типов при сравнении - это в метатаблице нативного типа переопределить операцию сравнения нужно, иначе она по адресу в памяти сравнивать будет.
0
8
5 лет назад
0
Drynwhyl:
сравнивай результат функции GetHandleId
""
if GetHandleId(GetTriggerEventId()) == GetHandleId(EVENT_PLAYER_UNIT_SELECTED) then
...
end
"''
Вроде пошло !спс
Чтобы оставить комментарий, пожалуйста, войдите на сайт.