Jihad bomb problem.

Every time I run my server, I see the error “attempt to index global ‘self’ <a nil value.”


 if (SERVER) then
  timer.Simple(2, function() self:Asplode() end )
  self.Owner:EmitSound( "siege/jihad.wav" )
  
 end


--The asplode function
function SWEP:Asplode()
local k, v
 
 // Make an explosion at your position
 local ent = ents.Create( "env_explosion" )
  ent:SetPos( self.Owner:GetPos() )
  ent:SetOwner( self.Owner )
  ent:Spawn()
  ent:SetKeyValue( "iMagnitude", "250" )
  ent:Fire( "Explode", 0, 0 )
  ent:EmitSound( "siege/big_explosion.wav", 500, 500 )
  
  self.Owner:Kill( )
 
  for k, v in pairs( player.GetAll( ) ) do
    v:ConCommand( "play siege/big_explosion.wav
" )
	
  end

end


/*---------------------------------------------------------
 SecondaryAttack
---------------------------------------------------------*/
function SWEP:SecondaryAttack() 
 
 self.Weapon:SetNextSecondaryFire( CurTime() + 1 )
 
 local TauntSound = Sound( "vo/npc/male01/overhere01.wav" )

 self.Weapon:EmitSound( TauntSound )
 
 // The rest is only done on the server
 if (!SERVER) then return end
 
 self.Weapon:EmitSound( TauntSound )
 
 
	

end

For the record this is a code my friend sent me. I didn’t write any of this. I just need help trying to fix this. Any help?

[editline]4th January 2013[/editline]

Anyone please? Hate to bump but, I really need help.

Is this the portion of the code with the error in it? What line number does the error report specify?

Isn’t this weapon for Garry’s Mod 12? Also, we need a line number for the error.

[lua]if (SERVER) then
timer.Simple(2, function() self:Asplode() end )
self.Owner:EmitSound( “siege/jihad.wav” ) //Here’s the line with the error.

end
[/lua]

That bit needs to be in a function. Though I don’t fully understand why 'cause I’m not very experienced with Lua, I do know that “self” does not work outside of a function.

That should be in SWEP:PrimaryAttack()