• How to play a sound when weapon is selected? & how to delete a prop after it's been thrown?
    4 replies, posted
Hello! I'm making a Garry's Mod SWEP and I'm pretty much done with it except I would like to know how to make the weapon play a sound when it's selected. Also, my SWEP on left click will fire a fist and play a sound, the problem is I don't know how to despawn the prop after it's been fired. I bet you can see why this could be annoying, lag. Here is my code: SWEP.PrintName = "Gomu Gomu No Pistal" -- This will be shown in the spawn menu, and in the weapon selection menu SWEP.Author = "MLGSniperKing" -- These two options will be shown when you have the weapon highlighted in the weapon selection menu SWEP.Instructions = "Gomu Gomu No!!!" SWEP.Spawnable = true SWEP.AdminOnly = true SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = -1 SWEP.Primary.Automatic = false SWEP.Primary.Ammo = "none" SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = true SWEP.Secondary.Ammo = "none" SWEP.Weight = 5 SWEP.AutoSwitchTo = false SWEP.AutoSwitchFrom = false SWEP.Slot = 1 SWEP.SlotPos = 2 SWEP.DrawAmmo = false SWEP.DrawCrosshair = true SWEP.ViewModel = "models/weapons/v_smg1.mdl" SWEP.WorldModel = "models/weapons/w_smg1.mdl" local ShootSound = Sound( "sound/weapons/one piece/fist/pistal" ) function SWEP:PrimaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + 0.1 ) -- Call 'ThrowChair' on self with this model self:ThrowChair( "models/props/luffy/fist/fist.mdl" ) end -- -- Called when the rightmouse button is pressed -- function SWEP:SecondaryAttack() -- Note we don't call SetNextSecondaryFire here because it's not -- automatic and so we let them fire as fast as they can click. self:ThrowChair( "models/props/luffy/fist/fist.mdl" ) end -- -- function SWEP:ThrowChair( model_file ) -- -- self:EmitSound( ShootSound ) -- if ( CLIENT ) then return end -- -- Create a prop_physics entity -- local ent = ents.Create( "prop_physics" ) if ( !IsValid( ent ) ) then return end -- ent:SetModel( model_file ) -- -- -- ent:SetPos( self.Owner:EyePos() + ( self.Owner:GetAimVector() * 16 ) ) ent:SetAngles( self.Owner:EyeAngles() ) ent:Spawn() -- local phys = ent:GetPhysicsObject() if ( !IsValid( phys ) ) then ent:Remove() return end local velocity = self.Owner:GetAimVector() velocity = velocity * 10000000 velocity = velocity + ( VectorRand() * 100 ) -- a random element phys:ApplyForceCenter( velocity ) cleanup.Add( self.Owner, "props", ent ) undo.Create( "Thrown_punch" ) undo.AddEntity( ent ) undo.SetPlayer( self.Owner ) undo.Finish() end Thanks!
Hi, Try and redo this line [B]local ent = ents.create[/B] It looks right but just double check I don't really make SWEPS I do cars and such but it looks no diffrent -----Edit------ It looks right? Maybe you didn't define it right just my guess
[QUOTE=Run2Die;50258884]Hi, Try and redo this line [B]local ent = ents.create[/B] It looks right but just double check I don't really make SWEPS I do cars and such but it looks no diffrent -----Edit------ It looks right? Maybe you didn't define it right just my guess[/QUOTE] Well my SWEP works fine. What I need to know is how to make a sound when you select the weapon and how to delete the props after x amount of time. Also my SWEP won't play the sound when clicked, I checked the directory to the wav file but I won't play :/
Do this somewhere: hook.Add("PlayerSwitchWeapon", "UNIQUENAMEHERE", function(ply, ow, nw) local plyPos = ply:GetPos() if nw == "YOUR WEAPON NAME GOES HERE" then sound.Play("SOUND NAME HERE", plyPos, 50, 100, 1) end end Thats just my guess, anyway... [B]Edited:[/B] [CODE]SWEP.PrintName = "Gomu Gomu No Pistal" -- This will be shown in the spawn menu, and in the weapon selection menu SWEP.Author = "MLGSniperKing" -- These two options will be shown when you have the weapon highlighted in the weapon selection menu SWEP.Instructions = "Gomu Gomu No!!!" SWEP.Spawnable = true SWEP.AdminOnly = true SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = -1 SWEP.Primary.Automatic = false SWEP.Primary.Ammo = "none" SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = true SWEP.Secondary.Ammo = "none" SWEP.Weight = 5 SWEP.AutoSwitchTo = false SWEP.AutoSwitchFrom = false SWEP.Slot = 1 SWEP.SlotPos = 2 SWEP.DrawAmmo = false SWEP.DrawCrosshair = true SWEP.ViewModel = "models/weapons/v_smg1.mdl" SWEP.WorldModel = "models/weapons/w_smg1.mdl" local ShootSound = Sound( "sound/weapons/one piece/fist/pistal" ) function SWEP:PrimaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + 0.1 ) -- Call 'ThrowChair' on self with this model self:ThrowChair( "models/props/luffy/fist/fist.mdl" ) end -- -- Called when the rightmouse button is pressed -- function SWEP:SecondaryAttack() -- Note we don't call SetNextSecondaryFire here because it's not -- automatic and so we let them fire as fast as they can click. self:ThrowChair( "models/props/luffy/fist/fist.mdl" ) end -- -- function SWEP:ThrowChair( model_file ) -- -- self:EmitSound( ShootSound ) -- if ( CLIENT ) then return end -- -- Create a prop_physics entity -- local ent = ents.Create( "prop_physics" ) if ( !IsValid( ent ) ) then return end -- ent:SetModel( model_file ) -- -- -- ent:SetPos( self.Owner:EyePos() + ( self.Owner:GetAimVector() * 16 ) ) ent:SetAngles( self.Owner:EyeAngles() ) ent:Spawn() -- local phys = ent:GetPhysicsObject() if ( !IsValid( phys ) ) then ent:Remove() return end local velocity = self.Owner:GetAimVector() velocity = velocity * 10000000 velocity = velocity + ( VectorRand() * 100 ) -- a random element phys:ApplyForceCenter( velocity ) timer.Simple(3, function() ent:Remove() end) cleanup.Add( self.Owner, "props", ent ) undo.Create( "Thrown_punch" ) undo.AddEntity( ent ) undo.SetPlayer( self.Owner ) undo.Finish() end[/CODE] Should remove the prop after 3 seconds.
Try using the [img]http://wiki.garrysmod.com/favicon.ico[/img] [url=http://wiki.garrysmod.com/page/WEAPON/Deploy]SWEP:Deploy[/url] function... but it seems you may need to do a little networking with that function
Sorry, you need to Log In to post a reply to this thread.