SWEP ERRORS HELP!

it works very well, but it is able to shoot without ammo…

It should takes ammo and can’t shot if has no ammo , but it is not. And appears error [weapons\weapon_ttt_headcrablauncher\shared.lua:70] attempt to index global ‘LocalPlayer’ (a function value)
here is the code

[lua]
– *****
– Version with English.lua tags (Requires editing English.lua, see attached TXT)
– Kudos to myself (Stu Alpha) for getting the basic weapon working ingame
– My name is stu alpha and I can’t add names or descriptions -stone
– Plus I made it better
– *****

if SERVER then
AddCSLuaFile( “shared.lua” )
end

SWEP.HoldType = “rpg”

if CLIENT then
SWEP.PrintName = “Headcrab Launcher”
SWEP.Slot = 6

SWEP.EquipMenuData = {
type = “EXTREME WEAPON”,
– Insert AWP Description here
desc = “Your…a…nothing”
};

– Insert AWP Icon here
SWEP.Icon = “VGUI/ttt/icon_headcrabs”
end

if SERVER then

resource.AddFile(“materials/VGUI/ttt/icon_headcrabs.vmt”)

end

SWEP.Base = “weapon_tttbase”
SWEP.Spawnable = false
SWEP.AdminSpawnable = true
SWEP.DrawCrosshair = false
SWEP.NoSights = true
SWEP.Kind = WEAPON_EQUIP
SWEP.CanBuy = {ROLE_TRAITOR}
SWEP.LimitedStock = true
SWEP.WeaponID = RPG

SWEP.Primary.ClipSize = 1
SWEP.Primary.DefaultClip = 1
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = “none”
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = “none”

SWEP.ViewModel = “models/weapons/v_RPG.mdl”
SWEP.WorldModel = “models/weapons/w_rocket_launcher.mdl”

local ShootSoundFire = Sound( “Airboat.FireGunHeavy” )
local ShootSoundFail = Sound( “WallHealth.Deny” )
local YawIncrement = 20
local PitchIncrement = 10

if CLIENT then
language.Add (“Undone_CrabLaunch”, “Undone Headcrab Canister.”)
end

function SWEP:PrimaryAttack(bSecondary)

if LocalPlayer:GetAmmoCaount(LocalPlayer():GetActiveWeapon():GetPrimaryAmmoType()) <= 0 then return end


local tr = self.Owner:GetEyeTrace()
self:ShootEffects(self)
self:TakePrimaryAmmo(1)
if (SERVER) then 
    local aBaseAngle = tr.HitNormal:Angle()
    local aBasePos = tr.HitPos
    local bScanning = true
    local iPitch = 10
    local iYaw = -180
    local iLoopLimit = 0
    local iProcessedTotal = 0
    local tValidHits = {} 
	


	

    while (bScanning == true && iLoopLimit < 500) do
        iYaw = iYaw + YawIncrement
        iProcessedTotal = iProcessedTotal + 1        
        if (iYaw >= 180) then
            iYaw = -180
            iPitch = iPitch - PitchIncrement
        end
        
        local tLoop = util.QuickTrace( aBasePos, (aBaseAngle+Angle(iPitch,iYaw,0)):Forward()*40000 )
        if (tLoop.HitSky || bSecondary) then 
            table.insert(tValidHits,tLoop) 
        end
            
        if (iPitch <= -80) then
            bScanning = false
        end
        iLoopLimit = iLoopLimit + 1
    end
    
    local iHits = table.Count(tValidHits)
    if (iHits > 0) then
        local iRand = math.random(1,iHits) 
        local tRand = tValidHits[iRand]        
        
        local ent = ents.Create( "env_headcrabcanister" )
        ent:SetPos( aBasePos )
        ent:SetAngles( (tRand.HitPos-tRand.StartPos):Angle() )
        ent:SetKeyValue( "HeadcrabType", math.random(0,2) )
        ent:SetKeyValue( "HeadcrabCount", math.random(2,5) )
        ent:SetKeyValue( "FlightSpeed", math.random(2500,6000) )
        ent:SetKeyValue( "FlightTime", math.random(2,5) )
        ent:SetKeyValue( "Damage", math.random(50,90) )
        ent:SetKeyValue( "DamageRadius", math.random(300,512) )
        ent:SetKeyValue( "SmokeLifetime", math.random(5,10) )
        ent:SetKeyValue( "StartingHeight",  1000 )
        local iSpawnFlags = 8192
        if (bSecondary) then iSpawnFlags = iSpawnFlags + 4096 end //If Secondary, spawn impacted.
        ent:SetKeyValue( "spawnflags", iSpawnFlags )
        
        ent:Spawn()
        
        ent:Input("FireCanister", self.Owner, self.Owner)

        undo.Create("CrabLaunch")
            undo.AddEntity( ent )
            undo.SetPlayer( self.Owner )
            undo.AddFunction(function(undo)
                for k, v in pairs(ents.FindByClass("npc_headcrab*"))do 
                    if (v:GetOwner() == ent) then v:Remove() end
                end
            end)
        undo.Finish()
        self:EmitSound( ShootSoundFire )
    else
        self:EmitSound( ShootSoundFail )
    end
    tLoop = nil
    tValidHits = nil
end

end

function SWEP:ShouldDropOnDie()
return false
end

[/lua]

Line 70: You missed the parentheses after LocalPlayer and misspelled Count.

[lua]
if LocalPlayer:GetAmmoCaount
[/lua]

Should be:

[lua]
if LocalPlayer():GetAmmoCount
[/lua]

You forgot (), should be:

[lua]
if LocalPlayer():GetAmmoCount(parahere) then
[/lua]

[lua]

function SWEP:PrimaryAttack(bSecondary)

if LocalPlayer():GetAmmoCount((LocalPlayer():GetActiveWeapon():GetPrimaryAmmoType()) <= 0) then 

return  
end




local tr = self.Owner:GetEyeTrace()
self:ShootEffects(self)
self:TakePrimaryAmmo(1)
if (SERVER) then 
    local aBaseAngle = tr.HitNormal:Angle()
    local aBasePos = tr.HitPos
    local bScanning = true
    local iPitch = 10
    local iYaw = -180
    local iLoopLimit = 0
    local iProcessedTotal = 0
    local tValidHits = {} 

[/lua]

is it right?

Yeah, but cyw960517 could probably work that out :v:

Anyway, i’ve just noticed another problem. Are you trying to get the ammo in the weapon or just the ammo being carried? You should really be using:

[lua]
if LocalPlayer():GetActiveWeapon():Clip1() <= 0 then
self:Reload() --If they run out of ammo then try to fire, reload automatically. Remove this if you don’t want it.
return false
end
[/lua]

[lua]

function SWEP:PrimaryAttack(bSecondary)

if LocalPlayer():GetAmmoCount((LocalPlayer():GetActiveWeapon():GetPrimaryAmmoType()) <= 0) then

return

end

local tr = self.Owner:GetEyeTrace()

self:ShootEffects(self)

self:TakePrimaryAmmo(1)

if (SERVER) then

local aBaseAngle = tr.HitNormal:Angle()

local aBasePos = tr.HitPos

local bScanning = true

local iPitch = 10

local iYaw = -180

local iLoopLimit = 0

local iProcessedTotal = 0

local tValidHits = {}
[/lua]

the code was not worked.

And i have no idea what is that mean (trying to get the ammo in the weapon or just the ammo being carried)

I just want to make this be able to shoot only one bullet.

And It was not worked too

[lua]

function SWEP:PrimaryAttack(bSecondary)

if LocalPlayer():GetActiveWeapon():Clip1() &lt;= 0 then

self:Reload() --If they run out of ammo then try to fire, reload automatically. Remove this if you don't want it. 

return false 

end




local tr = self.Owner:GetEyeTrace()
self:ShootEffects(self)
self:TakePrimaryAmmo(1)
if (SERVER) then 
    local aBaseAngle = tr.HitNormal:Angle()
    local aBasePos = tr.HitPos
    local bScanning = true
    local iPitch = 10
    local iYaw = -180
    local iLoopLimit = 0
    local iProcessedTotal = 0
    local tValidHits = {} 

[/lua]

weapon:GetAmmoCount() only includes the ammo that the player has (the small number on your HUD). weapon:Clip1() returns the amount of ammuntion in the current clip (the big number on your HUD), and that’s what you’ll be needing.

I’ll have a look at the rest of the script…

[editline]10th July 2011[/editline]
Do you want it so it can only fire it once then it’s useless or so you have to reload before you can use it again?

Thanks! i will check your post :smiley:

He wants it soyou can only shoot it once.

Try this:

[lua]
– *****
– Version with English.lua tags (Requires editing English.lua, see attached TXT)
– Kudos to myself (Stu Alpha) for getting the basic weapon working ingame
– My name is stu alpha and I can’t add names or descriptions -stone
– Plus I made it better
– *****

if SERVER then
AddCSLuaFile(“shared.lua”)
SWEP.Weight = 5
resource.AddFile(“materials/VGUI/ttt/icon_headcrabs.vmt”)

elseif CLIENT then
SWEP.PrintName = “Headcrab Launcher”
SWEP.Slot = 5
SWEP.SlotPos = 3
SWEP.Author = “NAME”
SWEP.Instructions = “INSTRUCTIONS”
SWEP.DrawCrosshair = false

SWEP.EquipMenuData = {
  type = "EXTREME WEAPON",
  desc = "Your.....a....nothing"

}

– Insert AWP Icon here
SWEP.Icon = “VGUI/ttt/icon_headcrabs”
end

SWEP.Base = “weapon_tttbase”
SWEP.Spawnable = false
SWEP.AdminSpawnable = true
SWEP.ViewModel = “models/weapons/v_RPG.mdl”
SWEP.WorldModel = “models/weapons/w_rocket_launcher.mdl”

SWEP.NoSights = true
SWEP.Kind = WEAPON_EQUIP
SWEP.CanBuy = {ROLE_TRAITOR}
SWEP.LimitedStock = true
SWEP.WeaponID = RPG

SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = -1
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = “none”
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = “none”

local ShootSoundFire = Sound(“Airboat.FireGunHeavy”)
local ShootSoundFail = Sound(“WallHealth.Deny”)
local YawIncrement = 20
local PitchIncrement = 10

if CLIENT then language.Add(“Undone_CrabLaunch”, “Undone Headcrab Canister.”) end

function SWEP:Initialize() if SERVER then self:SetWeaponHoldType(self.HoldType) end self:SetNWBool(“Used”, false) end

function SWEP:PrimaryAttack(bSecondary)
if self:GetNWBool(“Used”, false) then return false end

local tr = self.Owner:GetEyeTrace()
local aBaseAngle = tr.HitNormal:Angle()
local aBasePos = tr.HitPos
local bScanning = true
local iPitch = 10
local iYaw = -180
local iLoopLimit = 0
local iProcessedTotal = 0
local tValidHits = {}

while (bScanning && iLoopLimit &lt; 500) do
    iYaw = iYaw + YawIncrement
    iProcessedTotal = iProcessedTotal + 1       
    if (iYaw &gt;= 180) then
        iYaw = -180
        iPitch = iPitch - PitchIncrement
    end
    
    local tLoop = util.QuickTrace(aBasePos, (aBaseAngle+Angle(iPitch,iYaw,0)):Forward()*40000)
    if (tLoop.HitSky || bSecondary) then
        table.insert(tValidHits,tLoop)
    end
    
    if (iPitch &lt;= -80) then
        bScanning = false
    end
    iLoopLimit = iLoopLimit + 1
end

local iHits = table.Count(tValidHits)
if (iHits &gt; 0) then
    self:SetNWBool("Used", true)
    self:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
    if SERVER then
        self.Owner:SetAnimation(PLAYER_ATTACK1)
        local iRand = math.random(1,iHits)
        local tRand = tValidHits[iRand]       
        
        local ent = ents.Create("env_headcrabcanister")
        ent:SetPos(aBasePos)
        ent:SetAngles((tRand.HitPos-tRand.StartPos):Angle())
        ent:SetKeyValue("HeadcrabType", math.random(0,2))
        ent:SetKeyValue("HeadcrabCount", math.random(2,5))
        //ent:SetKeyValue("HeadcrabCount", 0)
        ent:SetKeyValue("FlightSpeed", math.random(2500,6000))
        ent:SetKeyValue("FlightTime", math.random(2,5))
        ent:SetKeyValue("Damage", math.random(50,90))
        ent:SetKeyValue("DamageRadius", math.random(300,512))
        ent:SetKeyValue("SmokeLifetime", math.random(5,10))
        ent:SetKeyValue("StartingHeight",  1000)
        local iSpawnFlags = 8192
        if (bSecondary) then iSpawnFlags = iSpawnFlags + 4096 end //If Secondary, spawn impacted.
        ent:SetKeyValue("spawnflags", iSpawnFlags)
        
        ent:Spawn()
        
        ent:Input("FireCanister", self.Owner, self.Owner)
        
        undo.Create("CrabLaunch")
            undo.AddEntity(ent)
            undo.SetPlayer(self.Owner)
            undo.AddFunction(function(undo)
                for k, v in pairs(ents.FindByClass("npc_headcrab*"))do
                    if (v:GetOwner() == ent) then v:Remove() end
                end
            end)
        undo.Finish()
        self:EmitSound(ShootSoundFire)
    end
else
    self:EmitSound(ShootSoundFail)
end
tLoop = nil
tValidHits = nil
return true

end

function SWEP:ShouldDropOnDie()
return false
end
[/lua]