Добавлен pAxsIs
На этот раз моей задачей стало сравнение региона с коллекцией регионов (которая перебирается циклом), пока не найду нужный, НО в триггерах естественно нет сравнения по регионам.
Я использовал GetTriggeringRegion(), однако сравнивая регион, который был инициатором (Unit enter Region) с этим же регионом из массива я получаю false. Подскажите что не так?
Я использовал GetTriggeringRegion(), однако сравнивая регион, который был инициатором (Unit enter Region) с этим же регионом из массива я получаю false. Подскажите что не так?
Вот простой пример в котором также не работает это:
События:
Действия
События:
- Unit enter region1
Действия
- (CS) if (GetTriggeringRegion() == region1) then
- Вывести сообщение всем игрокам: "Работает"
- (CS) endif
P.S. Сообщение не выводится когда юнит входит в регион
Принятый ответ
Никак. Регионы и области не сравниваются параметрически, то есть координатами, которые покрывают. Но можно узнать, находится ли точка в том или ином регионе. То есть, в твоем примере, проверить, находится ли юнит одновременно и в tempReg и в tempReg2.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован pAxsIs
Отредактирован PT153
pAxsIs: Потому что ты регистрируешь событие на вход в rect. А оно работает так: создаётся новый регион, в который добавляется указанный rect. Переменной, в которой хранится ссылка на этот регион, нет, но GetTriggeringRegion() возвращает именно этот регион. Не говоря уже о том, что ты сравниваешь разные типы.
GetLocalPlayer:
Все просто, но на гуи не это у вас не выйдет.
Не хочу работать месяц над картой, а потом узнать, что навороченный редактор не дал мне запустить ее в варике. В общем такие опасения. Когда один раз врубал WE U, то мне сообщило, что карта типа устарела и предложил обновить ее для этого редактора, вот тогда я отказался и вернулся на стандартный редактор.
Отредактирован PT153
А открывать сделанную в JNPG карту в стандартном редакторе нет смысла.
JNPG работает только в версиях до 1.27.
И да, если ты откроешь карту, сделанную в редакторе для предыдущей версии игры, в редакторе для новой версии, то сообщение о "старости" карты высветится в любом случае, а нажатие OK ничего не сломает. Главное не делать наоборот.
Отредактирован pAxsIs
1.24, 1.26, 1.27 и тд - а обратно не получится.
Всем спасибо!
Отредактирован GetLocalPlayer
PT153:
pAxsIs:
Отредактирован PT153
А если делать в JNPG с включённым UMSWE, на версиях выше 1.27, могут быть проблемы.
pAxsIs: Есть вариант сделать это без создания региона каждый раз при срабатывании триггера.
Триггер инициализации.
CS: local integer a = 0
CS: loop
CS: exitwhen a == RegionAmount
CS: set Regions = CreateRegion()
CS: endloop
CS: call RegionAddRect(Regions[0], <нарисованный тобой rect>)
CS: ...
CS: call RegionAddRect(Regions[RegionAmount - 1], <нарисованный тобой rect>)
CS: call TriggerRegisterEnterRegion(<нужный триггер>, Regions[0], null)
CS: ...
CS: call TriggerRegisterEnterRegion(<нужный триггер>, Regions[RegionAmount - 1], null)
В JNPG + FNWE всё это можно сделать в GUI.
Если у тебя единый триггер для всех регионов, то зарегистрировать их можно также циклом, внутри триггера находить нужный сравнением с GetTriggeringRegion().