[Simple] Which player has most kills. Sorting Integer

Discussion in 'World Editor Help' started by RandomUser1, Jul 5, 2016.

  1. RandomUser1

    RandomUser1 New Member

    Just as the tittle states. It may be simple for some by i do not know how to find this especially when you have 8 players.

    The map at the start caculates how many players are in-game and places the total number in "Players" (Integer)

    Then i have "PlayerKills" (Integer) How do i find out who has the most kills? I dont need 2nd place or 3rd just who has the most of all players.

    Varible List (Both Integer's)
    PlayerKills [array] =
    Players =

    I know i can create individual Trigger pages for each player and checking if the kills are higher then the other but this would be a very ineffecient way and i assume there has to be a better way GUI or Jass
    Last edited: Jul 5, 2016
  2. jonas

    jonas Member

    Add a variable for player with max kills. Loop through the players and if a player has more kills than the current max, make that player the one with max.
  3. RandomUser1

    RandomUser1 New Member

    Thank you!! I think i got it. I will leave this incase anyone else needs help with the same issue.
    Code:
    Untitled Trigger
        Events
            Player - Player 1 (Red) skips a cinematic sequence
        Conditions
        Actions
            Set NumberOfPlayers = 5
            Set PlayerScores[(Player number of Player 1 (Red))] = (Random integer number between 1 and 100)
            Set PlayerScores[(Player number of Player 2 (Blue))] = (Random integer number between 1 and 100)
            Set PlayerScores[(Player number of Player 3 (Teal))] = (Random integer number between 1 and 100)
            Set PlayerScores[(Player number of Player 4 (Purple))] = (Random integer number between 1 and 100)
            Set PlayerScores[(Player number of Player 5 (Yellow))] = (Random integer number between 1 and 100)
            For each (Integer A) from 1 to NumberOfPlayers, do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            PlayerScores[(Integer A)] Greater than Max
                        Then - Actions
                            Set Max = PlayerScores[(Integer A)]
                            Set WinnerPlayer = (Integer A)
                        Else - Actions
            Game - Display to (All players) the text: (The player with the highest points is  + (Player  + (String(WinnerPlayer))))
            Game - Display to (All players) the text: (String(PlayerScores[(Player number of Player 1 (Red))]))
            Game - Display to (All players) the text: (String(PlayerScores[(Player number of Player 2 (Blue))]))
            Game - Display to (All players) the text: (String(PlayerScores[(Player number of Player 3 (Teal))]))
            Game - Display to (All players) the text: (String(PlayerScores[(Player number of Player 4 (Purple))]))
            Game - Display to (All players) the text: (String(PlayerScores[(Player number of Player 5 (Yellow))]))
            Set Max = 0
    Last edited: Jul 5, 2016
  4. RandomUser1

    RandomUser1 New Member

    Weird. I tried to turn it into jass. It is about 80% accurate?
    JASS:
        local integer i
        set udg_NumberOfPlayers = 5
        set udg_PlayerScores[GetConvertedPlayerId(Player(0))] = GetRandomInt(1, 100)
        set udg_PlayerScores[GetConvertedPlayerId(Player(1))] = GetRandomInt(1, 100)
        set udg_PlayerScores[GetConvertedPlayerId(Player(2))] = GetRandomInt(1, 100)
        set udg_PlayerScores[GetConvertedPlayerId(Player(3))] = GetRandomInt(1, 100)
        set udg_PlayerScores[GetConvertedPlayerId(Player(4))] = GetRandomInt(1, 100)
        set i = 0
        loop
            exitwhen i >= udg_NumberOfPlayers
            if udg_Max < udg_PlayerScores[i] then
                set udg_Max = udg_PlayerScores[i]
                set udg_WinnerPlayer = i
            endif
            set i = i + 1
        endloop
        call DisplayTextToForce( GetPlayersAll(), ( "The player with the highest points is " + ( "Player " + I2S(udg_WinnerPlayer) ) ) )
        call DisplayTextToForce( GetPlayersAll(), I2S(udg_PlayerScores[GetConvertedPlayerId(Player(0))]) )
        call DisplayTextToForce( GetPlayersAll(), I2S(udg_PlayerScores[GetConvertedPlayerId(Player(1))]) )
        call DisplayTextToForce( GetPlayersAll(), I2S(udg_PlayerScores[GetConvertedPlayerId(Player(2))]) )
        call DisplayTextToForce( GetPlayersAll(), I2S(udg_PlayerScores[GetConvertedPlayerId(Player(3))]) )
        call DisplayTextToForce( GetPlayersAll(), I2S(udg_PlayerScores[GetConvertedPlayerId(Player(4))]) )
        set udg_Max = 0
    Last edited: Jul 5, 2016
  5. tom_mai78101

    tom_mai78101 The Helper Connoisseur / Ex-MineCraft Host Staff Member

    At this point, how would you deem it to be correct?

    Also, you know you can do 2 more loops? It will look nicer.
  6. RandomUser1

    RandomUser1 New Member

    EDIT: After several hours of attempting to fix it. I managed to get it to work. Thank you to all that helped :)
    Last edited: Jul 5, 2016
  7. tom_mai78101

    tom_mai78101 The Helper Connoisseur / Ex-MineCraft Host Staff Member

    If possible, please post your working code!

Share This Page