Date: 2016/01/16 14:07:04 UTC-08:00
Type: Denizen Script
Leaderboard:
type: world
events:
on player killed by player:
#Check if flag exists, if not, make the base list
- if !<server.has_flag[Leaderboard]> {
- flag server Leaderboard:|:"NA"|"NA"|"NA"|"NA"|"NA"
}
- flag <context.damager.as_player> kill_player_count:++
- flag <context.entity.as_player> death_player_count:++
#Run through the current top players to see if this kill places the player on the list
- define x 1
- define KD <context.damager.as_player.flag[kill_player_count].div[<context.damager.as_player.flag[death_player_count]>]||0>
#Check if KD is greater than any of the top 5
- while <def[x].is[OR_LESS].than[5]> {
#Define the player at position
- define TopPlayer <server.flag[Leaderboard].get[<def[x]>].as_player>
#Define their KD
- define TopKD <def[TopPlayer].flag[kill_player_count].div[<def[TopPlayer].flag[death_player_count]>]||0>
#Compare their KD against the current killer. If it's greater, insert that player in the list.
- if <def[KD].is[OR_MORE].than[<def[TopKD]>]> {
- flag server Leaderboard:<server.flag[Leaderboard].insert[<context.damager.as_player.name>].at[<def[x]>]>
#break the loop to avoid any unnecessary calculations
- define x 5
}
#If not, try the next position on the list
- define x <def[x].add[1]>
}
#For sake of space/memory, prune the list back down to 5.
- flag server Leaderboard:<server.flag[Leaderboard].get[1].to[5]>
on leaderboard command:
- narrate "1. <server.flag[Leaderboard].get[1]||'NA'> 2. <server.flag[Leaderboard].get[2]||'NA'> 3. <server.flag[Leaderboard].get[3]||'NA'> 4. <server.flag[Leaderboard].get[4]||'NA'> 5. <server.flag[Leaderboard].get[5]||'NA'>"
on stats command:
- narrate "<player.flag[kill_player_count].div[<player.flag[death_player_count]>]||0>"