2014-10-02 08:49:54 +08:00
|
|
|
AddCSLuaFile()
|
|
|
|
|
|
|
|
if CLIENT then
|
|
|
|
SWEP.PrintName = "'Tiny' Slug Rifle"
|
|
|
|
SWEP.Description = "This powerful rifle instantly kills any zombie with a head shot."
|
|
|
|
SWEP.Slot = 3
|
|
|
|
SWEP.SlotPos = 0
|
|
|
|
|
|
|
|
SWEP.ViewModelFlip = false
|
|
|
|
SWEP.ViewModelFOV = 50
|
|
|
|
|
|
|
|
SWEP.HUD3DBone = "v_weapon.xm1014_Bolt"
|
|
|
|
SWEP.HUD3DPos = Vector(-1, 0, 0)
|
|
|
|
SWEP.HUD3DAng = Angle(0, 0, 0)
|
|
|
|
SWEP.HUD3DScale = 0.02
|
|
|
|
|
|
|
|
SWEP.VElements = {
|
|
|
|
["base"] = { type = "Model", model = "models/props_phx/construct/metal_plate_curve360x2.mdl", bone = "v_weapon.xm1014_Parent", rel = "", pos = Vector(0, -6, -9), angle = Angle(0, 0, 0), size = Vector(0.014, 0.014, 0.094), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} },
|
|
|
|
["base+"] = { type = "Model", model = "models/props_phx/construct/metal_angle360.mdl", bone = "v_weapon.xm1014_Parent", rel = "base", pos = Vector(0, 0, 8.5), angle = Angle(0, 0, 0), size = Vector(0.014, 0.014, 0.014), color = Color(255, 255, 255, 45), surpresslightning = false, material = "models/screenspace", skin = 0, bodygroup = {} },
|
|
|
|
["base++"] = { type = "Model", model = "models/props_phx/construct/metal_angle360.mdl", bone = "v_weapon.xm1014_Parent", rel = "base", pos = Vector(0, 0, 2), angle = Angle(0, 0, 0), size = Vector(0.014, 0.014, 0.014), color = Color(255, 255, 255, 45), surpresslightning = false, material = "", skin = 0, bodygroup = {} }
|
|
|
|
}
|
|
|
|
|
|
|
|
SWEP.WElements = {
|
|
|
|
["base"] = { type = "Model", model = "models/props_phx/construct/metal_plate_curve360x2.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(13, 1, -7), angle = Angle(80, 0, 0), size = Vector(0.014, 0.014, 0.094), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} },
|
|
|
|
["base+"] = { type = "Model", model = "models/props_phx/construct/metal_angle360.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "base", pos = Vector(0, 0, 8.5), angle = Angle(0, 0, 0), size = Vector(0.014, 0.014, 0.014), color = Color(255, 255, 255, 45), surpresslightning = false, material = "", skin = 0, bodygroup = {} },
|
|
|
|
["base++"] = { type = "Model", model = "models/props_phx/construct/metal_angle360.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "base", pos = Vector(0, 0, 2), angle = Angle(0, 0, 0), size = Vector(0.014, 0.014, 0.014), color = Color(255, 255, 255, 45), surpresslightning = false, material = "", skin = 0, bodygroup = {} }
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
SWEP.Base = "weapon_zs_base"
|
|
|
|
|
|
|
|
SWEP.HoldType = "ar2"
|
|
|
|
|
|
|
|
SWEP.ViewModel = "models/weapons/cstrike/c_shot_xm1014.mdl"
|
|
|
|
SWEP.WorldModel = "models/weapons/w_shot_xm1014.mdl"
|
|
|
|
SWEP.UseHands = true
|
|
|
|
|
|
|
|
SWEP.Primary.Sound = Sound("Weapon_AWP.Single")
|
|
|
|
SWEP.Primary.Damage = 135
|
|
|
|
SWEP.Primary.NumShots = 1
|
|
|
|
SWEP.Primary.Delay = 1.5
|
|
|
|
SWEP.ReloadDelay = SWEP.Primary.Delay
|
|
|
|
|
|
|
|
SWEP.Primary.ClipSize = 2
|
|
|
|
SWEP.Primary.Automatic = false
|
|
|
|
SWEP.Primary.Ammo = "357"
|
|
|
|
SWEP.Primary.DefaultClip = 10
|
|
|
|
|
|
|
|
SWEP.Primary.Gesture = ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW
|
|
|
|
SWEP.ReloadGesture = ACT_HL2MP_GESTURE_RELOAD_SHOTGUN
|
|
|
|
|
|
|
|
SWEP.ConeMax = 0.12
|
|
|
|
SWEP.ConeMin = 0.005
|
|
|
|
|
|
|
|
SWEP.IronSightsPos = Vector() --Vector(-7.3, 9, 2.3)
|
|
|
|
SWEP.IronSightsAng = Vector(0, -1, 0)
|
|
|
|
|
|
|
|
SWEP.WalkSpeed = SPEED_SLOWER
|
|
|
|
|
|
|
|
function SWEP:IsScoped()
|
|
|
|
return self:GetIronsights() and self.fIronTime and self.fIronTime + 0.25 <= CurTime()
|
|
|
|
end
|
|
|
|
|
|
|
|
if CLIENT then
|
|
|
|
SWEP.IronsightsMultiplier = 0.25
|
|
|
|
|
|
|
|
function SWEP:GetViewModelPosition(pos, ang)
|
|
|
|
if self:IsScoped() then
|
|
|
|
return pos + ang:Up() * 256, ang
|
|
|
|
end
|
|
|
|
|
|
|
|
return self.BaseClass.GetViewModelPosition(self, pos, ang)
|
|
|
|
end
|
|
|
|
|
|
|
|
local matScope = Material("zombiesurvival/scope")
|
|
|
|
function SWEP:DrawHUDBackground()
|
|
|
|
if self:IsScoped() then
|
|
|
|
local scrw, scrh = ScrW(), ScrH()
|
|
|
|
local size = math.min(scrw, scrh)
|
|
|
|
surface.SetMaterial(matScope)
|
|
|
|
surface.SetDrawColor(255, 255, 255, 255)
|
|
|
|
surface.DrawTexturedRect((scrw - size) * 0.5, (scrh - size) * 0.5, size, size)
|
|
|
|
surface.SetDrawColor(0, 0, 0, 255)
|
|
|
|
if scrw > size then
|
|
|
|
local extra = (scrw - size) * 0.5
|
|
|
|
surface.DrawRect(0, 0, extra, scrh)
|
|
|
|
surface.DrawRect(scrw - extra, 0, extra, scrh)
|
|
|
|
end
|
|
|
|
if scrh > size then
|
|
|
|
local extra = (scrh - size) * 0.5
|
|
|
|
surface.DrawRect(0, 0, scrw, extra)
|
|
|
|
surface.DrawRect(0, scrh - extra, scrw, extra)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
SWEP.NextReload = 0
|
|
|
|
function SWEP:Reload()
|
|
|
|
if CurTime() < self.NextReload then return end
|
|
|
|
|
|
|
|
self.NextReload = CurTime() + self.ReloadDelay
|
|
|
|
|
|
|
|
local owner = self.Owner
|
|
|
|
|
|
|
|
if self:Clip1() < self.Primary.ClipSize and 0 < owner:GetAmmoCount(self.Primary.Ammo) then
|
|
|
|
self:DefaultReload(ACT_VM_RELOAD)
|
|
|
|
owner:DoReloadEvent()
|
|
|
|
self:SetNextPrimaryFire(CurTime() + self.ReloadDelay)
|
|
|
|
|
|
|
|
timer.Simple(0.25, function()
|
|
|
|
if self:IsValid() and IsValid(owner) then
|
|
|
|
self:SendWeaponAnim(ACT_SHOTGUN_RELOAD_FINISH)
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function SWEP.BulletCallback(attacker, tr, dmginfo)
|
|
|
|
if tr.HitGroup == HITGROUP_HEAD then
|
|
|
|
local ent = tr.Entity
|
|
|
|
if ent:IsValid() and ent:IsPlayer() then
|
2014-11-09 12:14:15 +08:00
|
|
|
if ent:Team() == TEAM_UNDEAD and ent:GetZombieClassTable().Boss then
|
|
|
|
GenericBulletCallback(attacker, tr, dmginfo)
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2014-10-02 08:49:54 +08:00
|
|
|
ent.Gibbed = CurTime()
|
|
|
|
end
|
|
|
|
|
|
|
|
if gamemode.Call("PlayerShouldTakeDamage", ent, attacker) then
|
|
|
|
ent:SetHealth(math.max(ent:Health() - 400, 1))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-11-09 12:14:15 +08:00
|
|
|
INFDAMAGEFLOATER = true
|
2014-10-02 08:49:54 +08:00
|
|
|
GenericBulletCallback(attacker, tr, dmginfo)
|
|
|
|
end
|