Think hook not able to use GetName()?

[lua]function think()
local all = ents.GetAll()

for _,v in pairs(all) do
	if v:GetName() == "nectar_cap_red" then
		RedCap = v
	if v:GetName() == "nectar_cap_blue" then
		BlueCap = v

if RedCap:IsValid() and BlueCap:IsValid() then
	local minr, maxr = RedCap:WorldSpaceAABB()
	local minb, maxb = RedCap:WorldSpaceAABB()
	local in_r = ents.FindInBox(minr, maxr)
	local in_b = ents.FindInBox(minb, maxb)
	for k,v in pairs(in_r) do
		if v:GetClass() != "ants_nectar" then
			table.remove(in_r, k)
			k = k - 1
	for k,v in pairs(in_b) do
		if v:GetClass() != "ants_nectar" then
			table.remove(in_b, k)
			k = k - 1
	team.SetScore(1, #in_r)
	team.SetScore(2, #in_b)
	print("no cap zones!")

hook.Add(“Think”, “think”, think)[/lua]

It’s erroring with v:GetName(). Saying it’s a nil method. Why is that? I thought Think would be able to use serverside functions…

Hook 'think' Failed: ants\gamemode\shared.lua:301: attempt to call method 'GetName' (a nil value)

Are you trying to get the entity’s class? You should try v:GetClass().

Don’t put this is shared, it will try to run it on both the server and the client. And GetName doesn’t exist on the client.

Anyway, from the looks of it, it looks like you’d do this only serverside, so put it somewhere in init.lua.


And give a unique name to your Think hook, I’m not sure “think” is unique.

Ok I can do that. Thanks!

Also - no, I’m not trying to get the class. It’s a trigger_multiple named nectar_cap_red and nectar_cap_blue that functions as the capture zone for nectar drops.