"attempt to index global 'SWEP' (a nil value)." I've google searched and I couldn't find a solution
3 replies, posted
I'm trying to make a weapon for my TTT server but I'm getting this
[code][ERROR] lua/weapons/weapon_launchcannon.lua:17: attempt to index global 'SWEP' (a nil value)
1. unknown - lua/weapons/weapon_launchcannon.lua:17
[/code]
I've searched google over and over and looked at weapon_fists.lua and the weapon base but I have no idea why I'm getting this error. I'm loading it via "lua_openscript weapons/weapon_launchcannon.lua"
Here's the code
[code]if SERVER then
AddCSLuaFile()
resource.AddFile("materials/VGUI/ttt/icon_destroyer_launchcannon.vmt")
end
if CLIENT then
SWEP.PrintName = "Launch Cannon"
SWEP.Slot = 7 -- add 1 to get the slot number key
SWEP.ViewModelFOV = 72
SWEP.ViewModelFlip = true
end
-- Always derive from weapon_tttbase.
--- Standard GMod values
SWEP.Base = "weapon_base"
SWEP.Primary.Automatic = true
SWEP.Primary.Damage = 0
SWEP.Primary.Ammo = "HelicopterGun"
SWEP.Primary.NumShots = 0
SWEP.Primary.Delay = 1
SWEP.Primary.ClipSize = 1
SWEP.Primary.ClipMax = 1
SWEP.Primary.DefaultClip = 1
SWEP.ViewModel = "models/weapons/c_rpg.mdl"
SWEP.WorldModel = "models/weapons/w_rocket_launcher.mdl"
function SWEP:Initialize()
self:SetHoldType("rpg")
end
--- TTT config values
-- Kind specifies the category this weapon is in. Players can only carry one of
-- each. Can be: WEAPON_... MELEE, PISTOL, HEAVY, NADE, CARRY, EQUIP1, EQUIP2 or ROLE.
-- Matching SWEP.Slot values: 0 1 2 3 4 6 7 8
SWEP.Kind = WEAPON_EQUIP2
-- If AutoSpawnable is true and SWEP.Kind is not WEAPON_EQUIP1/2, then this gun can
-- be spawned as a random weapon. Of course this AK is special equipment so it won't,
-- but for the sake of example this is explicitly set to false anyway.
SWEP.AutoSpawnable = false
-- The AmmoEnt is the ammo entity that can be picked up when carrying this gun.
-- CanBuy is a table of ROLE_* entries like ROLE_TRAITOR and ROLE_DETECTIVE. If
-- a role is in this table, those players can buy this.
SWEP.CanBuy = { ROLE_TRAITOR, ROLE_DETECTIVE }
-- InLoadoutFor is a table of ROLE_* entries that specifies which roles should
-- receive this weapon as soon as the round starts. In this case, none.
SWEP.InLoadoutFor = nil
-- If LimitedStock is true, you can only buy one per round.
SWEP.LimitedStock = false
-- If NoSights is true, the weapon won't have ironsights
SWEP.NoSights = true
-- Equipment menu information is only needed on the client
if CLIENT then
-- Path to the icon material
SWEP.Icon = "VGUI/ttt/icon_destroyer_launchcannon.vmt"
-- Text shown in the equip menu
SWEP.EquipMenuData = {
type = "Launch Cannon",
desc = "Aim at the ground to launch yourself!"
};
end
function SWEP:shoot()
local tr = self.Owner:GetEyeTrace()
self:EmitSound(Sound("weapons/grenade_launcher1.wav"))
if (!SERVER) then return end
local ent = ents.Create("prop_physics")
ent:SetModel("props_junk/PopCan01a.mdl")
ent:SetPos(self.Owner:EyePos() + (self.OwnerGetAimVector()* 16))
ent:SetAngles(self.Owner:EyeAngles())
ent:Spawn()
local phys = ent:GetPhysicsObject()
if !(phys && IsValid(phys)) then ent:Remove() return end
phys:ApplyForceCenter(self.Owner:GetAimVector():GetNormalized()* math.pow(tr.HitPos:Length(), 3))
end
function SWEP:PrimaryAttack()
self:shoot()
end
function SWEP:Think()
end
function SWEP:Reload()
end
-- Tell the server that it should download our icon to clients.
[/code]
Loading it with lua_openscript will break it. You need to put it in the weapons folder, restart the server/game and autorefresh should let you keep editing it while reloading anything you do to it.
thanks, but is there a reason as to why lua_openscript doesn't work? or is it broken in itself
[QUOTE=343N;48787704]thanks, but is there a reason as to why lua_openscript doesn't work? or is it broken in itself[/QUOTE]
lua_openscript doesn't set proper context (the ENT/SWEP/etc. variables) for stuff, it's effectively doing a RunString() on file contents.
Sorry, you need to Log In to post a reply to this thread.