• Check total entities and entity spawntime
    5 replies, posted
I'm currently working on a script, and it spawns a certain weapon after a NPC is killed: [code] local WEAPONDROPS= { --100% "weapon_ar2", "weapon_smg1", "weapon_shotgun" } hook.Add("OnNPCKilled", "DropWeaponOnNPCKilled", function(npc, killer) local randomitem = nil chance = math.random(1,89) if chance > 0 && chance <= 89 then randomitem = table.Random(WEAPONDROPS) end item = ents.Create(randomitem) item:SetOwner(World) item:SetPos(npc:LocalToWorld(npc:OBBCenter())) item:Spawn() end) [/code] What I need to be able to do is check the max amount of those entities spawned, and if it's over 7 then it doesn't spawn any more. I also need to create spawntime for the entity created. After a certain amount of seconds the entity is destroyed, to make room for more. I've tried to use [code] for k, ent in pairs (ents.GetAll()) do if ent:IsValid() then if (ent:GetClass() == "weapon_ar2" or ent:GetClass() == "weapon_smg1" or ent:GetClass() == "weapon_shotgun") > 7 then return end end end end [/code] to check the entities, but it gives me this error: "attempt to compare number with boolean".
[code]if #ents.FindByClass("weapon_ar2") + #ents.FindByClass("weapon_smg1") + #ents.FindByClass("weapon_shotgun") > 7 then end[/code] Like that?
[QUOTE=Entoros;19985566][code]if #ents.FindByClass("weapon_ar2") + #ents.FindByClass("weapon_smg1") + #ents.FindByClass("weapon_shotgun") > 7 then end[/code] Like that?[/QUOTE] That worked, thanks. I just need a spawntime for the entities now.
What do you mean by spawntime? Like, delay the entity from spawning?
[lua] SafeRemoveEntityDelayed( ent, 10 ) [/lua] That will remove an entity after 10 seconds
[QUOTE=Entoros;19992660]What do you mean by spawntime? Like, delay the entity from spawning?[/QUOTE] I mean something that will destroy the entity after a certain amount of seconds of it being spawned. In example: after I would kill a NPC and it would drop a AR2. After 20 seconds of it not being picked up, it gets destroyed. Edit: I tried making this on my own, but mine has one flaw: it doesn't delete the entity 20 seconds after it was spawned. It just deletes all entities in "EntityDelete" every 20 seconds. An example of this being a problem, is if I just killed a NPC and it dropped a weapon, the counter could be at 19 seconds and it would delete the weapon before I could have a chance to pick it up. [code] NextCheck = 0 function DeleteWeapons() if CurTime() >= NextCheck then local EntityDelete = ents.FindByClass("weapon_shotgun") EntityDelete = table.Add(EntityDelete, ents.FindByClass("weapon_shotgun")) EntityDelete = table.Add(EntityDelete, ents.FindByClass("weapon_smg1")) EntityDelete = table.Add(EntityDelete, ents.FindByClass("weapon_ar2")) for _, ent in pairs(EntityDelete) do ent:Remove() end NextCheck = CurTime() + 20 end end hook.Add("Think", "DeleteWeps", DeleteWeapons) [/code]
Sorry, you need to Log In to post a reply to this thread.