Paste #28656: Untitled Paste

Date: 2016/01/17 04:04:27 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


## Change the lines below to change what is displayed on the sidebar! ##
## Change the update rate below to change how often the sidebar refreshes. ##
## Use the /sidebar command to toggle the sidebar on and off! ##

Easy_Sidebar_Config:
  type: yaml data
  title: <&b><&l>Player Info
  lines:
    - narrate "----- <&6>Leaderboards<&r> -----" 
    - if <server.has_flag[leaders].not> { 
      - narrate "Sorry, there are <&6>no<&r> leaders at this time!" 
      - queue clear 
    } 
    - foreach <server.flag[leaders].as_list> { 
      - narrate "<def[loop_index]>. <&6><def[Value].name><&r> - KDR: <&6><def[value].flag[kill_death_ratio]||0><&r> (<&6><def[value].flag[kill_score].round||0> <&r>Kills & <&6><def[Value].flag[death_score].round||0><&r> Deaths)" 

  update rate: 1s

Easy_Sidebar_Starter:
  type: world
  events:
    on server start:
    - run "s@Easy_Sidebar_Loop" instantly
    on player join:
    - flag player Easy_Sidebar

Easy_Sidebar_Loop:
  type: task
  script:
  - if <server.get_online_players_flagged[Easy_Sidebar].is_empty.not> && <s@Easy_Sidebar_Config.yaml_key[lines].is_empty.not||false> {
    - sidebar title:<parse:<s@Easy_Sidebar_Config.yaml_key[title]>> values:<parse:<s@Easy_Sidebar_Config.yaml_key[lines]>> players:<server.get_online_players_flagged[Easy_Sidebar]> per_player
  }
  - run <script> instantly "delay:<s@Easy_Sidebar_config.yaml_key[update rate].as_duration||1s>"

Easy_Sidebar_Command:
  type: command
  debug: false
  name: sidebar
  usage: /sidebar
  description: Toggles your sidebar!
  aliases:
    - sb
  script:
    - if <player.has_flag[Easy_Sidebar]> {
      - flag <player> Easy_Sidebar:!
      - sidebar remove players:<player>
      - narrate "<&6>Your sidebar has been <&b><&l>disabled<&9>!"
      - queue clear
    }
    - flag <player> Easy_Sidebar
    - narrate "<&6>Your sidebar has been <&b><&l>enabled<&9>!"


Stats_Command: 
  type: command 
  debug: false 
  name: stats 
  aliases: 
  - stat 
  usage: /stats (player) 
  description: Check your own or another player's pvp stats. 
  script: 
  - if <context.server> && <context.args.size> == 0 { 
    - narrate "<&c>You must enter a player from console!" 
    - queue clear 
  } 
  - if <context.server.not> { 
    - define Target <player> 
  } 
  - if <context.args.size> >= 1 { 
    - define Target <server.match_offline_player[<context.args.get[1]>]||null> 
    - if <def[Target]> == null { 
      - narrate "<&c>No player can be found by that name!" 
      - queue clear 
    } 
  } 
  - if <context.server.not> && <def[Target]> == <player> { 
    - narrate "<&6>Your stats!" 
  } 
  else { 
    - narrate "Stats for: <&6><def[Target].name>" 
  } 
  - narrate "KDR: <&6><def[Target].flag[kill_death_ratio]||0><&r> (<&6><def[Target].flag[kill_score].round||0> <&r>Kills & <&6><def[Target].flag[death_score].round||0><&r> Deaths)" 

LeaderBoard_Handler: 
  debug: false 
  type: world 

  ## A death! 
  death: 
  - flag <player> "death_score:++" 
  - flag <player> "kill_death_ratio:<player.flag[kill_score].div[<player.flag[death_score]>].round_to[2]||0>" 

  ## A kill! 
  kill: 
  - flag <player> "kill_score:++" 
  - flag <player> "kill_death_ratio:<player.flag[kill_score].div[<player.flag[death_score]||1>].round_to[2]>" 

  events: 
    ## Someone got smacked in the face! :o 
    on player kills player: 
    - run <script> path:kill player:<context.damager> instantly 
    - run <script> path:death player:<context.entity> instantly 
    - flag server "leaders:!" 
    - define Leaders <server.list_players.filter[has_flag[kill_death_ratio]].sort[LeaderBoard_Sort].get[1].to[5]||li@> 
    - if <def[Leaders].is_empty.not> { 
      - flag server "leaders:|:<def[Leaders]>" 
    } 

LeaderBoard_Sort: 
  type: procedure 
  debug: false 
  definitions: p1|p2 
  script: 
  ## If P2's kill score is better than P1's move P2 up, ooh that bitch is climbin! 
  - if <def[p2].flag[kill_death_ratio]||0> > <def[p1].flag[kill_death_ratio]||0> { 
    - determine 1 
  } 
  ## If P1's kill score is better than P2's move P1 up, ooh that bitch is climbin! 
  else if <def[p1].flag[kill_death_ratio]||0> > <def[p2].flag[kill_death_ratio]||0> { 
    - determine -1 
  } 
  ## Their kill score is equal, so do nothing... boring.. 
  else { 
    - determine 0 
  }