SWep not appearing in spawnlist?

I made a custom swep for personal use (in addon format) and I’m all but sure that the code’s okay, but it’s impossible to spawn, because it doesn’t appear in the spawnlist for weapons. I’ve tried entering custom ones, ‘other’ or just not entering one at all, so… could I have a little help? Here’s the code-

[lua]/**************************************************
SWEP Construction Kit base code
Created by Clavus
Available for public use, thread at:
facepunch.com/threads/1032378
**************************************************/

SWEP.PrintName = “Big Shoota”
SWEP.Slot = 2
SWEP.SlotPos = 42
SWEP.DrawAmmo = true
SWEP.DrawCrosshair = true

SWEP.Author = “ChickenMan99” // Your name
SWEP.Instructions = “Dakka dakka dakka!” // How do pepole use your swep ?
SWEP.Contact = “Your asscrack” // How Pepole chould contact you if they find bugs, errors, etc
SWEP.Purpose = “Run ‘n’ shoot, shoot ‘n’ run!” // What is the purpose with this swep ?

SWEP.AdminSpawnable = false // Is the swep spawnable for admin
SWEP.Spawnable = true // Can everybody spawn this swep ? - If you want only admin keep this false and adminsapwnable true.

SWEP.AutoSwitchTo = true // when someone walks over the swep, chould i automatectly change to your swep ?
SWEP.AutoSwitchFrom = true // Does the weapon get changed by other sweps if you pick them up ?
SWEP.Slot = 2 // Deside wich slot you want your swep do be in 1 2 3 4 5 6
SWEP.SlotPos = 42 // Deside wich slot you want your swep do be in 1 2 3 4 5 6

SWEP.FiresUnderwater = true // Does your swep fire under water ?
SWEP.Weight = 5 // Chose the weight of the Swep
SWEP.DrawCrosshair = true // Do you want it to have a crosshair ?
SWEP.DrawAmmo = true // Does the ammo show up when you are using it ? True / False
SWEP.ReloadSound = Sound( “Weapon_SMG1.Single” )

SWEP.base = “weapon_base”
//General settings\

//PrimaryFire Settings\
SWEP.Primary.Sound = Sound Sound(“weapons/shot_1.wav”) // The sound that plays when you shoot :]
SWEP.Primary.Damage = 5 // How much damage the swep is doing
SWEP.Primary.TakeAmmo = 1 // How much ammo does it take for each shot ?
SWEP.Primary.ClipSize = 200 // The clipsize
SWEP.Primary.Ammo = “smg1” // ammmo type pistol/ smg1
SWEP.Primary.DefaultClip= 200 // How much ammo does the swep come with `?
SWEP.Primary.Spread = 0.25 // Does the bullets spread all over, if you want it fire exactly where you are aiming leave it o.1
SWEP.Primary.NumberofShots = 1 // How many bullets you are firing each shot.
SWEP.Primary.Automatic = true // Is the swep automatic ?
SWEP.Primary.Recoil = 1 // How much we should punch the view
SWEP.Primary.Delay = 0.05 // How long time before you can fire again
SWEP.Primary.Force = 10 // The force of the shot
//PrimaryFire settings\

SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = true
SWEP.Secondary.Ammo = “gravity”

//SWEP:Initialize\
function SWEP:Initialize()
util.PrecacheSound(self.Primary.Sound)
util.PrecacheSound(self.Secondary.Sound)
self:SetWeaponHoldType( self.HoldType )
end
//SWEP:Initialize\

//SWEP:PrimaryFire\
function SWEP:PrimaryAttack()
if ( !self:CanPrimaryAttack() ) then return end

local bullet = {} 
	bullet.Num = self.Primary.NumberofShots 
	bullet.Src = self.Owner:GetShootPos() 
	bullet.Dir = self.Owner:GetAimVector() 
	bullet.Spread = Vector( self.Primary.Spread * 0.1 , self.Primary.Spread * 0.1, 0) 
	bullet.Tracer = 0 
	bullet.Force = self.Primary.Force 
	bullet.Damage = self.Primary.Damage 
	bullet.AmmoType = self.Primary.Ammo 

local rnda = self.Primary.Recoil * -1 
local rndb = self.Primary.Recoil * math.random(-1, 1) 

self:ShootEffects() 

self.Owner:FireBullets( bullet ) 
self:EmitSound(Sound(self.Primary.Sound)) 
self.Owner:ViewPunch( Angle( rnda,rndb,rnda ) ) 
self:TakePrimaryAmmo(self.Primary.TakeAmmo) 

self:SetNextPrimaryFire( CurTime() + self.Primary.Delay )
self:SetNextSecondaryFire( CurTime() + self.Primary.Delay ) 

end
//SWEP:PrimaryFire\

function SWEP:Initialize()

// other initialize code goes here

if CLIENT then
 
    self:CreateModels(self.VElements) // create viewmodels
    self:CreateModels(self.WElements) // create worldmodels
     
    // init view model bone build function
    self.BuildViewModelBones = function( s )
        if LocalPlayer():GetActiveWeapon() == self and self.ViewModelBonescales then
            for k, v in pairs( self.ViewModelBonescales ) do
                local bone = s:LookupBone(k)
                if (!bone) then continue end
                local m = s:GetBoneMatrix(bone)
                if (!m) then continue end
                m:Scale(v)
                s:SetBoneMatrix(bone, m)
            end
        end
    end
     
end

end

function SWEP:OnRemove()

// other onremove code goes here
 
if CLIENT then
    self:RemoveModels()
end

end

if CLIENT then

SWEP.vRenderOrder = nil
function SWEP:ViewModelDrawn()
     
    local vm = self.Owner:GetViewModel()
    if !ValidEntity(vm) then return end
     
    if (!self.VElements) then return end
     
    if vm.BuildBonePositions ~= self.BuildViewModelBones then
        vm.BuildBonePositions = self.BuildViewModelBones end

    if (self.ShowViewModel == nil or self.ShowViewModel) then
        vm:SetColor(255,255,255,255)
    else
        // we set the alpha to 1 instead of 0 because else ViewModelDrawn stops being called
        vm:SetColor(255,255,255,1) end
     
    if (!self.vRenderOrder) then
         
        // we build a render order because sprites need to be drawn after models
        self.vRenderOrder = {}

        for k, v in pairs( self.VElements ) do
            if (v.type == "Model") then
                table.insert(self.vRenderOrder, 1, k)
            elseif (v.type == "Sprite" or v.type == "Quad") then
                table.insert(self.vRenderOrder, k)
            end
        end
         
    end

    for k, name in ipairs( self.vRenderOrder ) do
     
        local v = self.VElements[name]
        if (!v) then self.vRenderOrder = nil break end
     
        local model = v.modelEnt
        local sprite = v.spriteMaterial
         
        if (!v.bone) then continue end
        local bone = vm:LookupBone(v.bone)
        if (!bone) then continue end
         
        local pos, ang = Vector(0,0,0), Angle(0,0,0)
        local m = vm:GetBoneMatrix(bone)
        if (m) then
            pos, ang = m:GetTranslation(), m:GetAngle()
        end
         
        if (self.ViewModelFlip) then
            ang.r = -ang.r // Fixes mirrored models
        end
         
        if (v.type == "Model" and ValidEntity(model)) then

            model:SetPos(pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z )
            ang:RotateAroundAxis(ang:Up(), v.angle.y)
            ang:RotateAroundAxis(ang:Right(), v.angle.p)
            ang:RotateAroundAxis(ang:Forward(), v.angle.r)

            model:SetAngles(ang)
            model:SetModelScale(v.size)
             
            if (v.material == "") then
                model:SetMaterial("")
            elseif (model:GetMaterial() != v.material) then
                model:SetMaterial( v.material )
            end
             
            if (v.skin and v.skin != model:GetSkin()) then
                model:SetSkin(v.skin)
            end
             
            if (v.bodygroup) then
                for k, v in pairs( v.bodygroup ) do
                    if (model:GetBodygroup(k) != v) then
                        model:SetBodygroup(k, v)
                    end
                end
            end
             
            if (v.surpresslightning) then
                render.SuppressEngineLighting(true)
            end
             
            render.SetColorModulation(v.color.r/255, v.color.g/255, v.color.b/255)
            render.SetBlend(v.color.a/255)
            model:DrawModel()
            render.SetBlend(1)
            render.SetColorModulation(1, 1, 1)
             
            if (v.surpresslightning) then
                render.SuppressEngineLighting(false)
            end
             
        elseif (v.type == "Sprite" and sprite) then
             
            local drawpos = pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z
            render.SetMaterial(sprite)
            render.DrawSprite(drawpos, v.size.x, v.size.y, v.color)
             
        elseif (v.type == "Quad" and v.draw_func) then
             
            local drawpos = pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z
            ang:RotateAroundAxis(ang:Up(), v.angle.y)
            ang:RotateAroundAxis(ang:Right(), v.angle.p)
            ang:RotateAroundAxis(ang:Forward(), v.angle.r)
             
            cam.Start3D2D(drawpos, ang, v.size)
                v.draw_func( self )
            cam.End3D2D()

        end
         
    end
     
end

SWEP.wRenderOrder = nil
function SWEP:DrawWorldModel()
     
    if (self.ShowWorldModel == nil or self.ShowWorldModel) then
        self:DrawModel()
    end
     
    if (!self.WElements) then return end
     
    if (!self.wRenderOrder) then

        self.wRenderOrder = {}

        for k, v in pairs( self.WElements ) do
            if (v.type == "Model") then
                table.insert(self.wRenderOrder, 1, k)
            elseif (v.type == "Sprite" or v.type == "Quad") then
                table.insert(self.wRenderOrder, k)
            end
        end

    end
     
    local opos, oang = self:GetPos(), self:GetAngles()
    local bone_ent

    if (ValidEntity(self.Owner)) then
        bone_ent = self.Owner
    else
        // when the weapon is dropped
        bone_ent = self
    end
     
    local bone = bone_ent:LookupBone("ValveBiped.Bip01_R_Hand")
    if (bone) then
        local m = bone_ent:GetBoneMatrix(bone)
        if (m) then
            opos, oang = m:GetTranslation(), m:GetAngle()
        end
    end
     
    for k, name in pairs( self.wRenderOrder ) do
     
        local v = self.WElements[name]
        if (!v) then self.wRenderOrder = nil break end
     
        local model = v.modelEnt
        local sprite = v.spriteMaterial

        local pos, ang = Vector(opos.x, opos.y, opos.z), Angle(oang.p, oang.y, oang.r)

        if (v.type == "Model" and ValidEntity(model)) then

            model:SetPos(pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z )
            ang:RotateAroundAxis(ang:Up(), v.angle.y)
            ang:RotateAroundAxis(ang:Right(), v.angle.p)
            ang:RotateAroundAxis(ang:Forward(), v.angle.r)

            model:SetAngles(ang)
            model:SetModelScale(v.size)
             
            if (v.material == "") then
                model:SetMaterial("")
            elseif (model:GetMaterial() != v.material) then
                model:SetMaterial( v.material )
            end
             
            if (v.skin and v.skin != model:GetSkin()) then
                model:SetSkin(v.skin)
            end
             
            if (v.bodygroup) then
                for k, v in pairs( v.bodygroup ) do
                    if (model:GetBodygroup(k) != v) then
                        model:SetBodygroup(k, v)
                    end
                end
            end
             
            if (v.surpresslightning) then
                render.SuppressEngineLighting(true)
            end
             
            render.SetColorModulation(v.color.r/255, v.color.g/255, v.color.b/255)
            render.SetBlend(v.color.a/255)
            model:DrawModel()
            render.SetBlend(1)
            render.SetColorModulation(1, 1, 1)
             
            if (v.surpresslightning) then
                render.SuppressEngineLighting(false)
            end
             
        elseif (v.type == "Sprite" and sprite) then
             
            local drawpos = pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z
            render.SetMaterial(sprite)
            render.DrawSprite(drawpos, v.size.x, v.size.y, v.color)
             
        elseif (v.type == "Quad" and v.draw_func) then
             
            local drawpos = pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z
            ang:RotateAroundAxis(ang:Up(), v.angle.y)
            ang:RotateAroundAxis(ang:Right(), v.angle.p)
            ang:RotateAroundAxis(ang:Forward(), v.angle.r)
             
            cam.Start3D2D(drawpos, ang, v.size)
                v.draw_func( self )
            cam.End3D2D()

        end
         
    end
     
end

function SWEP:CreateModels( tab )

    if (!tab) then return end

    // Create the clientside models here because Garry says we can't do it in the render hook
    for k, v in pairs( tab ) do
        if (v.type == "Model" and v.model and v.model != "" and (!ValidEntity(v.modelEnt) or v.createdModel != v.model) and
                string.find(v.model, ".mdl") and file.Exists ("../"..v.model) ) then
             
            v.modelEnt = ClientsideModel(v.model, RENDER_GROUP_VIEW_MODEL_OPAQUE)
            if (ValidEntity(v.modelEnt)) then
                v.modelEnt:SetPos(self:GetPos())
                v.modelEnt:SetAngles(self:GetAngles())
                v.modelEnt:SetParent(self)
                v.modelEnt:SetNoDraw(true)
                v.createdModel = v.model
            else
                v.modelEnt = nil
            end
             
        elseif (v.type == "Sprite" and v.sprite and v.sprite != "" and (!v.spriteMaterial or v.createdSprite != v.sprite)
            and file.Exists ("../materials/"..v.sprite..".vmt")) then
             
            local name = v.sprite.."-"
            local params = { ["$basetexture"] = v.sprite }
            // make sure we create a unique name based on the selected options
            local tocheck = { "nocull", "additive", "vertexalpha", "vertexcolor", "ignorez" }
            for i, j in pairs( tocheck ) do
                if (v[j]) then
                    params["$"..j] = 1
                    name = name.."1"
                else
                    name = name.."0"
                end
            end

            v.createdSprite = v.sprite
            v.spriteMaterial = CreateMaterial(name,"UnlitGeneric",params)
             
        end
    end
     
end

function SWEP:RemoveModels()
    if (self.VElements) then
        for k, v in pairs( self.VElements ) do
            if (ValidEntity( v.modelEnt )) then v.modelEnt:Remove() end
        end
    end
    if (self.WElements) then
        for k, v in pairs( self.WElements ) do
            if (ValidEntity( v.modelEnt )) then v.modelEnt:Remove() end
        end
    end
    self.VElements = nil
    self.WElements = nil
end

SWEP.HoldType = “shotgun”
SWEP.ViewModelFOV = 70
SWEP.ViewModelFlip = false
SWEP.ViewModel = “models/weapons/v_shotgun.mdl”
SWEP.WorldModel = “models/weapons/w_shotgun.mdl”
SWEP.ShowViewModel = true
SWEP.ShowWorldModel = true
SWEP.ViewModelBonescales = {[“ValveBiped.Gun”] = Vector(0.009, 0.009, 0.009)}
SWEP.IronSightsPos = Vector(-9.24, 0, 2.24)
SWEP.IronSightsAng = Vector(0, 0, 0)
SWEP.VElements = {
[“some_unique_name”] = { type = “Model”, model = “models/dow2/ork_weapons/default/big_shoota.mdl”, bone = “ValveBiped.Gun”, pos = Vector(-2.889, 7.888, -28.056), angle = Angle(-3.806, 178.561, 88.813), size = Vector(0.5, 0.5, 0.5), color = Color(255, 255, 255, 255), surpresslightning = false, material = “”, skin = 0, bodygroup = {} }
}
SWEP.WElements = {
[“some_unique_name”] = { type = “Model”, model = “models/dow2/ork_weapons/default/big_shoota.mdl”, pos = Vector(-0.431, -0.82, 1.381), angle = Angle(-175.331, -83.026, 2.519), size = Vector(0.5, 0.5, 0.5), color = Color(255, 255, 255, 255), surpresslightning = false, material = “”, skin = 0, bodygroup = {} }
}[/lua]

Have you checked console for errors? The weapon doesn’t show up if a error has been made.
Also, do you want it spawnable for normal people, but not for admins?

I want it spawnable for anyone for, as I said, personal use.

[editline]26th February 2011[/editline]

And I can’t seem to fix all the errors, it keeps saying that it expects ‘ends’ and what not, even though that part that’s glitchy is a copied base for a custom viewmodel.