Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to determine a tie between players with linked sword?

Asked by 5 years ago

So some brief explaining for what I'm doing:

I'm trying to make a sword dueling system between players for a game I'm working on for a friend.

I have it set up as follows:

Match values are kept in a folder in replicated storage. There, folders for each team and values for each player in each team are kept and updated as the match progresses.

When a player dies, the server runs a function that gives a "dead" value in the player value, then the function that is supposed to update the match runs. The first part of this checks if any teams have died, and removes the dead teams from a table.

To simplify, whenever a player dies, the match is updated through the server.

    local teams = _match:GetTeamsFromMatch(match) -- returns array of teams

    for index, team in next, teams  do
        if _match:CheckIfTeamHasDied(team) then
            print ("Team has died")
            table.remove(teams, index)
        end
    end

If one team is left, then that team gets a "Win" for that round of the match until one team has reached maximum wins, then the round is over. Similar to Auto Duels.

    if #teams == 1 or #teams == 0 then
        if #teams == 1 then
            print ("one team left")
            teams[1].Wins.Value = teams[1].Wins.Value + 1

            if teams[1].Wins.Value == match.Configuration.PlayTo.Value then
                _match:End(match, "Round has ended. A team won!")
                return
            end
        end

        -- some code below this to reset the map and start a new round. Isn't important for the problem, though. 
    end

The problem I'm having is that when players tie both players get a win. This can cause several issues, as you can imagine.

If both players die at the exact same time, the server runs an update for both. How can I determine if there is a tie or not between players, and then only update for one team win?

Answer this question