AddCSLuaFile() if CLIENT then SWEP.PrintName = "Stone" SWEP.Description = "A simple stone found laying pretty much anywhere." SWEP.ViewModelFlip = false SWEP.ViewModelFOV = 50 SWEP.ShowViewModel = true SWEP.ShowWorldModel = false SWEP.ViewModelBoneMods = { ["ValveBiped.cube1"] = { scale = Vector(0.009, 0.009, 0.009), pos = Vector(0, 0, 0), angle = Angle(0, 0, 0) }, ["ValveBiped.cube2"] = { scale = Vector(0.009, 0.009, 0.009), pos = Vector(0, 0, 0), angle = Angle(0, 0, 0) }, ["ValveBiped.cube3"] = { scale = Vector(0.009, 0.009, 0.009), pos = Vector(0, 0, 0), angle = Angle(0, 0, 0) }, ["ValveBiped.cube"] = { scale = Vector(0.009, 0.009, 0.009), pos = Vector(0, 0, 0), angle = Angle(0, 0, 0) } } SWEP.VElements = { ["base"] = { type = "Model", model = "models/props_junk/rock001a.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(4.091, 3.181, -0.456), angle = Angle(-54.206, 58.294, -50.114), size = Vector(0.492, 0.492, 0.492), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} } } SWEP.WElements = { ["base"] = { type = "Model", model = "models/props_junk/rock001a.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(3.181, 2.273, -0.456), angle = Angle(-43.978, 27.614, 70.568), size = Vector(0.379, 0.379, 0.379), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} } } end SWEP.Base = "weapon_zs_basemelee" SWEP.ViewModel = "models/weapons/c_bugbait.mdl" SWEP.WorldModel = "models/props_junk/rock001a.mdl" SWEP.UseHands = true SWEP.HoldType = "grenade" SWEP.WalkSpeed = SPEED_FAST SWEP.AmmoIfHas = true SWEP.Primary.ClipSize = 1 SWEP.Primary.Automatic = false SWEP.Primary.Ammo = "stone" SWEP.Primary.Delay = 1 SWEP.Primary.DefaultClip = 1 SWEP.Secondary.ClipSize = 1 SWEP.Secondary.DefaultClip = 1 SWEP.Secondary.Automatic = false SWEP.Secondary.Ammo = "dummy" SWEP.WalkSpeed = SPEED_FAST function SWEP:Initialize() self:SetWeaponHoldType("grenade") self:SetDeploySpeed(1.1) if CLIENT then self:Anim_Initialize() end end function SWEP:CanPrimaryAttack() if self.Owner:IsHolding() or self.Owner:GetBarricadeGhosting() then return false end if self:GetPrimaryAmmoCount() <= 0 then self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) return false end return true end function SWEP:PrimaryAttack() if not self:CanPrimaryAttack() then return end self:SetNextPrimaryFire(CurTime() + self.Primary.Delay) local owner = self.Owner self:SendWeaponAnim(ACT_VM_THROW) owner:DoAttackEvent() self:TakePrimaryAmmo(1) self.NextDeploy = CurTime() + 0.75 if SERVER then local ent = ents.Create("projectile_stone") if ent:IsValid() then ent:SetPos(owner:GetShootPos()) ent:SetOwner(owner) ent:Spawn() ent.Team = owner:Team() ent:EmitSound("WeaponFrag.Throw") local phys = ent:GetPhysicsObject() if phys:IsValid() then phys:Wake() phys:AddAngleVelocity(VectorRand() * 360) phys:SetVelocityInstantaneous(self.Owner:GetAimVector() * 900) end end if self:GetPrimaryAmmoCount() <= 0 then owner:StripWeapon(self:GetClass()) end end end function SWEP:SecondaryAttack() end function SWEP:CanSecondaryAttack() return false end function SWEP:Reload() return false end function SWEP:Deploy() GAMEMODE:WeaponDeployed(self.Owner, self) if self:GetPrimaryAmmoCount() <= 0 then self:SendWeaponAnim(ACT_VM_THROW) end return true end function SWEP:Holster() self.NextDeploy = nil if CLIENT then self:Anim_Holster() end return true end function SWEP:Think() if self.NextDeploy and self.NextDeploy <= CurTime() then self.NextDeploy = nil if 0 < self:GetPrimaryAmmoCount() then self:SendWeaponAnim(ACT_VM_DRAW) else self:SendWeaponAnim(ACT_VM_THROW) if SERVER then self:Remove() end end end end local colBG = Color(16, 16, 16, 90) local colWhite = Color(220, 220, 220, 230) SWEP.HUD3DPos = Vector(5, 2, 0) function SWEP:PostDrawViewModel(vm) if not self.HUD3DPos or GAMEMODE.WeaponHUDMode == 1 then return end local bone = vm:LookupBone("ValveBiped.Bip01_R_Hand") if not bone then return end local m = vm:GetBoneMatrix(bone) if not m then return end local pos, ang = m:GetTranslation(), m:GetAngles() local offset = self.HUD3DPos pos = pos + ang:Forward() * offset.x + ang:Right() * offset.y + ang:Up() * offset.z ang:RotateAroundAxis(ang:Up(), math.sin(CurTime() * math.pi) * 20) ang:RotateAroundAxis(ang:Right(), CurTime() * 180) pos = pos + ang:Forward() * 5 ang:RotateAroundAxis(ang:Right(), 270) ang:RotateAroundAxis(ang:Up(), 180) local wid, hei = 144, 144 local x, y = wid * -0.5, hei * -0.5 local clip = self:GetPrimaryAmmoCount() cam.Start3D2D(pos, ang, 0.0075) draw.RoundedBox(32, x, y, wid, hei, colBG) draw.SimpleText(clip, "ZS3D2DFontBig", x + wid * 0.5, y + hei * 0.5, colWhite, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) cam.End3D2D() end