zombiesurvival-evolved/gamemodes/zombiesurvival/gamemode/obj_weapon_extend.lua

143 lines
3.9 KiB
Lua
Raw Normal View History

2014-10-02 08:49:54 +08:00
local meta = FindMetaTable("Weapon")
meta.GetNextPrimaryAttack = meta.GetNextPrimaryFire
meta.GetNextSecondaryAttack = meta.GetNextSecondaryFire
meta.SetNextPrimaryAttack = meta.SetNextPrimaryFire
meta.SetNextSecondaryAttack = meta.SetNextSecondaryFire
function meta:ValidPrimaryAmmo()
local ammotype = self:GetPrimaryAmmoTypeString()
if ammotype and ammotype ~= "none" and ammotype ~= "dummy" then
2014-10-02 08:49:54 +08:00
return ammotype
end
end
function meta:ValidSecondaryAmmo()
local ammotype = self:GetSecondaryAmmoTypeString()
if ammotype and ammotype ~= "none" and ammotype ~= "dummy" then
2014-10-02 08:49:54 +08:00
return ammotype
end
end
function meta:SetNextReload(fTime)
self:SetDTFloat(DT_WEAPON_BASE_FLOAT_NEXTRELOAD, fTime)
2014-10-02 08:49:54 +08:00
end
function meta:GetNextReload()
return self:GetDTFloat(DT_WEAPON_BASE_FLOAT_NEXTRELOAD)
end
function meta:SetReloadStart(fTime)
self:SetDTFloat(DT_WEAPON_BASE_FLOAT_RELOADSTART, fTime)
end
function meta:GetReloadStart()
return self:GetDTFloat(DT_WEAPON_BASE_FLOAT_RELOADSTART)
end
function meta:SetReloadFinish(fTime)
self:SetDTFloat(DT_WEAPON_BASE_FLOAT_RELOADEND, fTime)
end
function meta:GetReloadFinish()
return self:GetDTFloat(DT_WEAPON_BASE_FLOAT_RELOADEND)
2014-10-02 08:49:54 +08:00
end
function meta:GetPrimaryAmmoCount()
return self:GetOwner():GetAmmoCount(self.Primary.Ammo) + self:Clip1()
2014-10-02 08:49:54 +08:00
end
function meta:GetSecondaryAmmoCount()
return self:GetOwner():GetAmmoCount(self.Secondary.Ammo) + self:Clip2()
2014-10-02 08:49:54 +08:00
end
function meta:HideViewAndWorldModel()
self:HideViewModel()
self:HideWorldModel()
end
meta.HideWorldAndViewModel = meta.HideViewAndWorldModel
function meta:GetCombinedPrimaryAmmo()
return self:Clip1() + self:GetOwner():GetAmmoCount(self.Primary.Ammo)
end
2014-10-02 08:49:54 +08:00
function meta:GetCombinedSecondaryAmmo()
return self:Clip2() + self:GetOwner():GetAmmoCount(self.Secondary.Ammo)
2014-10-02 08:49:54 +08:00
end
function meta:TakeCombinedPrimaryAmmo(amount)
local ammotype = self.Primary.Ammo
local owner = self:GetOwner()
2014-10-02 08:49:54 +08:00
local clip = self:Clip1()
local reserves = owner:GetAmmoCount(ammotype)
amount = math.min(reserves + clip, amount)
local fromreserves = math.min(reserves, amount)
if fromreserves > 0 then
amount = amount - fromreserves
self:GetOwner():RemoveAmmo(fromreserves, ammotype)
2014-10-02 08:49:54 +08:00
end
local fromclip = math.min(clip, amount)
if fromclip > 0 then
self:SetClip1(clip - fromclip)
end
end
function meta:TakeCombinedSecondaryAmmo(amount)
local ammotype = self.Secondary.Ammo
local owner = self:GetOwner()
2014-10-02 08:49:54 +08:00
local clip = self:Clip2()
local reserves = owner:GetAmmoCount(ammotype)
amount = math.min(reserves + clip, amount)
local fromreserves = math.min(reserves, amount)
if fromreserves > 0 then
amount = amount - fromreserves
self:GetOwner():RemoveAmmo(fromreserves, ammotype)
2014-10-02 08:49:54 +08:00
end
local fromclip = math.min(clip, amount)
if fromclip > 0 then
self:SetClip2(clip - fromclip)
end
end
local TranslatedAmmo = {}
TranslatedAmmo[-1] = "none"
TranslatedAmmo[0] = "none"
TranslatedAmmo[1] = "ar2"
TranslatedAmmo[2] = "alyxgun"
TranslatedAmmo[3] = "pistol"
TranslatedAmmo[4] = "smg1"
TranslatedAmmo[5] = "357"
TranslatedAmmo[6] = "xbowbolt"
TranslatedAmmo[7] = "buckshot"
TranslatedAmmo[8] = "rpg_round"
TranslatedAmmo[9] = "smg1_grenade"
TranslatedAmmo[10] = "sniperround"
TranslatedAmmo[11] = "sniperpenetratedround"
TranslatedAmmo[12] = "grenade"
TranslatedAmmo[13] = "thumper"
TranslatedAmmo[14] = "gravity"
TranslatedAmmo[14] = "battery"
TranslatedAmmo[15] = "gaussenergy"
TranslatedAmmo[16] = "combinecannon"
TranslatedAmmo[17] = "airboatgun"
TranslatedAmmo[18] = "striderminigun"
TranslatedAmmo[19] = "helicoptergun"
TranslatedAmmo[20] = "ar2altfire"
TranslatedAmmo[21] = "slam"
function meta:GetPrimaryAmmoTypeString()
if self.Primary and self.Primary.Ammo then return string.lower(self.Primary.Ammo) end
return TranslatedAmmo[self:GetPrimaryAmmoType()] or "none"
end
function meta:GetSecondaryAmmoTypeString()
if self.Secondary and self.Secondary.Ammo then return string.lower(self.Secondary.Ammo) end
return TranslatedAmmo[self:GetSecondaryAmmoType()] or "none"
end