Paste #71314: Freezing Players

Date: 2020/06/24 11:04:55 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#Script: 1.0.0
#Author: Icecapade
#Date 2020-06-24
IcecapadeFreeze:
    type: command
    name: freeze
    debug: false
    usage: /freeze [Player]
    description: freezes 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[freezed].not].parse[name]>
        - case 1:
            - if "!<context.raw_args.ends_with[ ]>":
                - determine <server.online_players.filter[has_flag[freezed].not].parse[name].filter[starts_with[<context.args.first>]]>
    script:
    - if <context.args.size> == 1:
        - if <server.player_is_valid[<context.args.first>]> && !<server.match_player[<context.args.first>].has_flag[freezed]>:
            - define player <server.match_player[<context.args.first>]>
            - 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
            - flag <[player]> freezed
            - adjust <[player]> walk_speed:0
            - narrate "<red>You were freezed by <blue><player.name>" targets:<[player]>
            - narrate "<red><player.name> were freezed by <blue><player.name>" targets:<server.online_players.filter[has_permission[icecapade.freeze.notify]]>
            - while <[player].has_flag[freezed]>:
                - if !<player.is_online>:
                    - narrate "<blue><player.name> <red>went offline while <blue><[player].name><red> is still freezed!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
                    - stop
                - if !<[player].is_online>:
                    - narrate "<blue><[player].name> <red>went offline while freezed!"
                    - stop
                - define location <player.eye_location>
                - look <[player]> <[location]>
                - if <[loop_index].div[60].mod[5]> == 0:
                    - narrate "<[player].name> is freezed 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 not found or player is already freezed."
    - else:
        - narrate "<&3>Syntax: <&b>/freeze [Player]"
IcecapadeUnfreeze:
    type: command
    debug: false
    name: unfreeze
    usage: /unfreeze [Player]
    description: unfreez 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[freezed].parse[name]>
        - case 1:
            - if "!<context.raw_args.ends_with[ ]>":
                - determine <server.online_players_flagged[freezed].parse[name].filter[starts_with[<context.args.first>]]>
    script:
    - if <context.args.size> == 1:
        - if <server.player_is_valid[<context.args.first>]> && <server.match_player[<context.args.first>].has_flag[freezed]>:
            - define player <server.match_player[<context.args.first>]>
            - flag <[player]> freezed:!
            - adjust <[player]> walk_speed:0.2
            - narrate "<red>You were unfreezed by <blue><player.name>" targets:<[player]>
            - narrate "<blue><[player].name> <red>were unfreezed by <blue><player.name>" targets:<server.online_players.filter[has_permission[icecapade.freeze.notify]]>
        - else:
            - narrate "<red>Player not found or player is not freezed"
    - else:
        - narrate "<&3>Syntax: <&b>/unfreeze [Player]"
IcecapadeFreezeEvent:
    type: world
    debug: false
    events:
        on player steps on block flagged:freezed:
        - determine cancelled
        on player joins flagged:freezed:
        - narrate "<blue><player.name> <red>joined while freezed!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
        on player teleports flagged:freezed:
        - narrate "<blue><player.name> <red>tried to teleport while freezed!" targets:<server.online_players.filter[has_permission[icecapade.freeze]]>
        - determine cancelled