FreezeTag MiniGame

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

Contribe

New Member
Feb 12, 2019
8
0
1
25
Category: Minigame Skript

Suggested name: wym? of the skript? idc what you put

What I want:
a /queue command that queues up you for freeze tag "&7you queued for &bfreezetag!" {make sure if player quits while in queue it removes them} and when 3 players have queued at minimum the game starts and last for 3 minutes {3 2 1 minute and 30sec and 10-0 second countdown in chat} and also i would like to set the locations the team of players and the ONE freezer location they will spawn with /teamspawn <player> <freezer> also when the freezer hits somebody it freezes them and when a player hits somebody it unfreezes them and the message will be "&7player has been frozen" "&7player has been unfrozen" {message toggleable /freezetagmsg toggle with a shortcut of /ftm toggle" also if all of team 1 aka the players has been frozen by the team 2 aka the ONE player the freezer the game ends early and it will say "&bFreezer &8has won the game!" and if the freezer doesn't successfully freeze them all after 3 minutes it will be "&aPlayers &8have won the game!" and also i need a variable that i can use to trace individual player wins any questions pm me on discord Contribe#2249
{Yes, i know this is a lot to ask but if you feel up to the project feel free to ask questions on discord}


Ideas for commands:
/queue
/freeze
/unfreeze
/teamspawn


Ideas for permissions:
teamspawn.admin
other commands should be public


When I'd like it by: Friday 3:30 PM EST
 
This is what I have right now, untested, tell me if something is missing / not working:
Code:
options:
    chat-prefix: &7[&dFreeze&eTag&7] &f

command /teamspawn <integer>:
    permission: teamspawn.admin
    trigger:
        if arg-1 is not 1 or 2:
            message "{@chat-prefix}&cUsage: &f/teamspawn <1|2>"
            stop
        set {freezetag::spawn::%arg-1%} to location of player
        message "{@chat-prefix}Teamspawn set!"
 
command /queue:
    trigger:
        if player is not set:
            message "{@chat-prefix}&cThis command is only executable by players!"
        else:
            add player to {freezetag::queue::*}
            message "{@chat-prefix}You joined the queue."
            freezetag_checkStart()
 
on disconnect:
    {freezetag::queue::*} contains player
    remove player from {freezetag::queue::*}
 
function freezetag_checkStart():
    size of {freezetag::queue::*} >= 3
    loop 180 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 60) = 0:
            broadcast "{@chat-prefix}Almost starting... %{_i}/60% minutes left!"
        else if {_i} = 30:
            broadcast "{@chat-prefix}30 seconds left, join while you still can!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        wait 1 second
    if size of {freezetag::queue::*} < 3:
        broadcast "{@chat-prefix}Game cancelled: too few players joined."
    else:
        freezetag_start()
 
function freezetag_start():
    set {_p::*} to {freezetag::queue::*}
    size of {_p::*} >= 3
    delete {freezetag::queue::*}
    set {freezetag::game} to true
    set {freezetag::game::players::*} to {_p::*}
    set {freezetag::game::freezer} to random element out of {_p::*}
    set {freezetag::game::team::*} to {_p::*}
    remove {freezetag::game::freezer} from {freezetag::game::team::*}
    broadcast "{@chat-prefix}Game starting..."
    loop {_team::*}:
        teleport loop-value to {freezetag::teamspawn::1}
        set {freezetag::game::frozen::%loop-value%} to false
    teleport {freezetag::game::freezer} to {freezetag::teamspawn::2}
    loop 180 times:
        set {_l::*} to {freezetag::game::frozen::*} where [input is true]
        set {_s} to size of {_l::*}
        set {_t::*} to {freezetag::game::team::*} where [input is online]
        if {_s} is size of {_t::*}:
            send "{@chat-prefix}Freezer (%{freezetag::game::freezer}%) has won the game!" to {_p::*}
            delete {freezetag::game::*}
            delete {freezetag::game}
            loop {_p::*}:
                make loop-value-2 execute command "/spawn" # or other spawn code
            #
            #
            # Freezer has won, put winner code here if you want to.
            #
            #
            stop
        wait 1 second
    send "{@chat-prefix}Players have won the game!" to {_p::*}
    delete {freezetag::game::*}
    delete {freezetag::game}
    loop {_p::*}:
        make loop-value execute command "/spawn" # or other spawn code
    #
    #
    # Players have won, put winner code here if you want to.
    #
    #

function freezetag_ftmMsg(msg: string):
    set {_p::*} to {freezetag::game::players::*}
    loop {_p::*} where [({freezetag::playerdata::%uuid of input%::ftm} ? true) is true]:
        send {_msg} to loop-value
 
on damage:
    damage cause is attack
    attacker is set
    {freezetag::game::players::*} contains victim
    if {freezetag::game::freezer} is attacker:
        set {freezetag::game::frozen::%victim%} to true
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been frozen!")
    else if {freezetag::game::frozen::%victim%} is true:
        {freezetag::game::team::*} contains attacker
        {freezetag::game::frozen::%attacker%} is false
        set {freezetag::game::frozen::%victim%} to false
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been unfrozen!")
 
on any movement:
    ({freezetag::game::frozen::%player%} ? false) is true
    cancel event
 
command /freezetagmsg [<text>]:
    aliases: /ftm
    trigger:
        if arg-1 is not "toggle":
            message "{@chat-prefix}&cUsage: &f/freezetagmsg toggle"
        else:
            set {_uuid} to uuid of player
            if {freezetag::playerdata::%{_uuid}%::ftm} is true:
                set {freezetag::playerdata::%{_uuid}%::ftm} to false
                message "{@chat-prefix}Tag messages disabled"
            else:
                set {freezetag::playerdata::%{_uuid}%::ftm} to true
                message "{@chat-prefix}Tag messages enabled"
 
Last edited:
Okay, new version:
Code:
options:
    chat-prefix: &7[&dFreeze&eTag&7] &f
 
command /teamspawn <integer>:
    permission: teamspawn.admin
    trigger:
        if arg-1 is not 1 or 2:
            message "{@chat-prefix}&cUsage: &f/teamspawn <1|2>"
            stop
        set {freezetag::teamspawn::%arg-1%} to location of player
        message "{@chat-prefix}Teamspawn set!"
 
command /queue:
    trigger:
        if player is not set:
            message "{@chat-prefix}&cThis command is only executable by players!"
        else:
            if {freezetag::queue::*} contains player:
                remove player from {freezetag::queue::*}
                message "{@chat-prefix}You left the queue."
            else:
                add player to {freezetag::queue::*}
                message "{@chat-prefix}You joined the queue."
                freezetag_checkStart()
 
on disconnect:
    {freezetag::queue::*} contains player
    remove player from {freezetag::queue::*}
 
function freezetag_checkStart():
    size of {freezetag::queue::*} >= 3
    loop 45 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 15) = 0:
            broadcast "{@chat-prefix}Game almost starting, join while you still can!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        wait 1 second
    if size of {freezetag::queue::*} < 3:
        broadcast "{@chat-prefix}Game cancelled: too few players joined."
    else:
        freezetag_start()
 
function freezetag_start():
    set {_p::*} to {freezetag::queue::*}
    size of {_p::*} >= 3
    delete {freezetag::queue::*}
    set {freezetag::game} to true
    set {freezetag::game::players::*} to {_p::*}
    set {freezetag::game::freezer} to random element out of {_p::*}
    set {freezetag::game::team::*} to {_p::*}
    remove {freezetag::game::freezer} from {freezetag::game::team::*}
    broadcast "{@chat-prefix}Game starting..."
    loop {_team::*}:
        teleport loop-value to {freezetag::teamspawn::1}
        set {freezetag::game::frozen::%loop-value%} to false
    teleport {freezetag::game::freezer} to {freezetag::teamspawn::2}
    loop 180 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 60) = 0:
            broadcast "{@chat-prefix}Game ends in %{_i}/60% minutes!"
        else if {_i} = 30:
            broadcast "{@chat-prefix}The game has 30 seconds left!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        set {_l::*} to {freezetag::game::frozen::*} where [input is true]
        set {_s} to size of {_l::*}
        set {_t::*} to {freezetag::game::team::*} where [input is online]
        if {_s} is size of {_t::*}:
            send "{@chat-prefix}Freezer (%{freezetag::game::freezer}%) has won the game!" to {_p::*}
            delete {freezetag::game::*}
            delete {freezetag::game}
            loop {_p::*}:
                make loop-value-2 execute command "/spawn" # or other spawn code
            #
            #
            # Freezer has won, put winner code here if you want to.
            #
            #
            stop
        wait 1 second
    send "{@chat-prefix}Players have won the game!" to {_p::*}
    delete {freezetag::game::*}
    delete {freezetag::game}
    loop {_p::*}:
        make loop-value execute command "/spawn" # or other spawn code
    #
    #
    # Players have won, put winner code here if you want to.
    #
    #
 
function freezetag_ftmMsg(msg: string):
    set {_p::*} to {freezetag::game::players::*}
    loop {_p::*} where [({freezetag::playerdata::%uuid of input%::ftm} ? true) is true]:
        send {_msg} to loop-value
 
on damage:
    damage cause is attack
    attacker is set
    {freezetag::game::players::*} contains victim
    if {freezetag::game::freezer} is attacker:
        set {freezetag::game::frozen::%victim%} to true
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been frozen!")
    else if {freezetag::game::frozen::%victim%} is true:
        {freezetag::game::team::*} contains attacker
        {freezetag::game::frozen::%attacker%} is false
        set {freezetag::game::frozen::%victim%} to false
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been unfrozen!")
 
on any movement:
    ({freezetag::game::frozen::%player%} ? false) is true
    cancel event
 
command /freezetagmsg [<text>]:
    aliases: /ftm
    trigger:
        if arg-1 is not "toggle":
            message "{@chat-prefix}&cUsage: &f/freezetagmsg toggle"
        else:
            set {_uuid} to uuid of player
            if {freezetag::playerdata::%{_uuid}%::ftm} is true:
                set {freezetag::playerdata::%{_uuid}%::ftm} to false
                message "{@chat-prefix}Tag messages disabled"
            else:
                set {freezetag::playerdata::%{_uuid}%::ftm} to true
                message "{@chat-prefix}Tag messages enabled"
 
Last edited:
You have to use /teamspawn 1 to set the location of the players' spawn, and you have to use /teamspawn 2 to set the location of the freezer
 
Sorry, dumb mistake. Code updated
[doublepost=1550151615,1550089784][/doublepost]New code:
Code:
options:
    chat-prefix: &7[&dFreeze&eTag&7] &f
 
command /teamspawn <integer>:
    permission: teamspawn.admin
    trigger:
        if arg-1 is not 1 or 2:
            message "{@chat-prefix}&cUsage: &f/teamspawn <1|2>"
            stop
        set {freezetag::teamspawn::%arg-1%} to location of player
        message "{@chat-prefix}Teamspawn set!"
 
command /queue:
    trigger:
        if player is not set:
            message "{@chat-prefix}&cThis command is only executable by players!"
        else:
            if {freezetag::queue::*} contains player:
                remove player from {freezetag::queue::*}
                message "{@chat-prefix}You left the queue."
            else:
                add player to {freezetag::queue::*}
                message "{@chat-prefix}You joined the queue."
                freezetag_checkStart()
 
on disconnect:
    {freezetag::queue::*} contains player
    remove player from {freezetag::queue::*}
 
function freezetag_checkStart():
    size of {freezetag::queue::*} >= 3
    loop 45 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 15) = 0:
            broadcast "{@chat-prefix}Game almost starting, join while you still can!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        wait 1 second
    if size of {freezetag::queue::*} < 3:
        broadcast "{@chat-prefix}Game cancelled: too few players joined."
    else:
        freezetag_start()
 
function freezetag_start():
    set {_p::*} to {freezetag::queue::*}
    size of {_p::*} >= 3
    delete {freezetag::queue::*}
    set {freezetag::game} to true
    set {freezetag::game::players::*} to {_p::*}
    set {freezetag::game::freezer} to random element out of {_p::*}
    set {freezetag::game::team::*} to {_p::*}
    remove {freezetag::game::freezer} from {freezetag::game::team::*}
    set {_team::*} to {freezetag::game::team::*}
    broadcast "{@chat-prefix}Game starting..."
    send "{@chat-prefix}The freezer is %{_freezer}%" to {_p::*}
    loop {_team::*}:
        teleport loop-value to {freezetag::teamspawn::1}
        send "{@chat-prefix}You are a player" to loop-value
        set {freezetag::game::frozen::%loop-value%} to false
    send "{@chat-prefix}You are the freezer" to {_freezer}
    teleport {freezetag::game::freezer} to {freezetag::teamspawn::2}
    loop 180 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 60) = 0:
            broadcast "{@chat-prefix}Game ends in %{_i}/60% minutes!"
        else if {_i} = 30:
            broadcast "{@chat-prefix}The game has 30 seconds left!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        set {_l::*} to {freezetag::game::frozen::*} where [input is true]
        set {_s} to size of {_l::*}
        set {_t::*} to {freezetag::game::team::*} where [input is online]
        if {_s} is size of {_t::*}:
            send "{@chat-prefix}Freezer (%{freezetag::game::freezer}%) has won the game!" to {_p::*}
            delete {freezetag::game::*}
            delete {freezetag::game}
            loop {_p::*}:
                make loop-value-2 execute command "/spawn" # or other spawn code
            #
            #
            # Freezer has won, put winner code here if you want to.
            #
            #
            stop
        wait 1 second
    send "{@chat-prefix}Players have won the game!" to {_p::*}
    delete {freezetag::game::*}
    delete {freezetag::game}
    loop {_p::*}:
        make loop-value execute command "/spawn" # or other spawn code
    #
    #
    # Players have won, put winner code here if you want to.
    #
    #
 
function freezetag_ftmMsg(msg: string):
    set {_p::*} to {freezetag::game::players::*}
    loop {_p::*} where [({freezetag::playerdata::%uuid of input%::ftm} ? true) is true]:
        send {_msg} to loop-value
 
on damage:
    damage cause is attack
    attacker is set
    {freezetag::game::players::*} contains victim
    if {freezetag::game::freezer} is attacker:
        set {freezetag::game::frozen::%victim%} to true
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been frozen!")
    else if {freezetag::game::frozen::%victim%} is true:
        {freezetag::game::team::*} contains attacker
        {freezetag::game::frozen::%attacker%} is false
        set {freezetag::game::frozen::%victim%} to false
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been unfrozen!")
 
on any movement:
    ({freezetag::game::frozen::%player%} ? false) is true
    cancel event
 
command /freezetagmsg [<text>]:
    aliases: /ftm
    trigger:
        if arg-1 is not "toggle":
            message "{@chat-prefix}&cUsage: &f/freezetagmsg toggle"
        else:
            set {_uuid} to uuid of player
            if {freezetag::playerdata::%{_uuid}%::ftm} is true:
                set {freezetag::playerdata::%{_uuid}%::ftm} to false
                message "{@chat-prefix}Tag messages disabled"
            else:
                set {freezetag::playerdata::%{_uuid}%::ftm} to true
                message "{@chat-prefix}Tag messages enabled"
 
Try
Code:
options:
    chat-prefix: &7[&bFreeze&eTag&7] &f

command /teamspawn <integer>:
    permission: teamspawn.admin
    trigger:
        if arg-1 is not 1 or 2:
            message "{@chat-prefix}&cUsage: &f/teamspawn <1|2>"
            stop
        set {freezetag::teamspawn::%arg-1%} to location of player
        message "{@chat-prefix}Teamspawn set!"

command /queue:
    trigger:
        if player is not set:
            message "{@chat-prefix}&cThis command is only executable by players!"
        else:
            if {freezetag::queue::*} contains player:
                remove player from {freezetag::queue::*}
                message "{@chat-prefix}You left the queue."
            else:
                add player to {freezetag::queue::*}
                message "{@chat-prefix}You joined the queue."
                freezetag_checkStart()

on disconnect:
    {freezetag::queue::*} contains player
    remove player from {freezetag::queue::*}

function freezetag_checkStart():
    size of {freezetag::queue::*} >= 3
    loop 45 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 15) = 0:
            broadcast "{@chat-prefix}Game almost starting, join while you still can!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        wait 1 second
    if size of {freezetag::queue::*} < 3:
        broadcast "{@chat-prefix}Game cancelled: too few players joined."
    else:
        freezetag_start()

function freezetag_start():
    set {_p::*} to {freezetag::queue::*}
    size of {_p::*} >= 3
    delete {freezetag::queue::*}
    set {freezetag::game} to true
    set {freezetag::game::players::*} to {_p::*}
    set {freezetag::game::freezer} to random element out of {_p::*}
    set {freezetag::game::team::*} to {_p::*}
    remove {freezetag::game::freezer} from {freezetag::game::team::*}
    set {_team::*} to {freezetag::game::team::*}
    broadcast "{@chat-prefix}Game starting..."
    send "{@chat-prefix}The freezer is %{freezetag::game::freezer}%" to {_p::*}
    loop {_team::*}:
        clear inventory of loop-value
        teleport loop-value to {freezetag::teamspawn::1}
        send "{@chat-prefix}You are a player" to loop-value
        set {freezetag::game::frozen::%loop-value%} to false
    send "{@chat-prefix}You are the freezer" to {_freezer}
    clear inventory of {freezetag::game::freezer}
    teleport {freezetag::game::freezer} to {freezetag::teamspawn::2}
    loop 180 times:
        set {_i} to 181 - loop-number
        if mod({_i}, 60) = 0:
            broadcast "{@chat-prefix}Game ends in %{_i}/60% minutes!"
        else if {_i} = 30:
            broadcast "{@chat-prefix}The game has 30 seconds left!"
        else if {_i} <= 10:
            broadcast "{@chat-prefix}%{_i}% seconds left!"
        set {_l::*} to {freezetag::game::frozen::*} where [input is true]
        set {_s} to size of {_l::*}
        set {_t::*} to {freezetag::game::team::*} where [input is online]
        if {_s} is size of {_t::*}:
            send "{@chat-prefix}Freezer (%{freezetag::game::freezer}%) has won the game!" to {_p::*}
            set {_freezer} to {freezetag::game::freezer}
            delete {freezetag::game::*}
            delete {freezetag::game}
            loop {_p::*}:
                make loop-value-2 execute command "/spawn" # or other spawn code
            #
            #
            # Freezer has won, put winner code here if you want to. Freezer variable is {_freezer}
            #
            #
            stop
        wait 1 second
    send "{@chat-prefix}Players have won the game!" to {_p::*}
    delete {freezetag::game::*}
    delete {freezetag::game}
    loop {_p::*}:
        clear inventory of loop-value
        make loop-value execute command "/spawn" # or other spawn code
    #
    #
    # Players have won, put winner code here if you want to. Player list variable: {_p::*}
    #
    #

function freezetag_ftmMsg(msg: string):
    set {_p::*} to {freezetag::game::players::*}
    loop {_p::*} where [({freezetag::playerdata::%uuid of input%::ftm} ? true) is true]:
        send {_msg} to loop-value

on damage:
    damage cause is attack
    attacker is set
    {freezetag::game::players::*} contains victim
    if {freezetag::game::freezer} is attacker:
        set {freezetag::game::frozen::%victim%} to true
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been frozen!")
    else if {freezetag::game::frozen::%victim%} is true:
        {freezetag::game::team::*} contains attacker
        {freezetag::game::frozen::%attacker%} is false
        set {freezetag::game::frozen::%victim%} to false
        freezetag_ftmMsg("{@chat-prefix}&7%victim% has been unfrozen!")

on any movement:
    {freezetag::game::frozen::%player%} is true
    cancel event

command /freezetagmsg [<text>]:
    aliases: /ftm
    trigger:
        if arg-1 is not "toggle":
            message "{@chat-prefix}&cUsage: &f/freezetagmsg toggle"
        else:
            set {_uuid} to uuid of player
            if {freezetag::playerdata::%{_uuid}%::ftm} is true:
                set {freezetag::playerdata::%{_uuid}%::ftm} to false
                message "{@chat-prefix}Tag messages disabled"
            else:
                set {freezetag::playerdata::%{_uuid}%::ftm} to true
                message "{@chat-prefix}Tag messages enabled"
 
Last edited: