Garry's Mod lua: Обратное ENT: Использовать ()? - PullRequest
0 голосов
/ 08 февраля 2020

предыстория:
В настоящее время я пытаюсь создать аддон 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: Я пытаюсь найти функцию запускается, когда пользовательский объект не используется игроком

...