Skript going infinitly

  • 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 community!

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

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

Status
Not open for further replies.
Apr 9, 2017
28
1
0
Skript Version: Skript 2.2
Skript Author:
Minecraft Version:
1.8.8
---
Full Code:
Note: If the code is too large, feel free to use a pasting website (Pastebin or hastebin)
Note: If a variable is being set in another script, but not shown, please explain how they are being set


code_language.skript:
script options:
    $ use permissions
  
#Funtion
function rankLoad(p: player , n: number , t: number) :: string:
    if {_n} is 1:
        if {cubecraft.testrank.%{_p}%} is set:
            if {_t} is 0:
                set {cubecraft.rank.%{_p}%} to {cubecraft.testrank.%{_p}%}
                delete {cubecraft.testrank.%{_p}%}
        if {cubecraft.rank.%{_p}%} is not set:
            set {cubecraft.rank.%{_p}%} to ""
        if {cubecraft.rank.%{_p}%} is "&8:Stone:":
            execute console command "/rank %{_p}% stone"
            set {_p} tab name to "&8%{_p}%"
            return "&8:Stone:"
        if {cubecraft.rank.%{_p}%} is "&7&ki&7Iron&7&ki ":
            execute console command "/rank %{_p}% iron"
            set {_p} tab name to "&7%{_p}%"
            return "&7&ki&7Iron&7&ki"
        if {cubecraft.rank.%{_p}%} is "&1&ki&1Lapiz&1&ki ":
            execute console command "/rank %{_p}% lapiz"
            set {_p} tab name to "&1%{_p}%"
            return "&1&ki&1Lapiz&1&ki"
        if {cubecraft.rank.%{_p}%} is "&6&ki&6Gold&6&ki ":
            execute console command "/rank %{_p}% gold"
            set {_p} tab name to "&e%{_p}%"
            return "&6&ki&6Gold&6&ki"
        if {cubecraft.rank.%{_p}%} is "&b&ki&bDiamond&b&ki ":
            execute console command "/rank %{_p}% diamond"
            set {_p} tab name to "&b%{_p}%"
            return "&b&ki&bDiamond&b&ki"
        if {cubecraft.rank.%{_p}%} is "&a&ki&aEmerald&a&ki ":
            execute console command "/rank %{_p}% emerald"
            set {_p} tab name to "&a%{_p}%"
            return "&a&ki&aEmerald&a&ki"
        if {cubecraft.rank.%{_p}%} is "&5&ki&5Obsidian&5&ki ":
            execute console command "/rank %{_p}% obsidian"
            set {_p} tab name to "&5%{_p}%"
            return "&5&ki&5Obsidian&5&ki"
        if {cubecraft.rank.%{_p}%} is "&3&l[Builder] ":
            execute console command "/rank %{_p}% builder"
            set {_p} tab name to "&3%{_p}%"
            return "&3&l[Builder]"
        if {cubecraft.rank.%{_p}%} is "&d&l[Helper] ":
            execute console command "/rank %{_p}% helper"
            set {_p} tab name to "&d%{_p}%"
            return "&d&l[Helper]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Moderator] ":
            execute console command "/rank %{_p}% mod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Moderator]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Sr Moderator] ":
            execute console command "/rank %{_p}% srmod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Sr Moderator]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Jr Developer] ":
            execute console command "/rank %{_p}% jrdev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Jr Developer]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Developer] ":
            execute console command "/rank %{_p}% dev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Developer]"
        if {cubecraft.rank.%{_p}%} is "&4&l[Administator] ":
            execute console command "/rank %{_p}% admin"
            set {_p} tab name to "&4%{_p}%"
            return "&4&l[Administator]"
        if {cubecraft.rank.%{_p}%} is "&9&l[Owner] ":
            execute console command "/rank %{_p}% jrdev"
            set {_p} tab name to "&9%{_p}%"
            return "&9&l[Owner]"
    else if {_n} is 2:
        if {cubecraft.testrank.%{_p}%} is set:
            if {_t} is 0:
                set {cubecraft.rank.%{_p}%} to {cubecraft.testrank.%{_p}%}
                delete {cubecraft.testrank.%{_p}%}
        if {cubecraft.rank.%{_p}%} is not set:
            set {cubecraft.rank.%{_p}%} to ""
        if {cubecraft.rank.%{_p}%} is "&8:Stone:":
            execute console command "/rank %{_p}% stone"
            set {_p} tab name to "&8%{_p}%"
            return "&8:Stone:"
        if {cubecraft.rank.%{_p}%} is "&7&ki&7Iron&7&ki ":
            execute console command "/rank %{_p}% iron"
            set {_p} tab name to "&7%{_p}%"
            return "&7&ki&7Iron&7&ki"
        if {cubecraft.rank.%{_p}%} is "&1&ki&1Lapiz&1&ki ":
            execute console command "/rank %{_p}% lapiz"
            set {_p} tab name to "&1%{_p}%"
            return "&1&ki&1Lapiz&1&ki"
        if {cubecraft.rank.%{_p}%} is "&6&ki&6Gold&6&ki ":
            execute console command "/rank %{_p}% gold"
            set {_p} tab name to "&e%{_p}%"
            return "&6&ki&6Gold&6&ki"
        if {cubecraft.rank.%{_p}%} is "&b&ki&bDiamond&b&ki ":
            execute console command "/rank %{_p}% diamond"
            set {_p} tab name to "&b%{_p}%"
            return "&b&ki&bDiamond&b&ki"
        if {cubecraft.rank.%{_p}%} is "&a&ki&aEmerald&a&ki ":
            execute console command "/rank %{_p}% emerald"
            set {_p} tab name to "&a%{_p}%"
            return "&a&ki&aEmerald&a&ki"
        if {cubecraft.rank.%{_p}%} is "&5&ki&5Obsidian&5&ki ":
            execute console command "/rank %{_p}% obsidian"
            set {_p} tab name to "&5%{_p}%"
            return "&5&ki&5Obsidian&5&ki"
        if {cubecraft.rank.%{_p}%} is "&3&l[Builder] ":
            execute console command "/rank %{_p}% builder"
            set {_p} tab name to "&3%{_p}%"
            return "&3&l[Builder]"
        if {cubecraft.rank.%{_p}%} is "&d&l[Helper] ":
            execute console command "/rank %{_p}% helper"
            set {_p} tab name to "&d%{_p}%"
            return "&d&l[Helper]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Moderator] ":
            execute console command "/rank %{_p}% mod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Moderator]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Sr Moderator] ":
            execute console command "/rank %{_p}% srmod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Sr Moderator]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Jr Developer] ":
            execute console command "/rank %{_p}% jrdev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Jr Developer]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Developer] ":
            execute console command "/rank %{_p}% dev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Developer]"
        if {cubecraft.rank.%{_p}%} is "&4&l[Administator] ":
            execute console command "/rank %{_p}% admin"
            set {_p} tab name to "&4%{_p}%"
            return "&4&l[Administator]"
        if {cubecraft.rank.%{_p}%} is "&9&l[Owner] ":
            execute console command "/rank %{_p}% owner"
            set {_p} tab name to "&9%{_p}%"
            return "&9&l[Owner]"


function updateRankAPI(p: player) :: player:
    wait 5 ticks
    if {cubecraft.rank.%{_p}%} is not set:
        set {cubecraft.rank.%{_p}%} to ""
    if {cubecraft.disguise.%{_p}%} is set:
        set {_br} to uncolored {cubecraft.rank.%{_p}%}
        set {_dr} to uncolored {cubecraft.rank.%{cubecraft.disguise.%{_p}%}%}
        if {cubecraft.rank.%{cubecraft.disguise.%{_p}%}%} is set:
            make all players see {_p}'s prefix as "%{cubecraft.rank.%{cubecraft.disguise.%{_p}%}%}%&e"
        else:
            make all players see {_p}'s prefix as "&e"
        set {_br} to convert string "%{_br}%" to lowercase
        set {_br} to 1st char in each word of "%{_br}%" to caps
        set {_dr} to convert string "%{_dr}%" to lowercase
        set {_dr} to 1st char in each word of "%{_dr}%" to caps
        replace all " " in {_br} with ""
        replace all " " in {_dr} with ""
        if {_dr} is "":
            set {_dr} to "No Rank"
        if {_br} contains "mod":
            replace all "mod" with "Mod" in {_br}
        if {_dr} contains "mod":
            replace all "mod" with "Mod" in {_dr}
        if {_br} contains "dev":
            replace all "dev" with "Dev" in {_br}
        if {_dr} contains "dev":
            replace all "dev" with "Dev" in {_dr}
        set {cubecraft.api.displayrank.%{_p}%} to "%{_dr}% (%{_br}%)"
        set {cubecraft.api.displayname.%{_p}%} to "%{cubecraft.disguise.%{_p}%}%"
    else:
        set {_br} to uncolored {cubecraft.rank.%{_p}%}
        if {cubecraft.rank.%{_p}%} is set:
            make all players see {_p}'s prefix as "%{cubecraft.rank.%{_p}%}%&e"
        else:
            make all players see {_p}'s prefix as "&e"
        set {_br} to convert string "%{_br}%" to lowercase
        set {_br} to 1st char in each word of "%{_br}%" to caps
        if {_br} is "":
            set {_br} to "No Rank"
        if {_br} contains "mod":
            replace all "mod" with "Mod" in {_br}
        if {_br} contains "dev":
            replace all "dev" with "Dev" in {_br}
        set {cubecraft.api.displayrank.%{_p}%} to "%{_br}%"
        set {cubecraft.api.displayname.%{_p}%} to "%{_p}%"


      

on join:
    if {cubecraft.rank.uuid.%uuid of player%} is set:
        set {cubecraft.rank.%player%} to {cubecraft.rank.uuid.%uuid of player%}
    wait 2 ticks
    rankLoad(player, 1, 0)
on quit:
    set {cubecraft.rank.uuid.%uuid of player%} to {cubecraft.rank.%player%}
  
on join:
    send "&b-----------------------------"
    send "&b"
    send "&6Welcome to &9&lCubeCraft Games!"
    send "&6Website &9&lcubecraft.net"
    send "&6Store: &9&lstore.cubecraft.net"
    send "&b"
    send "&b-----------------------------"
  
command /p [<string>] [<player>]:
    trigger:
        if arg-1 is not set:
            send "&9------- &5Parties Help &9-------"
            send "&a/p invite <name> &6Invite a player to your party."
            send "&a/p invites &6Lists your invites to parties."
            send "&a/p accept <name> &6Accept a party invite."
            send "&a/p deny <name> &6Deny a party invite."
            send "&a/p chat &6Chat with your party."
            send "&a/p status &6Check the status of your party."
            send "&a/p leave &6Leave your party."
            send "&a/p disband &6Disband (delete) your party."
            send "&a/p kick <name> &6Kick a member from your party."
            send "&a/p setowner <name> &6Change the owner of the party."
            send "&a(Parties are WIP)"
          
      
Command /fly:
    Trigger:
        if player has permission "rank.emerald" or "rank.obsidian" or "rank.builder" or "rank.helper" or "rank.jrdeveloper" or "rank.developer" or "rank.moderator" or "rank.seniormoderator" or "rank.admin" or "rank.owner":
            If {fly.%player%} is not set:
                Send "&afly has been enabled"
                set player's flight mode to true
                Set {fly.%player%} to true
                Stop
            Send "&cfly has been disabled"
            set player's flight mode to false
            Delete {fly.%player%}
            Stop
        else:
            send "&cYou do not have permission to use this command. Only &aEMERALD &crank can use this command. Purchase this @ &6store.cubecraft.net"
      
command /pl:
    trigger:
        send "&aYou do not have permission to see our plugin list! The plugins that we use on our network are mostly custom, and are unavailable for download."
      
on chat:
    loop all players:
        if player has permission "rank.owner":
            send "&9&l[Owner] &9%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.Admin":
            send "&4&l[Administator] &6%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.developer":
            send "&2&l[Developer] &2%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.jrdeveloper":
            send "&2&l[Jr Developer] &2%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.SeniorModerator":
            send "&6&l[Sr Moderator] &6%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.Moderator":
            send "&6&l[Moderator] &6%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.Helper":
            send "&d&l[Helper] &d%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.builder":
            send "&3&l[Builder] &3%player%&f: %message%" to loop-player
            cancel event
        else if player has permission "rank.obsidian":
            send "&5&ki&5Obsidian&5&ki&5 %player%&f: &7%message%" to loop-player
            cancel event
        else if player has permission "rank.emerald":
            send "&a&ki&aEmerald&a&ki&a %player%&f: &7%message%" to loop-player
            cancel event
        else if player has permission "rank.Diamond":
            send "&b&ki&bDiamond&b&ki&b %player%&f: &7%message%" to loop-player
            cancel event
        else if player has permission "rank.gold":
            send "&6&ki&6Gold&6&ki&6 %player%&f: &7%message%" to loop-player
            cancel event
        else if player has permission "rank.lapiz":
            send "&1&ki&1Lapiz&1&ki&1 %player%&f: &7%message%" to loop-player
            cancel event
        else if player has permission "rank.iron":
            send "&7&ki&7Iron&7&ki&7 %player%&f: &7%message%" to loop-player
            cancel event
        else:
            send "&8:Stone: %player%&f: &7%message%" to loop-player
            cancel event
          
on join:
    set slot 0 of player's inventory to 1 compass named "&4&kii&9&lTravel&4&kii" with lore "&7Click me to open the CubeCraft||&7travel, and navigate the network!"
    set slot 1 of player's inventory to 1 diamond named "&5&kii&b&lChallenge Menu&5&kii" with lore "&7Complete awesome achievements||&7and take part in our daily||&7challenges!"
    set slot 6 of player's inventory to 1 poppy named "&1&kii&6&lVanity&1&kii" with lore "&7Click me to open the vanity menu!"
    set slot 7 of player's inventory to 1 chest named "&6&kii&5&lSettings&6ii" with lore "&7Change settings!"
    set slot 8 of player's inventory to 1 map named "&d&kii&a&lLobbies&d&kii" with lore "&7Click me to change the lobby||&7that you are on!"
  
on break:
    if player's gamemode is creative:
        stop
    if player's gamemode is survival:
        cancel event

on place:
    if player's gamemode is creative:
        stop
    if player's gamemode is survival:
        cancel event
      
on join:
    set join message to ""

on quit:
    set leave message to ""
  
on join:
    set tab header to "&6Welcome to &4&kii&9&lCubeCraft&4&kii&r" and footer to "&6play.cubecraft.net" for player
  
On hunger meter Change:
    add 1 to player's hunger bar
  
On drop:
    if player's gamemode is creative:
        stop
    if player's gamemode is survival:
        cancel event
  
on damage of player:
    cancel event
  
#on join:
#    execute console command "/tp %player% 2000 46 -3"
  
command /punish [<string>] [<offline player>] [<text>]:
    Trigger:
        if player has permission "rank.jrdeveloper" or "rank.developer" or "rank.moderator" or "rank.seniormoderator" or "rank.admin" or "rank.owner":
            if arg-1 is "hacking":
                if arg-2 is set:
                    if arg-3 is set:
                        send "&aLoading infractions..."
                        send "&a%arg-2% will be banned permanently."
                        wait 2 second
                        kick arg 2 due to "&4&lPermanently Banned!%nl%&r%nl%&cYou have been banned from &9CubeCraft &cfor:%nl%&6%arg-3%%nl%&r%nl%&3You can appeal this ban at%nl%&bappeals.cubecraft.net &3using the appeal code: &d0001"
                        ban arg 2 due to "&4&lPermanently Banned!%nl%&r%nl%&cYou have been banned from &9CubeCraft &cfor:%nl%&6%arg-3%%nl%&r%nl%&3You can appeal this ban at%nl%&bappeals.cubecraft.net &3using the appeal code: &d0001"
            if arg-1 is "unban":
                if arg-2 is set:
                    if arg-3 is set:
                        send "&aLoading infractions..."
                        send "&aUnbanned %arg-2%."
                        unban arg-2
            if arg-1 is "advertising":
                if arg-2 is set:
                    if arg-3 is set:
                        send "&aLoading infractions..."
                        send "&a%arg-2% will be muted permanently."
                        wait 2 second                                    #
                        set {mute.%player%} to 1                            #        Muting is coming soon!
                        set {%player%.mutereason} to arg-3                #        Muting is coming soon!
            if arg-1 is "unmute":                                            #
                if arg-2 is set:
                    if arg-3 is set:
                        send "&aLoading infractions..."
                        send "&a%arg-2% will be unmuted."
                        set {mute.%player%} to 0
        else:
            send "&cYou don't have permission to use that command!"
#command /gamesmenu:
#    trigger:
#        open chest with 5 rows named "&4&kii&9&lTravel&4&kii" to player
#        wait 4 tick
#        format slot 3 of player with 19 named "&4&kii&e&lLucky Islands&4&kii" with lore "&6&lRequires &b&l1.9 &6&l- &b&l1.11" to close and run [make player execute command "test 1.91.10"]
#        format slot 15 of player with book named "&6Donator Ranks" to run [make player execute command "setdonatorrank"]
#        format slot 13 of player with book named "&6Special Ranks" to run [make player execute command "setspecialrank"]
#        format slot 8 of player with 1 of arrow named "&cLeave" to close

#command /test [<string>]
#    trigger:
#        if arg-1 is "1.91.10":
#            send "&cPlease connect to CubeCraft in 1.9/1.10 to play this game."
#            stop

on right click:
    if player is holding 1 diamond:
        open chest with 4 rows named "&8Challenges Menu" to player
        wait 4 tick
        format slot 11 of player with bottle o' enchanting named "&6Achievements" with lore "&7Check your achievements in games." to be unstealable
        format slot 15 of player with diamond named "&6Daily Challenges" with lore "&7Check out your daily challenge||&7status. These challenges are reset||&7and changed every 24 hours." to be unstealable
        format slot 31 of player with 1 of book named "&9Close" with lore "&7Close the challenge menu." to close
      
      
      
command /rank [<offline player>] [<string>]:
    permission: test.test
    permission message: &cYou don't have permission to use that command!.
    trigger:
        if argument 1 or argument 2 is not set:
            send "&9Rank Manager> &7Listing Rank Update Commands:"
            send "&f/rank (player) (rank): &eupdates chosen player's rank to the chosen rank"
            send ""
            send "&9Rank Update> &7Listing Rank List:"
            send "&9Ranks> &7STONE"
            send "&9Ranks> &7IRON"
            send "&9Ranks> &7LAPIZ"
            send "&9Ranks> &7GOLD"
            send "&9Ranks> &7DIAMOND"
            send "&9Ranks> &7EMERALD"
            send "&9Ranks> &7OBSIDIAN"
            send "&9Ranks> &7BUILDER"
            send "&9Ranks> &7HELPER"
            send "&9Ranks> &7MOD"
            send "&9Ranks> &7SRMOD"
            send "&9Ranks> &7JRDEV"
            send "&9Ranks> &7DEV"
            send "&9Ranks> &7ADMIN"
            send "&9Ranks> &7OWNER"
        if argument 2 is "STONE":
            if argument 2 is set:   #These should now no longer mater so lel.
                set {cubecraft.rank.%arg-1%} to "&8:Stone:"
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Stone!"
                send "&9Rank Manager> &7Your rank has been updated to Stone!" to arg 1
                set arg-1 tab name to "&8%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "IRON":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&7&ki&7Iron&7&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Iron!"
                send "&9Rank Manager> &7Your rank has been updated to Iron!" to arg 1
                set arg-1 tab name to "&7%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "LAPIZ":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&1&ki&1Lapiz&1&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Lapiz!"
                send "&9Rank Manager> &7Your rank has been updated to Lapiz!" to arg 1
                set arg-1 tab name to "&1%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "GOLD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&6&ki&6Gold&6&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Gold!"
                send "&9Rank Manager> &7Your rank has been updated to Gold!" to arg 1
                set arg-1 tab name to "&e%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "DIAMOND":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&b&ki&bDiamond&b&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Diamond!"
                send "&9Rank Manager> &7Your rank has been updated to Diamond!" to arg 1
                set arg-1 tab name to "&b%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "EMERALD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&a&ki&aEmerald&a&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Emerald!"
                send "&9Rank Manager> &7Your rank has been updated to Emerald!" to arg 1
                set arg-1 tab name to "&a%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "OBSIDIAN":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&5&ki&5Obsidian&5&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Obsidian!"
                send "&9Rank Manager> &7Your rank has been updated to Obsidian!" to arg 1
                set arg-1 tab name to "&5%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "BUILDER":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&3&l[Builder] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Builder!"
                send "&9Rank Manager> &7Your rank has been updated to Builder!" to arg 1
                set arg-1 tab name to "&3%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "HELPER":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&d&l[Helper] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Helper!"
                send "&9Rank Manager> &7Your rank has been updated to Helper!" to arg 1
                set arg-1 tab name to "&d%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "MOD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&6&l[Moderator] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Mod!"
                send "&9Rank Manager> &7Your rank has been updated to Mod!" to arg 1
                set arg-1 tab name to "&6%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "SRMOD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&6&l[Sr Moderator] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Sr. Mod!"
                send "&9Rank Manager> &7Your rank has been updated to Sr. Mod!" to arg 1
                set arg-1 tab name to "&6%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "JRDEV":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&2&l[Jr Developer] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.jrdeveloper" to arg-1's permissions  
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Jr. Dev!"
                send "&9Rank Manager> &7Your rank has been updated to Jr. Dev!" to arg 1
                set arg-1 tab name to "&2%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "DEV":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&2&l[Developer] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.developer" to arg-1's permissions
                add "rank.jrdeveloper" to arg-1's permissions  
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Dev!"
                send "&9Rank Manager> &7Your rank has been updated to Dev!" to arg 1
                set arg-1 tab name to "&2%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "ADMIN":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&4&l[Administator] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.admin" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Admin!"
                send "&9Rank Manager> &7Your rank has been updated to Admin!" to arg 1
                set arg-1 tab name to "&4%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "OWNER":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&9&l[Owner] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.admin" to arg-1's permissions
                add "rank.owner" to arg-1's permissions
                add "rank.developer" to arg-1's permissions
                add "rank.jrdeveloper" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Owner!"
                send "&9Rank Manager> &7Your rank has been updated to Owner!" to arg 1
                set arg-1 tab name to "&9%arg-1%"
                updateRankAPI(arg-1)
            else:
                send "&9Message> &cSomething went wrong?"
        else:
            send "&9Client Manager> &c&lInvalid rank!"
        rankLoad(arg-1, 2, 0)  
      
      
command /__cc__dp__ [<offline player>]:
    executable by: console
    trigger:
        remove "rank.stone" from arg-1's permissions
        remove "rank.iron" from arg-1's permissions
        remove "rank.lapiz" from arg-1's permissions
        remove "rank.gold" from arg-1's permissions
        remove "rank.diamond" from arg-1's permissions
        remove "rank.emerald" from arg-1's permissions
        remove "rank.obsidian" from arg-1's permissions
        remove "rank.helper" from arg-1's permissions
        remove "rank.builder" from arg-1's permissions
        remove "rank.moderator" from arg-1's permissions
        remove "rank.seniormoderator" from arg-1's permissions
        remove "rank.admin" from arg-1's permissions
        remove "rank.owner" from arg-1's permissions
        remove "rank.developer" from arg-1's permissions
        remove "rank.jrdeveloper" from arg-1's permissions
      
#Made my LimeGlass
script options:
    $ use permissions
    #To use SQL for SkPerms, remove the # from below, and edit settings to yours
  
    #$ init com.mysql.jdbc.Driver
    #$ db url jdbc:mysql://localhost:3306/skript
    #$ db username admin
    #$ db password skperm_pass
options:
    prefix: &6[&5SkPerms&6]
    maincolour: &6
    secondcolour: &7
    command: /skperms
    aliases: /skp, /skpermissions, /skperm
    permission: skperms.admin
  
    #CMD protection is basically extra security for your server. Only players inside of a list variable can use SkPerms
    CMDprotection: false
    CMDprotectionMsg: Unknown command. Type ""/help"" for help
    #The player list is the list variable that contains players that can use SkPerms if CMDprotection is enabled
    PlayerList: {example::players::*}
  
    UseChat: true #use prefix and suffix in the chat
    #Chat types:
    #Display - Changes the player's display name (Vault will hook if installed)
    #Override - !COMING SOON
    ChatType: "Display"
  
    version: 1.0.5

on script load:
    if file "plugins\SkPerms" exists:
        delete {skperms::config::*}
    else:
        set yaml value "version" from file "plugins\SkPerms\config.yml" to "{@version}"
        set yaml value "useYML" from file "plugins\SkPerms\config.yml" to false
    set {skperms::config::version} to yaml value "version" from file "plugins\SkPerms\config.yml"
    set {skperms::config::useYML} to yaml value "useYML" from file "plugins\SkPerms\config.yml"
    if {skperms::config::useYML} is true:
        if {skperms::players::*} is not set:
            stop
        delete file "plugins\SkPerms\players.yml"
        loop {skperms::players::*}:
            loop {skperms::player::%loop-value%::permissions::*}:
                add "%loop-value-2%" to yaml list "players.%loop-value-1%.permissions" from file "plugins\SkPerms\players.yml"
on script unload:
    loop {skperms::groups::*}:
        if {skperms::group::%loop-value%::*} is not set:
            loop {skperms::group::%loop-value-1%::permissions::*}:
                loop {skperms::players::*}:
                    remove "%loop-value-2%" from {skperms::player::%loop-value-3%::permissions::*}
            loop {skperms::players::*}:
                remove "%loop-value-1%" from {skperms::player::%loop-value-2%::groups::*}
                if {skperms::player::%loop-value-2%::groups::*} is not empty:
                    loop {skperms::player::%loop-value-2%::groups::*}:
                        loop {skperms::group::%loop-value-1%::permissions::*}:
                            set {_p} to "%loop-value-2%" parsed as player
                            add "%loop-value-4%" to {_p}'s permissions
            remove "%loop-value%" from {skperms::groups::*}
command {@command} [<text>] [<text>] [<text>] [<text>] [<text>]:
    permission: {@permission}
    aliases: {@aliases}
    trigger:
        if {@CMDprotection} is true:
            if command sender is not console:
                if {@PlayerList} doesn't contain player or "%player%":
                    message "{@CMDprotectionMsg}"
                    stop
        if arg 1 is not set:
            message ""
            message "{@prefix} v{@version}:"
            message "{@maincolour}{@command} deleteDefault"
            message "{@secondcolour}Deletes default group setting (If set)"
            message "{@maincolour}{@command} (d|default) (group)"
            if {skperms::default} is set:
                message "{@secondcolour}Set the default group {@maincolour}(&7%{skperms::default}%{@maincolour})"
            else:
                message "{@secondcolour}Set the default group"
            message "{@maincolour}{@command} (p|player) (player) (add|remove|list) permission [permission]"
            message "{@secondcolour}Add/remove/list a players permissions"
            message "{@maincolour}{@command} (p|player) (player) (add|set|remove|list) group [group]"
            message "{@secondcolour}Add/remove/set/list a players group"
            message "{@maincolour}{@command} (g|group) (group) (add|remove|list) permission [permission]"
            message "{@secondcolour}Add/remove/list a group permission"
            message "{@maincolour}{@command} (g|group) (group) (add|remove|list) group [group]"
            message "{@secondcolour}Add/remove/list a groups connected groups"
            message "{@secondcolour}A group is created once it contains a permission"
            message "{@maincolour}{@command} (g|group) (group) (prefix|suffix) set (text)"
            message "{@secondcolour}Set a suffix or prefix to a group"
            message ""
        else if arg 1 is "deleteDefault":
            delete {skperms::default}
            message "{@prefix} {@maincolour}Removed default group (No group set)"
        else if arg 1 is "d", "setdefault" or "default":
            if arg 2 is set:
                set {skperms::default} to "%arg 2%"
                message "{@prefix} {@maincolour}Set default group to &l%arg 2%"
            else:
                message "{@prefix} {@maincolour}Error: Group not specified"
        else if arg 1 is "p" or "player":
            if arg 2 is not set:
                message "{@prefix} {@maincolour}Error: Player not specified"
            else if arg 2 is set:
                if arg 3 is "a" or "add":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":  
                                add "%arg 2%" to {skperms::groups::*}
                            set {_player} to arg 2 parsed as player
                            add "%arg 5%" to {_player}'s permissions
                            set {skperms::player::%arg 2%::permissions::*} to {_player}'s permissions
                            message "{@prefix} {@maincolour}Added %arg 5% to %arg 2%'s permissions"
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":  
                                add "%arg 2%" to {skperms::groups::*}
                            if {skperms::player::%arg 2%::groups::*} doesn't contain "%arg 5%":
                                add "%arg 5%" to {skperms::player::%arg 2%::groups::*}
                            else:
                                message "{@prefix} {@secondcolour}%arg 2% already has group %arg 5%"
                                stop
                            message "{@prefix} {@maincolour}Added %arg 2% to group %arg 5%"
                            if {@UseChat} is true:
                                if {@ChatType} is "Display" or "display":
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                            if {skperms::group::%arg 5%::prefix} is set:
                                                if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                            else if {skperms::group::%arg 5%::suffix} is set:
                                                set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                            else:
                                                set loop-player's display name to "%player%"
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} is not set:
                                            set loop-player's display name to "%player%"
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "s" or "set":
                    if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":  
                                add "%arg 2%" to {skperms::groups::*}
                            delete {skperms::player::%arg 2%::groups::*}
                            add "%arg 5%" to {skperms::player::%arg 2%::groups::*}
                            message "{@prefix} {@maincolour}Set %arg 2% to group %arg 5%"
                            if {@UseChat} is true:
                                if {@ChatType} is "Display" or "display":
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                            if {skperms::group::%arg 5%::prefix} is set:
                                                if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                            else if {skperms::group::%arg 5%::suffix} is set:
                                                set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                            else:
                                                set loop-player's display name to "%player%"
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} is not set:
                                            set loop-player's display name to "%player%"
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "r" or "remove":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            set {_player} to arg 2 parsed as player
                            remove "%arg 5%" from {_player}'s permissions
                            set {skperms::player::%arg 2%::permissions::*} to {_player}'s permissions
                            message "{@prefix} {@maincolour}Removed %arg 5% from %arg 2%'s permissions"
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::player::%arg 2%::groups::*} contains "%arg 5%":
                                remove "%arg 5%" from {skperms::player::%arg 2%::groups::*}
                                message "{@prefix} {@maincolour}Removed %arg 2% from group %arg 5%"
                                if {@UseChat} is true:
                                    if {@ChatType} is "Display" or "display":
                                        loop all players:
                                            if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                                if {skperms::group::%arg 5%::prefix} is set:
                                                    if {skperms::group::%arg 5%::suffix} is set:
                                                        set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                    else:
                                                        set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                                else if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to "%player%"
                                        loop all players:
                                            if {skperms::player::%player%::groups::*} is not set:
                                                set loop-player's display name to "%player%"
                            else:
                                message "{@prefix} {@maincolour}Error: Player %arg 2% doesn't have that group"
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "l" or "list":
                    if arg 4 is "p", "permission" or "permissions":
                        set {_player} to arg 2 parsed as player
                        message "{@prefix} {@maincolour}%{_player}'s permissions%"
                    else if arg 4 is "g", "group" or "groups":
                        message "{@prefix} {@maincolour}%{skperms::player::%arg 2%::groups::*}%"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
        else if arg 1 is "g", "group" or "groups":
            if arg 2 is not set:
                message "{@prefix} {@maincolour}Error: Group not specified"
            else if arg 2 is set:
                if arg 3 is "a" or "add":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":  
                                add "%arg 2%" to {skperms::groups::*}
                            add "%arg 5%" to {skperms::group::%arg 2%::permissions::*}
                            message "{@prefix} {@maincolour}Added %arg 5% to group %arg 2%'s permissions"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":  
                                add "%arg 2%" to {skperms::groups::*}
                            loop {skperms::group::%arg 5%::permissions::*}:
                                add "%loop-value%" to {skperms::group::%arg 2%::permissions::*}
                            message "{@prefix} {@maincolour}Added %arg 5%'s permissions to group %arg 2%"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "r" or "remove":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        remove "%loop-value-2%" from loop-player's permissions
                            remove "%arg 5%" from {skperms::group::%arg 2%::permissions::*}
                            message "{@prefix} {@maincolour}Removed %arg 5% from group %arg 2%'s permissions"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        remove "%loop-value-2%" from loop-player's permissions
                            loop {skperms::group::%arg 5%::permissions::*}:
                                remove "%loop-value%" from {skperms::group::%arg 2%::permissions::*}
                                add 1 to {_l}
                            message "{@prefix} {@maincolour}Removed %{_l}% of %arg 5%'s permissions from group %arg 2%"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "l" or "list":
                    if arg 4 is "p", "permission" or "permissions":
                        message "{@prefix} {@maincolour}%{skperms::group::%arg 2%::permissions::*}%"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "prefix" or "suffix":
                    if arg 4 is "set":
                        if arg 5 is set:
                            set {skperms::group::%arg 2%::%arg 3%} to "%arg 5%"
                            message "{@prefix} {@maincolour}%arg 3% set to %arg 5%"
                            if {@UseChat} is true:
                                if {@ChatType} is "Display" or "display":
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                            if {skperms::group::%arg 5%::prefix} is set:
                                                if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                            else if {skperms::group::%arg 5%::suffix} is set:
                                                set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                            else:
                                                set loop-player's display name to "%player%"
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} is not set:
                                            set loop-player's display name to "%player%"
                        else:
                            message "{@prefix} {@maincolour}Prefix/Suffix not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified (Type ""set"")"
on quit:
    set {skperms::player::%player%::permissions::*} to player's permissions
on join:
    loop 2 times:
        remove "%player%" from {skperms::players::*}
    add "%player%" to {skperms::players::*}
    loop {skperms::groups::*}:
        if player has permission "skperms.group.%loop-value%":
            if {skperms::player::%player%::groups::*} doesn't contain "%loop-value%":
                add "%loop-value%" to {skperms::player::%player%::groups::*}
    if {skperms::default} is set:
        loop {skperms::group::%{skperms::default}%::permissions::*}:
            add "%loop-value%" to player's permissions
    loop {skperms::player::%player%::permissions::*}:
        add "%loop-value%" to player's permissions
    if {skperms::player::%player%::groups::*} is not empty:
        loop {skperms::player::%player%::groups::*}:
            loop {skperms::group::%loop-value%::permissions::*}:
                add "%loop-value-2%" to player's permissions
            if {@UseChat} is true:
                if {@ChatType} is "Display" or "display":
                    if {skperms::group::%loop-index%::prefix} is set:
                        if {skperms::group::%loop-index%::suffix} is set:
                            set player's display name to coloured "%{skperms::group::%loop-index%::prefix}%%player%%{skperms::group::%loop-index%::suffix}%"
                        else:
                            set player's display name to coloured "%{skperms::group::%loop-index%::prefix}%%player%"
                    else if {skperms::group::%loop-index%::suffix} is set:
                        set player's display name to coloured "%player%%{skperms::group::%loop-index%::suffix}%"
                    else:
                        set player's display name to "%player%"
                loop all players:
                    if {skperms::player::%player%::groups::*} is not set:
                        set loop-player's display name to "%player%"
Errors on Reload:

code_language.skript:
9:08:58 PM [INFO] [Skript] The script 'cc.sk' infinitely (or excessively) repeated itself!
Console Errors: (if applicable)

Same as above

Other Useful Info:

Addons using (including versions):
RandomSkBeta, Skellett, SkQuery, skRayFall, SkStuff, skUtitlites, Umbaska, WildSkript

Troubleshooting:

Have you tried searching the docs? Yes
Have you tried searching the forums? Yes
 
Last edited:
@Pikachu Yes, I know and you can clearly tell that the functions are. Look at the code. That is not the issue.
 
@Pikachu Yes, I know and you can clearly tell that the functions are. Look at the code.
It wasn't at the time I posted. You fixed what I said then you edited this thread to be an entirely different problem lol. If you have a new problem you should make a new post. Anyway, nobody is going to look through a thousand line skript to figure out where you messed up and made an infinite loop. You'll probably have to do it yourself.
 
@Pikachu Clearly, you can tell by that am not an extreme coder and do not know what I'm looking for so that is why I am needing help. Or I wouldn't be here.
 
Divide the whole script into multiple scripts to tackle which one is the cause to the error. There's no way we're going to look into a script with over one thousand lines just to find the cause of infinite looping. Do what I highly recommend doing, otherwise good luck trying to find the problem in such a massive code.

People still have RandomSkBeta?
 
@White @Pikachu I have removed everything else except for the rank stuff. I know the issue is going to be within the lines above 490.

code_language.skript:
script options:
    $ use permissions
    
#Funtion
function rankLoad(p: player , n: number , t: number) :: string:
    if {_n} is 1:
        if {cubecraft.testrank.%{_p}%} is set:
            if {_t} is 0:
                set {cubecraft.rank.%{_p}%} to {cubecraft.testrank.%{_p}%}
                delete {cubecraft.testrank.%{_p}%}
        if {cubecraft.rank.%{_p}%} is not set:
            set {cubecraft.rank.%{_p}%} to ""
        if {cubecraft.rank.%{_p}%} is "&8:Stone:":
            execute console command "/rank %{_p}% stone"
            set {_p} tab name to "&8%{_p}%"
            return "&8:Stone:"
        if {cubecraft.rank.%{_p}%} is "&7&ki&7Iron&7&ki ":
            execute console command "/rank %{_p}% iron"
            set {_p} tab name to "&7%{_p}%"
            return "&7&ki&7Iron&7&ki"
        if {cubecraft.rank.%{_p}%} is "&1&ki&1Lapiz&1&ki ":
            execute console command "/rank %{_p}% lapiz"
            set {_p} tab name to "&1%{_p}%"
            return "&1&ki&1Lapiz&1&ki"
        if {cubecraft.rank.%{_p}%} is "&6&ki&6Gold&6&ki ":
            execute console command "/rank %{_p}% gold"
            set {_p} tab name to "&e%{_p}%"
            return "&6&ki&6Gold&6&ki"
        if {cubecraft.rank.%{_p}%} is "&b&ki&bDiamond&b&ki ":
            execute console command "/rank %{_p}% diamond"
            set {_p} tab name to "&b%{_p}%"
            return "&b&ki&bDiamond&b&ki"
        if {cubecraft.rank.%{_p}%} is "&a&ki&aEmerald&a&ki ":
            execute console command "/rank %{_p}% emerald"
            set {_p} tab name to "&a%{_p}%"
            return "&a&ki&aEmerald&a&ki"
        if {cubecraft.rank.%{_p}%} is "&5&ki&5Obsidian&5&ki ":
            execute console command "/rank %{_p}% obsidian"
            set {_p} tab name to "&5%{_p}%"
            return "&5&ki&5Obsidian&5&ki"
        if {cubecraft.rank.%{_p}%} is "&3&l[Builder] ":
            execute console command "/rank %{_p}% builder"
            set {_p} tab name to "&3%{_p}%"
            return "&3&l[Builder]"
        if {cubecraft.rank.%{_p}%} is "&d&l[Helper] ":
            execute console command "/rank %{_p}% helper"
            set {_p} tab name to "&d%{_p}%"
            return "&d&l[Helper]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Moderator] ":
            execute console command "/rank %{_p}% mod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Moderator]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Sr Moderator] ":
            execute console command "/rank %{_p}% srmod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Sr Moderator]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Jr Developer] ":
            execute console command "/rank %{_p}% jrdev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Jr Developer]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Developer] ":
            execute console command "/rank %{_p}% dev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Developer]"
        if {cubecraft.rank.%{_p}%} is "&4&l[Administator] ":
            execute console command "/rank %{_p}% admin"
            set {_p} tab name to "&4%{_p}%"
            return "&4&l[Administator]"
        if {cubecraft.rank.%{_p}%} is "&9&l[Owner] ":
            execute console command "/rank %{_p}% jrdev"
            set {_p} tab name to "&9%{_p}%"
            return "&9&l[Owner]"
    else if {_n} is 2:
        if {cubecraft.testrank.%{_p}%} is set:
            if {_t} is 0:
                set {cubecraft.rank.%{_p}%} to {cubecraft.testrank.%{_p}%}
                delete {cubecraft.testrank.%{_p}%}
        if {cubecraft.rank.%{_p}%} is not set:
            set {cubecraft.rank.%{_p}%} to ""
        if {cubecraft.rank.%{_p}%} is "&8:Stone:":
            execute console command "/rank %{_p}% stone"
            set {_p} tab name to "&8%{_p}%"
            return "&8:Stone:"
        if {cubecraft.rank.%{_p}%} is "&7&ki&7Iron&7&ki ":
            execute console command "/rank %{_p}% iron"
            set {_p} tab name to "&7%{_p}%"
            return "&7&ki&7Iron&7&ki"
        if {cubecraft.rank.%{_p}%} is "&1&ki&1Lapiz&1&ki ":
            execute console command "/rank %{_p}% lapiz"
            set {_p} tab name to "&1%{_p}%"
            return "&1&ki&1Lapiz&1&ki"
        if {cubecraft.rank.%{_p}%} is "&6&ki&6Gold&6&ki ":
            execute console command "/rank %{_p}% gold"
            set {_p} tab name to "&e%{_p}%"
            return "&6&ki&6Gold&6&ki"
        if {cubecraft.rank.%{_p}%} is "&b&ki&bDiamond&b&ki ":
            execute console command "/rank %{_p}% diamond"
            set {_p} tab name to "&b%{_p}%"
            return "&b&ki&bDiamond&b&ki"
        if {cubecraft.rank.%{_p}%} is "&a&ki&aEmerald&a&ki ":
            execute console command "/rank %{_p}% emerald"
            set {_p} tab name to "&a%{_p}%"
            return "&a&ki&aEmerald&a&ki"
        if {cubecraft.rank.%{_p}%} is "&5&ki&5Obsidian&5&ki ":
            execute console command "/rank %{_p}% obsidian"
            set {_p} tab name to "&5%{_p}%"
            return "&5&ki&5Obsidian&5&ki"
        if {cubecraft.rank.%{_p}%} is "&3&l[Builder] ":
            execute console command "/rank %{_p}% builder"
            set {_p} tab name to "&3%{_p}%"
            return "&3&l[Builder]"
        if {cubecraft.rank.%{_p}%} is "&d&l[Helper] ":
            execute console command "/rank %{_p}% helper"
            set {_p} tab name to "&d%{_p}%"
            return "&d&l[Helper]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Moderator] ":
            execute console command "/rank %{_p}% mod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Moderator]"
        if {cubecraft.rank.%{_p}%} is "&6&l[Sr Moderator] ":
            execute console command "/rank %{_p}% srmod"
            set {_p} tab name to "&6%{_p}%"
            return "&6&l[Sr Moderator]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Jr Developer] ":
            execute console command "/rank %{_p}% jrdev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Jr Developer]"
        if {cubecraft.rank.%{_p}%} is "&2&l[Developer] ":
            execute console command "/rank %{_p}% dev"
            set {_p} tab name to "&2%{_p}%"
            return "&2&l[Developer]"
        if {cubecraft.rank.%{_p}%} is "&4&l[Administator] ":
            execute console command "/rank %{_p}% admin"
            set {_p} tab name to "&4%{_p}%"
            return "&4&l[Administator]"
        if {cubecraft.rank.%{_p}%} is "&9&l[Owner] ":
            execute console command "/rank %{_p}% owner"
            set {_p} tab name to "&9%{_p}%"
            return "&9&l[Owner]"
            
function updateRankAPI(p: player) :: player:
    wait 5 ticks
    if {cubecraft.rank.%{_p}%} is not set:
        set {cubecraft.rank.%{_p}%} to ""
    if {cubecraft.disguise.%{_p}%} is set:
        set {_br} to uncolored {cubecraft.rank.%{_p}%}
        set {_dr} to uncolored {cubecraft.rank.%{cubecraft.disguise.%{_p}%}%}
        if {cubecraft.rank.%{cubecraft.disguise.%{_p}%}%} is set:
            make all players see {_p}'s prefix as "%{cubecraft.rank.%{cubecraft.disguise.%{_p}%}%}%&e"
        else:
            make all players see {_p}'s prefix as "&e"
        set {_br} to convert string "%{_br}%" to lowercase
        set {_br} to 1st char in each word of "%{_br}%" to caps
        set {_dr} to convert string "%{_dr}%" to lowercase
        set {_dr} to 1st char in each word of "%{_dr}%" to caps
        replace all " " in {_br} with ""
        replace all " " in {_dr} with ""
        if {_dr} is "":
            set {_dr} to "No Rank"
        if {_br} contains "mod":
            replace all "mod" with "Mod" in {_br}
        if {_dr} contains "mod":
            replace all "mod" with "Mod" in {_dr}
        if {_br} contains "dev":
            replace all "dev" with "Dev" in {_br}
        if {_dr} contains "dev":
            replace all "dev" with "Dev" in {_dr}
        set {cubecraft.api.displayrank.%{_p}%} to "%{_dr}% (%{_br}%)"
        set {cubecraft.api.displayname.%{_p}%} to "%{cubecraft.disguise.%{_p}%}%"
    else:
        set {_br} to uncolored {cubecraft.rank.%{_p}%}
        if {cubecraft.rank.%{_p}%} is set:
            make all players see {_p}'s prefix as "%{cubecraft.rank.%{_p}%}%&e"
        else:
            make all players see {_p}'s prefix as "&e"
        set {_br} to convert string "%{_br}%" to lowercase
        set {_br} to 1st char in each word of "%{_br}%" to caps
        if {_br} is "":
            set {_br} to "No Rank"
        if {_br} contains "mod":
            replace all "mod" with "Mod" in {_br}
        if {_br} contains "dev":
            replace all "dev" with "Dev" in {_br}
        set {cubecraft.api.displayrank.%{_p}%} to "%{_br}%"
        set {cubecraft.api.displayname.%{_p}%} to "%{_p}%"


            

on join:
    if {cubecraft.rank.uuid.%uuid of player%} is set:
        set {cubecraft.rank.%player%} to {cubecraft.rank.uuid.%uuid of player%}
    wait 2 ticks
    rankLoad(player, 1, 0)
    loop all players:
        updateRankAPI(loop-player)
    
    
on quit:
    set {cubecraft.rank.uuid.%uuid of player%} to {cubecraft.rank.%player%}
            
command /rank [<offline player>] [<string>]:
    permission: test.test
    permission message: &cYou don't have permission to use that command!.
    trigger:
        if argument 1 or argument 2 is not set:
            send "&9Rank Manager> &7Listing Rank Update Commands:"
            send "&f/rank (player) (rank): &eupdates chosen player's rank to the chosen rank"
            send ""
            send "&9Rank Update> &7Listing Rank List:"
            send "&9Ranks> &7STONE"
            send "&9Ranks> &7IRON"
            send "&9Ranks> &7LAPIZ"
            send "&9Ranks> &7GOLD"
            send "&9Ranks> &7DIAMOND"
            send "&9Ranks> &7EMERALD"
            send "&9Ranks> &7OBSIDIAN"
            send "&9Ranks> &7BUILDER"
            send "&9Ranks> &7HELPER"
            send "&9Ranks> &7MOD"
            send "&9Ranks> &7SRMOD"
            send "&9Ranks> &7JRDEV"
            send "&9Ranks> &7DEV"
            send "&9Ranks> &7ADMIN"
            send "&9Ranks> &7OWNER"
        if argument 2 is "STONE":
            if argument 2 is set:   #These should now no longer mater so lel.
                set {cubecraft.rank.%arg-1%} to "&8:Stone:"
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Stone!"
                send "&9Rank Manager> &7Your rank has been updated to Stone!" to arg 1
                set arg-1 tab name to "&8%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "IRON":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&7&ki&7Iron&7&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Iron!"
                send "&9Rank Manager> &7Your rank has been updated to Iron!" to arg 1
                set arg-1 tab name to "&7%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "LAPIZ":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&1&ki&1Lapiz&1&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Lapiz!"
                send "&9Rank Manager> &7Your rank has been updated to Lapiz!" to arg 1
                set arg-1 tab name to "&1%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "GOLD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&6&ki&6Gold&6&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Gold!"
                send "&9Rank Manager> &7Your rank has been updated to Gold!" to arg 1
                set arg-1 tab name to "&e%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "DIAMOND":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&b&ki&bDiamond&b&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Diamond!"
                send "&9Rank Manager> &7Your rank has been updated to Diamond!" to arg 1
                set arg-1 tab name to "&b%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "EMERALD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&a&ki&aEmerald&a&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Emerald!"
                send "&9Rank Manager> &7Your rank has been updated to Emerald!" to arg 1
                set arg-1 tab name to "&a%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "OBSIDIAN":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&5&ki&5Obsidian&5&ki "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Obsidian!"
                send "&9Rank Manager> &7Your rank has been updated to Obsidian!" to arg 1
                set arg-1 tab name to "&5%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "BUILDER":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&3&l[Builder] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Builder!"
                send "&9Rank Manager> &7Your rank has been updated to Builder!" to arg 1
                set arg-1 tab name to "&3%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "HELPER":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&d&l[Helper] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Helper!"
                send "&9Rank Manager> &7Your rank has been updated to Helper!" to arg 1
                set arg-1 tab name to "&d%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "MOD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&6&l[Moderator] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Mod!"
                send "&9Rank Manager> &7Your rank has been updated to Mod!" to arg 1
                set arg-1 tab name to "&6%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "SRMOD":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&6&l[Sr Moderator] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Sr. Mod!"
                send "&9Rank Manager> &7Your rank has been updated to Sr. Mod!" to arg 1
                set arg-1 tab name to "&6%arg-1%"

            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "JRDEV":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&2&l[Jr Developer] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.jrdeveloper" to arg-1's permissions   
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Jr. Dev!"
                send "&9Rank Manager> &7Your rank has been updated to Jr. Dev!" to arg 1
                set arg-1 tab name to "&2%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "DEV":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&2&l[Developer] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.developer" to arg-1's permissions
                add "rank.jrdeveloper" to arg-1's permissions   
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Dev!"
                send "&9Rank Manager> &7Your rank has been updated to Dev!" to arg 1
                set arg-1 tab name to "&2%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "ADMIN":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&4&l[Administator] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.admin" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Admin!"
                send "&9Rank Manager> &7Your rank has been updated to Admin!" to arg 1
                set arg-1 tab name to "&4%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else if argument 2 is "OWNER":
            if argument 2 is set:
                set {cubecraft.rank.%arg-1%} to "&9&l[Owner] "
                execute console command "/__cc__dp__ %arg-1%"
                add "rank.stone" to arg-1's permissions
                add "rank.iron" to arg-1's permissions
                add "rank.lapiz" to arg-1's permissions
                add "rank.gold" to arg-1's permissions
                add "rank.diamond" to arg-1's permissions
                add "rank.emerald" to arg-1's permissions
                add "rank.obsidian" to arg-1's permissions
                add "rank.helper" to arg-1's permissions
                add "rank.builder" to arg-1's permissions
                add "rank.moderator" to arg-1's permissions
                add "rank.seniormoderator" to arg-1's permissions
                add "rank.admin" to arg-1's permissions
                add "rank.owner" to arg-1's permissions
                add "rank.developer" to arg-1's permissions
                add "rank.jrdeveloper" to arg-1's permissions
                send "&9Rank Manager> &7%arg-1%'s rank has been updated to Owner!"
                send "&9Rank Manager> &7Your rank has been updated to Owner!" to arg 1
                set arg-1 tab name to "&9%arg-1%"
            else:
                send "&9Message> &cSomething went wrong?"
        else:
            send "&9Client Manager> &c&lInvalid rank!"
        rankLoad(arg-1, 2, 0)   
        
        
command /__cc__dp__ <player>:
    executable by: console
    trigger:
        remove "rank.stone" from arg-1's permissions
        remove "rank.iron" from arg-1's permissions
        remove "rank.lapiz" from arg-1's permissions
        remove "rank.gold" from arg-1's permissions
        remove "rank.diamond" from arg-1's permissions
        remove "rank.emerald" from arg-1's permissions
        remove "rank.obsidian" from arg-1's permissions
        remove "rank.helper" from arg-1's permissions
        remove "rank.builder" from arg-1's permissions
        remove "rank.moderator" from arg-1's permissions
        remove "rank.seniormoderator" from arg-1's permissions
        remove "rank.admin" from arg-1's permissions
        remove "rank.owner" from arg-1's permissions
        remove "rank.developer" from arg-1's permissions
        remove "rank.jrdeveloper" from arg-1's permissions
        
#Made my LimeGlass
script options:
    $ use permissions
    #To use SQL for SkPerms, remove the # from below, and edit settings to yours
    
    #$ init com.mysql.jdbc.Driver
    #$ db url jdbc:mysql://localhost:3306/skript
    #$ db username admin
    #$ db password skperm_pass
options:
    prefix: &6[&5SkPerms&6]
    maincolour: &6
    secondcolour: &7
    command: /skperms
    aliases: /skp, /skpermissions, /skperm
    permission: skperms.admin
    
    #CMD protection is basically extra security for your server. Only players inside of a list variable can use SkPerms
    CMDprotection: false
    CMDprotectionMsg: Unknown command. Type ""/help"" for help
    #The player list is the list variable that contains players that can use SkPerms if CMDprotection is enabled
    PlayerList: {example::players::*}
    
    UseChat: true #use prefix and suffix in the chat
    #Chat types:
    #Display - Changes the player's display name (Vault will hook if installed)
    #Override - !COMING SOON
    ChatType: "Display"
    
    version: 1.0.5

on script load:
    if file "plugins\SkPerms" exists:
        delete {skperms::config::*}
    else:
        set yaml value "version" from file "plugins\SkPerms\config.yml" to "{@version}"
        set yaml value "useYML" from file "plugins\SkPerms\config.yml" to false
    set {skperms::config::version} to yaml value "version" from file "plugins\SkPerms\config.yml"
    set {skperms::config::useYML} to yaml value "useYML" from file "plugins\SkPerms\config.yml"
    if {skperms::config::useYML} is true:
        if {skperms::players::*} is not set:
            stop
        delete file "plugins\SkPerms\players.yml"
        loop {skperms::players::*}:
            loop {skperms::player::%loop-value%::permissions::*}:
                add "%loop-value-2%" to yaml list "players.%loop-value-1%.permissions" from file "plugins\SkPerms\players.yml"
on script unload:
    loop {skperms::groups::*}:
        if {skperms::group::%loop-value%::*} is not set:
            loop {skperms::group::%loop-value-1%::permissions::*}:
                loop {skperms::players::*}:
                    remove "%loop-value-2%" from {skperms::player::%loop-value-3%::permissions::*}
            loop {skperms::players::*}:
                remove "%loop-value-1%" from {skperms::player::%loop-value-2%::groups::*}
                if {skperms::player::%loop-value-2%::groups::*} is not empty:
                    loop {skperms::player::%loop-value-2%::groups::*}:
                        loop {skperms::group::%loop-value-1%::permissions::*}:
                            set {_p} to "%loop-value-2%" parsed as player
                            add "%loop-value-4%" to {_p}'s permissions
            remove "%loop-value%" from {skperms::groups::*}
command {@command} [<text>] [<text>] [<text>] [<text>] [<text>]:
    permission: {@permission}
    aliases: {@aliases}
    trigger:
        if {@CMDprotection} is true:
            if command sender is not console:
                if {@PlayerList} doesn't contain player or "%player%":
                    message "{@CMDprotectionMsg}"
                    stop
        if arg 1 is not set:
            message ""
            message "{@prefix} v{@version}:"
            message "{@maincolour}{@command} deleteDefault"
            message "{@secondcolour}Deletes default group setting (If set)"
            message "{@maincolour}{@command} (d|default) (group)"
            if {skperms::default} is set:
                message "{@secondcolour}Set the default group {@maincolour}(&7%{skperms::default}%{@maincolour})"
            else:
                message "{@secondcolour}Set the default group"
            message "{@maincolour}{@command} (p|player) (player) (add|remove|list) permission [permission]"
            message "{@secondcolour}Add/remove/list a players permissions"
            message "{@maincolour}{@command} (p|player) (player) (add|set|remove|list) group [group]"
            message "{@secondcolour}Add/remove/set/list a players group"
            message "{@maincolour}{@command} (g|group) (group) (add|remove|list) permission [permission]"
            message "{@secondcolour}Add/remove/list a group permission"
            message "{@maincolour}{@command} (g|group) (group) (add|remove|list) group [group]"
            message "{@secondcolour}Add/remove/list a groups connected groups"
            message "{@secondcolour}A group is created once it contains a permission"
            message "{@maincolour}{@command} (g|group) (group) (prefix|suffix) set (text)"
            message "{@secondcolour}Set a suffix or prefix to a group"
            message ""
        else if arg 1 is "deleteDefault":
            delete {skperms::default}
            message "{@prefix} {@maincolour}Removed default group (No group set)"
        else if arg 1 is "d", "setdefault" or "default":
            if arg 2 is set:
                set {skperms::default} to "%arg 2%"
                message "{@prefix} {@maincolour}Set default group to &l%arg 2%"
            else:
                message "{@prefix} {@maincolour}Error: Group not specified"
        else if arg 1 is "p" or "player":
            if arg 2 is not set:
                message "{@prefix} {@maincolour}Error: Player not specified"
            else if arg 2 is set:
                if arg 3 is "a" or "add":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":   
                                add "%arg 2%" to {skperms::groups::*}
                            set {_player} to arg 2 parsed as player
                            add "%arg 5%" to {_player}'s permissions
                            set {skperms::player::%arg 2%::permissions::*} to {_player}'s permissions
                            message "{@prefix} {@maincolour}Added %arg 5% to %arg 2%'s permissions"
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":   
                                add "%arg 2%" to {skperms::groups::*}
                            if {skperms::player::%arg 2%::groups::*} doesn't contain "%arg 5%":
                                add "%arg 5%" to {skperms::player::%arg 2%::groups::*}
                            else:
                                message "{@prefix} {@secondcolour}%arg 2% already has group %arg 5%"
                                stop
                            message "{@prefix} {@maincolour}Added %arg 2% to group %arg 5%"
                            if {@UseChat} is true:
                                if {@ChatType} is "Display" or "display":
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                            if {skperms::group::%arg 5%::prefix} is set:
                                                if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                            else if {skperms::group::%arg 5%::suffix} is set:
                                                set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                            else:
                                                set loop-player's display name to "%player%"
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} is not set:
                                            set loop-player's display name to "%player%"
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "s" or "set":
                    if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":   
                                add "%arg 2%" to {skperms::groups::*}
                            delete {skperms::player::%arg 2%::groups::*}
                            add "%arg 5%" to {skperms::player::%arg 2%::groups::*}
                            message "{@prefix} {@maincolour}Set %arg 2% to group %arg 5%"
                            if {@UseChat} is true:
                                if {@ChatType} is "Display" or "display":
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                            if {skperms::group::%arg 5%::prefix} is set:
                                                if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                            else if {skperms::group::%arg 5%::suffix} is set:
                                                set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                            else:
                                                set loop-player's display name to "%player%"
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} is not set:
                                            set loop-player's display name to "%player%"
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "r" or "remove":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            set {_player} to arg 2 parsed as player
                            remove "%arg 5%" from {_player}'s permissions
                            set {skperms::player::%arg 2%::permissions::*} to {_player}'s permissions
                            message "{@prefix} {@maincolour}Removed %arg 5% from %arg 2%'s permissions"
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::player::%arg 2%::groups::*} contains "%arg 5%":
                                remove "%arg 5%" from {skperms::player::%arg 2%::groups::*}
                                message "{@prefix} {@maincolour}Removed %arg 2% from group %arg 5%"
                                if {@UseChat} is true:
                                    if {@ChatType} is "Display" or "display":
                                        loop all players:
                                            if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                                if {skperms::group::%arg 5%::prefix} is set:
                                                    if {skperms::group::%arg 5%::suffix} is set:
                                                        set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                    else:
                                                        set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                                else if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to "%player%"
                                        loop all players:
                                            if {skperms::player::%player%::groups::*} is not set:
                                                set loop-player's display name to "%player%"
                            else:
                                message "{@prefix} {@maincolour}Error: Player %arg 2% doesn't have that group"
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "l" or "list":
                    if arg 4 is "p", "permission" or "permissions":
                        set {_player} to arg 2 parsed as player
                        message "{@prefix} {@maincolour}%{_player}'s permissions%"
                    else if arg 4 is "g", "group" or "groups":
                        message "{@prefix} {@maincolour}%{skperms::player::%arg 2%::groups::*}%"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
        else if arg 1 is "g", "group" or "groups":
            if arg 2 is not set:
                message "{@prefix} {@maincolour}Error: Group not specified"
            else if arg 2 is set:
                if arg 3 is "a" or "add":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":   
                                add "%arg 2%" to {skperms::groups::*}
                            add "%arg 5%" to {skperms::group::%arg 2%::permissions::*}
                            message "{@prefix} {@maincolour}Added %arg 5% to group %arg 2%'s permissions"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            if {skperms::groups::*} doesn't contain "%arg 2%":   
                                add "%arg 2%" to {skperms::groups::*}
                            loop {skperms::group::%arg 5%::permissions::*}:
                                add "%loop-value%" to {skperms::group::%arg 2%::permissions::*}
                            message "{@prefix} {@maincolour}Added %arg 5%'s permissions to group %arg 2%"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "r" or "remove":
                    if arg 4 is "p", "permission" or "permissions":
                        if arg 5 is set:
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        remove "%loop-value-2%" from loop-player's permissions
                            remove "%arg 5%" from {skperms::group::%arg 2%::permissions::*}
                            message "{@prefix} {@maincolour}Removed %arg 5% from group %arg 2%'s permissions"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Permission not specified"
                    else if arg 4 is "g", "group" or "groups":
                        if arg 5 is set:
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        remove "%loop-value-2%" from loop-player's permissions
                            loop {skperms::group::%arg 5%::permissions::*}:
                                remove "%loop-value%" from {skperms::group::%arg 2%::permissions::*}
                                add 1 to {_l}
                            message "{@prefix} {@maincolour}Removed %{_l}% of %arg 5%'s permissions from group %arg 2%"
                            loop all players:
                                if {skperms::player::%player%::groups::*} contains "%arg 2%":
                                    loop {skperms::group::%arg 2%::permissions::*}:
                                        add "%loop-value-2%" to loop-player's permissions
                        else:
                            message "{@prefix} {@maincolour}Error: Group not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "l" or "list":
                    if arg 4 is "p", "permission" or "permissions":
                        message "{@prefix} {@maincolour}%{skperms::group::%arg 2%::permissions::*}%"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified"
                else if arg 3 is "prefix" or "suffix":
                    if arg 4 is "set":
                        if arg 5 is set:
                            set {skperms::group::%arg 2%::%arg 3%} to "%arg 5%"
                            message "{@prefix} {@maincolour}%arg 3% set to %arg 5%"
                            if {@UseChat} is true:
                                if {@ChatType} is "Display" or "display":
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} contains "%arg 5%":
                                            if {skperms::group::%arg 5%::prefix} is set:
                                                if {skperms::group::%arg 5%::suffix} is set:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                                else:
                                                    set loop-player's display name to coloured "%{skperms::group::%arg 5%::prefix}%%loop-player%"
                                            else if {skperms::group::%arg 5%::suffix} is set:
                                                set loop-player's display name to coloured "%loop-player%%{skperms::group::%arg 5%::suffix}%"
                                            else:
                                                set loop-player's display name to "%player%"
                                    loop all players:
                                        if {skperms::player::%player%::groups::*} is not set:
                                            set loop-player's display name to "%player%"
                        else:
                            message "{@prefix} {@maincolour}Prefix/Suffix not specified"
                    else:
                        message "{@prefix} {@maincolour}Error: Type not specified (Type ""set"")"
on quit:
    set {skperms::player::%player%::permissions::*} to player's permissions
on join:
    loop 2 times:
        remove "%player%" from {skperms::players::*}
    add "%player%" to {skperms::players::*}
    loop {skperms::groups::*}:
        if player has permission "skperms.group.%loop-value%":
            if {skperms::player::%player%::groups::*} doesn't contain "%loop-value%":
                add "%loop-value%" to {skperms::player::%player%::groups::*}
    if {skperms::default} is set:
        loop {skperms::group::%{skperms::default}%::permissions::*}:
            add "%loop-value%" to player's permissions
    loop {skperms::player::%player%::permissions::*}:
        add "%loop-value%" to player's permissions
    if {skperms::player::%player%::groups::*} is not empty:
        loop {skperms::player::%player%::groups::*}:
            loop {skperms::group::%loop-value%::permissions::*}:
                add "%loop-value-2%" to player's permissions
            if {@UseChat} is true:
                if {@ChatType} is "Display" or "display":
                    if {skperms::group::%loop-index%::prefix} is set:
                        if {skperms::group::%loop-index%::suffix} is set:
                            set player's display name to coloured "%{skperms::group::%loop-index%::prefix}%%player%%{skperms::group::%loop-index%::suffix}%"
                        else:
                            set player's display name to coloured "%{skperms::group::%loop-index%::prefix}%%player%"
                    else if {skperms::group::%loop-index%::suffix} is set:
                        set player's display name to coloured "%player%%{skperms::group::%loop-index%::suffix}%"
                    else:
                        set player's display name to "%player%"
                loop all players:
                    if {skperms::player::%player%::groups::*} is not set:
                        set loop-player's display name to "%player%"
 
Status
Not open for further replies.