我正在 Garry's 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() 下方的第一行中删除“and self.ultdelay <= CurTime()”,则代码可以正常工作,但不适用所需的 15 秒延迟,每次按下 R 时都会运行该函数. 当它存在时,该函数完全停止工作并导致 [ERROR] lua/weapons/lucian/shared.lua:103:尝试将 nil 与数字 1 进行比较。未知 - lua/weapons/lucian/shared.lua:103