g1ps Posted July 1, 2021 Share Posted July 1, 2021 (edited) When I restart the server. gen skript won't start. I have to write sk reload. How to fix it ? Writes to the console: Invalid function call to a function that does not exist yet. Be careful when using functions in 'script load' events! # # IMPORTANT: # max gens: 54 # any more will not be loaded in # options: dropdelay: 3 seconds sellwanditem: blaze rod name: &9&lSellwand prefix: [server] on load: reset() # # LOAD GENS CONFIG HERE ↓ # # # format: # loadgen( gen block item, gen drops item, level, upgrade price, sell price of drops) # # gens are upgraded based on level: 1,2,3,4 etc. # # the gen block item cannot be named as # the name will be the name of the drop item # eg. loadgen(diamond block, diamond named "crystal", 1, 100, 1) # will be named "crystal gen" and is level 1 which will be auto given # to new players and diamond named "crystal" sells for 1 # and gen costs 100 to upgrade to next loadgen(white terracotta, ghast spawn egg named "&f1", 1, 1000, 50) loadgen(Light Gray terracotta, panda spawn egg named "&f2", 2, 5000, 100) loadgen(Gray terracotta, evoker spawn egg named "&73", 3, 10000, 150) loadgen(lime terracotta, creeper spawn egg named "&84", 4, 20000, 200) loadgen(green terracotta, slime spawn egg named "&a5", 5, 30000, 300) loadgen(light blue terracotta, vex spawn egg named "&26", 6, 40000, 400) loadgen(cyan terracotta, drowned spawn egg named "&b7", 7, 50000, 500) loadgen(blue terracotta, squid spawn egg named "&38", 8, 100000, 600) loadgen(pink terracotta, fox spawn egg named "&99", 9, 150000, 700) loadgen(magenta terracotta, pig spawn egg named "&110", 10, 200000, 800) loadgen(purple terracotta, shulker spawn egg named "&d11", 11, 250000, 900) loadgen(yellow terracotta, blaze spawn egg named "&512", 12, 350000, 1000) loadgen(orange terracotta, tropical fish spawn egg named "&c13", 13, 400000, 1500) loadgen(red terracotta, mooshroom spawn egg named "&414", 14, 450000, 2000) loadgen(brown terracotta, hoglin spawn egg named "&e15", 15, 500000, 2500) loadgen(black terracotta, enderman spawn egg named "&616", 16, 1000000, 3000) loadgen(white concrete, skeleton spawn egg named "&f&l17", 17, 1500000, 3500) loadgen(Light Gray concrete, sheep spawn egg named "&f&l18", 18, 2000000, 4000) loadgen(Gray concrete, turtle spawn egg named "&7&l19", 19, 2500000, 4500) loadgen(lime concrete, parrot spawn egg named "&8&l20", 20, 3000000, 5000) loadgen(green concrete, phantom spawn egg named "&a&l21", 21, 3500000, 6000) loadgen(light blue concrete, cat spawn egg named "&2&l22", 22, 4000000, 7000) loadgen(cyan concrete, trader llama spawn egg named "&b&l23", 23, 4500000, 8000) loadgen(blue concrete, silverfish spawn egg named "&3&l24", 24, 5000000, 9000) loadgen(pink concrete, pufferfish spawn egg named "&9&l25", 25, 10000000, 10000) loadgen(magenta concrete, horse spawn egg named "&1&l26", 26, 15000000, 15000) loadgen(purple concrete, husk spawn egg named "&d&l27", 27, 20000000, 20000) loadgen(yellow concrete, llama spawn egg named "&5&l28", 28, 25000000, 25000) loadgen(orange concrete, cod spawn egg named "&c&l29", 29, 30000000, 30000) loadgen(red concrete, strider spawn egg named "&4&l30", 30, 35000000, 35000) loadgen(brown concrete, spider spawn egg named "&e&l31", 31, 40000000, 40000) loadgen(black concrete, endermite spawn egg named "&6&l32", 32, 45000000, 45000) # # LOAD GENS CONFIG HERE ↑ # # # GEN CAP CONFIG HERE ↓ # # format: # setcap(group, cap) # eg. setcap("default", 25) players with default group cannot place more than 25 gens # players with permission gen.admin bypass the limit # groups with no cap specified set will not be allowed to place gens unless they have permission gen.admin # extra gen slots per player can be set via /gen cap in game setcap("Member", 25) setcap("vip", 30) # # GEN CAP CONFIG HERE ↑ # # # END OF CONFIG # send "&b%size of {gentype::*}% gens loaded" to all players where [input is op] function loadgen(i: itemtype, drops: item, id: integer, up: number, sp: number): size of {genlevel::*} <= 54 set {gentype::%{_id}%} to {_drops} set {genlevel::%{_id}%} to {_i} set {uprice::%{_id}%} to {_up} set {worth::%{_drops}%} to {_sp} function setcap(group: text, cap: integer): set {gencap::%{_group}%} to {_cap} function reset(): delete {gentype::*} delete {genlevel::*} delete {uprice::*} delete {worth::*} delete {gencap::*} function toRoman(n: number) :: string: set {_r::*} to split "33,33|32,32|31,31|30,30|29,29|28,28|27,27|26,26|25,25|24,24|23,23|22,22|21,21|20,20|19,19|18,18|17,17|16,16|15,15|14,14|13,13|12,12|11,11|10,10|9,9|8,8|7,7|6,6|5,5|4,4|3,3|2,2|1,1" at "|" loop {_r::*}: set {_d::*} to loop-value parsed as "%string%,%int%" while {_n} >= {_d::2}: remove {_d::2} from {_n} set {_result::*} to {_result::*} and {_d::1} return (join {_result::*} with "") ? "" function toNumber(s: string) :: number: set {_r::*} to split "33,33|32,32|31,31|30,30|29,29|28,28|27,27|26,26|25,25|24,24|23,23|22,22|21,21|20,20|19,19|18,18|17,17|16,16|15,15|14,14|13,13|12,12|11,11|10,10|9,9|8,8|7,7|6,6|5,5|4,4|3,3|2,2|1,1" at "|" while length of {_s} > 0: set {_l} to length of {_s} loop {_r::*}: set {_d::*} to loop-value parsed as "%string%,%int%" if {_s} starts with {_d::1}: add {_d::2} to {_n} replace first {_d::1} in {_s} with "" length of {_s} = {_l} stop return {_n} ? 0 on first join: give {genlevel::1} named "&f%genname(1)%" with lore "&7lvl &a%toRoman(1)% &7gen" to player on place of white terracotta or Light Gray terracotta or Gray terracotta or lime terracotta or green terracotta or light blue terracotta or cyan terracotta or blue terracotta or pink terracotta or magenta terracotta or purple terracotta or yellow terracotta or orange terracotta or red terracotta or brown terracotta or black terracotta or white concrete or Light Gray concrete or Gray concrete or lime concrete or green concrete or light blue concrete or cyan concrete or blue concrete or pink concrete or magenta concrete or purple concrete or yellow concrete or orange concrete or red concrete or brown concrete or black concrete: if player does not have permission "gen.admin": if searchcap(player) <= gensize(player): cancel event send "&cYou cannot place more than %searchcap(player)% &cgens" to player event is not cancelled set {_n::*} to split (uncoloured line 1 of lore of tool of player) at " " set {_n} to toNumber({_n::2}) {_n} is set set {gen::%player's uuid%::%{_n}%::*} to {gen::%player's uuid%::%{_n}%::*} and location of event-block every {@dropdelay}: loop all players: set {_u} to loop-player's uuid loop indices of {gen::%{_u}%::*}: loop {gen::%{_u}%::%loop-value-2%::*}: if {genlevel::%loop-value-2%} != type of (block at loop-value-3): remove loop-value-3 from {gen::%loop-value-1%::%loop-value-2%::*} else: drop {gentype::%loop-value-2%} at block 1 above loop-value-3 without velocity on block damage: event is not cancelled loop indices of {gen::*}: loop indices of {gen::%loop-value-1%::*}: {gen::%loop-value-1%::%loop-value-2%::*} contains location of event-block type of event-block = {genlevel::%loop-value-2%} cancel event set {_n} to loop-value-2 parsed as integer {_n} is set if player's uuid = loop-value-1: if player is sneaking: remove location of event-block from {gen::%loop-value-1%::%loop-value-2%::*} set event-block to air give 1 of ({genlevel::%{_n}%} named "&f%genname({_n})%" with lore "&7lvl &a%toRoman({_n})% &7gen") to player else: send title "" with subtitle "&cCrouch to remove" to player else: if player has permission "gen.admin": remove location of event-block from {gen::%loop-value-1%::%loop-value-2%::*} set event-block to air give 1 of ({genlevel::%{_n}%} named "&f%genname({_n})%" with lore "&7lvl &a%toRoman({_n})% &7gen") to player else: send "&cyou cannot break %loop-value-1 parsed as offline player%&c's gen" to player stop on right click: player is sneaking loop indices of {gen::%player's uuid%::*}: {gen::%player's uuid%::%loop-value%::*} contains location of clicked block type of clicked block = {genlevel::%loop-value%} cancel event set {_n} to loop-value parsed as integer + 1 if balance of player >= {uprice::%loop-value%}: if {genlevel::%{_n}%} is set: set clicked block to {genlevel::%{_n}%} remove location of clicked block from {gen::%player's uuid%::%loop-value%::*} set {gen::%player's uuid%::%{_n}%::*} to {gen::%player's uuid%::%{_n}%::*} and location of clicked block remove {uprice::%loop-value%} from balance of player set {_nn} to {_n} + 1 if {genlevel::%{_nn}%} is set: play large explosion at event-block to player else: play huge explosion at event-block to player send coloured "&at1 &f%genname({_n})%" to player else: send "&ct2" to player else: send "&ct3 $%{uprice::%loop-value%}% &ct4" to player stop command /sell: trigger: sell(player, inventory of player) function sell(p: player, c: inventory): set {_u} to {_p}'s uuid loop all items in {_c}: set {_i} to 1 of loop-item if {worth::%{_i}%} is set: add ((item amount of loop-value) * {worth::%{_i}%} * {multiplier::%{_u}%}) to {_total} remove loop-item from {_c} if {_total} > 0: send "&e$%{_total}%" to {_p} add {_total} to balance of {_p} add {_total} to {totalsold::%{_u}%} if {totalsold::%{_u}%} >= 1000: money2XP({_p}) else: send "&cno" to {_p} command /generator [<text>] [<offline player>] [<integer>]: aliases: generators, gen, gens, genlist trigger: if player has permission "gen.admin": if arg-1 is not set: open genlist() to player set {inv::%player's uuid%} to "genlist" else if arg-1 is "admin": open genlist() to player set {inv::%player's uuid%} to "genadmin" else if arg-1 is "unbin": if arg-2 is set: loop indices of {gen::%arg-2's uuid%::*}: loop {gen::%arg-2's uuid%::%loop-value%::*}: set block at loop-value-2 to air delete {gen::%arg-2's uuid%::*} send "all gens of %arg-2% have been removed" to player else: send "specify a player" to player else if arg-1 is "cap": set {_p} to (arg-2 ? player) set {_u} to {_p}'s uuid if arg-3 is set: set {gencap::%{_u}%} to arg-3 send "&7Set &6%{_p}%&7's gen cap to &6%arg-3%&7%nl%&7New gen cap of %{_p}%&7: &b%gensize({_p})% &7/ &b%searchcap({_p})%" to player else: send "&7%{_p}%&7's Gen slots: &b%gensize({_p})% &7/ &b%searchcap({_p})%" to player else if arg-1 is "purge": reset() delete {gen::*} send "all gens purged" to player else if arg-1 is "stats", "stat" or "info": set {inv::%player's uuid%} to "display" open statsgui(arg-2 ? player) to player else: open genlist() to player set {inv::%player's uuid%} to "genlist" else: if arg-1 is "stats", "stat" or "info": set {inv::%player's uuid%} to "display" open statsgui(arg-2 ? player) to player else if arg-1 is "cap": set {_p} to (arg-2 ? player) send "&b%{_p}%&b's &7Gen slots: &9%gensize({_p})% &7/ &9%searchcap({_p})%" to player else: open genlist() to player set {inv::%player's uuid%} to "genlist" function gensize(p: offline player) :: integer: set {_u} to {_p}'s uuid loop indices of {gen::%{_u}%::*}: set {_n} to size of {gen::%{_u}%::%loop-value%::*} add {_n} to {_i} return "%{_i}%" parsed as integer ? 0 function searchcap(p: offline player) :: integer: set {_u} to {_p}'s uuid set {_maxcap} to 0 loop groups of {_p}: set {_maxcap} to {gencap::%loop-value%} if {gencap::%loop-value%} > {_maxcap} add {gencap::%{_u}%} to {_maxcap} return "%{_maxcap}%" parsed as integer ? 0 function genlist() :: inventory: set {_n} to ceil(size of {genlevel::*}/9) set {_c} to chest inventory with {_n} rows named "Genlist" set slot (integers between 0 and ((9 * {_n}) - 1)) of {_c} to black stained glass pane named "" loop {genlevel::*}: set slot (loop-index parsed as number - 1) of {_c} to loop-value named "&f%genname(loop-index parsed as integer)%" with lore "&7Лвл &a%toRoman(loop-index parsed as integer)% &7Генератор" return {_c} function geninfo(id: integer) :: inventory: set {_c} to chest inventory with 1 row named "&f%genname({_id})%" set slot (integers between 0 and 9) of {_c} to black stained glass pane named "" set slot 2 of {_c} to {genlevel::%{_id}%} named "&f%genname({_id})%" with lore "&7price up: &c$%{uprice::%{_id}%}%" set slot 6 of {_c} to {gentype::%{_id}%} with lore "&7prise sell: &a$%{worth::%{gentype::%{_id}%}%}%" return {_c} function genname(id: integer) :: text: return ((name of {gentype::%{_id}%}) ? "%type of {gentype::%{_id}%}%") function statsgui(p: offline player) :: inventory: set {_u} to {_p}'s uuid set {_c} to chest inventory with 1 row named "&b%{_p}% gen stats" set slot (integers between 0 and 8) of {_c} to black stained glass pane named " " loop {genlevel::*}: set {_s::*} to {_s::*} and coloured "&7%uncoloured genname(loop-index parsed as integer)%: &9%size of {gen::%{_u}%::%loop-index parsed as integer%::*}%" set slot 4 of {_c} to skull of {_p} named "&b&l%{_p}%" with lore "&7Gen cap: &9%gensize({_p})%&7 / &9%searchcap({_p})%" and {_s::*} return {_c} function bulk(i: item) :: inventory: set {_c} to chest inventory with 4 rows named "&r" set slot (integers between 0 and 35) of {_c} to black stained glass pane named "&r" set slot 13 of {_c} to 1 of {_i} set slot 9 of {_c} to red stained glass pane named "&fRemove 32" set slot 10 of {_c} to red stained glass pane named "&fRemove 16" set slot 11 of {_c} to red stained glass pane named "&fRemove 1" set slot 15 of {_c} to lime stained glass pane named "&fAdd 1" set slot 16 of {_c} to lime stained glass pane named "&fAdd 16" set slot 17 of {_c} to lime stained glass pane named "&fAdd 32" set slot 30 of {_c} to barrier named "&c&lCancel" set slot 31 of {_c} to chest named "&b&lBulk" set slot 32 of {_c} to nether star named "&a&lConfirm" return {_c} function bulk2(i: item) :: inventory: set {_c} to chest inventory with 1 row named "&r" loop 9 times: set slot (loop-number -1) of {_c} to loop-number of {_i} return {_c} on inventory close: delete {inv::%player's uuid%} on tab complete: event-string = "/gen" or "/generator" or "/gens" or "/generators" if player has permission "gen.admin": set tab completions for position 1 to "admin", "cap", "list", "purge", "stats" and "unbin" else: set tab completions for position 1 to "cap", "list" and "stats" on inventory click: if {inv::%player's uuid%} = "display" or "genlist" or "genadmin" or "bulk" or "bulk2" or "geninfo": cancel event event-inventory != inventory of player if {inv::%player's uuid%} = "genlist": event-slot is not black glass pane open geninfo(index of event-slot + 1) to player set {inv::%player's uuid%} to "display" else if {inv::%player's uuid%} = "genadmin": event-slot is not black glass pane open bulk(event-slot) to player set {inv::%player's uuid%} to "bulk" else if {inv::%player's uuid%} = "bulk": set {_n} to (last element of (split uncoloured name of event-slot at " ")) parsed as integer if index of event-slot = 9 or 10 or 11: set {_n} to item amount of slot 13 of top inventory of player - {_n} set {_n} to 64 if {_n} > 64 set {_n} to 1 if {_n} < 1 set slot 13 of top inventory of player to {_n} of slot 13 of top inventory of player else if index of event-slot = 15 or 16 or 17: add item amount of slot 13 of top inventory of player to {_n} set {_n} to 64 if {_n} > 64 set {_n} to 1 if {_n} < 1 set slot 13 of top inventory of player to {_n} of slot 13 of top inventory of player else if index of event-slot = 30: close inventory of player else if index of event-slot = 31: open bulk2(slot 13 of top inventory of player) to player set {inv::%player's uuid%} to "bulk2" else if index of event-slot = 32: give slot 13 of top inventory of player to player close inventory of player else if {inv::%player's uuid%} = "bulk2": give ((item amount of event-slot) * 64) of event-slot to player close inventory of player Edited July 2, 2021 by g1ps Link to comment Share on other sites More sharing options...
Pryzmm Posted July 3, 2021 Share Posted July 3, 2021 On 7/1/2021 at 10:50 AM, g1ps said: When I restart the server. gen skript won't start. I have to write sk reload. How to fix it ? Writes to the console: Invalid function call to a function that does not exist yet. Be careful when using functions in 'script load' events! # # IMPORTANT: # max gens: 54 # any more will not be loaded in # options: dropdelay: 3 seconds sellwanditem: blaze rod name: &9&lSellwand prefix: [server] on load: reset() # # LOAD GENS CONFIG HERE ↓ # # # format: # loadgen( gen block item, gen drops item, level, upgrade price, sell price of drops) # # gens are upgraded based on level: 1,2,3,4 etc. # # the gen block item cannot be named as # the name will be the name of the drop item # eg. loadgen(diamond block, diamond named "crystal", 1, 100, 1) # will be named "crystal gen" and is level 1 which will be auto given # to new players and diamond named "crystal" sells for 1 # and gen costs 100 to upgrade to next loadgen(white terracotta, ghast spawn egg named "&f1", 1, 1000, 50) loadgen(Light Gray terracotta, panda spawn egg named "&f2", 2, 5000, 100) loadgen(Gray terracotta, evoker spawn egg named "&73", 3, 10000, 150) loadgen(lime terracotta, creeper spawn egg named "&84", 4, 20000, 200) loadgen(green terracotta, slime spawn egg named "&a5", 5, 30000, 300) loadgen(light blue terracotta, vex spawn egg named "&26", 6, 40000, 400) loadgen(cyan terracotta, drowned spawn egg named "&b7", 7, 50000, 500) loadgen(blue terracotta, squid spawn egg named "&38", 8, 100000, 600) loadgen(pink terracotta, fox spawn egg named "&99", 9, 150000, 700) loadgen(magenta terracotta, pig spawn egg named "&110", 10, 200000, 800) loadgen(purple terracotta, shulker spawn egg named "&d11", 11, 250000, 900) loadgen(yellow terracotta, blaze spawn egg named "&512", 12, 350000, 1000) loadgen(orange terracotta, tropical fish spawn egg named "&c13", 13, 400000, 1500) loadgen(red terracotta, mooshroom spawn egg named "&414", 14, 450000, 2000) loadgen(brown terracotta, hoglin spawn egg named "&e15", 15, 500000, 2500) loadgen(black terracotta, enderman spawn egg named "&616", 16, 1000000, 3000) loadgen(white concrete, skeleton spawn egg named "&f&l17", 17, 1500000, 3500) loadgen(Light Gray concrete, sheep spawn egg named "&f&l18", 18, 2000000, 4000) loadgen(Gray concrete, turtle spawn egg named "&7&l19", 19, 2500000, 4500) loadgen(lime concrete, parrot spawn egg named "&8&l20", 20, 3000000, 5000) loadgen(green concrete, phantom spawn egg named "&a&l21", 21, 3500000, 6000) loadgen(light blue concrete, cat spawn egg named "&2&l22", 22, 4000000, 7000) loadgen(cyan concrete, trader llama spawn egg named "&b&l23", 23, 4500000, 8000) loadgen(blue concrete, silverfish spawn egg named "&3&l24", 24, 5000000, 9000) loadgen(pink concrete, pufferfish spawn egg named "&9&l25", 25, 10000000, 10000) loadgen(magenta concrete, horse spawn egg named "&1&l26", 26, 15000000, 15000) loadgen(purple concrete, husk spawn egg named "&d&l27", 27, 20000000, 20000) loadgen(yellow concrete, llama spawn egg named "&5&l28", 28, 25000000, 25000) loadgen(orange concrete, cod spawn egg named "&c&l29", 29, 30000000, 30000) loadgen(red concrete, strider spawn egg named "&4&l30", 30, 35000000, 35000) loadgen(brown concrete, spider spawn egg named "&e&l31", 31, 40000000, 40000) loadgen(black concrete, endermite spawn egg named "&6&l32", 32, 45000000, 45000) # # LOAD GENS CONFIG HERE ↑ # # # GEN CAP CONFIG HERE ↓ # # format: # setcap(group, cap) # eg. setcap("default", 25) players with default group cannot place more than 25 gens # players with permission gen.admin bypass the limit # groups with no cap specified set will not be allowed to place gens unless they have permission gen.admin # extra gen slots per player can be set via /gen cap in game setcap("Member", 25) setcap("vip", 30) # # GEN CAP CONFIG HERE ↑ # # # END OF CONFIG # send "&b%size of {gentype::*}% gens loaded" to all players where [input is op] function loadgen(i: itemtype, drops: item, id: integer, up: number, sp: number): size of {genlevel::*} <= 54 set {gentype::%{_id}%} to {_drops} set {genlevel::%{_id}%} to {_i} set {uprice::%{_id}%} to {_up} set {worth::%{_drops}%} to {_sp} function setcap(group: text, cap: integer): set {gencap::%{_group}%} to {_cap} function reset(): delete {gentype::*} delete {genlevel::*} delete {uprice::*} delete {worth::*} delete {gencap::*} function toRoman(n: number) :: string: set {_r::*} to split "33,33|32,32|31,31|30,30|29,29|28,28|27,27|26,26|25,25|24,24|23,23|22,22|21,21|20,20|19,19|18,18|17,17|16,16|15,15|14,14|13,13|12,12|11,11|10,10|9,9|8,8|7,7|6,6|5,5|4,4|3,3|2,2|1,1" at "|" loop {_r::*}: set {_d::*} to loop-value parsed as "%string%,%int%" while {_n} >= {_d::2}: remove {_d::2} from {_n} set {_result::*} to {_result::*} and {_d::1} return (join {_result::*} with "") ? "" function toNumber(s: string) :: number: set {_r::*} to split "33,33|32,32|31,31|30,30|29,29|28,28|27,27|26,26|25,25|24,24|23,23|22,22|21,21|20,20|19,19|18,18|17,17|16,16|15,15|14,14|13,13|12,12|11,11|10,10|9,9|8,8|7,7|6,6|5,5|4,4|3,3|2,2|1,1" at "|" while length of {_s} > 0: set {_l} to length of {_s} loop {_r::*}: set {_d::*} to loop-value parsed as "%string%,%int%" if {_s} starts with {_d::1}: add {_d::2} to {_n} replace first {_d::1} in {_s} with "" length of {_s} = {_l} stop return {_n} ? 0 on first join: give {genlevel::1} named "&f%genname(1)%" with lore "&7lvl &a%toRoman(1)% &7gen" to player on place of white terracotta or Light Gray terracotta or Gray terracotta or lime terracotta or green terracotta or light blue terracotta or cyan terracotta or blue terracotta or pink terracotta or magenta terracotta or purple terracotta or yellow terracotta or orange terracotta or red terracotta or brown terracotta or black terracotta or white concrete or Light Gray concrete or Gray concrete or lime concrete or green concrete or light blue concrete or cyan concrete or blue concrete or pink concrete or magenta concrete or purple concrete or yellow concrete or orange concrete or red concrete or brown concrete or black concrete: if player does not have permission "gen.admin": if searchcap(player) <= gensize(player): cancel event send "&cYou cannot place more than %searchcap(player)% &cgens" to player event is not cancelled set {_n::*} to split (uncoloured line 1 of lore of tool of player) at " " set {_n} to toNumber({_n::2}) {_n} is set set {gen::%player's uuid%::%{_n}%::*} to {gen::%player's uuid%::%{_n}%::*} and location of event-block every {@dropdelay}: loop all players: set {_u} to loop-player's uuid loop indices of {gen::%{_u}%::*}: loop {gen::%{_u}%::%loop-value-2%::*}: if {genlevel::%loop-value-2%} != type of (block at loop-value-3): remove loop-value-3 from {gen::%loop-value-1%::%loop-value-2%::*} else: drop {gentype::%loop-value-2%} at block 1 above loop-value-3 without velocity on block damage: event is not cancelled loop indices of {gen::*}: loop indices of {gen::%loop-value-1%::*}: {gen::%loop-value-1%::%loop-value-2%::*} contains location of event-block type of event-block = {genlevel::%loop-value-2%} cancel event set {_n} to loop-value-2 parsed as integer {_n} is set if player's uuid = loop-value-1: if player is sneaking: remove location of event-block from {gen::%loop-value-1%::%loop-value-2%::*} set event-block to air give 1 of ({genlevel::%{_n}%} named "&f%genname({_n})%" with lore "&7lvl &a%toRoman({_n})% &7gen") to player else: send title "" with subtitle "&cCrouch to remove" to player else: if player has permission "gen.admin": remove location of event-block from {gen::%loop-value-1%::%loop-value-2%::*} set event-block to air give 1 of ({genlevel::%{_n}%} named "&f%genname({_n})%" with lore "&7lvl &a%toRoman({_n})% &7gen") to player else: send "&cyou cannot break %loop-value-1 parsed as offline player%&c's gen" to player stop on right click: player is sneaking loop indices of {gen::%player's uuid%::*}: {gen::%player's uuid%::%loop-value%::*} contains location of clicked block type of clicked block = {genlevel::%loop-value%} cancel event set {_n} to loop-value parsed as integer + 1 if balance of player >= {uprice::%loop-value%}: if {genlevel::%{_n}%} is set: set clicked block to {genlevel::%{_n}%} remove location of clicked block from {gen::%player's uuid%::%loop-value%::*} set {gen::%player's uuid%::%{_n}%::*} to {gen::%player's uuid%::%{_n}%::*} and location of clicked block remove {uprice::%loop-value%} from balance of player set {_nn} to {_n} + 1 if {genlevel::%{_nn}%} is set: play large explosion at event-block to player else: play huge explosion at event-block to player send coloured "&at1 &f%genname({_n})%" to player else: send "&ct2" to player else: send "&ct3 $%{uprice::%loop-value%}% &ct4" to player stop command /sell: trigger: sell(player, inventory of player) function sell(p: player, c: inventory): set {_u} to {_p}'s uuid loop all items in {_c}: set {_i} to 1 of loop-item if {worth::%{_i}%} is set: add ((item amount of loop-value) * {worth::%{_i}%} * {multiplier::%{_u}%}) to {_total} remove loop-item from {_c} if {_total} > 0: send "&e$%{_total}%" to {_p} add {_total} to balance of {_p} add {_total} to {totalsold::%{_u}%} if {totalsold::%{_u}%} >= 1000: money2XP({_p}) else: send "&cno" to {_p} command /generator [<text>] [<offline player>] [<integer>]: aliases: generators, gen, gens, genlist trigger: if player has permission "gen.admin": if arg-1 is not set: open genlist() to player set {inv::%player's uuid%} to "genlist" else if arg-1 is "admin": open genlist() to player set {inv::%player's uuid%} to "genadmin" else if arg-1 is "unbin": if arg-2 is set: loop indices of {gen::%arg-2's uuid%::*}: loop {gen::%arg-2's uuid%::%loop-value%::*}: set block at loop-value-2 to air delete {gen::%arg-2's uuid%::*} send "all gens of %arg-2% have been removed" to player else: send "specify a player" to player else if arg-1 is "cap": set {_p} to (arg-2 ? player) set {_u} to {_p}'s uuid if arg-3 is set: set {gencap::%{_u}%} to arg-3 send "&7Set &6%{_p}%&7's gen cap to &6%arg-3%&7%nl%&7New gen cap of %{_p}%&7: &b%gensize({_p})% &7/ &b%searchcap({_p})%" to player else: send "&7%{_p}%&7's Gen slots: &b%gensize({_p})% &7/ &b%searchcap({_p})%" to player else if arg-1 is "purge": reset() delete {gen::*} send "all gens purged" to player else if arg-1 is "stats", "stat" or "info": set {inv::%player's uuid%} to "display" open statsgui(arg-2 ? player) to player else: open genlist() to player set {inv::%player's uuid%} to "genlist" else: if arg-1 is "stats", "stat" or "info": set {inv::%player's uuid%} to "display" open statsgui(arg-2 ? player) to player else if arg-1 is "cap": set {_p} to (arg-2 ? player) send "&b%{_p}%&b's &7Gen slots: &9%gensize({_p})% &7/ &9%searchcap({_p})%" to player else: open genlist() to player set {inv::%player's uuid%} to "genlist" function gensize(p: offline player) :: integer: set {_u} to {_p}'s uuid loop indices of {gen::%{_u}%::*}: set {_n} to size of {gen::%{_u}%::%loop-value%::*} add {_n} to {_i} return "%{_i}%" parsed as integer ? 0 function searchcap(p: offline player) :: integer: set {_u} to {_p}'s uuid set {_maxcap} to 0 loop groups of {_p}: set {_maxcap} to {gencap::%loop-value%} if {gencap::%loop-value%} > {_maxcap} add {gencap::%{_u}%} to {_maxcap} return "%{_maxcap}%" parsed as integer ? 0 function genlist() :: inventory: set {_n} to ceil(size of {genlevel::*}/9) set {_c} to chest inventory with {_n} rows named "Genlist" set slot (integers between 0 and ((9 * {_n}) - 1)) of {_c} to black stained glass pane named "" loop {genlevel::*}: set slot (loop-index parsed as number - 1) of {_c} to loop-value named "&f%genname(loop-index parsed as integer)%" with lore "&7Лвл &a%toRoman(loop-index parsed as integer)% &7Генератор" return {_c} function geninfo(id: integer) :: inventory: set {_c} to chest inventory with 1 row named "&f%genname({_id})%" set slot (integers between 0 and 9) of {_c} to black stained glass pane named "" set slot 2 of {_c} to {genlevel::%{_id}%} named "&f%genname({_id})%" with lore "&7price up: &c$%{uprice::%{_id}%}%" set slot 6 of {_c} to {gentype::%{_id}%} with lore "&7prise sell: &a$%{worth::%{gentype::%{_id}%}%}%" return {_c} function genname(id: integer) :: text: return ((name of {gentype::%{_id}%}) ? "%type of {gentype::%{_id}%}%") function statsgui(p: offline player) :: inventory: set {_u} to {_p}'s uuid set {_c} to chest inventory with 1 row named "&b%{_p}% gen stats" set slot (integers between 0 and 8) of {_c} to black stained glass pane named " " loop {genlevel::*}: set {_s::*} to {_s::*} and coloured "&7%uncoloured genname(loop-index parsed as integer)%: &9%size of {gen::%{_u}%::%loop-index parsed as integer%::*}%" set slot 4 of {_c} to skull of {_p} named "&b&l%{_p}%" with lore "&7Gen cap: &9%gensize({_p})%&7 / &9%searchcap({_p})%" and {_s::*} return {_c} function bulk(i: item) :: inventory: set {_c} to chest inventory with 4 rows named "&r" set slot (integers between 0 and 35) of {_c} to black stained glass pane named "&r" set slot 13 of {_c} to 1 of {_i} set slot 9 of {_c} to red stained glass pane named "&fRemove 32" set slot 10 of {_c} to red stained glass pane named "&fRemove 16" set slot 11 of {_c} to red stained glass pane named "&fRemove 1" set slot 15 of {_c} to lime stained glass pane named "&fAdd 1" set slot 16 of {_c} to lime stained glass pane named "&fAdd 16" set slot 17 of {_c} to lime stained glass pane named "&fAdd 32" set slot 30 of {_c} to barrier named "&c&lCancel" set slot 31 of {_c} to chest named "&b&lBulk" set slot 32 of {_c} to nether star named "&a&lConfirm" return {_c} function bulk2(i: item) :: inventory: set {_c} to chest inventory with 1 row named "&r" loop 9 times: set slot (loop-number -1) of {_c} to loop-number of {_i} return {_c} on inventory close: delete {inv::%player's uuid%} on tab complete: event-string = "/gen" or "/generator" or "/gens" or "/generators" if player has permission "gen.admin": set tab completions for position 1 to "admin", "cap", "list", "purge", "stats" and "unbin" else: set tab completions for position 1 to "cap", "list" and "stats" on inventory click: if {inv::%player's uuid%} = "display" or "genlist" or "genadmin" or "bulk" or "bulk2" or "geninfo": cancel event event-inventory != inventory of player if {inv::%player's uuid%} = "genlist": event-slot is not black glass pane open geninfo(index of event-slot + 1) to player set {inv::%player's uuid%} to "display" else if {inv::%player's uuid%} = "genadmin": event-slot is not black glass pane open bulk(event-slot) to player set {inv::%player's uuid%} to "bulk" else if {inv::%player's uuid%} = "bulk": set {_n} to (last element of (split uncoloured name of event-slot at " ")) parsed as integer if index of event-slot = 9 or 10 or 11: set {_n} to item amount of slot 13 of top inventory of player - {_n} set {_n} to 64 if {_n} > 64 set {_n} to 1 if {_n} < 1 set slot 13 of top inventory of player to {_n} of slot 13 of top inventory of player else if index of event-slot = 15 or 16 or 17: add item amount of slot 13 of top inventory of player to {_n} set {_n} to 64 if {_n} > 64 set {_n} to 1 if {_n} < 1 set slot 13 of top inventory of player to {_n} of slot 13 of top inventory of player else if index of event-slot = 30: close inventory of player else if index of event-slot = 31: open bulk2(slot 13 of top inventory of player) to player set {inv::%player's uuid%} to "bulk2" else if index of event-slot = 32: give slot 13 of top inventory of player to player close inventory of player else if {inv::%player's uuid%} = "bulk2": give ((item amount of event-slot) * 64) of event-slot to player close inventory of player Im not really good with functions but i'm pretty sure you need to put something in the parenthesis like Reset(n: number) or something like that. That or maybe put it in the on the 2 times it's supposed to be Owner of Lifestealed, Labs, Encore, UNOfficially and Observed OG [VIP] 12/26/20 - 10/27/2021 OG [PRO] 12/27/21 - 11/18/2022 OG [LEGEND] 11/18/2022 - 3/14/2023 [DEFAULT] 3/14/2023 - 5/8/2024 [MOD] 5/8/2024 - Present Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now