Привет, нужен совет. Есть карта, для 12 человек, но может быть и меньше (4,6,8,10). На определенном этапе игры, хочу симулировать клик юнита для всех игроков.
Дело в том, что некоторые из игроков видеть юнита не могут. И нужно отловить лишь тех, у кого после симуляции клика будет выбран юнит.
Есть код, который работает только для одного игрока, Player(0).
Дело в том, что некоторые из игроков видеть юнита не могут. И нужно отловить лишь тех, у кого после симуляции клика будет выбран юнит.
Есть код, который работает только для одного игрока, Player(0).
А как сделать такое для каждого и чтобы потом отловить именно тех, у кого был выбран юнит после клика?
Видел, что есть функции GetTriggerPlayer(), GetOwningPlayer(), но не знаю как их применять.
Видел, что есть функции GetTriggerPlayer(), GetOwningPlayer(), но не знаю как их применять.
function Trig_IsUnitSelected_Conditions takes nothing returns boolean
if(not(IsUnitSelected(imbaUnit,Player(0))==true))then
return false
endif
return true
endfunction
function Trig_IsUnitSelected_Actions takes nothing returns nothing
call ClearSelectionForPlayer(Player(0))
//здесь будут какие-то действия с игроком, который выбрал юнита
//но как понять какой именно игрок кликнул на юнита?
endfunction
function InitTrig_IsUnitSelected takes nothing returns nothing
set gg_trg_IsUnitSelected=CreateTrigger()
call TriggerRegisterUnitEvent(gg_trg_IsUnitSelected, imbaUnit, EVENT_UNIT_SELECTED)
call TriggerAddCondition(gg_trg_IsUnitSelected,Condition(function Trig_IsUnitSelected_Conditions))
call TriggerAddAction(gg_trg_IsUnitSelected,function Trig_IsUnitSelected_Actions)
endfunction
function Trig_UnitSelector_Actions takes nothing returns nothing
call SelectUnitSingle(imbaUnit)
endfunction
function InitTrig_UnitSelector takes nothing returns nothing
set gg_trg_UnitSelector=CreateTrigger()
call TriggerRegisterTimerEventPeriodic(gg_trg_UnitSelector, 0.5)
call TriggerAddAction(gg_trg_UnitSelector, function Trig_UnitSelector_Actions)
endfunction
Принятый ответ
Если юнит не виден для игрока, юнит не будет выделен. Это уже работает и проверено для Player(0).
В таком случае нужно создать force - группу игроков - и в триггере с событием на выделение добавлять игрока триггера в этот форсе.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
То что сейчас выбрал игрок - локально, и требует синхронизации, в мульиплеере на это порой уходит много времени.
Проверка через IsUnitVisible() не нужна. Я хотел бы симулировать клик по юниту каждому игроку.
Если юнит не виден для игрока, юнит не будет выделен. Это уже работает и проверено для Player(0).
Но как для всех это сделать и сохранить игроков, у которых будет выделен юнит, не знаю.
Отредактирован prog
Думаю нафига ему эмитировать клик, если есть все и так. А тут борьба с мх, там клик в туман войны заменяется селф кликом уже давно.