22 static SCR_PossessingManagerComponent GetInstance()
24 BaseGameMode gameMode =
GetGame().GetGameMode();
26 return SCR_PossessingManagerComponent.Cast(gameMode.FindComponent(SCR_PossessingManagerComponent));
62 RplComponent rplComponent = RplComponent.Cast(
Replication.FindItem(rplId));
64 return rplComponent.GetEntity();
70 return GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerId);
86 return GetRplId(
GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerId));
96 return GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerId);
108 return GetRplId(
GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerId));
110 return RplId.Invalid();
119 array<int> players = {};
120 for (
int i = 0, count =
GetGame().GetPlayerManager().
GetPlayers(players); i < count; i++)
134 array<int> players = {};
135 for (
int i = 0, count =
GetGame().GetPlayerManager().
GetPlayers(players); i < count; i++)
149 int iPlayerId =
GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(entity);
162 int iPlayerId =
GetGame().GetPlayerManager().GetPlayerIdFromEntityRplId(rplId);
187 RplComponent rpl = RplComponent.Cast(mainEntity.
FindComponent(RplComponent));
189 mainEntityID = rpl.Id();
226 static IEntity GetPlayerMainEntity(
int iPlayerId)
228 SCR_PossessingManagerComponent possessingManager = SCR_PossessingManagerComponent.GetInstance();
229 if (possessingManager)
230 return possessingManager.GetMainEntity(iPlayerId);
232 return GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerId);
241 static RplId GetPlayerMainRplId(
int iPlayerId)
243 SCR_PossessingManagerComponent possessingManager = SCR_PossessingManagerComponent.GetInstance();
244 if (possessingManager)
245 return possessingManager.GetMainRplId(iPlayerId);
247 return possessingManager.GetRplId(
GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerId));
254 static int GetPlayerIdFromMainEntity(
IEntity entity)
256 SCR_PossessingManagerComponent possessingManager = SCR_PossessingManagerComponent.GetInstance();
257 if (possessingManager)
258 return possessingManager.GetIdFromMainEntity(entity);
260 return GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(entity);
267 static int GetPlayerIdFromMainRplId(
RplId rplId)
269 SCR_PossessingManagerComponent possessingManager = SCR_PossessingManagerComponent.GetInstance();
270 if (possessingManager)
271 return possessingManager.GetIdFromMainRplId(rplId);
273 return GetGame().GetPlayerManager().GetPlayerIdFromEntityRplId(rplId);
280 static int GetPlayerIdFromControlledEntity(
IEntity entity)
282 SCR_PossessingManagerComponent possessingManager = SCR_PossessingManagerComponent.GetInstance();
283 if (possessingManager)
284 return possessingManager.GetIdFromControlledEntity(entity);
286 return GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(entity);
293 static int GetPlayerIdFromControlledEntity(
RplId rplId)
295 SCR_PossessingManagerComponent possessingManager = SCR_PossessingManagerComponent.GetInstance();
296 if (possessingManager)
297 return possessingManager.GetIdFromControlledRplId(rplId);
299 return GetGame().GetPlayerManager().GetPlayerIdFromEntityRplId(rplId);
328 RplComponent rpl = RplComponent.Cast(entity.
FindComponent(RplComponent));
333 return RplId.Invalid();
339 int pid = instigatorContextData.GetVictimPlayerID();
344 rc.NotifyReadyForSpawn_S();
358 if (playerController)
367 editorManager.Open();
382 return super.HandlePlayerKilled(playerId, playerEntity, killerEntity, instigator);
394 super.OnPostInit(owner);
400 super.OnDelete(owner);
407 writer.WriteInt(mainEntityCount);
409 for (
int i = 0; i < mainEntityCount; i++)
422 reader.ReadInt(mainEntityCount);
426 for (
int i = 0; i < mainEntityCount; i++)
428 reader.ReadInt(playerID);
429 reader.ReadRplId(rplID);
ArmaReforgerScripted GetGame()
override bool RplLoad(ScriptBitReader reader)
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
void SCR_BaseGameModeComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
override bool RplSave(ScriptBitWriter writer)
int GetPlayers(out notnull array< int > outPlayers)
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
void OnControllableDestroyed(IEntity entity, IEntity killerEntity, Instigator instigator, notnull SCR_InstigatorContextData instigatorContextData)
int GetIdFromMainRplId(RplId rplId)
int GetIdFromMainEntity(IEntity entity)
void SetMainEntityBroadcast(int playerID, bool isPossessing, RplId mainEntityID)
int GetIdFromControlledEntity(IEntity entity)
IEntity GetPossessedEntity(int iPlayerId)
ScriptInvoker GetOnPossessed()
SCR_PossessingManagerComponentClass m_MainEntities
void SetMainEntity(int playerID, IEntity controlledEntity, IEntity mainEntity, bool isPossessing)
int GetIdFromControlledRplId(RplId rplId)
ScriptInvokerOnPossessedProxy GetOnPossessedProxy()
RplId GetRplId(IEntity entity)
ref ScriptInvoker Event_OnPossessed
RplId GetMainRplId(int iPlayerId)
ScriptInvokerBase< ScriptInvokerOnPossessedProxyMethod > ScriptInvokerOnPossessedProxy
IEntity GetMainEntity(int iPlayerId)
override bool HandlePlayerKilled(int playerId, IEntity playerEntity, IEntity killerEntity, notnull Instigator instigator)
func ScriptInvokerOnPossessedProxyMethod
ref ScriptInvokerOnPossessedProxy Event_OnPossessedProxy
override void OnControllableDeleted(IEntity entity)
bool IsPossessing(int iPlayerId)
RplId GetPossessedRplId(int iPlayerId)
void SCR_RespawnComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
enum EVehicleType IEntity
proto external Managed FindComponent(typename typeName)
Replication item identifier.
Core component to manage SCR_EditorManagerEntity.
SCR_EditorManagerEntity GetEditorManager()
void SetPossessedEntity(IEntity entity)
override void OnPlayerDisconnected(int playerId, KickCauseCode cause, int timeout)
proto external PlayerController GetPlayerController()
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.