85 lines
2.4 KiB
Lua
85 lines
2.4 KiB
Lua
|
AddCSLuaFile()
|
||
|
|
||
|
if CLIENT then
|
||
|
SWEP.PrintName = "Meat Hook"
|
||
|
|
||
|
SWEP.ViewModelFlip = false
|
||
|
SWEP.ViewModelFOV = 60
|
||
|
|
||
|
SWEP.ShowViewModel = false
|
||
|
SWEP.ShowWorldModel = false
|
||
|
|
||
|
SWEP.VElements = {
|
||
|
["base"] = { type = "Model", model = "models/props_junk/meathook001a.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(5, 1.363, -5), angle = Angle(0, 90, 0), size = Vector(0.5, 0.5, 0.5), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} }
|
||
|
}
|
||
|
SWEP.WElements = {
|
||
|
["base"] = { type = "Model", model = "models/props_junk/meathook001a.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(3.181, 4, -9), angle = Angle(0, 0, 0), size = Vector(1, 1, 1), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} }
|
||
|
}
|
||
|
end
|
||
|
|
||
|
SWEP.Base = "weapon_zs_basemelee"
|
||
|
|
||
|
SWEP.DamageType = DMG_SLASH
|
||
|
|
||
|
SWEP.ViewModel = "models/weapons/c_crowbar.mdl"
|
||
|
SWEP.WorldModel = "models/props_junk/meathook001a.mdl"
|
||
|
SWEP.UseHands = true
|
||
|
|
||
|
SWEP.MeleeDamage = 40
|
||
|
SWEP.MeleeRange = 50
|
||
|
SWEP.MeleeSize = 1.15
|
||
|
|
||
|
SWEP.HitGesture = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE
|
||
|
SWEP.MissGesture = SWEP.HitGesture
|
||
|
|
||
|
SWEP.SwingRotation = Angle(30, -30, -30)
|
||
|
SWEP.SwingTime = 0.75
|
||
|
SWEP.SwingHoldType = "grenade"
|
||
|
|
||
|
function SWEP:PlaySwingSound()
|
||
|
self:EmitSound("weapons/iceaxe/iceaxe_swing1.wav", 75, math.random(95, 105))
|
||
|
end
|
||
|
|
||
|
function SWEP:PlayHitFleshSound()
|
||
|
self:EmitSound("physics/body/body_medium_break"..math.random(2, 4)..".wav", 75, math.random(120, 130))
|
||
|
end
|
||
|
|
||
|
function SWEP:PlayHitSound()
|
||
|
self:EmitSound("physics/metal/metal_sheet_impact_bullet"..math.random(2)..".wav")
|
||
|
end
|
||
|
|
||
|
function SWEP:OnMeleeHit(hitent, hitflesh, tr)
|
||
|
if hitent:IsValid() and hitent:IsPlayer() and hitent:Health() > self.MeleeDamage then
|
||
|
hitent:AddLegDamage(30)
|
||
|
|
||
|
if SERVER then
|
||
|
local ang = self.Owner:EyeAngles()
|
||
|
ang:RotateAroundAxis(ang:Forward(), 180)
|
||
|
|
||
|
local ent = ents.Create("prop_meathook")
|
||
|
if ent:IsValid() then
|
||
|
ent:SetPos(tr.HitPos)
|
||
|
ent:Spawn()
|
||
|
ent:SetOwner(self.Owner)
|
||
|
|
||
|
local followed = false
|
||
|
if hitent:GetBoneCount() > 1 then
|
||
|
local boneindex = hitent:NearestBone(tr.HitPos)
|
||
|
if boneindex and boneindex > 0 then
|
||
|
ent:FollowBone(hitent, boneindex)
|
||
|
ent:SetPos((hitent:GetBonePositionMatrixed(boneindex) * 2 + tr.HitPos) / 3)
|
||
|
followed = true
|
||
|
end
|
||
|
end
|
||
|
if not followed then
|
||
|
ent:SetParent(hitent)
|
||
|
end
|
||
|
|
||
|
ent:SetAngles(ang)
|
||
|
end
|
||
|
|
||
|
self:Remove()
|
||
|
end
|
||
|
end
|
||
|
end
|