i’ve setup a player map tracking player trigger counts to give score to player accordingly. for each x amount of trigger event, the player gets one points, the player map will then reset to 0 and continues. code works most of the time but sometime the it goes rogue and gives player a ginormous amount of score. i’ve tried to debug and replicate the scenario but it never happened when i’m testing in edit mode. it only happens in public game when there’s multiple player. can someone tell me did i do wrong here?
@editable var triggers : []trigger_device = array{}
@editable var score_manager : score_manager_device = score_manager_device{}
var PlayerHitTracker : [player]int = map{}
var interval : float = 5.0
var HitsPerMeter : ?int = false
OnBegin<override>()<suspends>:void=
AllPlayers := GetPlayspace().GetPlayers()
for(Player : AllPlayers):
if{set PlayerHitTracker[Player] = 0}
set HitsPerMeter = option{Round[100.0/interval]}
for(trigger: triggers):
trigger.TriggeredEvent.Subscribe(OnTriggerHit)
OnTriggerHit(Agent : ?agent): void =
if(TriggeredAgent := Agent?, TriggeredPlayer := player[TriggeredAgent], HPM := HitsPerMeter?):
if(PlayerHitTracker[TriggeredPlayer] < HPM):
if{set PlayerHitTracker[TriggeredPlayer] += 1}
else:
if(set PlayerHitTracker[TriggeredPlayer] = 0):
score_manager.Activate(TriggeredAgent)
score := score_manager.GetCurrentScore(TriggeredAgent)
Print("{score}")
OnPlayerAdded(NewPlayer : player) : void =
if{set PlayerHitTracker[NewPlayer] = 0}