Sorry, I found the cause.
My entire code is here:
prop_teleport := class(creative_device):
@editable
TriggerCard : []trigger_device = array{}
var PlayerScore : int = 0
@editable
ScoreManagerDevice<public> : score_manager_device = score_manager_device{}
OnBegin<override>()<suspends>:void=
Playspace: fort_playspace = GetPlayspace()
var AllPlayers: []player = Playspace.GetPlayers()
Sleep(3.0)
for(Index -> TriggeredCard : TriggerCard):
spawn{CheckTrigger(TriggeredCard,Index)}
CheckTrigger(Card:trigger_device,Index:int)<suspends>:void =
loop:
QAgent := Card.TriggeredEvent.Await()
if(ToString(Index) = CardIndex):
AwardScore(QAgent)
break
else:
PenaltyScore(QAgent)
AwardScore<public>(QAgent:?agent) : void =
set PlayerScore = PlayerScore + 1
if(Agent := QAgent?):
ScoreManagerDevice.SetScoreAward(PlayerScore)
ScoreManagerDevice.Activate(Agent)
PenaltyScore<public>(QAgent:?agent) : void =
set PlayerScore = PlayerScore - 1
if(Agent := QAgent?):
ScoreManagerDevice.SetScoreAward(PlayerScore)
ScoreManagerDevice.Activate(Agent)
I use the same score variable “PlayerScore” every time AwardScore/PenaltyScore method are executed, this is the reason. I will revise my code, but there is another problem:
In my game, more than two player play. And AwardScore/PenaltyScore method work when Trigger Device is shoot (Score is grant to QAgent)
So, I will prepare more than two “PlayerScore” variable.
prop_teleport := class(creative_device):
@editable
TriggerCard : []trigger_device = array{}
var PlayerScore : int = 0
var PlayerScore2 : int = 0
var PlayerScore3 : int = 0
var PlayerScore4 : int = 0
var PlayerScore5 : int = 0
@editable
ScoreManagerDevice<public> : score_manager_device = score_manager_device{}
However, the content of QAgent depends on player’s action (shoot). How should I linke “PlayerScore” variable with each player?
Please give me some advices.
Regards,