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