Page 1 of 1

More Limitations on BF2? (Powerups and Timers)

Posted: Tue Mar 25, 2014 3:16 am
by LRKfm946
In my Hunger Games map, I'm using powerups that spawn via timers instead of health and ammo droids. Today I was adjusting the timers when the game started freezing at the point in the script when all of the powerup spawn timers were started. After I commented out some of the timers in the script, it stopped freezing. As far as I can tell, there's nothing wrong with my code; I literally copied and pasted the timers (the original ones were tested and fully functional) and bumped up the number in the name each time. This got me wondering: is there a hard-coded limit on the number of timers that can be running at one time in the game?

I had a similar issue with the powerups themselves. I kept getting this error in the log:

Code: Select all

Message Severity: 2
.\Source\PowerupItem.cpp(361)
Could not build PowerupItem
It showed no correlation with any particular timer or powerup. I would get a period where powerups would spawn just fine, then I'd get a few to several of these errors in a row. I got the error a lot when the powerups were first spawning, so I spread out the spawn times some more and the error occurred less frequently. Is there also a limit on the number of powerup items that can exist at the same time?
(Note: it might also be that I'm hitting the overall object limit in my map, because I have a LOT of stuff in the world)


Here are the ammo spawn functions in my lua. All of the timers have been tested and are functional (except the last few in the normal "ammospawn()" function, which seemed to be what was causing the freeze). In the game, the armorspawn() starts first, and 30 seconds later all of the other spawns are started together.
Hidden/Spoiler:
superpowers = function(self)
print("Superpowers has started.")
node1 = math.random(0,2)
print("The node for the swamp is:", node1)
node2 = math.random(3,5)
print("The node for the forest is:", node2)
node3 = math.random(6,8)
print("The node for the town is:", node3)
--node4 = math.random(9,11)
--print("The node for the mountain is:", node)

SPnodes = {node1, node2, node3}--,node4}

--local x = math.random(1,4)
--print("The area for the adrenaline is:", x, SPnodes[x])
--sammo_spawn4 = GetPathPoint("special_ammo_spawn", 3)
--table.remove(SPnodes, x)
local x = math.random(3)
print("The area for the full restore is:", x, SPnodes[x])
sammo_spawn1 = GetPathPoint("special_ammo_spawn", SPnodes[x])
table.remove(SPnodes, x)
x = math.random(2)
print("The area for the invincibility is:", x, SPnodes[x])
sammo_spawn2 = GetPathPoint("special_ammo_spawn", SPnodes[x])
table.remove(SPnodes, x)
sammo_spawn3 = GetPathPoint("special_ammo_spawn", SPnodes[1])
print("The area for the one hit kill is:", 1, SPnodes[1])


spec_powerup1 = CreateTimer("spec_powerup1")
SetTimerValue(spec_powerup1, 120)
OnTimerElapse(
function(timer)
print("Spawning full restore.")
CreateEntity("com_item_powerup_full", sammo_spawn1, "full") --CreateEntity(class, node, name)
DestroyTimer(spec_powerup1)
end,
spec_powerup1
)

spec_powerup2 = CreateTimer("spec_powerup2")
SetTimerValue(spec_powerup2, 120)
OnTimerElapse(
function(timer)
print("Spawning invincibility.")
CreateEntity("com_item_powerup_inv", sammo_spawn2, "invinc") --CreateEntity(class, node, name)
DestroyTimer(spec_powerup2)
end,
spec_powerup2
)

spec_powerup3 = CreateTimer("spec_powerup3")
SetTimerValue(spec_powerup3, 120)
OnTimerElapse(
function(timer)
print("Spawning one hit kill.")
CreateEntity("com_item_powerup_onehit", sammo_spawn3, "onehit") --CreateEntity(class, node, name)
DestroyTimer(spec_powerup3)
end,
spec_powerup3
)

spec_powerup4 = CreateTimer("spec_powerup4")
SetTimerValue(spec_powerup4, 120)
OnTimerElapse(
function(timer)
print("Spawning adrenaline.")
CreateEntity("com_item_powerup_armor", sammo_spawn4, "armor") --CreateEntity(class, node, name)
DestroyTimer(spec_powerup4)
end,
spec_powerup4
)

StartTimer(spec_powerup1)
StartTimer(spec_powerup2)
StartTimer(spec_powerup3)
StartTimer(spec_powerup4)

end

GetPlayersAlive = function(self)

return (GetNumTeamMembersAlive(1) + GetNumTeamMembersAlive(2))

end

cpAmmoSpawn = function(self)
print("The cp ammo spawn has started.")

--get the path point
cp1_ammospawn1 = GetPathPoint("cp1_spawn", 0) --GetPathPoint(Pathname, node)
cp1_ammospawn2 = GetPathPoint("cp1_spawn", 1)
cp2_ammospawn1 = GetPathPoint("cp2_spawn", 0)
cp2_ammospawn2 = GetPathPoint("cp2_spawn", 1)
cp3_ammospawn1 = GetPathPoint("cp3_spawn", 0)
cp3_ammospawn2 = GetPathPoint("cp3_spawn", 1)
cp4_ammospawn1 = GetPathPoint("cp4_spawn", 0)
cp4_ammospawn2 = GetPathPoint("cp4_spawn", 1)

cp1_powerspawn1 = CreateTimer("cp1_powerspawn1")
SetTimerValue(cp1_powerspawn1, 150)
OnTimerElapse(
function(timer)
print("Spawning cp1 ammo 1.")
CreateEntity("com_item_powerup_dual", cp1_ammospawn1, "ammo1") --CreateEntity(class, node, name)
SetTimerValue(cp1_powerspawn1, (math.random(6, 18)*10))
StartTimer(cp1_powerspawn1)
end,
cp1_powerspawn1
)

cp1_powerspawn2 = CreateTimer("cp1_powerspawn2")
SetTimerValue(cp1_powerspawn2, 150)
OnTimerElapse(
function(timer)
print("Spawning cp1 ammo 2.")
CreateEntity("com_item_powerup_dual", cp1_ammospawn2, "ammo2")
SetTimerValue(cp1_powerspawn2, (math.random(6, 18)*10))
StartTimer(cp1_powerspawn2)
end,
cp1_powerspawn2
)

cp2_powerspawn1 = CreateTimer("cp2_powerspawn1")
SetTimerValue(cp2_powerspawn1, 150)
OnTimerElapse(
function(timer)
print("Spawning cp2 ammo 1.")
CreateEntity("com_item_powerup_dual", cp2_ammospawn1, "ammo3")
SetTimerValue(cp2_powerspawn1, (math.random(6, 18)*10))
StartTimer(cp2_powerspawn1)
end,
cp2_powerspawn1
)

cp2_powerspawn2 = CreateTimer("cp2_powerspawn2")
SetTimerValue(cp2_powerspawn2, 150)
OnTimerElapse(
function(timer)
print("Spawning cp2 ammo 2.")
CreateEntity("com_item_powerup_dual", cp2_ammospawn2, "ammo4")
SetTimerValue(cp2_powerspawn2, (math.random(6, 18)*10))
StartTimer(cp2_powerspawn2)
end,
cp2_powerspawn2
)

cp3_powerspawn1 = CreateTimer("cp3_powerspawn1")
SetTimerValue(cp3_powerspawn1, 150)
OnTimerElapse(
function(timer)
print("Spawning cp3 ammo 1.")
CreateEntity("com_item_powerup_dual", cp3_ammospawn1, "ammo5")
SetTimerValue(cp3_powerspawn1, (math.random(6, 12)*10))
StartTimer(cp3_powerspawn1)
end,
cp3_powerspawn1
)

cp3_powerspawn2 = CreateTimer("cp3_powerspawn2")
SetTimerValue(cp3_powerspawn2, 150)
OnTimerElapse(
function(timer)
print("Spawning cp3 ammo 2.")
CreateEntity("com_item_powerup_dual", cp3_ammospawn2, "ammo6")
SetTimerValue(cp3_powerspawn2, (math.random(6, 12)*10))
StartTimer(cp3_powerspawn2)
end,
cp3_powerspawn2
)

cp4_powerspawn1 = CreateTimer("cp4_powerspawn1")
SetTimerValue(cp4_powerspawn1, 150)
OnTimerElapse(
function(timer)
print("Spawning cp4 ammo 1.")
CreateEntity("com_item_powerup_dual", cp4_ammospawn1, "ammo7")
SetTimerValue(cp4_powerspawn1, (math.random(6, 12)*10))
StartTimer(cp4_powerspawn1)
end,
cp4_powerspawn1
)

cp4_powerspawn2 = CreateTimer("cp4_powerspawn2")
SetTimerValue(cp4_powerspawn2, 150)
OnTimerElapse(
function(timer)
print("Spawning cp4 ammo 2.")
CreateEntity("com_item_powerup_dual", cp4_ammospawn2, "ammo8")
SetTimerValue(cp4_powerspawn2, (math.random(6, 12)*10))
StartTimer(cp4_powerspawn2)
end,
cp4_powerspawn2
)

StartTimer(cp1_powerspawn1)
StartTimer(cp1_powerspawn2)
StartTimer(cp2_powerspawn1)
StartTimer(cp2_powerspawn2)
StartTimer(cp3_powerspawn1)
StartTimer(cp3_powerspawn2)
StartTimer(cp4_powerspawn1)
StartTimer(cp4_powerspawn2)


end


ammospawn = function(self)
print("The ammo spawn has started.")

--get the path point
ammospawn1 = GetPathPoint("normal_ammo_spawn", 0) --GetPathPoint(Pathname, node)
ammospawn2 = GetPathPoint("normal_ammo_spawn", 1)
ammospawn3 = GetPathPoint("normal_ammo_spawn", 2)
ammospawn4 = GetPathPoint("normal_ammo_spawn", 3)
ammospawn5 = GetPathPoint("normal_ammo_spawn", 4)
ammospawn6 = GetPathPoint("normal_ammo_spawn", 5)
ammospawn7 = GetPathPoint("normal_ammo_spawn", 6)
ammospawn8 = GetPathPoint("normal_ammo_spawn", 7)
ammospawn9 = GetPathPoint("normal_ammo_spawn", 8)
ammospawn10 = GetPathPoint("normal_ammo_spawn", 9)
ammospawn11 = GetPathPoint("normal_ammo_spawn", 10)
ammospawn12 = GetPathPoint("normal_ammo_spawn", 11)
ammospawn13 = GetPathPoint("normal_ammo_spawn", 12)
ammospawn14 = GetPathPoint("normal_ammo_spawn", 13)
ammospawn15 = GetPathPoint("normal_ammo_spawn", 14)
ammospawn16 = GetPathPoint("normal_ammo_spawn", 15)
-- ammospawn17 = GetPathPoint("normal_ammo_spawn", 16)
-- ammospawn18 = GetPathPoint("normal_ammo_spawn", 17)
-- ammospawn19 = GetPathPoint("normal_ammo_spawn", 18)
-- ammospawn20 = GetPathPoint("normal_ammo_spawn", 19)


powerspawn1 = CreateTimer("powerspawn1")
SetTimerValue(powerspawn1, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 1.")
CreateEntity("com_item_powerup_dual", ammospawn1, "nammo1") --CreateEntity(class, node, name)
SetTimerValue(powerspawn1, (math.random(9, 18)*20))
StartTimer(powerspawn7)
end,
powerspawn1
)

powerspawn2 = CreateTimer("powerspawn2")
SetTimerValue(powerspawn2, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 2.")
CreateEntity("com_item_powerup_dual", ammospawn2, "nammo2")
SetTimerValue(powerspawn2, (math.random(9, 18)*20))
StartTimer(powerspawn13)
end,
powerspawn2
)

powerspawn3 = CreateTimer("powerspawn3")
SetTimerValue(powerspawn3, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 3.")
CreateEntity("com_item_powerup_dual", ammospawn3, "nammo3")
SetTimerValue(powerspawn3, (math.random(9, 18)*20))
StartTimer(powerspawn6)
end,
powerspawn3
)

powerspawn4 = CreateTimer("powerspawn4")
SetTimerValue(powerspawn4, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 4.")
CreateEntity("com_item_powerup_dual", ammospawn4, "nammo4")
SetTimerValue(powerspawn4, (math.random(9, 18)*20))
StartTimer(powerspawn10)
end,
powerspawn4
)

powerspawn5 = CreateTimer("powerspawn5")
SetTimerValue(powerspawn5, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 5.")
CreateEntity("com_item_powerup_dual", ammospawn6, "nammo5")
SetTimerValue(powerspawn5, (math.random(9, 18)*20))
--StartTimer(powerspawn18)
end,
powerspawn5
)

powerspawn6 = CreateTimer("powerspawn6")
SetTimerValue(powerspawn6, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 6.")
CreateEntity("com_item_powerup_dual", ammospawn7, "nammo6")
SetTimerValue(powerspawn6, (math.random(9, 18)*20))
--StartTimer(powerspawn17)
end,
powerspawn6
)

powerspawn7 = CreateTimer("powerspawn7")
SetTimerValue(powerspawn7, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 7.")
CreateEntity("com_item_powerup_dual", ammospawn8, "nammo7")
SetTimerValue(powerspawn7, (math.random(9, 18)*20))
StartTimer(powerspawn9)
end,
powerspawn7
)

powerspawn8 = CreateTimer("powerspawn8")
SetTimerValue(powerspawn8, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 8.")
CreateEntity("com_item_powerup_dual", cp4_ammospawn2, "nammo8")
SetTimerValue(powerspawn8, (math.random(9, 18)*20))
StartTimer(powerspawn11)
end,
powerspawn8
)

powerspawn9 = CreateTimer("powerspawn9")
SetTimerValue(powerspawn9, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 9.")
CreateEntity("com_item_powerup_dual", ammospawn9, "nammo9") --CreateEntity(class, node, name)
SetTimerValue(powerspawn9, (math.random(9, 18)*20))
StartTimer(powerspawn15)
end,
powerspawn9
)

powerspawn10 = CreateTimer("powerspawn10")
SetTimerValue(powerspawn10, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 10.")
CreateEntity("com_item_powerup_dual", ammospawn10, "nammo10") --CreateEntity(class, node, name)
SetTimerValue(powerspawn10, (math.random(9, 18)*20))
StartTimer(powerspawn1)
end,
powerspawn10
)

powerspawn11 = CreateTimer("powerspawn11")
SetTimerValue(powerspawn11, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 11.")
CreateEntity("com_item_powerup_dual", ammospawn11, "nammo11") --CreateEntity(class, node, name)
SetTimerValue(powerspawn11, (math.random(9, 18)*20))
StartTimer(powerspawn16)
end,
powerspawn11
)

powerspawn12 = CreateTimer("powerspawn12")
SetTimerValue(powerspawn12, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 12.")
CreateEntity("com_item_powerup_dual", ammospawn12, "nammo12") --CreateEntity(class, node, name)
SetTimerValue(powerspawn12, (math.random(9, 18)*20))
print(GetTimerValue(powerspawn12))
StartTimer(powerspawn3)
end,
powerspawn12
)

powerspawn13 = CreateTimer("powerspawn13")
SetTimerValue(powerspawn13, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 13.")
CreateEntity("com_item_powerup_dual", ammospawn13, "nammo13") --CreateEntity(class, node, name)
SetTimerValue(powerspawn13, (math.random(9, 18)*20))
--StartTimer(powerspawn20)
end,
powerspawn13
)

powerspawn14 = CreateTimer("powerspawn14")
SetTimerValue(powerspawn14, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 14.")
CreateEntity("com_item_powerup_dual", ammospawn14, "nammo14") --CreateEntity(class, node, name)
SetTimerValue(powerspawn14, (math.random(9, 18)*20))
StartTimer(powerspawn2)
end,
powerspawn14
)

powerspawn15 = CreateTimer("powerspawn15")
SetTimerValue(powerspawn15, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 15.")
CreateEntity("com_item_powerup_dual", ammospawn15, "nammo15") --CreateEntity(class, node, name)
SetTimerValue(powerspawn15, (math.random(9, 18)*20))
StartTimer(powerspawn5)
end,
powerspawn15
)

powerspawn16 = CreateTimer("powerspawn16")
SetTimerValue(powerspawn16, (math.random(9, 18)*10))
OnTimerElapse(
function(timer)
print("Spawning normal ammo 16.")
CreateEntity("com_item_powerup_dual", ammospawn16, "nammo16") --CreateEntity(class, node, name)
SetTimerValue(powerspawn16, (math.random(9, 18)*20))
StartTimer(powerspawn12)
end,
powerspawn16
)

-- powerspawn17 = CreateTimer("powerspawn17")
-- SetTimerValue(powerspawn17, (math.random(9, 18)*10))
-- OnTimerElapse(
-- function(timer)
-- print("Spawning normal ammo 17.")
-- --CreateEntity("com_item_powerup_dual", ammospawn17, "nammo17") --CreateEntity(class, node, name)
-- SetTimerValue(powerspawn17, (math.random(9, 18)*20))
-- --StartTimer(powerspawn19)
-- end,
-- powerspawn17
-- )

-- powerspawn18 = CreateTimer("powerspawn18")
-- SetTimerValue(powerspawn18, (math.random(9, 18)*10))
-- OnTimerElapse(
-- function(timer)
-- print("Spawning normal ammo 18.")
-- --CreateEntity("com_item_powerup_dual", ammospawn18, "nammo18") --CreateEntity(class, node, name)
-- SetTimerValue(powerspawn18, (math.random(9, 18)*20))
-- StartTimer(powerspawn8)
-- end,
-- powerspawn18
-- )

-- powerspawn19 = CreateTimer("powerspawn19")
-- SetTimerValue(powerspawn19, (math.random(9, 18)*10))
-- OnTimerElapse(
-- function(timer)
-- print("Spawning normal ammo 19.")
-- --CreateEntity("com_item_powerup_dual", ammospawn19, "nammo19") --CreateEntity(class, node, name)
-- SetTimerValue(powerspawn19, (math.random(9, 18)*20))
-- StartTimer(powerspawn14)
-- end,
-- powerspawn19
-- )

-- powerspawn20 = CreateTimer("powerspawn20")
-- SetTimerValue(powerspawn20, (math.random(9, 18)*10))
-- OnTimerElapse(
-- function(timer)
-- print("Spawning normal ammo 20.")
-- --CreateEntity("com_item_powerup_dual", ammospawn20, "nammo20") --CreateEntity(class, node, name)
-- SetTimerValue(powerspawn20, (math.random(9, 18)*20))
-- StartTimer(powerspawn4)
-- end,
-- powerspawn20
-- )



StartTimer(powerspawn1)
StartTimer(powerspawn2)
StartTimer(powerspawn3)
StartTimer(powerspawn5)
StartTimer(powerspawn6)
StartTimer(powerspawn7)
StartTimer(powerspawn9)
StartTimer(powerspawn10)
StartTimer(powerspawn11)
StartTimer(powerspawn13)
StartTimer(powerspawn14)
StartTimer(powerspawn15)
-- StartTimer(powerspawn17)
-- StartTimer(powerspawn18)
-- StartTimer(powerspawn19)


end


armorspawn = function(self)
print("The armor spawn has started")

--get the path point
armorspawn1 = GetPathPoint("armor_spawn", 0) --GetPathPoint(Pathname, node)
armorspawn2 = GetPathPoint("armor_spawn", 1)
armorspawn3 = GetPathPoint("armor_spawn", 2)
armorspawn4 = GetPathPoint("armor_spawn", 3)
armorspawn5 = GetPathPoint("armor_spawn", 4)
armorspawn6 = GetPathPoint("armor_spawn", 5)
armorspawn7 = GetPathPoint("armor_spawn", 6)
armorspawn8 = GetPathPoint("armor_spawn", 7)
armorspawn9 = GetPathPoint("armor_spawn", 8)
armorspawn10 = GetPathPoint("armor_spawn", 9)
armorspawn11 = GetPathPoint("armor_spawn", 10)
-- armorspawn12 = GetPathPoint("armor_spawn", 11)
-- armorspawn13 = GetPathPoint("armor_spawn", 12)
-- armorspawn14 = GetPathPoint("armor_spawn", 13)
-- armorspawn15 = GetPathPoint("armor_spawn", 14)
-- armorspawn16 = GetPathPoint("armor_spawn", 15)


apowerspawn1 = CreateTimer("apowerspawn1")
SetTimerValue(apowerspawn1, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 1.")
CreateEntity("com_item_powerup_armor", armorspawn1, "armor1") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn1, (math.random(9, 18)*20))
print(GetTimerValue(apowerspawn1))
StartTimer(apowerspawn7)
end,
apowerspawn1
)

apowerspawn2 = CreateTimer("apowerspawn2")
SetTimerValue(apowerspawn2, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 2.")
CreateEntity("com_item_powerup_armor", armorspawn2, "armor2")
SetTimerValue(apowerspawn2, (math.random(9, 18)*20))
StartTimer(apowerspawn13)
end,
apowerspawn2
)

apowerspawn3 = CreateTimer("apowerspawn3")
SetTimerValue(apowerspawn3, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 3.")
CreateEntity("com_item_powerup_armor", armorspawn3, "armor3")
SetTimerValue(apowerspawn3, (math.random(9, 18)*20))
StartTimer(apowerspawn6)
end,
apowerspawn3
)

apowerspawn4 = CreateTimer("apowerspawn4")
SetTimerValue(apowerspawn4, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 4.")
CreateEntity("com_item_powerup_armor", armorspawn4, "armor4")
SetTimerValue(apowerspawn4, (math.random(9, 18)*20))
print(GetTimerValue(apowerspawn4))
StartTimer(apowerspawn10)
end,
apowerspawn4
)

apowerspawn5 = CreateTimer("apowerspawn5")
SetTimerValue(apowerspawn5, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 5.")
CreateEntity("com_item_powerup_armor", armorspawn6, "armor5")
SetTimerValue(apowerspawn5, (math.random(9, 18)*20))
StartTimer(apowerspawn8)
end,
apowerspawn5
)

apowerspawn6 = CreateTimer("apowerspawn6")
SetTimerValue(apowerspawn6, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 6.")
CreateEntity("com_item_powerup_armor", armorspawn7, "armor6")
SetTimerValue(apowerspawn6, (math.random(9, 18)*20))
StartTimer(apowerspawn14)
end,
apowerspawn6
)

apowerspawn7 = CreateTimer("apowerspawn7")
SetTimerValue(apowerspawn7, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 7.")
CreateEntity("com_item_powerup_armor", armorspawn8, "armor7")
SetTimerValue(apowerspawn7, (math.random(9, 18)*20))
StartTimer(apowerspawn9)
end,
apowerspawn7
)

apowerspawn8 = CreateTimer("apowerspawn8")
SetTimerValue(apowerspawn8, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 8.")
CreateEntity("com_item_powerup_armor", cp4_armorspawn2, "armor8")
SetTimerValue(apowerspawn8, (math.random(9, 18)*20))
StartTimer(apowerspawn11)
end,
apowerspawn8
)

apowerspawn9 = CreateTimer("apowerspawn9")
SetTimerValue(apowerspawn9, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 9.")
CreateEntity("com_item_powerup_armor", armorspawn9, "armor9") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn9, (math.random(9, 18)*20))
StartTimer(apowerspawn15)
end,
apowerspawn9
)

apowerspawn10 = CreateTimer("apowerspawn10")
SetTimerValue(apowerspawn10, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 10.")
CreateEntity("com_item_powerup_armor", armorspawn10, "armor10") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn10, (math.random(9, 18)*20))
StartTimer(apowerspawn1)
end,
apowerspawn10
)

apowerspawn11 = CreateTimer("apowerspawn11")
SetTimerValue(apowerspawn11, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 11.")
CreateEntity("com_item_powerup_armor", armorspawn11, "armor11") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn11, (math.random(9, 18)*20))
StartTimer(apowerspawn16)
end,
apowerspawn11
)

apowerspawn12 = CreateTimer("apowerspawn12")
SetTimerValue(apowerspawn12, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 12.")
--CreateEntity("com_item_powerup_armor", armorspawn12, "armor12") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn12, (math.random(9, 18)*20))
StartTimer(apowerspawn3)
end,
apowerspawn12
)

apowerspawn13 = CreateTimer("apowerspawn13")
SetTimerValue(apowerspawn13, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 13.")
--CreateEntity("com_item_powerup_armor", armorspawn13, "armor13") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn13, (math.random(9, 18)*20))
StartTimer(apowerspawn4)
end,
apowerspawn13
)

apowerspawn14 = CreateTimer("apowerspawn14")
SetTimerValue(apowerspawn14, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 14.")
--CreateEntity("com_item_powerup_armor", armorspawn14, "armor14") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn14, (math.random(9, 18)*20))
StartTimer(apowerspawn2)
end,
apowerspawn14
)

apowerspawn15 = CreateTimer("apowerspawn15")
SetTimerValue(apowerspawn15, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 15.")
--CreateEntity("com_item_powerup_armor", armorspawn15, "armor15") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn15, (math.random(9, 18)*20))
StartTimer(apowerspawn5)
end,
apowerspawn15
)

apowerspawn16 = CreateTimer("apowerspawn16")
SetTimerValue(apowerspawn16, 1)
OnTimerElapse(
function(timer)
print("Spawning armor 16.")
--CreateEntity("com_item_powerup_armor", armorspawn16, "armor16") --CreateEntity(class, node, name)
SetTimerValue(apowerspawn16, (math.random(9, 18)*20))
StartTimer(apowerspawn12)
end,
apowerspawn16
)


StartTimer(apowerspawn1)
StartTimer(apowerspawn2)
StartTimer(apowerspawn3)
StartTimer(apowerspawn4)
StartTimer(apowerspawn5)
StartTimer(apowerspawn6)
StartTimer(apowerspawn7)
StartTimer(apowerspawn8)
StartTimer(apowerspawn9)
StartTimer(apowerspawn10)
StartTimer(apowerspawn11)
-- StartTimer(apowerspawn12)
-- StartTimer(apowerspawn13)
-- StartTimer(apowerspawn14)
-- StartTimer(apowerspawn15)
-- StartTimer(apowerspawn16)



end

feast = function(self)
print("The feast function has started.")
feastspawn1 = GetPathPoint("center_ammo_spawn", 0)
feastspawn2 = GetPathPoint("center_ammo_spawn", 1)
feastspawn3 = GetPathPoint("center_ammo_spawn", 2)
feastspawn4 = GetPathPoint("center_ammo_spawn", 3)

feasttimer = CreateTimer("feasttimer")
SetTimerValue(feasttimer, 600)
OnTimerElapse(
function(timer)
print("Feast time!")
ShowMessageText("level.HGS.feast")
option(math.random(1,8))
SetTimerValue(feasttimer, (math.random(6, 10)*60))
StartTimer(feasttimer)
end,
feasttimer
)

option = function(num)
if num == 1 then
print("\tOption 1 was picked; 1 dual.")
CreateEntity("com_item_powerup_dual", feastspawn4, "fammo1")

elseif num == 2 then
print("\tOption 2 was picked; 1 defense and 1 armor.")
CreateEntity("com_item_powerup_defense", feastspawn1, "fbuff1")
CreateEntity("com_item_powerup_armor", feastspawn2, "farmor1")

elseif num == 3 then
print("\tOption 3 was picked; one full restore.")
CreateEntity("com_item_powerup_full", feastspawn3, "fammo1")

elseif num == 4 then
print("\tOption 4 was picked; 1 offense and 3 ammos.")
CreateEntity("com_item_powerup_offense", feastspawn2, "fbuff1")
CreateEntity("com_item_powerup_ammo", feastspawn1, "fammo1")
CreateEntity("com_item_powerup_ammo", feastspawn3, "fammo2")
CreateEntity("com_item_powerup_ammo", feastspawn4, "fammo3")

elseif num == 5 then
print("\tOption 5 was picked; two duals.")
CreateEntity("com_item_powerup_dual", feastspawn1, "fammo1")
CreateEntity("com_item_powerup_dual", feastspawn3, "fammo2")

elseif num == 6 then
print("\tOption 6 was picked; two armors.")
CreateEntity("com_item_powerup_armor", feastspawn4, "farmor1")
CreateEntity("com_item_powerup_armor", feastspawn2, "farmor2")

elseif num == 7 then
print("\tOption 7 was picked; two duals.")
CreateEntity("com_item_powerup_dual", feastspawn3, "fammo1")
CreateEntity("com_item_powerup_dual", feastspawn2, "fammo2")

elseif num == 8 then
print("\tOption 8 was picked; offense, defense, and energy.")
CreateEntity("com_item_powerup_offense", feastspawn4, "fbuff1")
CreateEntity("com_item_powerup_defense", feastspawn3, "fbuff2")
CreateEntity("com_item_powerup_energy", feastspawn1, "fener1")
end
end
StartTimer(feasttimer)
end

Re: More Limitations on BF2? (Powerups and Timers)

Posted: Tue Mar 25, 2014 3:35 am
by Marth8880
I remember running into a similar problem when I tried getting delayed shield regeneration working. I got the delay working, but due to the nature of the function, which was to create a timer each time the player was hit, the game would freeze pretty shortly after beginning a match.

While I don't think there's necessarily a limit to the amount of timers you can have, there's probably a memory management issue with timers that disallows too many of them to be running at once or being created too rapidly, or something.

Re: More Limitations on BF2? (Powerups and Timers)

Posted: Tue Mar 25, 2014 4:02 am
by LRKfm946
Yeah, I guess I'll have to reduce the number of spawns I have. Another thing that might be (but probably isn't) related is the way I reset the timers: instead of each one restarting itself, I have them set in a loop, so that when one timer ends, it starts a different one, and each timer is restarted once and only once until it comes back around to the first timer. At the beginninng though, I start about 3/4 of the timers in the loop. I don't think this should cause any issues, but I don't know, maybe the game just doesn't like big loops of timers like that :S

EDIT: What about the powerups? Does anyone know if there's a limit on those?

EDIT 2: It occurred to me that there might be a SetMemoryPoolSize for powerups, and it turns out there is. I set it to 512 and stopped getting the error. It's kind of annoying that the error doesn't say anything about the memory pool though.