• KeyPress issues.
    12 replies, posted
[code]function SWEP:Think() self:Stuff() if self.Owner:GetAmmoCount("ammo_flameammo") > 200 then self.Owner:SetAmmo(200, "ammo_flameammo") if self.Owner:KeyPressed(IN_ATTACK) then self:PrimaryAttack() self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK) end if self.Owner:KeyReleased(IN_ATTACK) then self.Weapon:SendWeaponAnim(ACT_VM_SECONDARYATTACK) if SERVER then self.Owner:EmitSound(Sound("v_flamegun/flameend.wav")) end self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ) end end end[/code] Sounds don't play and animations don't play for some reason. How can I fix this?
[QUOTE=Handsome Matt;43582536]Ah you again, posting partial scripts as usual.[/QUOTE] [IMG]http://i.imgur.com/kH9w5cy.png[/IMG] Why would I post huge script? But, whatever: [code]SWEP.AdminSpawnable = true SWEP.ViewModelFOV = 90 SWEP.ViewModel = "models/weapons/v_flamgun.mdl" SWEP.WorldModel = "models/w_flamgun.mdl" SWEP.AutoSwitchTo = true SWEP.Slot = 4 SWEP.HoldType = "physgun" SWEP.PrintName = "FlameGun" SWEP.Author = "" SWEP.Spawnable = true SWEP.AutoSwitchFrom = true SWEP.FiresUnderwater = false SWEP.Weight = 5 SWEP.DrawCrosshair = true SWEP.Category = "Kingpin" SWEP.SlotPos = 2 SWEP.DrawCrosshair = false SWEP.Instructions = "" SWEP.Contact = "" SWEP.Purpose = "" SWEP.Base = "kingpin_base" SWEP.Primary.Sound = ("Postal2/pistol_fire.wav") SWEP.Primary.Damage = 5 SWEP.Primary.TakeAmmo = 2 SWEP.Primary.ClipSize = -1 SWEP.Primary.Ammo = "ammo_flameammo" SWEP.Secondary.Ammo = "none" SWEP.Primary.DefaultClip = -1 SWEP.Primary.Spread = 0.1 SWEP.Primary.NumberoFShots = 1 SWEP.Primary.Automatic = true SWEP.Primary.Recoil = 0.1 SWEP.Primary.Delay = 0.09 SWEP.Primary.Force = 20 game.AddAmmoType( { name = "ammo_flameammo", dmgtype = DMG_BULLET, tracer = TRACER_LINE, plydmg = 0, npcdmg = 0, force = 2000, minsplash = 10, maxsplash = 5 } ) //SWEP:Initialize()\\ function SWEP:Initialize() self:SetWeaponHoldType( self.HoldType ) end //SWEP:Initialize()\\ function SWEP:Deploy() self.Weapon:SetNextPrimaryFire(CurTime() +.5) self.Weapon:SendWeaponAnim(ACT_VM_DRAW) if ( SERVER ) then self.idlesound = CreateSound(self.Weapon, "v_flamegun/flamepilot.wav") self.idlesound:Play() end return true end function SWEP:Holster() if ( SERVER ) then if self.idlesound then self.idlesound:Stop() end return true end end function SWEP:Equip() if SERVER then if self.Owner:IsPlayer() then self.Owner:GiveAmmo(200, self.Primary.Ammo) end end end //SWEP:PrimaryFire()\\ function SWEP:PrimaryAttack() if self.Owner:GetAmmoCount("ammo_flameammo") == 0 then return end local bullet = {} bullet.Num = 1 bullet.Src = self.Owner:GetShootPos() bullet.Dir = self.Owner:GetAimVector() bullet.Spread = Vector(0,0,0) bullet.Tracer = 0 bullet.Force = 25 bullet.Damage = 5 local ang = self.Owner:GetAimVector() local spos = self.Owner:GetShootPos() local trace = {} trace.start = spos trace.endpos = spos + (ang * 75) trace.filter = self.Owner local tr = util.TraceLine(trace) self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) if SERVER then self.Owner:EmitSound(Sound("v_flamegun/flame"..math.random(1,3)..".wav")) end self:TakePrimaryAmmo(self.Primary.TakeAmmo) end //SWEP:PrimaryFire()\\ function SWEP:SecondaryAttack() end function SWEP:Think() self:Stuff() if self.Owner:GetAmmoCount("ammo_flameammo") > 200 then self.Owner:SetAmmo(200, "ammo_flameammo") if self.Owner:KeyPressed(IN_ATTACK) then self:PrimaryAttack() self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK) end if self.Owner:KeyReleased(IN_ATTACK) then self.Weapon:SendWeaponAnim(ACT_VM_SECONDARYATTACK) if SERVER then self.Owner:EmitSound(Sound("v_flamegun/flameend.wav")) end self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ) end end end /*--------------------------------------------------------- Reload ---------------------------------------------------------*/ function SWEP:Reload() end[/code]
We ask for the actual code because for the obvious reason - We can't tell what you are doing wrong with just a snippet :)
I've fixed the code by putting it in PrimaryAttack, but this: [code] if self.Owner:KeyReleased(IN_ATTACK) then self.Weapon:SendWeaponAnim(ACT_VM_SECONDARYATTACK) if SERVER then self.Owner:EmitSound(Sound("v_flamegun/flameend.wav")) end self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ) end [/code] Doesn't work.
[QUOTE=Handsome Matt;43591667]If that snippet you posted is in the PrimaryAttack hook, ( which is impossible to tell because as usual you're posting partial out of context snippets again ) then why do you need to check for player:KeyReleased(IN_ATTACK), obviously he just has released the key because you're in the PrimaryAttack hook.[/QUOTE] Because fire animation is a loop and it needs to be stopped. [editline]19th January 2014[/editline] Here's the PrimaryAttack code specially for Matt: [code]function SWEP:PrimaryAttack() if self.Owner:GetAmmoCount("ammo_flameammo") == 0 then return end local bullet = {} bullet.Num = 1 bullet.Src = self.Owner:GetShootPos() bullet.Dir = self.Owner:GetAimVector() bullet.Spread = Vector(0,0,0) bullet.Tracer = 0 bullet.Force = 25 bullet.Damage = 5 local ang = self.Owner:GetAimVector() local spos = self.Owner:GetShootPos() local trace = {} trace.start = spos trace.endpos = spos + (ang * 75) trace.filter = self.Owner local tr = util.TraceLine(trace) self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) if SERVER then self.Owner:EmitSound(Sound("v_flamegun/flame"..math.random(1,3)..".wav")) end self:TakePrimaryAmmo(self.Primary.TakeAmmo) if self.Owner:KeyPressed(IN_ATTACK) then self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK) end if self.Owner:KeyReleased(IN_ATTACK) then self.Weapon:SendWeaponAnim(ACT_VM_SECONDARYATTACK) if SERVER then self.Owner:EmitSound(Sound("v_flamegun/flameend.wav")) end self.Weapon:SetNextPrimaryFire( CurTime() + 0.5 ) end end[/code]
Atleast this should help... The reason why the sound atleast doesnt play is because you are running it serverside... Other players are still able to hear it but the client doesnt... Get rid of the "if SERVER then" filter to fix the sound atleast
But the animation doesn't play either.
[QUOTE=Handsome Matt;43591980]Print self.Owner:KeyReleased(IN_ATTACK) in the primary attack hook, if it doesn't return true, there's your problem.[/QUOTE] It prints false, how can I fix this?
Sorry, you need to Log In to post a reply to this thread.