Paste #28610: Untitled Paste

Date: 2016/01/16 15:17:54 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


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]>]> {     
        - define y 1 
        - while <def[y].is[OR_LESS].than[5]> { 
          - define NewValue <server.flag[Leaderboard].insert[<context.damager.as_player.name>].at[<def[x]>].get[<def[y]>]> 
          - flag server Leaderboard[<def[y]>]:<def[NewValue]> 
          - define y <def[y].add[1]> 
          } 
        #break the loop to avoid any unnecessary calculations 
        - define x 6 




        } 
      #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>"