Paste #43315: Untitled Paste

Date: 2017/08/05 15:27:07 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


QuickNick:
    debug: false
    type: command
    name: nick
    description: Make a new, load an existing, list your current, or delete an existing nickname!
    usage: /nick new/load/
    tab complete: 
    - define QNSC '<c.raw_args.to_list.count[ ]||0>'
    - if <c.args.get[1].is[==].to[new]> queue clear
    - if <c.args.get[1].is[==].to[list]> queue clear
    - if <def[QNSC].is[==].to[0]> {
        - determine "new|load|delete|list"
    }
    - if <player.flag[nicknames].as_list.alphanumeric.parse[before[/]]> == null {
        - queue clear
    }
    - if <def[QNSC].is[==].to[1]> {
        - determine <player.flag[nicknames].as_list.alphanumeric.parse[before[/]]>
    }
    script:
    - if <player.is_op.not> {
        - narrate "<red>You don't have permission to use this command!"
        - queue clear
    }
    - choose <context.args.get[1]||null>:
        - case new:
            - if <player.has_permission[nick.new].not> {
                - narrate "<red>You don't have permission to use this command!"
                - queue clear
            }
            - if <c.args.get[2]||true> {
                - narrate "<gold>Usage: <white>/nick new <&lt>Nickname<&gt> <&lt>Savename<&gt>"
                - queue clear
            }
            - if <c.args.get[2].parse_color.length.is[MORE].to[16]||true> {
                - narrate "<red>Too many characters in your Nickname! Max is 16!"
                - queue clear
            }
            - if <c.args.get[2].matches[[A-Za-z0-9_&]+].not||true> {
                - narrate "<red>Nickname must be Alphanumeric!"
                - queue clear
            }
            - if <c.args.get[3]||true> {
                - narrate "<gold>Usage: <white>/nick new <&lt>Nickname<&gt> <&lt>SaveName<&gt>"
                - queue clear
            }
            - if <c.args.get[3].parse_color.length.is[MORE].to[10]||true> {
                - narrate "<red>Too many characters in your SaveName! Max is 10!"
                - queue clear
            }
            - if <player.flag[nicknames].as_list.size.is[MORE].than[4]> {
                - narrate "<red>Only 5 saves are allowed! Do /nick delete to delete old saves."
                - queue clear
            }
            - if <player.flag[nicknames].map_get[<c.args.get[2]>]> != null {
                - narrate "<&c>That savename already exists!"
                - queue clear
            }
            - flag player nicknames:->:<c.args.get[3]>/<c.args.get[2]>
            - narrate "<green>Saved <context.args.get[2].parse_colors><green> under the name <context.args.get[3]>!"
        - case load:
            - if <player.has_permission[nick.load].not> {
                - narrate "<red>You don't have permission to use this command!"
                - queue clear
            }
            - if <c.args.get[2]||true> {
                - narrate "<gold>Usage: <white>/nick load <&lt>SaveName<&gt>"
                - queue clear
            }
            #- if <c.args.get[2].parse_color.length.is[MORE].to[10]||true> {
            #    - narrate "<red>Too many characters in your SaveName! Max is 10!"
            #    - queue clear
            #}
            - if <player.flag[nicknames].map_get[<c.args.get[2]>]||true> {
                - narrate "<&c>That nickname doesn't exist!"
                - queue clear
            }
            - run nick instantly def:<player>|<player.flag[nicknames].map_get[<c.args.get[2]>].parse_colors>
            - narrate "<green>Set nickname to <player.flag[nicknames].map_get[<c.args.get[2]>]>!"
            - flag player Currentnick:<c.args.get[2]>
        - case list:
            - if <player.has_permission[nick.list].not> {
                - narrate "<red>You don't have permission to use this command!"
                - queue clear
            }
            - if <player.flag[nicknames].size> == 0 {
                - narrate "<&c>You have no saved nicknames!"
                - queue clear
            }
            - narrate <green><player.flag[nicknames].as_list.alphanumeric.separated_by[<&nl><green>].replace[/].with[<&co><&sp>].parse_colors>
        - case delete:
            - if <player.has_permission[nick.delete].not> {
                - narrate "<red>You don't have permission to use this command!"
                - queue clear
            }
            - if <c.args.get[2].parse_color.length.is[OR_LESS].to[0]||true> {
                - narrate "<gold>Usage: <white>/nick delete <&lt>SaveName<&gt>"
                - queue clear
            }
            #- if <c.args.get[2].parse_color.length.is[MORE].to[3]||true> {
            #    - narrate "<red>Too many characters in your SaveName! Max is 3!"
            #    - queue clear
            #}
            - if <player.flag[nicknames].map_get[<c.args.get[2]>]||true> {
                - narrate "<red>That SaveName doesn't exist! Do /nick list to see ones that do."
                - queue clear
            }
            - if <player.has_flag[s]> {
                - flag player s:1
                - while <player.flag[nicknames].map_get[<player.flag[s].as_int>].is[!=].to[null]> {
                    - flag player s:++
                }
            }
            - flag player nicknames:<-:<c.args.get[2]>/<player.flag[nicknames].map_get[<c.args.get[2]>]>
            - narrate "<green>Successfully removed <c.args.get[2]>!"
        - case save:
            - if <player.has_permission[nick.save].not> {
                - narrate "<red>You don't have permission to use this command!"
                - queue clear
            }
            - if <player.flag[nicknames].as_list.size.is[MORE].than[4]> {
                - narrate "<red>Only 5 saves are allowed! Do /nick delete to delete old saves."
                - queue clear
            }
            - define display_name1 <player.name.display>
            - foreach <server.list_permission_groups> {
                - define display_name1 <def[display_name1].replace[<server.group_prefix[<def[value]>].world[<pl.world>].parse_colors>].replace[<server.group_suffix[<def[value]>].world[<pl.world>].parse_colors>]>
            }
            - while <player.flag[nicknames].map_get[<player.flag[s].as_int>].is[!=].to[null]> {
                - flag player s:++
            }
            - if <player.has_flag[s].not> {
                - flag player s:1
            }
            - flag player nicknames:->:<player.flag[s].as_int>/<def[display_name1]>
            - narrate "<green>Saved <def[display_name1]><green> under the name <player.flag[s].as_int>!"
        - default:
            - if <player.has_permission[nick]> && <player.has_permission[nick.new].not> && <context.args.size.is[==].to[0]> {
                - narrate "<gold>Usage: <white>/nick <&lt>Nickname<&gt>"
                - queue clear
            }
            - if <player.has_permission[nick]> && <player.has_permission[nick.new]> && <c.args.size.is[==].to[1].not> {
                - narrate "<gold>Usage: <white>/nick new/load/delete/list/<&lt>Nickname<&gt>"
                - queue clear
            }   
            - if <player.has_permission[nick].not> {
                - narrate "<red>You don't have permission to use this command!"
                - queue clear
            }        
            - if <c.args.get[1].contains_any[&k|&l|&o|&n|&m]> && <player.has_permission[nick.formatcodes].not> {
                - narrate "<red>You don't have permission to use formatting codes!"
                - queue clear
            }
            - if <c.args.get[1].matches[[A-Za-z0-9_&]+].not||true> {
                - narrate "<red>Nickname must be Alphanumeric!"
                - queue clear
            }
            - if <c.args.get[1].parse_color.length.is[MORE].to[16]||true> {
                - narrate "<red>Too many characters in your Nickname! Max is 16!"
                - queue clear
            } 
            - run Nick instantly def:<player>|<c.args.get[1]>
            - narrate '<green>Set Nickname to <c.args.get[1]>'
QuicknickWorld:
    debug: false
    type: world
    events: 
        on player joins:
            - if <player.has_flag[Currentnick]> {
                - run nick def:<player>|<player.flag[nicknames].map_get[<pl.flag[Currentnick]>].parse_colors>
            }
Nick:
    debug: true
    type: task
    script:
    - define Prefix li@
    - define Suffix li@
    - foreach <player.groups> {
        - define Prefix '<def[Prefix].include[<server.group_prefix[<def[value]>]>]>'
        - define Suffix '<def[Suffix].include[<server.group_suffix[<def[value]>]>]>'
    }
    - adjust p@<def[1]> display_name:<def[Prefix].separated_by[<&r>].parse_colors><&r><def[2].parse_colors><&r><def[Suffix].separated_by[<&r>].parse_colors><&r>
    #- run nick def:<Player>|<nick>