如何修复Garry Mod武器的冷却时间? (尝试将nil与数字进行比较)

问题描述 投票:1回答:1

我正在Garry的Mod中制造一种武器,该武器具有同时使用鼠标按钮和R键的三个功能。由于Garry很酷,因此我可以使用SetNextPrimaryFire()和SetNextSecondaryFire()轻松设置鼠标按键攻击的延迟时间。不幸的是,没有像其他按键那样方便的功能。因此,一个陌生人建议我尝试一下。

function SWEP:SetNextUltFire(time)
    self.ultdelay = time
end

function SWEP:Think()

    if self.Owner:KeyPressed( IN_RELOAD ) and self.ultdelay <= CurTime() then
        walkspeed = 800
        runspeed = 800
        self:EmitSound(self.WeaponSounds2[math.random(1,#self.WeaponSounds2)], 100, 100)
        self.Owner:SetWalkSpeed(800);self.Owner:SetRunSpeed(800)
        firerate = 0.15
        timer.Create("stopult", 10, 1, function()
            self.Owner:SetWalkSpeed(250);self.Owner:SetRunSpeed(500);
            firerate = 0.3; self:SendWeaponAnim( ACT_VM_RELOAD );self:SetNextPrimaryFire( CurTime() + 2.8 );
            walkspeed = 250; runspeed = 500 end)
        self:SetNextUltFire(CurTime()+15)
    end
end

如果我从SWEP:Think()下面的第一行中删除“和self.ultdelay <= CurTime()”,则代码可以正常工作,但所需的15秒延迟不适用,函数每次运行R被按下。如果存在,该功能将完全停止工作并导致[错误] lua /武器/lucian/shared.lua:103:尝试将nil与数字进行比较1.未知-lua /武器/lucian/shared.lua:103

lua garrys-mod
1个回答
0
投票

尝试将第103行更改为此:

if self.Owner:KeyPressed( IN_RELOAD ) and (not self.ultdelay or self.ultdelay <= CurTime()) then

之所以需要这样做,是因为您没有在SWEP:Initialize中将ultdelay设置为任何值,因此它试图比较一个尚未设置的值,因此会出现错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.