# AUTHOR: Szymonjjay (Zurek1337) FOR: skript.pl forum # # CONFIG # options: Permission: inventorysaver.execute PermissionMessage: &cYou don't have requried permission! CreateBackups: true BackupInterval: 30 minutes # # COMMANDS AND FUNCTIONS # Function SaveInventory(p: player): set yaml value "LastSave" from file "/inventories/database/%{_p}%.yml" to "%now%" save itemstack {_p}'s helmet at section "Armour.Helmet" in file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" save itemstack {_p}'s chestplate at section "Armour.Chestplate" in file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" save itemstack {_p}'s leggings at section "Armour.Leggings" in file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" save itemstack {_p}'s boots at section "Armour.Boots" in file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" loop 36 times: set {_slot} to slot -1+loop-number of {_p} save itemstack {_slot} at section "InventorySlot.%loop-number%" in file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" Function LoadInventory(p: player): set {using.inventory.saver::%{_p}%} to true set yaml value "LastRestore" from file "/inventories/database/%{_p}%.yml" to "%now%" set {_LastSave} to yaml value "LastSave" from file "/inventories/database/%{_p}%.yml" if {_LastSave} is not set: set yaml value "LastSave" from file "/inventories/database/%{_p}%.yml" to "null" else: set {_p}'s helmet to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" at section "Armour.Helmet" set {_p}'s chestplate to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" at section "Armour.Chestplate" set {_p}'s leggings to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" at section "Armour.Leggings" set {_p}'s boots to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" at section "Armour.Boots" loop 36 times: set {_slot} to -1+loop-number set slot {_slot} of {_p} to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%{_p}%.yml" at section "InventorySlot.%Loop-number%" send "&2Your inventory has been loaded from the database!" to {_p} command /inventorysaver []: permission: {@Permission} permission message: {@PermissionMessage} trigger: if "%arg-1%" is "backup": loop all players: SaveInventory(loop-player) delete {lastbackup} set {lastbackup} to now set {_date} to "%now%" replace all "," with "" in {_date} replace all "." and ":" and "/" and " " with "_" in {_date} set {_backup.created} to 0 loop {using.inventory.saver::*}: # Loading these inventory to temporary variable set {_LastRestore} to yaml value "LastRestore" from file "/inventories/database/%loop-index%.yml" set {_LastSave} to yaml value "LastRestore" from file "/inventories/database/%loop-index%.yml" set {_Helmet} to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%loop-index%.yml" at section "Armour.Helmet" set {_Chestplate} to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%loop-index%.yml" at section "Armour.Chestplate" set {_Leggings} to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%loop-index%.yml" at section "Armour.Leggings" set {_Boots} to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%loop-index%.yml" at section "Armour.Boots" loop 36 times: set {_InventorySlot.%loop-number%} to get itemstack from yml file "plugins/Skript/scripts/inventories/database/%loop-index%.yml" at section "InventorySlot.%Loop-number%" # Saving the backup set yaml value "LastRestore" from file "/inventories/backups/backup_%{_date}%/%loop-index%.yml" to "%{_LastRestore}%" set yaml value "LastSave" from file "/inventories/backups/backup_%{_date}%/%loop-index%.yml" to "%{_LastSave}%" save itemstack {_Hemlet} at section "Armour.Helmet" in file "plugins/Skript/scripts/inventories/backups/backup_%{_date}%/%loop-index%.yml" save itemstack {_Chestplate} at section "Armour.Chestplate" in file "plugins/Skript/scripts/inventories/backups/backup_%{_date}%/%loop-index%.yml" save itemstack {_Leggings} at section "Armour.Leggings" in file "plugins/Skript/scripts/inventories/backups/backup_%{_date}%/%loop-index%.yml" save itemstack {_Boots} at section "Armour.Boots" in file "plugins/Skript/scripts/inventories/backups/backup_%{_date}%/%loop-index%.yml" loop 36 times: save itemstack {_InventorySlot.%loop-number%} at section "InventorySlot.%Loop-number%" in file "plugins/Skript/scripts/inventories/backups/backup_%{_date}%/%loop-index%.yml" add 1 to {_backup.created} # Messages send "&2&l[InventorySaver]&a I has save %{_backup.created}% inventories to backup folder, date is: %{_date}%" to all ops send "InventorySaver has saved %{_backup.created}% inventories to backup folder, date is: %{_date}%" to console # # OTHER # on script load: set {LastBackup} to now on script unload: loop all players: SaveInventory(loop-player) every 1 second: if "{@CreateBackups}" is "true": difference between {LastBackup} and now is bigger than {@BackupInterval}: make console execute command "inventorysaver backup" on join: #Use this function if you want to save inventory. LoadInventory(player) on quit: #Use this function if you want to load inventory. SaveInventory(player)