SWEP is a nil value?!


I got some issues with my Swep.
It keeps saying:

[ERROR] lua/autorun/client/shared.lua:16: attempt to index global ‘SWEP’ (a nil value)

  1. unknown - lua/autorun/client/shared.lua:16

Here the code:

 if SERVER then // This is where the init.lua stuff goes.
	//This makes sure clients download the file
	AddCSLuaFile ("shared.lua")
	//How heavy the SWep is
	SWEP.Weight = 5
	//Allow automatic switching to/from this weapon when weapons are picked up
	SWEP.AutoSwitchTo = false
	SWEP.AutoSwitchFrom = false
elseif CLIENT then // This is where the cl_init.lua stuff goes
	//The name of the SWep, as appears in the weapons tab in the spawn menu(Q Menu)
	SWEP.PrintName = "Dynamite"
	//Sets the position of the weapon in the switching menu 
	//(appears when you use the scroll wheel or keys 1-6 by default)
	SWEP.Slot = 4
	SWEP.SlotPos = 1
	//Sets drawing the ammuntion levels for this weapon
	SWEP.DrawAmmo = false
	//Sets the drawing of the crosshair when this weapon is deployed
	SWEP.DrawCrosshair = true
	//Ensures a clean looking notification when a chair is undone. How it works:
	//When you create an undo, you specify the ID:
	//		undo.Create("Dynamite")
	//By creating an associated language, we can make the undo notification look better:
	//		language.Add("Undone_Dynamite", "Some message...")
	language.Add("Undone_Thrown_SWEP_Dynamite","Undone Thrown SWEP Dynamite")
SWEP.Author = "Your Name"
SWEP.Contact = "Your Email Address"
SWEP.Purpose = "What your SWep does."
SWEP.Instructions = "How to operate your SWep"
//The category that you SWep will be shown in, in the Spawn (Q) Menu 
//(This can be anything, GMod will create the categories for you)
SWEP.Category = "Scepto"
SWEP.Spawnable = true -- Whether regular players can see it
SWEP.AdminSpawnable = true -- Whether Admins/Super Admins can see it
SWEP.ViewModel = "models/dav0r/tnt/tnt.mdl" -- This is the model used for clients to see in first person.
SWEP.WorldModel = "models/dav0r/tnt/tnt.mdl" -- This is the model shown to all other clients and in third-person.
//This determins how big each clip/magazine for the gun is. You can 
//set it to -1 to disable the ammo system, meaning primary ammo will 
//not be displayed and will not be affected.
SWEP.Primary.ClipSize = -1
//This sets the number of rounds in the clip when you first get the gun. Again it can be set to -1.
SWEP.Primary.DefaultClip = -1
//Obvious. Determines whether the primary fire is automatic. This should be true/false
SWEP.Primary.Automatic = false
//Sets the ammunition type the gun uses, see below for a list of types.
SWEP.Primary.Ammo = "none"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"
//When the script loads, the sound ''Metal.SawbladeStick'' will be precached, 
//and a local variable with the sound name created.
local ShootSound = Sound("weapons/explode4.wav")
function SWEP:Reload()
function SWEP:Think()

function SWEP:throw_attack (model_file)
	//Get an eye trace. This basically draws an invisible line from
	//the players eye. This SWep makes very little use of the trace, except to 
	//calculate the amount of force to apply to the object thrown.
	local tr = self.Owner:GetEyeTrace()
	//Play some noises/effects using the sound we precached earlier
	//We now exit if this function is not running serverside
	if (!SERVER) then return end
	//The next task is to create a physics prop based on the supplied model
	local ent = ents.Create("prop_physics")
	//Set the initial position and angles of the object. This might need some fine tuning;
	//but it seems to work for the models I have tried.
	ent:SetPos(self.Owner:EyePos() + (self.Owner:GetAimVector() * 16))
	//Now we need to get the physics object for our entity so we can apply a force to it
	local phys = ent:GetPhysicsObject()
	//Check if the physics object is valid. If not, remove the entity and stop the function
	if !(phys && IsValid(phys)) then ent:Remove() return end
	//Time to apply the force. My method for doing this was almost entirely empirical 
	//and it seems to work fairly intuitively with chairs.
	phys:ApplyForceCenter(self.Owner:GetAimVector():GetNormalized() *  math.pow(tr.HitPos:Length(), 3))
	//Now for the important part of adding the spawned objects to the undo and cleanup lists.
	cleanup.Add(self.Owner, "props", ent)
	undo.Create ("Dynamite")
		undo.AddEntity (ent)
		undo.SetPlayer (self.Owner)
//Throw an office chair on primary attack
function SWEP:PrimaryAttack()
	//Call the throw attack function, with the office chair model

Thank you

Try placing the file in lua/weapons/weapon_dynamite/ instead

Im using the addon as a client side atm (singleplayer). So that will not work. Any other suggestions?

[editline]26th August 2017[/editline]

Nevermind it worked! Thank you!