• TTT Could not spawn all loadout weapons for "NAME"
    8 replies, posted
Hey guys. I have a problem with my custom crowbar skins (pointshop). Everybody spawns with one of them without buying it! (standart weapon: crowbar) Everybody get this : Could not spawn all loadout weapons for "Name" Pointshop shared.lua (Item, Plank) [CODE]ITEM.Name = 'Plank' ITEM.Price = 10000 ITEM.Model = 'models/weapons/w_plank.mdl' ITEM.SingleUse = false ITEM.WeaponClass = 'weapon_ttt_plank' function ITEM:OnEquip(ply) ply:StripWeapon('weapon_zm_improvised') ply:Give(self.WeaponClass) ply:SelectWeapon(self.WeaponClass) end function ITEM:OnHolster(ply) ply:StripWeapon(self.WeaponClass) ply:Give('weapon_zm_improvised') ply:SelectWeapon('weapon_zm_improvised') end[/CODE] Sorry for my ugly english! (everybody spawns with the plank swep)
I spawned my custom melee sweps separately and cleared my weapons. All of them are working but I want it so that the players spawn with the normal crowbar!
so what do you need help with do you need the pointshop code if so i can suppty you with that i had this working for awile then went to NO DL so i took the custom weapons out
I want crowbar replacements. My problem is that everybody spawns with the "Plank" <- They did not buy it! + I get this (console): Could not spawn all loadout weapons for "PLAYERS NAME", will retry.
that would have to do with your SWEP i think it makes it so that they spawn with that every round look for something where it says SWEP.InLoadoutFor = {} make sure nobodys name is in that like inno detective and traitor if you dont want them to spawn with it and also did you copy these files from the crowbar swep that came with gmod and just edit the models
Post your weapon code in [lua] tags.
One of them!: [lua] if SERVER then AddCSLuaFile( "shared.lua" ) end SWEP.HoldType = "melee" if CLIENT then SWEP.PrintName = "Plank" SWEP.Slot = 0 SWEP.Icon = "VGUI/ttt/icon_cbar" SWEP.ViewModelFOV = 54 end SWEP.UseHands = true SWEP.Base = "weapon_tttbase" SWEP.ViewModel = "models/weapons/v_plank.mdl" SWEP.WorldModel = "models/weapons/w_plank.mdl" SWEP.Weight = 5 SWEP.DrawCrosshair = false SWEP.ViewModelFlip = false SWEP.Primary.Damage = 20 SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = -1 SWEP.Primary.Automatic = true SWEP.Primary.Delay = 0.5 SWEP.Primary.Ammo = "none" SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = true SWEP.Secondary.Ammo = "none" SWEP.Secondary.Delay = 5 SWEP.Kind = WEAPON_MELEE SWEP.WeaponID = AMMO_CROWBAR SWEP.InLoadoutFor = {ROLE_INNOCENT, ROLE_TRAITOR, ROLE_DETECTIVE} SWEP.NoSights = true SWEP.IsSilent = true SWEP.AutoSpawnable = false SWEP.AllowDelete = false -- never removed for weapon reduction SWEP.AllowDrop = false local sound_single = Sound("Weapon_Crowbar.Single") local sound_open = Sound("DoorHandles.Unlocked3") if SERVER then CreateConVar("ttt_crowbar_unlocks", "1", FCVAR_ARCHIVE) CreateConVar("ttt_crowbar_pushforce", "395", FCVAR_NOTIFY) end -- only open things that have a name (and are therefore likely to be meant to -- open) and are the right class. Opening behaviour also differs per class, so -- return one of the OPEN_ values local function OpenableEnt(ent) local cls = ent:GetClass() if ent:GetName() == "" then return OPEN_NO elseif cls == "prop_door_rotating" then return OPEN_ROT elseif cls == "func_door" or cls == "func_door_rotating" then return OPEN_DOOR elseif cls == "func_button" then return OPEN_BUT elseif cls == "func_movelinear" then return OPEN_NOTOGGLE else return OPEN_NO end end local function CrowbarCanUnlock(t) return not GAMEMODE.crowbar_unlocks or GAMEMODE.crowbar_unlocks[t] end -- will open door AND return what it did function SWEP:OpenEnt(hitEnt) -- Get ready for some prototype-quality code, all ye who read this if SERVER and GetConVar("ttt_crowbar_unlocks"):GetBool() then local openable = OpenableEnt(hitEnt) if openable == OPEN_DOOR or openable == OPEN_ROT then local unlock = CrowbarCanUnlock(openable) if unlock then hitEnt:Fire("Unlock", nil, 0) end if unlock or hitEnt:HasSpawnFlags(256) then if openable == OPEN_ROT then hitEnt:Fire("OpenAwayFrom", self.Owner, 0) end hitEnt:Fire("Toggle", nil, 0) else return OPEN_NO end elseif openable == OPEN_BUT then if CrowbarCanUnlock(openable) then hitEnt:Fire("Unlock", nil, 0) hitEnt:Fire("Press", nil, 0) else return OPEN_NO end elseif openable == OPEN_NOTOGGLE then if CrowbarCanUnlock(openable) then hitEnt:Fire("Open", nil, 0) else return OPEN_NO end end return openable else return OPEN_NO end end function SWEP:PrimaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) if not IsValid(self.Owner) then return end if self.Owner.LagCompensation then -- for some reason not always true self.Owner:LagCompensation(true) end local spos = self.Owner:GetShootPos() local sdest = spos + (self.Owner:GetAimVector() * 70) local tr_main = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL}) local hitEnt = tr_main.Entity self.Weapon:EmitSound(sound_single) if IsValid(hitEnt) or tr_main.HitWorld then self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER ) if not (CLIENT and (not IsFirstTimePredicted())) then local edata = EffectData() edata:SetStart(spos) edata:SetOrigin(tr_main.HitPos) edata:SetNormal(tr_main.Normal) --edata:SetSurfaceProp(tr_main.MatType) --edata:SetDamageType(DMG_CLUB) edata:SetEntity(hitEnt) if hitEnt:IsPlayer() or hitEnt:GetClass() == "prop_ragdoll" then util.Effect("BloodImpact", edata) -- does not work on players rah --util.Decal("Blood", tr_main.HitPos + tr_main.HitNormal, tr_main.HitPos - tr_main.HitNormal) -- do a bullet just to make blood decals work sanely -- need to disable lagcomp because firebullets does its own self.Owner:LagCompensation(false) self.Owner:FireBullets({Num=1, Src=spos, Dir=self.Owner:GetAimVector(), Spread=Vector(0,0,0), Tracer=0, Force=1, Damage=0}) else util.Effect("Impact", edata) end end else self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER ) end if CLIENT then -- used to be some shit here else -- SERVER -- Do another trace that sees nodraw stuff like func_button local tr_all = nil tr_all = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner}) self.Owner:SetAnimation( PLAYER_ATTACK1 ) if hitEnt and hitEnt:IsValid() then if self:OpenEnt(hitEnt) == OPEN_NO and tr_all.Entity and tr_all.Entity:IsValid() then -- See if there's a nodraw thing we should open self:OpenEnt(tr_all.Entity) end local dmg = DamageInfo() dmg:SetDamage(self.Primary.Damage) dmg:SetAttacker(self.Owner) dmg:SetInflictor(self.Weapon) dmg:SetDamageForce(self.Owner:GetAimVector() * 1500) dmg:SetDamagePosition(self.Owner:GetPos()) dmg:SetDamageType(DMG_CLUB) hitEnt:DispatchTraceAttack(dmg, spos + (self.Owner:GetAimVector() * 3), sdest) -- self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER ) -- self.Owner:TraceHullAttack(spos, sdest, Vector(-16,-16,-16), Vector(16,16,16), 30, DMG_CLUB, 11, true) -- self.Owner:FireBullets({Num=1, Src=spos, Dir=self.Owner:GetAimVector(), Spread=Vector(0,0,0), Tracer=0, Force=1, Damage=20}) else -- if tr_main.HitWorld then -- self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER ) -- else -- self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER ) -- end -- See if our nodraw trace got the goods if tr_all.Entity and tr_all.Entity:IsValid() then self:OpenEnt(tr_all.Entity) end end end if self.Owner.LagCompensation then self.Owner:LagCompensation(false) end end function SWEP:SecondaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextSecondaryFire( CurTime() + 0.1 ) local tr = self.Owner:GetEyeTrace(MASK_SHOT) if tr.Hit and IsValid(tr.Entity) and tr.Entity:IsPlayer() and (self.Owner:EyePos() - tr.HitPos):Length() < 100 then local ply = tr.Entity if SERVER and (not ply:IsFrozen()) then local pushvel = tr.Normal * GetConVar("ttt_crowbar_pushforce"):GetFloat() -- limit the upward force to prevent launching pushvel.z = math.Clamp(pushvel.z, 50, 100) ply:SetVelocity(ply:GetVelocity() + pushvel) self.Owner:SetAnimation( PLAYER_ATTACK1 ) ply.was_pushed = {att=self.Owner, t=CurTime()} --, infl=self} end self.Weapon:EmitSound(sound_single) self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER ) self.Weapon:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) end end function SWEP:GetClass() return "weapon_ttt_plank" end function SWEP:OnDrop() self:Remove() end [/lua]
Remove [lua]SWEP.InLoadoutFor = {ROLE_INNOCENT, ROLE_TRAITOR, ROLE_DETECTIVE}[/lua]
Okay, wait a second :D [editline]7th February 2014[/editline] THANK YOU!!! It works now!! Thanks for helping guys!!
Sorry, you need to Log In to post a reply to this thread.