mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-28 12:05:21 +09:00
Added go-to-spawn and clear-inventory
This commit is contained in:
58
old/modules/DONE/ExpAdmin/ClearInventory/control.lua
Normal file
58
old/modules/DONE/ExpAdmin/ClearInventory/control.lua
Normal file
@@ -0,0 +1,58 @@
|
||||
--- Adds a function to clear a players inventory and move the items to spawn.
|
||||
-- @module ExpGamingAdmin.ClearInventory@4.0.0
|
||||
-- @author Cooldude2606
|
||||
-- @license https://github.com/explosivegaming/scenario/blob/master/LICENSE
|
||||
-- @alias ThisModule
|
||||
|
||||
-- Module Require
|
||||
local Admin = require('ExpGamingAdmin')
|
||||
local Game = require('FactorioStdLib.Game')
|
||||
|
||||
-- Module Define
|
||||
local module_verbose = false
|
||||
local ThisModule = {}
|
||||
|
||||
-- Function Define
|
||||
local inventories = {
|
||||
defines.inventory.player_main,
|
||||
defines.inventory.player_quickbar,
|
||||
defines.inventory.player_trash,
|
||||
defines.inventory.player_guns,
|
||||
defines.inventory.player_ammo,
|
||||
defines.inventory.player_armor
|
||||
}
|
||||
|
||||
function Admin.move_item_to_spawn(item,surface,chests)
|
||||
chests = chests or surface.find_entities_filtered{area={{-10,-10},{10,10}},name='iron-chest'} or {}
|
||||
local chest = nil
|
||||
while not chest or not chest.get_inventory(defines.inventory.chest).can_insert(item) do
|
||||
chest = table.remove(chests,1)
|
||||
if not chest then chest = surface.create_entity{
|
||||
name='iron-chest',
|
||||
position=surface.find_non_colliding_position('iron-chest',{0,0},32,1)
|
||||
} end
|
||||
end
|
||||
chest.get_inventory(defines.inventory.chest).insert(item)
|
||||
table.insert(chests,chest)
|
||||
return chests
|
||||
end
|
||||
|
||||
function Admin.move_inventory(player)
|
||||
player = Game.get_player(player)
|
||||
if not player then return end
|
||||
local chests = player.surface.find_entities_filtered{area={{-10,-10},{10,10}},name='iron-chest'} or {}
|
||||
for _,_inventory in pairs(inventories) do
|
||||
local inventory = player.get_inventory(_inventory)
|
||||
if inventory then
|
||||
for item,count in pairs(inventory.get_contents()) do
|
||||
item = {name=item,count=count}
|
||||
chests = Admin.move_item_to_spawn(item,player.surface,chests)
|
||||
end
|
||||
inventory.clear()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Admin.add_action('Clear Inventory',Admin.move_inventory)
|
||||
-- Module Return
|
||||
return setmetatable(ThisModule,{__call=Admin.move_inventory})
|
||||
Reference in New Issue
Block a user