Problems with Code

Hey there,
I have some problems with my Verse Code. Im trying to create a Last-Team-Standing Device to activate a Cutscene. I dont get any Errors in Visual Studio Code but the Code is not working. Each Player Counter is connected to 2x Player Spawner (+1 Register on Player spwan) and an Elimination Manager (-1 Register on Eliminated).

Here is my code:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

team_counter_device := class(creative_device):

@editable 
TeamCounter_1:player_counter_device = player_counter_device{}
@editable 
TeamCounter_2:player_counter_device = player_counter_device{}
@editable 
TeamCounter_3:player_counter_device = player_counter_device{}
@editable 
TeamCounter_4:player_counter_device = player_counter_device{}
@editable 
TeamCounter_5:player_counter_device = player_counter_device{}
@editable 
TeamCounter_6:player_counter_device = player_counter_device{}
@editable 
TeamCounter_7:player_counter_device = player_counter_device{}
@editable 
TeamCounter_8:player_counter_device = player_counter_device{}
@editable 
Trigger_1: trigger_device = trigger_device{}
@editable
Audio_1 : audio_player_device = audio_player_device {}

var TeamCounter_amount_1: int = 5
var TeamCounter_amount_2: int = 5
var TeamCounter_amount_3: int = 5
var TeamCounter_amount_4: int = 5
var TeamCounter_amount_5: int = 5
var TeamCounter_amount_6: int = 5
var TeamCounter_amount_7: int = 5
var TeamCounter_amount_8: int = 5
var TeamCounter_amount_9: int = 5

TeamCounter_1_0():void =
    set TeamCounter_amount_1 = 0
TeamCounter_2_0():void =
    set TeamCounter_amount_2 = 0
TeamCounter_3_0():void =
    set TeamCounter_amount_3 = 0
TeamCounter_4_0():void =
    set TeamCounter_amount_4 = 0
TeamCounter_5_0():void =
    set TeamCounter_amount_5 = 0
TeamCounter_6_0():void =
    set TeamCounter_amount_6 = 0  
TeamCounter_7_0():void =
    set TeamCounter_amount_7 = 0  
TeamCounter_8_0():void =
    set TeamCounter_amount_8 = 0

Last_Team_1():void = 
    Trigger_1.Trigger()

Last_Team_2():void =
    Audio_1.Play()
    
OnBegin<override>()<suspends>:void=
    
    TeamCounter_1.CountSucceedsEvent.Subscribe(TeamCounter_1_0)
    TeamCounter_2.CountSucceedsEvent.Subscribe(TeamCounter_2_0)
    TeamCounter_3.CountSucceedsEvent.Subscribe(TeamCounter_3_0)
    TeamCounter_4.CountSucceedsEvent.Subscribe(TeamCounter_4_0)
    TeamCounter_5.CountSucceedsEvent.Subscribe(TeamCounter_5_0)
    TeamCounter_6.CountSucceedsEvent.Subscribe(TeamCounter_6_0)
    TeamCounter_7.CountSucceedsEvent.Subscribe(TeamCounter_7_0)
    TeamCounter_8.CountSucceedsEvent.Subscribe(TeamCounter_8_0)
    
    
    if (TeamCounter_amount_2 = 0 and TeamCounter_amount_3 = 0 and TeamCounter_amount_4 = 0 and TeamCounter_amount_5 = 0 and TeamCounter_amount_6 = 0 and TeamCounter_amount_7 = 0 and TeamCounter_amount_8 = 0):
        Last_Team_1()
    
    if (TeamCounter_amount_2 = 0):
        Last_Team_2()

Let me know if i did something stupid. Thanks.

Hey there! I see a few things that might be causing issues with your Last-Team-Standing device:

firstly - In Verse, use == for comparison instead of =. So change things like if (TeamCounter_amount_2 = 0) to if (TeamCounter_amount_2 == 0).
and then the way you’re checking for the last team won’t work in a suspendable function. Here’s a more reliable approach:

team_counter_device := class(creative_device):
var ActiveTeamCounters: [player_counter_device] = array{}

OnBegin<override>()<suspends>:void=
    # Subscribe to each counter's event
    TeamCounter_1.CountSucceedsEvent.Subscribe(OnTeamEliminated)
    TeamCounter_2.CountSucceedsEvent.Subscribe(OnTeamEliminated)
    # ... other team counters ...

    # Initialize active team counters
    set ActiveTeamCounters = array{
        TeamCounter_1, 
        TeamCounter_2, 
        # ... other team counters ...
    }

OnTeamEliminated(Counter: player_counter_device):void=
    # Remove the eliminated team from active counters
    set ActiveTeamCounters = ActiveTeamCounters.RemoveFirstOf(Counter)

    # Check if only one team remains
    if (ActiveTeamCounters.Length == 1):
        Last_Team_1()
        Last_Team_2()
1 Like

Thanks. Thats a nice way, but I have some Troubles with the comparison operator ==. It always results in an error