Paste #10162: Untitled Paste

Date: 2014/09/30 08:51:41 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


"DeathBan_Signs":
  type: world

  events:
    on player changes sign:
      - if <c.new.get[1]> == [DB] && <player.has_permission[denizen.deathban.signs.leaders]> {
        - if <player.flag[DeathBan_Leaders_Signs_Limit].is[OR_LESS].than[<player.flag[DeathBan_Leaders_Signs_Placed]>]> && !<player.has_permission[denizen.deathban.admin]> {
          - narrate "<&a>DeathBan<&co> <&c>You cannot place anymore signs! Break one to place a new sign."
          - determine cancelled
          }
        - define parameter <c.new.get[2].to[3].unseparated>
        - if <def[parameter].as_player.is_player> {
          - define type player
          - define parameter <def[parameter].as_player>
          }
          else { define type place }
        - if <def[type].is[==].to[place]> {
          - yaml 'load:DeathBan/leaders.yml' 'id:<player.name>SignPlace'
          - if <yaml[<player.name>SignPlace].list_keys[Leaders]> !contains %parameter% {
            - narrate "<green>DeathBan<&co> <red>Invalid Place!"
            - yaml unload 'id:<player.name>SignPlace'
            - determine cancelled
            }
          - define UUID <yaml[<player.name>SignPlace].read[Leaders.%parameter%.player].as_player>
          - define score <yaml[<player.name>SignPlace].read[Leaders.%parameter%.score].as_int>
          - run s@DeathBan_Signs_Leaders 'def:%parameter%|%UUID%|%score%|<c.location>|<c.material>|%type%'
          - determine cancelled
          }
        - if <def[type].is[==].to[player]> {
          - define writeID <player.name>SignPlace
          - yaml 'load:DeathBan/leaders.yml' 'id:%writeID%'
          - foreach <yaml[%writeID%].list_keys[Leaders]> {
            - define readPath Leaders.%value%.player
            - if <yaml[%writeID%].read[%readPath%].is[==].to[<def[parameter].uuid>]> {
              - define place %value%
              - foreach stop
              }
            }
          - define score <yaml[%writeID%].read[Leaders.%place%.score]>
          - yaml unload 'id:%writeID%'
          - run s@DeathBan_Signs_Leaders 'def:%place%|<def[parameter].as_player>|%score%|<c.location>|<c.material>|%type%'
          - determine cancelled
          }
      - if <c.new.get[1]> == [TIME] && <player.has_permission[denizen.deathban.admin]> {
        - flag server 'DeathBan_Signs_Time:->:<c.location>'
        - run s@DeathBan_Signs_Time 'def:<c.location>|<c.material>'
        }

    on player breaks block:
      - if <c.material.name.is[==].to[wall_sign]> || <c.material.name.is[==].to[sign_post]> {
        - define line1 <c.location.sign_contents.get[1]>
        - if %line1% == "<green>LEADER" {
          - run s@DeathBan_Signs_Leaders 'path:RemoveSign' 'def:<c.location>'
          - queue clear
          }
        - if %line1% == [TIME] && <global.flag[DeathBan_Signs_Time].as_list> contains <c.location> {
          - flag server 'DeathBan_Signs_Time:<-:<c.location>'
          }

    on server start:
      - if !<queue.exists[DB_SUpd_Exe]> && !<global.flag[DeathBan_SignUpdateTask].is[==].to[true]> {
        - run s@DeathBan_Signs_Leaders 'path:SignUpdate' 'delay:60s'
        }
      - run s@DeathBan_Signs_Time_Update