Page 1 of 1

Scripting Problems (Solved)

Posted: Thu Dec 06, 2012 12:21 pm
by Noobasaurus
I'm trying to make release more and more units in waves, but I'm having problems. I want you to be on the REP or ATT team at the start. Then I want a message to popup and then a timer to start, and when it hits zero you win. Then I want in 90 seconds a second message to popup and the other side can spawn. That all worked perfectly, but then I tried to implement waves and I messed everything up. I tried to make the waves spawn every minute or so with 100 units.

Here's the lua:
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

--THIS IS THE EASY MODE--

ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("ambush")
ScriptCB_DoFile("ObjectiveTDM")


-- REP Attacking (attacker is always #1)
REP = 1
CIS = 2
-- These variables do not change
ATT = REP
DEF = CIS

function ScriptPostLoad()

AllowAISpawn(CIS, false)
ShowObjectiveTextPopup("level.GAA.objectives.campaign.start", ATT)

--Timer STARTZ--

music01Timer = CreateTimer("music01")
SetTimerValue(music01Timer, 90.0)
StartTimer(music01Timer)
ShowTimer(nil)
OnTimerElapse(
function(timer)
AllowAISpawn(CIS, true)
ShowObjectiveTextPopup("level.GAA.objectives.campaign.timerend", ATT)
wavetimer = CreateTimer("wave")
DestroyTimer(timer)
end,
music01Timer
)

SetTimerValue(wavetimer, 30.0)
StartTimer(wavetimer)
ShowTimer(nil)
OnTimerElapse(
function(timer)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_path", 100, 5)
end,
wavetimer
)
SetTimerValue(wavetimer, 30.0)
StartTimer(wavetimer)
ShowTimer(nil)
OnTimerElapse(
function(timer)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_path", 100, 5)
end,
wavetimer
)

--Timer for victory startz nao...also known as when the first timer elapses--
music02Timer = CreateTimer("music02Timer")
SetTimerValue(music02Timer, 630.0)
StartTimer(music02Timer)
ShowTimer(music02Timer)
OnTimerElapse(
function(timer)
MissionVictory(ATT)


DestroyTimer(timer)
end,
music02Timer
)


--WAVE AMBUSH CONFIGS--

ShowTimer(nil)
OnTimerElapse(
function(timer)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_path", 5, 100)
DestroyTimer(timer)
end,
wavetimer
)


--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp2 = CommandPost:New{name = "cp2"}
cp3 = CommandPost:New{name = "cp3"}




--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF,
textATT = "game.modes.con",
textDEF = "game.modes.con2",
multiplayerRules = true}

--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)

conquest:Start()

SetUberMode(1);

EnableSPHeroRules()

AddDeathRegion("death")
AddDeathRegion("death1")

end

---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptInit()

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(300)
SetMaxPlayerFlyHeight (300)

SetMemoryPoolSize ("ClothData",50)
SetMemoryPoolSize ("Combo",500) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",6500) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",6500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",6500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",9500) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",22000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",100) -- should be ~1x #combo

ReadDataFile("sound\\kam.lvl;kam1cw")

ReadDataFile("dc:SIDE\\gam.lvl",
"gam_inf_gamorreanguard",
"gam_inf_elite")
ReadDataFile("dc:SIDE\\imp.lvl",
"imp_inf_obi",
"imp_inf_ganimedes")




SetupTeams{
cis = {
team = CIS,
units = 350,
reinforcements = -1,
soldier = { "gam_inf_gamorreanguard",0, 50},

},
rep = {
team = REP,
units = 50,
reinforcements = 300,
assault = { "imp_inf_ganimedes",0, 20},
}
}



SetTeamName(5, "gam")
AddUnitClass (5, "gam_inf_gamorreanguard", 50, 100)
AddAIGoal(5, "Deathmatch", 100)
SetUnitCount (5, 100)

SetTeamName(6, "gam")
AddUnitClass (6, "gam_inf_elite", 50, 100)
AddAIGoal(6, "Deathmatch", 100)
SetUnitCount (6, 100)

-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 4) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 0) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 0) -- 3x2 (3 pairs of legs)
local weaponCnt = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 32)
SetMemoryPoolSize("EntityFlyer", 32)
SetMemoryPoolSize("EntityHover", 32)
SetMemoryPoolSize("SoldierAnimation", 1500)
SetMemoryPoolSize("EntityLight", 200)
SetMemoryPoolSize("EntityPortableTurret", 1200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 99)
SetMemoryPoolSize("LightFlash", 400)
SetMemoryPoolSize("Navigator", 500)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("UnitController", 500)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 600)
SetMemoryPoolSize("UnitController", 750)
SetMemoryPoolSize("ParticleTransformer::SizeTransf", 1400)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(0.0, 0.0)
--ReadDataFile("dc:GAA\\GAA.lvl", "GAA_conquest")
ReadDataFile("dc:GAA\\GAA.lvl", "GAA_conquest")
SetDenseEnvironment("false")




-- Sound

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")

voiceSlow = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_slow")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

voiceQuick = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_quick")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_quick", voiceQuick)

OpenAudioStream("sound\\global.lvl", "cw_music")
-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1_emt")

SetBleedingVoiceOver(REP, REP, "rep_off_com_report_us_overwhelmed", 1)
SetBleedingVoiceOver(REP, CIS, "rep_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, REP, "cis_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, CIS, "cis_off_com_report_us_overwhelmed", 1)

SetOutOfBoundsVoiceOver(2, "cisleaving")
SetOutOfBoundsVoiceOver(1, "repleaving")

SetAmbientMusic(REP, 1.0, "rep_yav_amb_start", 0,1)
SetAmbientMusic(REP, 0.8, "rep_yav_amb_middle", 1,1)
SetAmbientMusic(REP, 0.2, "rep_yav_amb_end", 2,1)
SetAmbientMusic(CIS, 1.0, "cis_yav_amb_start", 0,1)
SetAmbientMusic(CIS, 0.8, "cis_yav_amb_middle", 1,1)
SetAmbientMusic(CIS, 0.2, "cis_yav_amb_end", 2,1)

SetVictoryMusic(REP, "rep_yav_amb_victory")
SetDefeatMusic (REP, "rep_yav_amb_defeat")
SetVictoryMusic(CIS, "cis_yav_amb_victory")
SetDefeatMusic (CIS, "cis_yav_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--SetSoundEffect("BirdScatter", "birdsFlySeq1")
--SetSoundEffect("WeaponUnableSelect", "com_weap_inf_weaponchange_null")
--SetSoundEffect("WeaponModeUnableSelect", "com_weap_inf_modechange_null")
SetSoundEffect("SpawnDisplayUnitChange", "shell_select_unit")
SetSoundEffect("SpawnDisplayUnitAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change")
SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplayBack", "shell_menu_exit")


--OpeningSateliteShot AddCameraShot(0.763622, 0.012544, -0.645455, 0.010603, 125.539291, 63.603477, -17.511637);
AddCameraShot(-0.198788, -0.005538, -0.979647, 0.027292, 149.981628, 64.837639, -60.428387);
AddCameraShot(0.005205, -0.001663, -0.952560, -0.304300, 139.273087, 99.218147, -62.060764);

end
Any help is greatly appreciated.

Re: Scripting Problems

Posted: Thu Dec 06, 2012 10:45 pm
by Loopy53
Well, im no LUA expert, but I would reference mav's dark times 2 or repsharpshooters battle arena 2.0 LUA's. If you can, that is. good luck

Re: Scripting Problems

Posted: Thu Dec 06, 2012 10:54 pm
by Noobasaurus
That's exactly what I did. I used Mav's wave mode script in hopes of adding it to my map but that was apparently not the case. I've recently been just moving things around in the script in hopes of getting things working but no can do.

Re: Scripting Problems

Posted: Thu Dec 06, 2012 11:06 pm
by Loopy53
Hm.... get mavs wave mode working fully first, then edit that to your liking.

Re: Scripting Problems

Posted: Fri Dec 07, 2012 11:33 am
by Noobasaurus
Hm. I got wave mode working, sort of. When the waves first start you die, so that's a problem. Then when they're all over the game crashes so that's also a problem. Here's my lua:
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

--THIS IS THE EASY MODE--

ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("ambush")
ScriptCB_DoFile("ObjectiveTDM")


-- REP Attacking (attacker is always #1)
REP = 1
CIS = 2
-- These variables do not change
ATT = REP
DEF = CIS

function ScriptPostLoad()

AllowAISpawn(CIS, false)
ShowObjectiveTextPopup("level.GAA.objectives.campaign.start", ATT)


wavetimer = CreateTimer("waves")
SetTimerValue(wavetimer, 30)

wavetimer0 = CreateTimer("waves0")
SetTimerValue(wavetimer0, 45)

wavetimer1 = CreateTimer("waves1")
SetTimerValue(wavetimer1, 80)

wavetimer2 = CreateTimer("waves2")
SetTimerValue(wavetimer2, 70)

wavetimer3 = CreateTimer("waves3")
SetTimerValue(wavetimer3, 70)

wavetimer4 = CreateTimer("waves4")
SetTimerValue(wavetimer4, 100)

wavetimer5 = CreateTimer("waves5")
SetTimerValue(wavetimer5, 120)

StartTimer(wavetimer)
ShowTimer(nil)
ShowTimer(wavetimer)

wtime0 = OnTimerElapse(
function(timer)
StartTimer(wavetimer0)
ShowTimer(nil)
ShowTimer(wavetimer0)
ShowObjectiveTextPopup("level.GAA.objectives.campaign.timerend", ATT)
AllowAISpawn(CIS, true)
Ambush("ambush_path", 100, 3)

DestroyTimer(timer)
end,
wavetimer
)

wtime1 = OnTimerElapse(
function(timer)
StartTimer(wavetimer1)
ShowTimer(nil)
ShowTimer(wavetimer1)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_spawn", 100, 3)

DestroyTimer(timer)
end,
wavetimer0
)

wtime2 = OnTimerElapse(
function(timer)
StartTimer(wavetimer2)
ShowTimer(nil)
ShowTimer(wavetimer2)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_path", 100, 4)

DestroyTimer(timer)
end,
wavetimer1
)

wtime3 = OnTimerElapse(
function(timer)
StartTimer(wavetimer3)
ShowTimer(nil)
ShowTimer(wavetimer3)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_path", 100, 3)

DestroyTimer(timer)
end,
wavetimer2
)

wtime4 = OnTimerElapse(
function(timer)
StartTimer(wavetimer4)
ShowTimer(nil)
ShowTimer(wavetimer4)
ShowMessageText("level.GAA.objectives.campaign.more")
Ambush("ambush_path", 100, 4)
DestroyTimer(timer)
end,
wavetimer3
)


--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp2 = CommandPost:New{name = "cp2"}
cp3 = CommandPost:New{name = "cp3"}




--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF,
textATT = "game.modes.con",
textDEF = "game.modes.con2",
multiplayerRules = true}

--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)

conquest:Start()

SetUberMode(1);

EnableSPHeroRules()

AddDeathRegion("death")
AddDeathRegion("death1")

end

---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptInit()

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(300)
SetMaxPlayerFlyHeight (300)

SetMemoryPoolSize ("ClothData",50)
SetMemoryPoolSize ("Combo",500) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",6500) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",6500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",6500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",9500) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",22000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",100) -- should be ~1x #combo

ReadDataFile("sound\\kam.lvl;kam1cw")

ReadDataFile("dc:SIDE\\gam.lvl",
"gam_inf_gamorreanguard",
"gam_inf_elite")
ReadDataFile("dc:SIDE\\imp.lvl",
"imp_inf_obi",
"imp_inf_ganimedes")




SetupTeams{
cis = {
team = CIS,
units = 350,
reinforcements = -1,
soldier = { "gam_inf_gamorreanguard",0, 50},

},
rep = {
team = REP,
units = 50,
reinforcements = 300,
assault = { "imp_inf_ganimedes",0, 20},
}
}



SetTeamName(3, "gam")
AddUnitClass(3, "gam_inf_gamorreanguard",20,50)
SetUnitCount (3, 100)
--first number is numteam, second is numunits
AddAIGoal(3, "Deathmatch", 100)

SetTeamName(5, "gam")
AddUnitClass (5, "gam_inf_elite", 20, 50)

SetUnitCount (5, 50)
--first number is numteam, second is numunits
AddAIGoal(5, "Deathmatch", 100)

-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 4) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 0) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 0) -- 3x2 (3 pairs of legs)
local weaponCnt = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 32)
SetMemoryPoolSize("EntityFlyer", 32)
SetMemoryPoolSize("EntityHover", 32)
SetMemoryPoolSize("SoldierAnimation", 1500)
SetMemoryPoolSize("EntityLight", 200)
SetMemoryPoolSize("EntityPortableTurret", 1200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 99)
SetMemoryPoolSize("LightFlash", 400)
SetMemoryPoolSize("Navigator", 500)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("UnitController", 500)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 600)
SetMemoryPoolSize("UnitController", 750)
SetMemoryPoolSize("ParticleTransformer::SizeTransf", 1400)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(0.0, 0.0)
--ReadDataFile("dc:GAA\\GAA.lvl", "GAA_conquest")
ReadDataFile("dc:GAA\\GAA.lvl", "GAA_conquest")
SetDenseEnvironment("false")




-- Sound

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")

voiceSlow = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_slow")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

voiceQuick = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_quick")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_quick", voiceQuick)

OpenAudioStream("sound\\global.lvl", "cw_music")
-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1_emt")

SetBleedingVoiceOver(REP, REP, "rep_off_com_report_us_overwhelmed", 1)
SetBleedingVoiceOver(REP, CIS, "rep_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, REP, "cis_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, CIS, "cis_off_com_report_us_overwhelmed", 1)

SetOutOfBoundsVoiceOver(2, "cisleaving")
SetOutOfBoundsVoiceOver(1, "repleaving")

SetAmbientMusic(REP, 1.0, "rep_yav_amb_start", 0,1)
SetAmbientMusic(REP, 0.8, "rep_yav_amb_middle", 1,1)
SetAmbientMusic(REP, 0.2, "rep_yav_amb_end", 2,1)
SetAmbientMusic(CIS, 1.0, "cis_yav_amb_start", 0,1)
SetAmbientMusic(CIS, 0.8, "cis_yav_amb_middle", 1,1)
SetAmbientMusic(CIS, 0.2, "cis_yav_amb_end", 2,1)

SetVictoryMusic(REP, "rep_yav_amb_victory")
SetDefeatMusic (REP, "rep_yav_amb_defeat")
SetVictoryMusic(CIS, "cis_yav_amb_victory")
SetDefeatMusic (CIS, "cis_yav_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--SetSoundEffect("BirdScatter", "birdsFlySeq1")
--SetSoundEffect("WeaponUnableSelect", "com_weap_inf_weaponchange_null")
--SetSoundEffect("WeaponModeUnableSelect", "com_weap_inf_modechange_null")
SetSoundEffect("SpawnDisplayUnitChange", "shell_select_unit")
SetSoundEffect("SpawnDisplayUnitAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change")
SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplayBack", "shell_menu_exit")


--OpeningSateliteShot AddCameraShot(0.763622, 0.012544, -0.645455, 0.010603, 125.539291, 63.603477, -17.511637);
AddCameraShot(-0.198788, -0.005538, -0.979647, 0.027292, 149.981628, 64.837639, -60.428387);
AddCameraShot(0.005205, -0.001663, -0.952560, -0.304300, 139.273087, 99.218147, -62.060764);

end
EDIT: So I got it to make you win after the last wave but you still die randomly on the first and third waves. :?

Re: Scripting Problems

Posted: Fri Dec 07, 2012 1:07 pm
by Fiodis
The only parts of the script that look potentially lethal are the death regions. If you comment out those calls, do you still die?

Re: Scripting Problems

Posted: Fri Dec 07, 2012 1:50 pm
by Teancum
And is there anything of interest in BFront2.log?

Re: Scripting Problems

Posted: Fri Dec 07, 2012 7:15 pm
by Noobasaurus
Surprisingly, there actually is stuff in my log. For a while now there hasn't been anything.
Hidden/Spoiler:
Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Character.cpp(1217)
Trying to spawn a character with no class. Skipping this character. Perhaps the UnitClassCounts are too low?

Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LuaCallbacks_Mission.cpp(3247)
Path "ambush_path" node 49 out of range [0..30)

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Character.cpp(1217)
Trying to spawn a character with no class. Skipping this character. Perhaps the UnitClassCounts are too low?
WARNING: could not spawn all the ambushers...team is too small or there are too many dudes running around alive

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\EntitySoldier.cpp(4513)
Unit flew out of world, x = 61593580473011673000000000000.000000, z = 0.000000
I get a bunch of the 'trying to spawn a character with no class' and the path node errors. I'm not sure what I could do about the character error but for the other one I'll revise the ambush path.

I commented out the death region lines later and it crashed when the first wave spawned. I think I died too, but I'm not sure. The error log is the same as the above one.

Re: Scripting Problems

Posted: Fri Dec 07, 2012 8:01 pm
by Loopy53
odd...make sure the paths in ZE are setup correctly, along with all regions and the likes.

Re: Scripting Problems

Posted: Fri Dec 07, 2012 10:54 pm
by Noobasaurus
I remade the ambush path in ZE and now I have twice as many errors and now I randomly die even more! I'll rename the path and do more checks.

Re: Scripting Problems

Posted: Sun Dec 09, 2012 10:45 am
by Fiodis
At one point you have:

Code: Select all

Ambush("ambush_path", 100, 5)
but later you have

Code: Select all

Ambush("ambush_path", 5, 100)
How many nodes does ambush_path actually have?

One of those values, if I remember right, is the class of the spawned unit. I really doubt you have 100 classes. :wink:

Re: Scripting Problems

Posted: Sun Dec 09, 2012 12:33 pm
by Noobasaurus
The path has around 10 nodes. I thought the first value was how many units you wanted to spawn, and the second number was what team they were on. Or maybe it was the other way around. :?

Re: Scripting Problems

Posted: Sun Dec 09, 2012 1:58 pm
by AceMastermind
[color=#FF8040]The What, When, Where, and How on AI Ambushing (FAQ)[/color] wrote:...
The generic parameters for Ambush() as follows
Ambush(ambushpath, numDudes, fromTeam)



IMPORTANT RULES:

1) The number of ai that you spawn MUST be the same as the number of nodes you added to the path in zeroeditor.
...

Re: Scripting Problems

Posted: Sun Dec 09, 2012 2:32 pm
by Fiodis
So the class of the spawned units is chosen at random from the available classes on that team?

Re: Scripting Problems

Posted: Sun Dec 09, 2012 5:36 pm
by Noobasaurus
Thank you, Ace. I used that and after many tests I have everything working perfectly along with the victory timer on the side.

Thanks to everyone who helped as well. :D