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

时间:2013-10-02 22:21:47

标签: lua garrys-mod

我在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下面的第一行删除“和self.ultdelay&lt; = CurTime()”:Think(),代码工作得很好,但是所需的15秒延迟不适用,该函数每次运行时间R被按下。当它存在时,该功能完全停止工作并导致 [错误] lua / weapons / lucian / shared.lua:103:尝试将nil与数字进行比较   1.未知 - lua / weapons / lucian / shared.lua:103

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试将第103行更改为:

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

您需要执行此操作的原因是因为您没有将ultdelay设置为SWEP中的任何值:Initialize,因此它正在尝试比较尚未设置的值,因此会显示错误消息。< / p>