Help with TTT SWEP

Hey I haven’t made a TTT SWEP in a REALLY long while so I thought i’d give it a shot.
So, I created this using the primary attack function but it dosnt seem to work, would anyone happen to have any pointers?




//General Settings \\
SWEP.AdminSpawnable = true                         
SWEP.ViewModelFOV = 64                          
SWEP.ViewModel = "models/props/cs_office/plant01.mdl"   
SWEP.WorldModel = "models/props/cs_office/plant01.mdl"    
SWEP.AutoSwitchTo = false             
SWEP.Slot = 6                                   
SWEP.HoldType = "Plant Disguiser Test"                      
SWEP.PrintName = "Plant Disguiser"                      
SWEP.Author = "kpj"                         
SWEP.Spawnable = true              
SWEP.AutoSwitchFrom = false                      
SWEP.Weight = 5                                     
SWEP.DrawCrosshair = true                           
SWEP.Category = "Stuffz"                      
SWEP.SlotPos = 6				                 
SWEP.DrawAmmo = true                                
SWEP.ReloadSound = "Weapon_Pistol.Reload"      
SWEP.Instructions = "Left click to disguise yourself as a Plant!"           
SWEP.Contact = "test@fuckoff.org"                   
SWEP.Purpose = "Nothing at all"      
SWEP.base = "weapon_tttbase"
SWEP.Kind = WEAPON_EQUIP1
SWEP.CanBuy = { ROLE_TRAITOR }
SWEP.AllowDrop = false
SWEP.LimitedStock = true
//General settings\\

//PrimaryFire Settings\\
SWEP.Primary.Sound = "Weapon_Pistol.Single"     
SWEP.Primary.Damage = 0                   
SWEP.Primary.TakeAmmo = 1                         
SWEP.Primary.ClipSize = 5               
SWEP.Primary.Ammo = "none"                      
SWEP.Primary.DefaultClip = 5                    
SWEP.Primary.Spread = 0.1                          
SWEP.Primary.NumberofShots = 1                     
SWEP.Primary.Automatic = false                     
SWEP.Primary.Recoil = 1                            
SWEP.Primary.Delay = 0.1                        
SWEP.Primary.Force = 10                          
//PrimaryFire settings\\

//Secondary Fire Variables\\
SWEP.Secondary.NumberofShots = 1                
SWEP.Secondary.Force = 10                       
SWEP.Secondary.Spread = 0.1                      
SWEP.Secondary.Sound = "Weapon_RPG.Single"       
SWEP.Secondary.DefaultClip = 32                 
SWEP.Secondary.Automatic = false                
SWEP.Secondary.Ammo = "Pistol"                    
SWEP.Secondary.Recoil = 1                         
SWEP.Secondary.Delay = 0.2                     
SWEP.Secondary.TakeAmmo = 1                      
SWEP.Secondary.ClipSize = 10                   
SWEP.Secondary.Damage = 0                   
//Secondary Fire Variables\\

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

//SWEP:PrimaryFire()\\
function SWEP:PrimaryAttack()
	if ( !self:CanPrimaryAttack() ) then return end
	ply:SetModel( "models/props/cs_office/plant01.mdl" )
	self:TakePrimaryAmmo(self.Primary.TakeAmmo)
end
//SWEP:PrimaryFire()\\



All help is appreciated.


function SWEP:PrimaryAttack()
 
	if ( !self:CanPrimaryAttack() ) then return end
 
	local bullet = {} 
		bullet.Num = self.Primary.NumberofShots //The number of shots fired
		bullet.Src = self.Owner:GetShootPos() //Gets where the bullet comes from
		bullet.Dir = self.Owner:GetAimVector() //Gets where you're aiming
		bullet.Spread = Vector( self.Primary.Spread * 0.1 , self.Primary.Spread * 0.1, 0)
                //The above, sets how far the bullets spread from each other. 
		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 

KPJ, you have to define ply somewhere and i’m assuming you’re using the owner of the SWEP, so in this case your PrimaryAttack function would look something like this.
[lua]
function SWEP:PrimaryAttack()
local ply = self.Owner
if (!self:CanPrimaryAttack() or !IsValid(ply)) then return end
ply:SetModel(“models/props/cs_office/plant01.mdl”)
self:TakePrimaryAmmo(1)
end
[/lua]

Ahh that makes alot of sense. Thanks!
I will test now.

[editline]19th September 2013[/editline]

Edit: Alright sorry for another post but it was glitching out a bit (sorry for spam)
but anyways, it seems that it does not show up in the traitor menu, and when I try to spawn it (with sv_cheats on) Nothing happens. There is probably 1,000,000 why this happens but if you could lead me to some pointers on something I may have missed it would be very helpful!
Thanks again.