Paste #71336: Freezing Players

Date: 2020/06/24 14:14:46 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#Script: 1.0.3
#Author: Icecapade
#Date 2020-06-24
IcecapadeFreeze:
    type: command
    name: freeze
    debug: false
    usage: /freeze [Player]
    description: freeze a player
    permission: icecapade.freeze
    permission message: <&3>You need the permission <&b><permission> <&3>to use that command!
    tab complete:
    - choose <context.args.size>:
        - case 0:
            - determine <server.online_players.filter[has_flag[frozen].not].parse[name]>
        - case 1:
            - if "!<context.raw_args.ends_with[ ]>":
                - determine <server.online_players.filter[has_flag[frozen].not].parse[name].filter[starts_with[<context.args.first>]]>
    script:
    - if <context.args.size> == 1:
        - define player <server.match_player[<context.args.first>]||null>
        - if <[player]> == null:
            - narrate "<red>Player not found."
            - stop
        - if !<[player].has_flag[frozen]>:
            - if <[player]> == <player>:
                - narrate "<red>You can't freeze yourself!"
                - stop
            - if <[player].is_op>:
                - narrate "<blue><player.name> <red>tried to freeze you." targets:<[player]>
                - stop
            - create player <[player].name> <[player].location> save:npcplayer
            - wait 5t
            - adjust <[player]> spectate:<entry[npcplayer].created_npc>
            - flag <[player]> frozen:<entry[npcplayer].created_npc>
            - narrate "<red>You were frozen by <blue><player.name>" targets:<[player]>
            - narrate "<red><player.name> were frozen by <blue><player.name>" targets:<server.online_players.filter[has_permission[icecapade.freeze.notify]]>
            - while <[player].has_flag[frozen]>:
                - if !<player.is_online>:
                    - narrate "<blue><player.name> <red>went offline while <blue><[player].name><red> is still frozen!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
                    - stop
                - if !<[player].is_online>:
                    - stop
                - if <[loop_index].div[60].mod[5]> == 0:
                    - narrate "<[player].name> is frozen since <[loop_index].div[60]> minutes. <element[Click here to unfreeze him.].on_click[/unfreeze <[player].name>]>" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
                - wait 1s
        - else:
            - narrate "<red>Player is already frozen."
    - else:
        - narrate "<&3>Syntax: <&b>/freeze [Player]"
IcecapadeUnfreeze:
    type: command
    debug: false
    name: unfreeze
    usage: /unfreeze [Player]
    description: unfreeze a player
    permission: icecapade.freeze
    permission message: <&3>You need the permission <&b><permission> <&3>to use that command!
    tab complete:
    - choose <context.args.size>:
        - case 0:
            - determine <server.online_players_flagged[frozen].parse[name]>
        - case 1:
            - if "!<context.raw_args.ends_with[ ]>":
                - determine <server.online_players_flagged[frozen].parse[name].filter[starts_with[<context.args.first>]]>
    script:
    - if <context.args.size> == 1:
        - define player <server.match_player[<context.args.first>]||null>
        - if <[player]> == null:
            - narrate "<red>Player not found."
            - stop
        - if <[player].has_flag[frozen]>:
            - adjust <[player]> spectate:<[player]>
            - remove <[player].flag[frozen]>
            - flag <[player]> frozen:!
            - narrate "<red>You were unfrozen by <blue><player.name>" targets:<[player]>
            - narrate "<blue><[player].name> <red>were unfrozen by <blue><player.name>" targets:<server.online_players.filter[has_permission[icecapade.freeze.notify]]>
        - else:
            - narrate "<red>Player is not frozen."
    - else:
        - narrate "<&3>Syntax: <&b>/unfreeze [Player]"
IcecapadeFreezeEvent:
    type: world
    debug: false
    events:
        on player joins flagged:frozen:
        - narrate "<blue><player.name> <red>joined while he's frozen!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
        - create player <player.name> <player.location> save:npcplayer
        - flag player frozen:<entry[npcplayer].created_npc>
        - wait 5t
        - adjust <player> spectate:<entry[npcplayer].created_npc>
        on player quits flagged:frozen:
        - narrate "<blue><player.name> <red>went offline while he's frozen!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
        - remove <player.flag[frozen]>
        on player teleports flagged:frozen:
        - narrate "<blue><player.name> <red>tried to teleport while he's frozen!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
        - determine cancelled