[Simple] Which player has most kills. Sorting Integer

RandomUser1

Member
Reaction score
0
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:

jonas

You can change this now in User CP.
Reaction score
64
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.
 

RandomUser1

Member
Reaction score
0
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:

RandomUser1

Member
Reaction score
0
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 &lt; udg_PlayerScores<i> then
            set udg_Max = udg_PlayerScores<i>
            set udg_WinnerPlayer = i
        endif
        set i = i + 1
    endloop
    call DisplayTextToForce( GetPlayersAll(), ( &quot;The player with the highest points is &quot; + ( &quot;Player &quot; + 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
</i></i>
 
Last edited:

tom_mai78101

The Helper Connoisseur / Ex-MineCraft Host
Staff member
Reaction score
1,633
At this point, how would you deem it to be correct?

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

RandomUser1

Member
Reaction score
0
EDIT: After several hours of attempting to fix it. I managed to get it to work. Thank you to all that helped :)
 
Last edited:
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top