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} [] [] [] [] []: 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%"