Привет, нужен совет. Есть карта, для 12 человек, но может быть и меньше (4,6,8,10). На определенном этапе игры, хочу симулировать клик юнита для всех игроков.
Дело в том, что некоторые из игроков видеть юнита не могут. И нужно отловить лишь тех, у кого после симуляции клика будет выбран юнит.
Есть код, который работает только для одного игрока, Player(0).
А как сделать такое для каждого и чтобы потом отловить именно тех, у кого был выбран юнит после клика?
Видел, что есть функции 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 - группу игроков - и в триггере с событием на выделение добавлять игрока триггера в этот форсе.
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
32
3 года назад
1
Нахрена возится с кликом, если можно просто сделать все эти действия без клика. Проверить играет ли игрок и видит ли твоего юнита, дальше делаем действия...
То что сейчас выбрал игрок - локально, и требует синхронизации, в мульиплеере на это порой уходит много времени.
0
28
3 года назад
0
Ну так есть событие на выбор юнита. Насколько мне известно, SelectUnit не может выбрать юнита вне обзора игрока. Если это так, то проблемы нет. Если нет, то в триггер на выбор юнита добавляем условие, что игрок триггера видет выбранного юнита.
0
2
3 года назад
0
PT153, quq_CCCP,
Проверка через IsUnitVisible() не нужна. Я хотел бы симулировать клик по юниту каждому игроку.
Если юнит не виден для игрока, юнит не будет выделен. Это уже работает и проверено для Player(0).
Но как для всех это сделать и сохранить игроков, у которых будет выделен юнит, не знаю.
2
13
3 года назад
2
function Trig_IsUnitSelected_Conditions takes nothing returns boolean
	if(not(IsUnitSelected(imbaUnit, GetTriggerPlayer())==true))then
		return false
	endif
		return true
endfunction

function Trig_IsUnitSelected_Actions takes nothing returns nothing
	call ClearSelectionForPlayer(GetTriggerPlayer())
	//здесь будут какие-то действия с игроком, который выбрал юнита
	//но как понять какой именно игрок кликнул на юнита?
endfunction
1
24
3 года назад
Отредактирован prog
1
Если это очередная попытка борьбы с мапхаком, то у меня для вас плохие новости - нормальный мапхак давно умеет показывать невидимых юнитов не делая их выделяемыми.
2
28
3 года назад
2
Если юнит не виден для игрока, юнит не будет выделен. Это уже работает и проверено для Player(0).
В таком случае нужно создать force - группу игроков - и в триггере с событием на выделение добавлять игрока триггера в этот форсе.
Принятый ответ
1
32
3 года назад
1
prog:
Если это очередная попытка борьбы с мапхаком, то у меня для вас плохие новости - нормальный мапхак давно умеет показывать невидимых юнитов не делая их выделяемыми.
Как я сразу не догадался =)
Думаю нафига ему эмитировать клик, если есть все и так. А тут борьба с мх, там клик в туман войны заменяется селф кликом уже давно.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.