Files
wnsrc/gamemodes/ixhl2rp/plugins/drugs/sv_hooks.lua
lifestorm c6d9b6f580 Upload
2024-08-05 18:40:29 +03:00

97 lines
2.2 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
local function RemoveDrugEffect(character, effect)
if (character) then
local drugEffects = character:GetDrugEffects()
if (!table.IsEmpty(drugEffects)) then
drugEffects[effect] = nil
character:SetDrugEffects(drugEffects)
end
end
end
function PLUGIN:PlayerInteractItem(client, action, item, data)
if (item.drug and !table.IsEmpty(item.drug)) then
if (action == "give") then
local target = item.player:GetEyeTraceNoCursor().Entity
if (IsValid(target) and target:IsPlayer()) then
client = target
elseif (IsValid(target.ixPlayer)) then
client = target.ixPlayer
end
end
if ((action == "use" or action == "Consume" or action == "give")) then
local character = client:GetCharacter()
local drugEffects = character:GetDrugEffects()
for k, v in pairs(item.drug) do
local time = v * 60
drugEffects[k] = os.time() + time
local timerId = "ixDrugEffect_"..character:GetID().."_"..k
if (timer.Exists(timerId)) then
timer.Adjust(timerId, timer.TimeLeft(timerId) + time, 1, function()
RemoveDrugEffect(character, k)
end)
else
timer.Create(timerId, time, 1, function()
RemoveDrugEffect(character, k)
end)
end
end
character:SetDrugEffects(drugEffects)
end
end
end
function PLUGIN:PlayerDeath(client)
local character = client:GetCharacter()
if (character) then
character:SetDrugEffects({})
end
end
function PLUGIN:CharacterLoaded(character)
local drugEffects = character:GetDrugEffects()
if (!table.IsEmpty(drugEffects)) then
local toRemove = {}
local osTime = os.time()
for k, v in pairs(drugEffects) do
if (v > osTime) then
local timerId = "ixDrugEffect_"..character:GetID().."_"..k
if (!timer.Exists(timerId)) then
timer.Create(timerId, v - osTime, 1, function()
RemoveDrugEffect(character, k)
end)
end
else
table.insert(toRemove, k)
end
end
for k, v in pairs(toRemove) do
RemoveDrugEffect(character, v)
end
end
end