Прошу совета в деле отлова лучницы и гиппогрифа при применении способности "Расседлать"('Adec')
Я отлавливаю приказ, получается отловить лучницу на гиппоргрифе, но как отловить лучницу и гиппогрифа по отдельности? В голову пока только пришло брать координаты лучницы на гиппогрифе и отлавливать юнитов в небольшом радиусе от этих координат сразу после выполнения приказа. Нет ли лучшего способа это сделать? Так же, прошу знающих подсказать, как работает этот механизм. Вот есть лучница и есть гиппогриф. Лучница седлает гиппогрифа. Что происходит после этого? Два исходных юнита удаляются игрой навсегда или прячутся, либо удаляются временно? После того как лучница слезет с гиппогрифа, игра создает двух новых юнитов, либо возвращает двух старых? Если старых, хранится ли где то эта информация и хранится ли где то информация о связке лучница и гиппогриф -> лучница на гиппогрифе? Мои наброски по отлову:
Я отлавливаю приказ, получается отловить лучницу на гиппоргрифе, но как отловить лучницу и гиппогрифа по отдельности? В голову пока только пришло брать координаты лучницы на гиппогрифе и отлавливать юнитов в небольшом радиусе от этих координат сразу после выполнения приказа. Нет ли лучшего способа это сделать? Так же, прошу знающих подсказать, как работает этот механизм. Вот есть лучница и есть гиппогриф. Лучница седлает гиппогрифа. Что происходит после этого? Два исходных юнита удаляются игрой навсегда или прячутся, либо удаляются временно? После того как лучница слезет с гиппогрифа, игра создает двух новых юнитов, либо возвращает двух старых? Если старых, хранится ли где то эта информация и хранится ли где то информация о связке лучница и гиппогриф -> лучница на гиппогрифе? Мои наброски по отлову:
function Trig_HippogryphOrders_Conditions takes nothing returns boolean
local integer orderId = GetIssuedOrderIdBJ()
return orderId == String2OrderIdBJ("coupleinstant") or orderId == String2OrderIdBJ("coupletarget") or orderId == String2OrderIdBJ("decouple")
endfunction
function Trig_HippogryphOrders_Actions takes nothing returns nothing
local unit unitExecutingOrder = GetOrderedUnit()
local unit unitTargetOfOrder = GetOrderTargetUnit()
local integer orderId = GetIssuedOrderIdBJ()
local string orderName
if (orderId == String2OrderIdBJ("coupleinstant")) then
set orderName = "COUPLE INSTANT (MOUNT)"
elseif (orderId == String2OrderIdBJ("coupletarget")) then
set orderName = "COUPLE TARGET (MOUNT)"
else
set orderName = "DECOUPLE (DISMOUNT)"
endif
call PrintText("=== " + orderName + " DETECTED ===", COLOR_CYAN)
if (unitExecutingOrder != null) then
call PrintText("Executing Unit: " + I2S(GetUnitTypeId(unitExecutingOrder)), COLOR_CYAN)
if (GetUnitTypeId(unitExecutingOrder) == 'ehpr') then
call PrintText("-> HIPPO WITH ARCHER", COLOR_CYAN)
elseif (GetUnitTypeId(unitExecutingOrder) == 'earc') then
call PrintText("-> ARCHER", COLOR_CYAN)
elseif (GetUnitTypeId(unitExecutingOrder) == 'ehip') then
call PrintText("-> HIPPO", COLOR_CYAN)
endif
else
call PrintText("Executing Unit: NULL", COLOR_CYAN)
endif
if (unitTargetOfOrder != null) then
call PrintText("Target Unit: " + I2S(GetUnitTypeId(unitTargetOfOrder)), COLOR_CYAN)
else
call PrintText("Target Unit: NULL", COLOR_CYAN)
endif
set unitExecutingOrder = null
set unitTargetOfOrder = null
endfunction
//===========================================================================
function InitTrig_HippogryphOrders takes nothing returns nothing
set gg_trg_HippogryphOrders = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_HippogryphOrders, EVENT_PLAYER_UNIT_ISSUED_ORDER)
call TriggerAddCondition(gg_trg_HippogryphOrders, Condition(function Trig_HippogryphOrders_Conditions))
call TriggerAddAction(gg_trg_HippogryphOrders, function Trig_HippogryphOrders_Actions)
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.

WC3




Крч ждём тех кто с этой абилкой работал.
Когда юзают абилку - добавляем счетчик, что должны отловить спавн пару юнитов.
Если нужно с ними много поработать - можешь добавить в локальные переменные (сохранить) и дальше уже работать.