Lua Error

I need to know what ‘end’ expected (to close ‘if’ at line 45) near ‘<eof>’ means to fix my weapon.
Can someone tell me what it means?

We can only tell you what it means if you post your code.

Means you’ve got one too few "end"s in your code. You’ll have to post it for anyone to be able to tell you where the missing one’s supposed to be, though.

I made this rather quick so there might be more bugs in it.

[lua]

// Variables that are used on both client and server

SWEP.Author = “Battlepope”
SWEP.Contact = “n/a”
SWEP.Purpose = “Shooting Rockets”
SWEP.Instructions = “Primary= Shoot Rockets”

SWEP.ViewModelFOV = 54
SWEP.ViewModelFlip = false
SWEP.ViewModel = “models/weapons/v_mll.mdl”
SWEP.WorldModel = “models/weapons/w_rocket_launcher.mdl”
SWEP.AnimPrefix = “rpg”
SWEP.Category = “Other”

SWEP.Spawnable = false
SWEP.AdminSpawnable = true

SWEP.Primary.ClipSize = 1 // Size of a clip
SWEP.Primary.DefaultClip = 6 // Default number of bullets in a clip
SWEP.Primary.Automatic = false // Automatic/Semi Auto
SWEP.Primary.Ammo = “CombineCannon”

SWEP.Secondary.ClipSize = 1 // Size of a clip
SWEP.Secondary.DefaultClip = 1 // Default number of bullets in a clip
SWEP.Secondary.Automatic = false // Automatic/Semi Auto
SWEP.Secondary.Ammo = “”

function SWEP:Initialize()

end

function SWEP:Precache()
util.PrecacheSound(“NPC_Helicopter.FireRocket”)
util.PrecacheSound(“Buttons.snd14”)
end

function SWEP:Deploy()
self.Weapon:SendWeaponAnim( ACT_VM_DEPLOY )
end

function SWEP:PrimaryAttack()
if tr.Entity:GetClass() != “npc_manhack” then Fire = 1
if tr.Entity:GetClass() != “npc_strider” then Fire = 1
if tr.Entity:GetClass() != “npc_combinegunship” then Fire = 1
if tr.Entity:GetClass() != “npc_combinedropship” then Fire = 1
if tr.Entity:GetClass() != “npc_helicopter” then Fire = 1
else
Fire = 0
end

if (Fire == 1 || self:Clip1() < 2 ) then
self.Weapon:SetNextPrimaryFire( CurTime() + 1.5 )
self.Weapon:EmitSound( NPC_Helicopter.FireRocket )
self:SetClip1( self:Clip1() -1 )
self:FireRocket()
self.Weapon:TakePrimaryAmmo( 1 )
self:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self.Owner:SetAnimation( PLAYER_ATTACK1 )
self.Weapon:SetNetworkedFloat( “LastShootTime”, CurTime() )
else

    end

end
function SWEP:FireRocket()
local aim = self.Owner:GetAimVector()
local side = aim:Cross(Vector(0,0,1))
local up = side:Cross(aim)
local pos = self.Owner:GetShootPos() + aim * 24 + side * 8 + up * -1 --offsets the rocket so it spawns from the muzzle (hopefully)
local rocket = ents.Create(“bazooka_round”)
if !rocket:IsValid() then return false end
rocket:SetAngles(aim:Angle())
rocket:SetPos(pos)
rocket:SetOwner(self.Owner)
rocket:Spawn()
rocket:Activate()
rocket:SetVelocity(rocket:GetForward()*3000)
end

function SWEP:SecondaryAttack()

end

function SWEP:Reload()
if self:DefaultReload( ACT_VM_RELOAD ) then
self:EmitSound(Sound(“weapons/rpg/rpg_reload.wav”))
end

    end

end
[/lua]

And the full length lua error is:

weapons\weapon_launcher\shared.lua:93: ‘end’ expected (to close ‘if’ at line 45) near ‘<eof>’

[lua]function SWEP:PrimaryAttack()
if tr.Entity:GetClass() != “npc_manhack” then Fire = 1
if tr.Entity:GetClass() != “npc_strider” then Fire = 1
if tr.Entity:GetClass() != “npc_combinegunship” then Fire = 1
if tr.Entity:GetClass() != “npc_combinedropship” then Fire = 1
if tr.Entity:GetClass() != “npc_helicopter” then Fire = 1
else
Fire = 0
end[/lua] is very very wrong.

probably, but its hard to improve with no tips.

Not probably, is.
This is a lot better, though I don’t know why you made it so it can’t fire if it’s got a clip of more than one.
[lua]function SWEP:PrimaryAttack()
local class = self:GetOwner():GetEyeTraceNoCursor().Entity:GetClass();
if (class == “npc_manhack” or class == “npc_strider” or class == “npc_combinegunship” or
class == “npc_combinedropship” or class == “npc_helicopter”) then
return false
elseif (self:Clip1() < 2 ) then
self.Weapon:SetNextPrimaryFire( CurTime() + 1.5 )
self.Weapon:EmitSound( NPC_Helicopter.FireRocket )
self:SetClip1( self:Clip1() -1 )
self:FireRocket()
self.Weapon:TakePrimaryAmmo( 1 )
self:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self.Owner:SetAnimation( PLAYER_ATTACK1 )
self.Weapon:SetNetworkedFloat( “LastShootTime”, CurTime() )
end
end[/lua]

Ok, now one problem down, back to the original lua error.
P.S. Thank you Lexic for correcting that.

What? That was supposed to fix the error you originally stated.

It did, But I just tested the new script and it does not fire at all, even when pointed at the selected npcs.