84 if (!playerController)
85 return SCR_ECharacterRank.PRIVATE;
89 return SCR_ECharacterRank.PRIVATE;
91 SCR_RankContainer ranks = factionManager.GetFactionRanks(playerController.GetPlayerId());
121 return (rpl && rpl.IsProxy());
138 if (!playerController)
154 const SCR_ECharacterRank newRank = factionManager.GetFactionRanks(playerController.GetPlayerId()).GetRankByXP(
m_iPlayerXP);
155 comp.SetCharacterRank(newRank, !notify);
170 int playerID = owner.GetPlayerId();
183 if (newRank == SCR_ECharacterRank.INVALID)
190 SCR_ECharacterRank newRank = ranks.
GetNextRank(rank);
192 if (newRank == SCR_ECharacterRank.INVALID)
218 int playerID = owner.GetPlayerId();
247 m_OnXPChanged.Invoke(currentXP, rewardID, XPToAdd, volunteer, profileUsed, skillLevel);
254 BaseGameMode gameMode =
GetGame().GetGameMode();
258 SCR_XPHandlerComponent comp = SCR_XPHandlerComponent.Cast(gameMode.FindComponent(SCR_XPHandlerComponent));
263 const int survivalRewardCycleDuration = comp.GetSurvivalRewardCooldown();
264 if (survivalRewardCycleDuration > 0)
281 BaseGameMode gameMode =
GetGame().GetGameMode();
285 SCR_XPHandlerComponent comp = SCR_XPHandlerComponent.Cast(gameMode.FindComponent(SCR_XPHandlerComponent));
290 if (!playerController)
293 int playerID = playerController.GetPlayerId();
297 int baseXPReward = comp.GetXPRewardAmount(
SCR_EXPRewards.SURVIVAL);
315 BaseGameMode gameMode =
GetGame().GetGameMode();
319 SCR_XPHandlerComponent xpHandlerComponent = SCR_XPHandlerComponent.Cast(gameMode.FindComponent(SCR_XPHandlerComponent));
320 if (!xpHandlerComponent)
323 int seizingRewardCycleDuration = xpHandlerComponent.GetSeizeBaseProgressionRewardTimer();
324 if (seizingRewardCycleDuration == 0)
359 if (!xpHandlerComponent)
363 if (!playerController)
367 int playerID = playerController.GetPlayerId();
376 if (!capturingFaction)
383 if (!playerFaction || playerFaction != capturingFaction)
387 int xpReward = xpHandlerComponent.GetSeizeBaseProgressionXP(baseFaction.GetFactionKey());
391 xpHandlerComponent.AwardXP(playerID,
SCR_EXPRewards.BASE_SEIZED, 1,
false, xpReward);
407 return !world.GetServerTimestamp().Greater(cooldownTimestamp);
434 BaseGameMode gameMode =
GetGame().GetGameMode();
439 SCR_XPHandlerComponent comp = SCR_XPHandlerComponent.Cast(gameMode.FindComponent(SCR_XPHandlerComponent));
456 if (addDirectly != 0)
469 int XP = comp.GetXPRewardAmount(rewardID);
481 int XPToAdd =
Math.Round(XP * multiplier * comp.GetXPMultiplier());
483 const int XPToAddBySkill = 0;
484 bool profileUsed =
false;
485 const int skillLevel = 0;
504 if (XPToAdd + XPToAddBySkill == 0)
525 super.EOnDiag(owner, timeSlice);
531 DbgUI.Begin(
"Player XP Debug", 50, 50);
532 DbgUI.Text(
"Player XP: " + xp);
541 super.OnPostInit(owner);
556 super.OnDelete(owner);
ArmaReforgerScripted GetGame()
SCR_BaseGameMode GetGameMode()
SCR_CacheNoteComponentClass ScriptComponentClass RplProp()] protected ref array< string > m_aLines
void SCR_CharacterRankComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
void SCR_FactionManager(IEntitySource src, IEntity parent)
ScriptInvokerBase< OnPlayerXPChangedMethod > OnPlayerXPChanged
func OnPlayerXPChangedMethod
proto external GenericComponent FindComponent(typename typeName)
void Rpc(func method, void p0=NULL, void p1=NULL, void p2=NULL, void p3=NULL, void p4=NULL, void p5=NULL, void p6=NULL, void p7=NULL)
void ConnectToDiagSystem(IEntity owner)
proto external Managed FindComponent(typename typeName)
void SetSurvivalRewardCycle(int cycle)
void SetPlayerXPSinceLastSpawn(int xp)
void OnDelete(IEntity owner)
SCR_CampaignMilitaryBaseComponent m_SeizedBaseComponent
void CheatXP(int xpChange)
ref ScriptInvoker m_OnXPChanged
int m_iPlayerXPSinceLastSpawn
void OnPostInit(IEntity owner)
void UpdatePlayerRank(bool notify=true)
float m_fSuicidePenaltyTimestamp
void RpcAsk_CheatXP(int xpChange)
Cheat method to change player's XP - server side.
int GetPlayerXP()
Getter for player XP.
OnPlayerXPChanged GetOnPlayerXPChanged()
void CheatRank(bool demote=false)
int GetPlayerXPSinceLastSpawn()
Getter for player XP accumulated since last respawn.
void SeizingProgressReward(SCR_XPHandlerComponent xpHandlerComponent)
bool m_bSeizingRewardCycleActive
void RpcDo_OnPlayerXPChanged(int currentXP, int XPToAdd, bool volunteer, SCR_EXPRewards rewardID, bool profileUsed, int skillLevel)
void StartSurvivalRewardCycle()
int GetSurvivalRewardCycle()
float GetSuicidePenaltyTimestamp()
ref map< SCR_EXPRewards, WorldTimestamp > m_mRewardCooldowns
<XPReward type, cooldownTimestamp>
bool HasPlayerRewardCooldown(SCR_EXPRewards rewardID)
void SetSuicidePenaltyTimestamp(float timestamp)
int m_iSurvivalRewardCycle
void StartSeizingProgressReward(notnull SCR_CampaignMilitaryBaseComponent base)
void StopSurvivalRewardCycle()
ref OnPlayerXPChanged m_OnPlayerXPChanged
void StopSeizingProgressReward(notnull SCR_CampaignMilitaryBaseComponent base)
void SetPlayerRewardCooldown(SCR_EXPRewards rewardID, float cooldown)
ScriptInvoker GetOnXPChanged()
SCR_ECharacterRank GetPlayerRankByXP()
void AddPlayerXP(SCR_EXPRewards rewardID, float multiplier=1.0, bool volunteer=false, int addDirectly=0)
void RpcAsk_CheatRank(bool demote)
Cheat method to change player's rank - server side.
SCR_ECharacterRank GetNextRank(SCR_ECharacterRank rankID)
SCR_ECharacterRank GetRankByXP(int XP)
SCR_ECharacterRank GetPreviousRank(SCR_ECharacterRank rankID)
int GetRequiredRankXP(SCR_ECharacterRank rankID)
Config template for XP rewards.
float GetRewardCooldown()
return reward cooldown [s]
bool CanUseRewardCooldown()
return true if player can use cooldown for this reward type
void EOnDiag(IEntity owner, float timeSlice)
proto external GenericEntity GetOwner()
Get owner entity.
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
RplCondition
Conditional replication rule. Fine grained selection of receivers.
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.