Files
wnsrc/gamemodes/darkrp/schema/sv_schema.lua
lifestorm 73479cff9e Upload
2024-08-04 22:55:00 +03:00

246 lines
5.6 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/
--]]
Schema.CombineObjectives = Schema.CombineObjectives or {}
-- data saving
function Schema:SaveRationDispensers()
local data = {}
for _, v in ipairs(ents.FindByClass("ix_rationdispenser")) do
data[#data + 1] = {v:GetPos(), v:GetAngles(), v:GetEnabled()}
end
ix.data.Set("rationDispensers", data)
end
function Schema:SaveCombineLocks()
local data = {}
for _, v in ipairs(ents.FindByClass("ix_combinelock")) do
if (IsValid(v.door)) then
data[#data + 1] = {
v.door:MapCreationID(),
v.door:WorldToLocal(v:GetPos()),
v.door:WorldToLocalAngles(v:GetAngles()),
v:GetLocked()
}
end
end
ix.data.Set("combineLocks", data)
data = {}
for _, v2 in ipairs(ents.FindByClass("ix_combinelock_cwu")) do
if (IsValid(v2.door)) then
data[#data + 1] = {
v2.door:MapCreationID(),
v2.door:WorldToLocal(v2:GetPos()),
v2.door:WorldToLocalAngles(v2:GetAngles()),
v2:GetLocked(),
v2.accessLevel
}
end
end
ix.data.Set("combineLocksCwu", data)
data = {}
for _, v2 in ipairs(ents.FindByClass("ix_combinelock_dob")) do
if (IsValid(v2.door)) then
data[#data + 1] = {
v2.door:MapCreationID(),
v2.door:WorldToLocal(v2:GetPos()),
v2.door:WorldToLocalAngles(v2:GetAngles()),
v2:GetLocked(),
v2.accessLevel
}
end
end
ix.data.Set("combineLocksDob", data)
data = {}
for _, v2 in ipairs(ents.FindByClass("ix_combinelock_cmru")) do
if (IsValid(v2.door)) then
data[#data + 1] = {
v2.door:MapCreationID(),
v2.door:WorldToLocal(v2:GetPos()),
v2.door:WorldToLocalAngles(v2:GetAngles()),
v2:GetLocked(),
v2.accessLevel
}
end
end
ix.data.Set("combineLocksCmru", data)
data = {}
for _, v2 in ipairs(ents.FindByClass("ix_combinelock_moe")) do
if (IsValid(v2.door)) then
data[#data + 1] = {
v2.door:MapCreationID(),
v2.door:WorldToLocal(v2:GetPos()),
v2.door:WorldToLocalAngles(v2:GetAngles()),
v2:GetLocked(),
v2.accessLevel
}
end
end
ix.data.Set("combineLocksMoe", data)
end
function Schema:SaveForceFields()
local data = {}
for _, v in ipairs(ents.FindByClass("ix_forcefield")) do
data[#data + 1] = {v:GetPos(), v:GetAngles(), v:GetMode()}
end
ix.data.Set("forceFields", data)
end
function Schema:SaveRebelForceFields()
local data = {}
for _, v in ipairs(ents.FindByClass("ix_rebelfield")) do
data[#data + 1] = {v:GetPos(), v:GetAngles(), v:GetMode()}
end
ix.data.Set("rebelForceFields", data)
end
-- data loading
function Schema:LoadRationDispensers()
for _, v in ipairs(ix.data.Get("rationDispensers") or {}) do
local dispenser = ents.Create("ix_rationdispenser")
dispenser:SetPos(v[1])
dispenser:SetAngles(v[2])
dispenser:Spawn()
dispenser:SetEnabled(v[3])
end
end
function Schema:LoadCombineLocks()
for _, v in ipairs(ix.data.Get("combineLocks") or {}) do
local door = ents.GetMapCreatedEntity(v[1])
if (IsValid(door) and door:IsDoor()) then
local lock = ents.Create("ix_combinelock")
lock:SetPos(door:GetPos())
lock:Spawn()
lock:SetDoor(door, door:LocalToWorld(v[2]), door:LocalToWorldAngles(v[3]))
lock:SetLocked(v[4])
end
end
for _, v in ipairs(ix.data.Get("combineLocksCwu") or {}) do
local door = ents.GetMapCreatedEntity(v[1])
if (IsValid(door) and door:IsDoor()) then
local lock = ents.Create("ix_combinelock_cwu")
lock:SetPos(door:GetPos())
lock:Spawn()
lock:SetDoor(door, door:LocalToWorld(v[2]), door:LocalToWorldAngles(v[3]))
lock:SetLocked(v[4])
lock.accessLevel = v[5]
end
end
for _, v in ipairs(ix.data.Get("combineLocksDob") or {}) do
local door = ents.GetMapCreatedEntity(v[1])
if (IsValid(door) and door:IsDoor()) then
local lock = ents.Create("ix_combinelock_dob")
lock:SetPos(door:GetPos())
lock:Spawn()
lock:SetDoor(door, door:LocalToWorld(v[2]), door:LocalToWorldAngles(v[3]))
lock:SetLocked(v[4])
lock.accessLevel = v[5]
end
end
for _, v in ipairs(ix.data.Get("combineLocksCmru") or {}) do
local door = ents.GetMapCreatedEntity(v[1])
if (IsValid(door) and door:IsDoor()) then
local lock = ents.Create("ix_combinelock_cmru")
lock:SetPos(door:GetPos())
lock:Spawn()
lock:SetDoor(door, door:LocalToWorld(v[2]), door:LocalToWorldAngles(v[3]))
lock:SetLocked(v[4])
lock.accessLevel = v[5]
end
end
for _, v in ipairs(ix.data.Get("combineLocksMoe") or {}) do
local door = ents.GetMapCreatedEntity(v[1])
if (IsValid(door) and door:IsDoor()) then
local lock = ents.Create("ix_combinelock_moe")
lock:SetPos(door:GetPos())
lock:Spawn()
lock:SetDoor(door, door:LocalToWorld(v[2]), door:LocalToWorldAngles(v[3]))
lock:SetLocked(v[4])
lock.accessLevel = v[5]
end
end
end
function Schema:LoadForceFields()
for _, v in ipairs(ix.data.Get("forceFields") or {}) do
local field = ents.Create("ix_forcefield")
field:SetPos(v[1])
field:SetAngles(v[2])
field:Spawn()
field:SetMode(v[3])
local skin = scripted_ents.Get("ix_forcefield")
skin = skin.MODES
if (v[3] == 1) then
field:SetSkin(3)
field.dummy:SetSkin(3)
else
field:SetSkin(skin[v[3]][4])
field.dummy:SetSkin(skin[v[3]][4])
end
end
end
function Schema:SearchPlayer(client, target)
if (!target:GetCharacter() or !target:GetCharacter():GetInventory()) then
return false
end
local name = hook.Run("GetDisplayedName", target) or target:Name()
local inventory = target:GetCharacter():GetInventory()
ix.storage.Open(client, inventory, {
entity = target,
name = name
})
return true
end