ryg8Qz5z
Język: Skript
|
Autor: xAxee
#AxSaveEq - Skrypt na zapisywanie ekwipunku i jego przywracanie #$ Wersja: 2.0 $# on load: #AxAutoUpdate section (https://skript.pl/temat/40795-axautoupdate) set {AxUpdate::AxSaveEq::link} to "https://code.skript.pl/ryg8Qz5z/raw" set {AxUpdate::AxSaveEq::status} to true set {AxUpdate::AxSaveEq::name} to "AxSaveEq" set {AxUpdate::AxSaveEq} to script options: NumberOfRecords: 9 CooldownTime: 5 minutes AutoSaveTime: 1 minute import: org.bukkit.Bukkit org.bukkit.event.inventory.InventoryClickEvent org.bukkit.event.inventory.InventoryCloseEvent function setSlot(name: String, slot: Integer, item: Item): {%{_name}%}.setItem({_slot}, {_item}) function AxSaveEq_save(p: player, reason: String="&eAuto Save", killer: string=""): add 1 to {AxSaveEq::%{_p}%::next} if {AxSaveEq::%{_p}%::next} >= {@NumberOfRecords}+1: set {AxSaveEq::%{_p}%::next} to 1 clear {AxSaveEq::%{_p}%::%{AxSaveEq::%{_p}%::next}%::Inventory::*} and {AxSaveEq::%{_p}%::%{AxSaveEq::%{_p}%::next}%::Armour::*} set {AxSaveEq::%{_p}%::%{AxSaveEq::%{_p}%::next}%::Inventory::*} to (all items in {_p}'s inventory) set {AxSaveEq::%{_p}%::%{AxSaveEq::%{_p}%::next}%::Armour::*} to {_p}'s helmet and {_p}'s chestplate, {_p}'s leggings, {_p}'s boots set {AxSaveEq::%{_p}%::%{AxSaveEq::%{_p}%::next}%::Info} to " &7Date: &e%now%|| &7Ping: &e%{_p}'s ping%|| &7Health: &e%{_p}'s health%|| &7Reason: &e%{_reason}%%{_killer}%|| &7Items: &e%size of {AxSaveEq::%{_p}%::%{AxSaveEq::%{_p}%::next}%::Inventory::*}%" set {AxSaveEq::%{_p}%::Inv} to Bukkit.createInventory(null, (rounded up ({@NumberOfRecords}/9))*9, "&eBackEq &7- &e%{_p}%") loop {@NumberOfRecords} times: if {AxSaveEq::%{_p}%::%loop-number%::Info} is set: setSlot("AxSaveEq::%{_p}%::Inv", (loop-number)-1, ({_p}'s skull named "&6Save: &e%loop-number%" with lore "%colored {AxSaveEq::%{_p}%::%loop-number%::Info}%|| &8------------------------------|| &7Click &ePPM &7to restore the inventory|| &7Click &eLPM &7to view inventory")) command /saveeq [<offlineplayer>]: aliases: xAxee:saveeq, zapiszeq usage: &6/saveeq <player/all> trigger: if executor has permission "AxSaveEq": if arg 1 is set: if arg is "all" or "*": loop all players: AxSaveEq_save(loop-player, "Global save by: &a%executor%") send "&aSucces! &7All inventories saved!" stop if arg is online: AxSaveEq_save(arg, "Save by: &a%executor%") send "&aSucces! &7Inventory saved &7(&e%arg%&7)" stop send "&4Error: &e%arg% &7is offline!" stop AxSaveEq_save(player, "Player save") send "&aSucces! &7Inventory saved!" stop if (difference between {AxSaveEq::%player%::$Cooldown} and now) <= {@CooldownTime}: send "&4Error! &7Cooldown &e%difference between {AxSaveEq::%player%::$Cooldown} and now%/{@CooldownTime}" stop AxSaveEq_save(player, "Player save") send "&aSucces! &7Inventory saved!" set {AxSaveEq::%player%::$Cooldown} to now command /backeq [<player>]: aliases: xAxee:backeq permission: AxSaveEq permission message: &4Error! &7You don't have permission! trigger: if arg 1 is set: open {AxSaveEq::%player-arg%::Inv} to player stop send "&4Error! &7Player is not set!" every {@AutoSaveTime}: loop all players: AxSaveEq_save(loop-player) on InventoryClickEvent: if "%event.getClickedInventory().getType()%" is "PLAYER": stop if ((uncolored event.getInventory().getTitle()).contains("BackEq - ")) or ((uncolored event.getInventory().getTitle()).contains(" Save: ")): event.setCancelled(true) if (uncolored event.getInventory().getTitle()).contains("BackEq - "): set {_p} to (uncolored event.getInventory().getTitle()).replace("BackEq - ","") parsed as player event.getSlot() is between 0 and {@NumberOfRecords}-1 if "%event.getClick()%" is "left": set {_inv} to chest with 5 rows named "&e%{_p}% &6Save: &7%event.getSlot()+1%" loop {AxSaveEq::%{_p}%::%event.getSlot()+1%::Inventory::*}: {_inv}.setItem((loop-index parsed as integer)-1, loop-value) loop {AxSaveEq::%{_p}%::%event.getSlot()+1%::Armour::*}: {_inv}.setItem((loop-index parsed as integer)+40, loop-value) open {_inv} to event.getWhoClicked() if "%event.getClick()%" is "right": add {AxSaveEq::%{_p}%::%event.getSlot()+1%::Inventory::*} to {_p} equip {_p} with {AxSaveEq::%{_p}%::%event.getSlot()+1%::Armour::*} setSlot("AxSaveEq::%{_p}%::Inv", event.getSlot(), ({_p}'s skull named "&6Save: &e%event.getSlot()+1%" with lore "%colored {AxSaveEq::%{_p}%::%event.getSlot()+1%::Info}%|| &7Restored by: &e%event.getWhoClicked()% &6(%now%)|| &8-----------------------------|| &7Click &ePPM &7to restore the inventory|| &7Click &eLPM &7to view inventory")) close event.getWhoClicked()'s inventory send "&aSucces! &7Restored items" to event.getWhoClicked() on InventoryCloseEvent: if (uncolored event.getInventory().getTitle()).contains("BackEq - "): set {AxSaveEq::%event.getPlayer()%::$Last} to event.getInventory() if (uncolored event.getInventory().getTitle()).contains(" Save: "): wait tick open {AxSaveEq::%event.getPlayer()%::$Last} to event.getPlayer() on death of player: AxSaveEq_save(victim, "&eDeath", "|| &7Death reason: &e%death message%")