Jump to content

Script does not start


g1ps

Recommended Posts

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 by g1ps
Link to comment
Share on other sites

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

 

 

image.png.bc433d6489d70ad831075fe76809b993.png
 

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...