Paste #23718: Repo Script DVChest

Date: 2015/12/10 14:16:55 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#------------------------#
#dvchest                 #
#Author:zozer_firehood   #
#   _______              #
#  /       \             #
# /  ____   \            #
#|  / ___    |           #
#| / / __    |           #
# \ / /     /            #
#  \_______/             #
#------------------------#
DVChest_version:
  type: version
  name: DVChest
  id: 54
  description: a private safe chest you can access at any time.
  version: 1.1 
DVChest:
  type: world
  debug: false
  events:
    on dvchest|dvc command:
    # usage /dvc or /dvchest without args will open the chest, the player. perms required: dvchest
    # /dvc addLimit <player> will increment the lines for the chest for a given player. perms required: dvchest.admin
    # /dvc add <player> will allow that player to use dvchest. perms required: dvchest.admin
    - determine passively fulfilled
    - define arg1 <c.args.get[1]||null>
    #/dvc addLimit
    - if (<c.server||false> || <player.has_permission[dvchest.admin]> ) && <def[arg1].is[==].to[addLimit]>{
      - define player <c.args.get[2].as_player||false>
      - if <def[player].is[==].to[false]> {
        - announce 'format:dvchest_format' "<&c>That is not a valid player!" to_console
        - queue clear
        }
      - flag %player% 'dvchestLimit:++:1'
      - narrate 'format:dvchest_format' "<&6>You can now have <&f><def[player].flag[dvchestLimit].as_int> <&6>lines in your dvchest!" 'targets:%player%'
      - announce 'format:dvchest_format' "<&a><def[player].name> line limit set to <def[player].flag[dvchestLimit]>" to_console
      - queue clear
      }
    #/dvc add  
    - if (<c.server||false> || <player.has_permission[dvchest.admin]> )&& <def[arg1].is[==].to[add]>  {
      - define player <c.args.get[2].as_player||false>
      - if <def[player].is[==].to[false]> {
        - announce 'format:dvchest_format' "<&c>That is not a valid player!" to_console
        - queue clear
        }
      - permission add 'dvchest' group:%player%
      - flag %player% 'dvchestLimit:1'      
      - narrate 'format:dvchest_format' "<&6>You can now use <&4><&l>Dv<&8>chest!" 'targets:%player%'
      - announce 'format:dvchest_format' "<&a><def[player].name> can now use dvchest" to_console
      - queue clear
      }
    #/dvc about  
    - if <def[arg1].is[==].to[about]> {
      - determine passively fulfilled
      - narrate "<green>#-----------------------------#"
      - narrate "<green>#<&4><&l>Dv<&8>chest"
      - narrate "<green>#Author:<red>zozer_firehood"
      - narrate "<green>#-----------------------------#"
      - narrate format:dvchest_format "by utilising 4th dimension space,dvchest allows you to have a safe inventory that you can access at any time"
      - narrate format:dvchest_format "to access it, just type <&6>/dvchest"
      - narrate format:dvchest_format "disclaimer: we are not responsible for any infestation that may apear in your dvchest."
      - narrate format:dvchest_format "this includes, but not limited to: square bacteriaum, time travling rats,random broken glass, and gophers"
      - queue clear
      }
    #checks perms
    - if !<player.has_permission[dvchest]> && !<c.server> && %arg1% == null {
      - narrate 'format:dvchest_format' "<red>you havn't unlocked dvchest!"
      - queue clear
      }
    #check for extra args
    - if !<def[arg1].is[==].to[null]> {
      - narrate format:dvchest_format "<gold>%arg1%<&8> is an unkown argument, use <gold>/dvc <&8>or <gold>/dvchest <&8>to access your dvchest"
      - queue clear
      }     
    - inject locally path:loadYAML
    - define lines <player.flag[dvchestLimit]>
    - if <def[lines].is[==].to[null]> {
      - define lines '1'
      - flag player dvchestLimit:1
      }
    - define dvchest <player.uuid>dvchest
    - note in@generic[title=<&c>dv<&9>Chest;size=<def[lines].mul_int[9]>;] 'as:%dvchest%'
    - inventory add 'd:in@%dvchest%' 'o:<yaml[dvchestkey].read[<player.uuid>]>'
    - inventory open 'd:in@%dvchest%'
    on player clicks in inventory:
    - if <context.inventory.replace[<player.uuid>].is[!=].to[in@dvchest]> queue clear
    - if <context.inventory.replace[dvchest].is[!=].to[in@<player.uuid>]> {
      - inventory close 'd:in@<player.uuid>dvchest'
      }
    on player closes inventory:
    - if <context.inventory.replace[<player.uuid>].is[!=].to[in@dvchest]> queue clear
    - define dvlist <c.inventory.list_contents>
    - yaml set 'id:dvchestkey' <player.uuid>:%dvlist%
    - yaml 'savefile:dvchest/dvchestkey.yml' 'id:dvchestkey'
  loadYAML:
    script:
    - if !<yaml.list.contains[dvchestkey]> {
      - if !<server.has_file[dvchest/dvchestkey.yml]> {
        - yaml create 'id:dvchestkey'
        - yaml 'savefile:dvchest/dvchestkey.yml' 'id:dvchestkey'
        }
        else {
        - yaml 'load:dvchest/dvchestkey.yml' 'id:dvchestkey'
        }
      }
dvchest_format:
  type: format
  format: <&4><&l>Dv<&8>chest <text>