Сразу отвечу на главный вопрос - зачем? Существует множество статей о GetLocalPlayer(), в каждой говорится, какая полезная функция, и что с ее помощью можно сделать такое... но я нашел только как сделать локальный эффект.
Прежде чем просмотреть почти все нативки еще немного полезного текста:
События должны срабатывать у всех игроков
Десинхронизация обеспечена:
Code
function test takes nothing returns nothing local real t = 2.
if GetLocalPlayer() == Player(0) then set t = 1. endif
call TriggerRegisterTimerEvent(trg, t, false, function test2) endfunction
Касается всех событий
Если функция выполняется для определенных игроков, то все действия будут локальными
Десинхронизация будет т.к в функции test2 будет удален юнит только для Красного игрока
Code
function test2 takes nothing returns nothing call RemoveUnit(xz) endfunction
function test takes nothing returns nothing local timer tmr = CreateTimer()
if GetLocalPlayer() == Player(0) then call TimerStart(tmr, 1., false, function test2) endif
set tmr = null endfunction
* - функция должна быть для всех игроков, следовательно все остальные можно вызывать для отдельных игроков.
Цифарки под функциями - передаваемые аргументы, если к ним нету комментарий, тогда можно любые, или я забыл написать.
Конечно, ясно, что десинхронизацию вызовут, только нативки, которые работают с хэндлами, но я проверил почти все...Нуу, похожие функции, мне было лень проверять...
TimerStart - таймер должен хотя бы раз быть запущенным для всех игроков PauseTimer ResumeTimer
CreateDestructable*, CreateDeadDestructable*: 1 - нельзя убивать в разное время(разница в прочности), нельзя мешать путям(размер) 2, 3 - нельзя мешать путям и атаковать (только триггерно наносить урон) 4, 5, 6 - любые CreateDestructableZ*, CreateDeadDestructableZ*: 1 - нельзя убивать в разное время(разница в прочности), нельзя мешать путям 2, 3 - нельзя мешать путям и атаковать (только триггерно наносить урон) 4, 5, 6, 7 - любые SetDestructableInvulnerable - нельзя атаковать, наносить урон (только триггерно убивать, удалять) SetDestructableLife - нельзя убивать в разное время SetDestructableMaxLife - нельзя убивать в разное время DestructableRestoreLife - нельзя убивать в разное время QueueDestructableAnimation SetDestructableAnimation SetDestructableAnimationSpeed ShowDestructable - нельзя атаковать, мешать путям (убивать или триггерно наносить урон можно)
CreateItem*: 1 - нельзя брать, убивать в разное время(разница в прочности) 2, 3 - нельзя атаковать (только триггерно наносить урон), нельзя подбирать SetItemPosition - нельзя атаковать (только триггерно наносить урон), нельзя брать SetItemPlayer SetItemInvulnerable - нельзя атаковать (убивать или триггерно наносить урон можно) SetItemVisible - нельзя выделять, брать, атаковать, наносить урон (только триггерно удалять) SetItemCharges - нельзя расходовать больше чем видит другой игрок SetItemUserData
CreateUnit*: 1 - одинаков для всех 2 - Советую создать копию юнита и менять только визуальные параметры 3, 4 - нельзя давать приказы двигаться, мешать путям, атаковать юнита 5 - нельзя давать приказы двигаться ShowUnit - нельзя: выделять скрываемого(если уже выделен, тогда можно). Давать приказы на скрываемого юнита, давать скрываемому приказы типа цель, где цель не свой юнит. Убивать декорации. (убивать или триггерно наносить урон скрываемому можно). Также десинх от обзора этого юнита. SetUnitState(UNIT_STATE_LIFE) - нельзя убивать в разное время SetUnitState(UNIT_STATE_MANA) - нельзя применять способности, которые используют ману SetUnitX, SetUnitY, SetUnitPosition, SetUnitPositionLoc - нельзя давать приказы двигаться, мешать путям, атаковать юнита SetUnitFacing, SetUnitFacingTimed - нельзя давать приказы двигаться SetUnitFlyHeight SetUnitColor SetUnitScale SetUnitTimeScale SetUnitBlendTime SetUnitVertexColor QueueUnitAnimation SetUnitAnimation SetUnitAnimationByIndex SetUnitAnimationWithRarity AddUnitAnimationProperties SelectUnit UnitAddAbility*, UnitRemoveAbility*: 1 - нету смысла, не пробовал 2 - не применять способность, способность не является аурой SetUnitUserData
Player* SetPlayerState: 1, 2 - нету смысла, не пробовал 3 - нельзя использовать больше чем видит другой игрок