Files
wnsrc/gamemodes/darkrp/plugins/simple_garbage_cleaner.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

94 lines
2.1 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local PLUGIN = PLUGIN
PLUGIN.name = "Simple item cleaner"
PLUGIN.description = "Automatically removes unwanted items"
PLUGIN.author = "DrodA"
PLUGIN.version = 2.0
ix.config.Add("EnableItemCleaner", true, "Enables or disables item cleaner.", function(oldVal, newVal)
if (SERVER) then
PLUGIN:CreateTimer()
end
end, {
category = "Autres"
})
if (!SERVER) then return end
PLUGIN.itemCategories = {
["Junk"] = 300
}
PLUGIN.entityTypes = {
["ix_drop"] = 300,
["ix_workerk_water"] = 300,
["ix_workerk_gas"] = 300,
["ix_workerk_electric"] = 300
}
PLUGIN.markedEntities = PLUGIN.markedEntities or {}
function PLUGIN:OnSavedItemLoaded(items, entities)
for _, v in ipairs(entities) do
self:OnItemSpawned(v)
end
end
function PLUGIN:OnItemSpawned(entity)
local item = ix.item.instances[entity.ixItemID]
if (item) then
if (item.junkCleanTime) then
self.markedEntities[entity] = os.time() + item.junkCleanTime * 60
elseif (self.itemCategories[item.category]) then
self.markedEntities[entity] = os.time() + self.itemCategories[item.category] * 60
end
end
end
function PLUGIN:OnEntityCreated(entity)
local class = entity:GetClass()
if (self.entityTypes[class]) then
self.markedEntities[entity] = os.time() + self.entityTypes[class]
end
end
function PLUGIN:EntityRemoved(entity)
if (self.markedEntities[entity]) then
self.markedEntities[entity] = nil
end
end
function PLUGIN:CreateTimer()
if (!ix.config.Get("EnableItemCleaner")) then
timer.Remove("ixItemCleanerTimer")
return
end
local pairs, IsValid = pairs, IsValid
timer.Create("ixItemCleanerTimer", 61, 0, function()
local time = os.time()
for k, v in pairs(self.markedEntities) do
if (v < time) then
self.markedEntities[k] = nil
if (IsValid(k)) then
k:Remove()
end
end
end
end)
end
function PLUGIN:InitializedConfig()
self:CreateTimer()
end