предыстория:
В настоящее время я пытаюсь создать аддон gmod, который имеет несколько сущностей. Допустим, ради времени я пытаюсь сделать новую версию Health Charger Entity.
Проблема:
В настоящее время я хочу, чтобы моя настраиваемая сущность запускала ENT:Use()
и вычитала 1
из переменной с именем Charge
, но я не знаю, как это сделать Charge
регенерирует, когда объект не используется. Я хочу использовать ENT:Think()
, если это возможно. Есть ли обратная функция к ENT:Use()
? Если нет, что я могу изменить в приведенном ниже макете, чтобы Charge
добавлял 1
каждый тик, когда он не используется?
Код:
--init.lua
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
local InUse = false
local MaxCharge = 100
local Charge = MaxCharge
function ENT:Initialize()
self:SetModel("models/props_c17/consolebox05a.mdl")
self:SetUseType(0)
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_VPHYSICS)
self:SetSolid(SOLID_VPHYSICS)
local phys = self:GetPhysicsObject()
if phys:IsValid() then
phys:Wake()
end
end
function ENT:Use(Activator, Caller, UseType, Integer)
-- Preliminary checks
if not Activator:IsPlayer() then
return
end
if not Caller:IsPlayer() then
return
end
if not Activator == Caller then
return
end
if Activator:Health() >= Activator:GetMaxHealth() then
return
end
-- Used to disable the Charge regeneration
if not InUse then
InUse = true
end
-- Adding health
Activator:SetHealth(Activator:Health() + 1)
-- Reducing Charge
Charge = Charge - 1
-- Saying ENT is no longer in use
InUse = false
end
function ENT:Think()
-- Checking if currently in use
if InUse then
return
end
if Charge < MaxCharge then
Charge = Charge + 1
end
end
Поскольку это, вероятно, необходимо, TLDR: Я пытаюсь найти функцию запускается, когда пользовательский объект не используется игроком