Paste #15174: Edit of P#15173 - Untitled Paste

Date: 2015/04/19 20:56:15 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


SQLAPI:
  type: world
  speed: 0
  debug: false
  action_map:
    set_list: '&pipe'
    include: '-&gt'
    remove: '&lt-'
    increment: '++|+'
    decrement: '--|-'
    clear: '&exc'

  events:

    on sqlflag command:
    - if !<player.permission[sqlapi.admin]||false> && !<player.is_op> && !<c.server> {
      - queue clear
      }
    - determine passively FULFILLED
#    - define expiration '<c.args.filter[starts_with[d<&co>]]>'
    - if <c.args.size> < 2 {
      - narrate "<&b>SQLAPI<&co><&c> /sqlflag <&lt>owner<&gt> flagName(<&co>action)(<&co>value) (expiration<&co>duration)"
      - queue clear
      }

    - define owner '<c.args.get[1]||null>'
    - narrate "<parse:<def[owner]>>"
    - if %owner% == server {
      - define type 'server'
      }
      else if %owner% == player {
      - if <c.server> {
        - narrate "<&b>SQLAPI<&co><&c> Must specify valid player object from console!"
        - queue clear
        }
      - define type 'player'
      - define owner '<player>'
      }
      else {
      - define owner "<parse:<def[owner]>>"
      - narrate '<def[owner].type.to_lowercase||null>'
      - if <def[owner].type||null> == player {
        - define type 'player'
        - define owner '<def[owner].as_player>'
        }
        else if <def[owner].type||null> = entity {
        - define type 'entity'
        - define owner '<def[owner].as_entity>'
        }
        else if <def[owner].type||null> = npc {
        - define type 'npc'
        - define owner '<def[owner].as_npc>'
        }
        else {
        - narrate "<&b>SQLAPI<&co><&c> Must specify valid owner object!"
        - queue clear
        }
      }

    - define preparse '<c.args.get[2].escaped.split[&co]||null>'
    - define size '<def[preparse].size>'
    - define flagName '<def[preparse].get[1]||null>'

    - if %size% == 1 {
      - define flagValue 'true'
      - define action 'set'
      - narrate "owner %owner% %type%"
      - narrate "flag <def[flagName].unescaped>"
      - narrate "set boolean true"
      }
      else if %size% == 2 {
      - define flagValue '<def[preparse].get[2]||null>'
      - define action 'set'
      - narrate "owner %owner% %type%"
      - narrate "flag <def[flagName].unescaped>"
      - narrate "action <def[action].unescaped>"
      - narrate "flagValue <def[flagValue].unescaped>"
      }
      else {
      - define action '<def[preparse].get[2]||null>'
      - define flagValue '<def[preparse].get[3]||null>'
      - define expiration '<c.args.get[3].sql_escaped||null>'
      - if %action% != null {
        - define actions '<script.list_keys[action_map]>'
        - foreach %actions% {
          - define map '<script.yaml_key[action_map.%action%].as_list||li@>'
          - if <def[action].contains_any[%map%]||false> {
            - define action '%value%'
            - foreach stop
            }
          }
        - if %actions% !contains %action% {
          - define action 'set'
          - define flagValue '<def[preparse].get[2]||null>|<def[preparse].get[3]||null>'
          }
        }

      - narrate "owner %owner% %type%"
      - narrate "flag <def[flagName].unescaped>"
      - narrate "action <def[action].unescaped>"
      - narrate "flagvalue <def[flagvalue].unescaped>"
      }
    - queue clear