Campaign CTD [Solved]

In this forum you will find and post information regarding the modding of Star Wars Battlefront 2. DO NOT POST MOD IDEAS/REQUESTS.

Moderator: Moderators

Post Reply
the best
Private First Class
Posts: 77
Joined: Thu Jun 03, 2010 5:18 pm
Projects :: No Mod project currently.
Games I'm Playing :: Skyrim
xbox live or psn: No gamertag set
Location: Grand Rapids, Michigan

Campaign CTD [Solved]

Post by the best »

I'm at a loss, I've been looking around and following guides, reading assets, trying out some stuff on my own. I've done some things I liked, they looked promising, but alas they don't work.

I followed this tutorial http://www.gametoast.com/forums/viewtop ... +scripting

And when I was finished I munged, got 2 errors which I fixed, then tested the map. When I played it I got a CTD and an error screen did not pop up. I checked the error log and I think this is the error:

Code: Select all

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\LuaCallbacks_Mission.cpp(3776)
Command Post "cp1" not found
(none):0: attempt to perform arithmetic on a nil value
For one I don't understand why it can't find cp1, everything in ZE is set up correctly. I don't know what the rest means.

Here is my lua, it's called VVVc_con
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("MultiObjectiveContainer")
ScriptCB_DoFile("ObjectiveGoto")
ScriptCB_SetGameRules("Campaign")

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


function ScriptPostLoad()

onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
ReleaseCharacterSpawn(onfirstspawn)
onfirstspawn = nil
objectives_timer = CreateTimer("objectives_timer")
SetTimerValue(objectives_timer, 2)
StartTimer(objectives_timer)
begin_objectives = OnTimerElapse(
function(timer)
StartObjectives ()
ScriptCB_EnableCommandPostVO(0)
end,
objectives_timer
)
end
end
)

--Head towards gunship objective #1 (attack)
Objective1 = ObjectiveGoto:New{TeamATT = ATT, -- objective made
text = "level.VVV.1", popupText = "level.VVV.1_popup", -- show objective on screen
regionName = "goto", mapIcon = "hud_objective_icon_circle", AIGoalWeight = 0}

Objective1.OnStart = function(self)
ATT_obj1_aigoal = AddAIGoal(ATT, "Deathmatch", 100)
MapAddEntityMarker("goto", "hud_objective_icon", 3.0, 1, "YELLOW", true) -- AI objective
end

Objective1.OnComplete = function(self)
ShowMessageText("game.objectives.complete", ATT)
DeleteAIGoal(Objective1.defGoal1)
DeleteAIGoal(Objective1.defendGoal1)
ATT_ReinforcementCount = GetReinforcementCount(ATT)
SetReinforcementCount(ATT, ATT_ReinforcementCount + 20)

end

Objective2CP = CommandPost:New{name = "cp2", hideCPs = false}
Objective2 = ObjectiveConquest:New{teamATT = DEF, teamDEF = ATT,
textDEF = "level.VVV.2",
popupText = "level.VVV.2_popup",
timeLimit = 180, timeLimitWinningTeam = ATT}
Objective2:AddCommandPost(Objective2CP)
Objective2.OnStart = function(self)
Objective2.defendGoalDEF = AddAIGoal(DEF, "Defend", 1000, "cp2")
MapAddEntityMarker("cp2", "hud_objective_icon", 3.0, 1, "YELLOW", true)
end
Objective2.OnComplete = function(self)
ShowMessageText("game.objectives.complete", DEF)
DeleteAIGoal(Objective2.defendGoalDEF)
MapRemoveEntityMarker("cp2")
DEF_ReinforcementCount = GetReinforcementCount(DEF)
SetReinforcementCount(DEF, DEF_ReinforcementCount + 20)

end

Objective3CP = CommandPost:New{name = "cp3"}
Objective3 = ObjectiveConquest:New{teamATT = DEF, teamDEF = ATT, text = "level.VVV.3", popupText = "level.VVV.3_popup"}
Objective3:AddCommandPost(Objective3CP)

Objective3.OnStart = function(self)
AICanCaptureCP("cp3", ATT, false)
Objective3.defGoal3 = AddAIGoal(DEF, "Defend", 3000, "cp3")
end

Objective3.OnComplete = function(self)
ShowMessageText("game.objectives.complete", ATT)
SetProperty("cp3", "CaptureRegion", "distraction")
SetProperty("cp3", "SpawnPath", "cp3_spawn")
SetProperty("cp3", "Value_DEF_CIS", "0")

end
DeleteAIGoal(Objective3.defGoal3)
DeleteAIGoal(Objective3.defendGoal3)
SetProperty("CP9OBJ", "AISpawnWeight", "1000")
ATT_ReinforcementCount = GetReinforcementCount(ATT)
SetReinforcementCount(ATT, ATT_ReinforcementCount + 20)

end

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



--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:AddCommandPost(cp4)

conquest:Start()

EnableSPHeroRules()

function BeginObjectives()
objectiveSequence = MultiObjectiveContainer:New{delayVictoryTime = 4.0}
objectiveSequence:AddObjectiveSet(Objective1)
objectiveSequence:AddObjectiveSet(Objective2)
objectiveSequence:AddObjectiveSet(Objective3)
objectiveSequence:Start()

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(30)
SetMaxPlayerFlyHeight (30)

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

ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("SIDE\\rep.lvl",
"rep_inf_ep3_rifleman",
"rep_inf_ep3_rocketeer",
"rep_inf_ep3_engineer",
"rep_inf_ep3_sniper",
"rep_inf_ep3_officer",
"rep_inf_ep3_jettrooper",
"rep_hover_fightertank",
"rep_hero_anakin",
"rep_hover_barcspeeder")
ReadDataFile("SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_inf_officer",
"cis_inf_droideka",
"cis_hero_darthmaul",
"cis_hover_aat")


ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_laser",
"tur_bldg_tower")

SetupTeams{
rep = {
team = REP,
units = 20,
reinforcements = 150,
soldier = { "rep_inf_ep3_rifleman",9, 25},
assault = { "rep_inf_ep3_rocketeer",1, 4},
engineer = { "rep_inf_ep3_engineer",1, 4},
sniper = { "rep_inf_ep3_sniper",1, 4},
officer = {"rep_inf_ep3_officer",1, 4},
special = { "rep_inf_ep3_jettrooper",1, 4},

},
cis = {
team = CIS,
units = 20,
reinforcements = 150,
soldier = { "cis_inf_rifleman",9, 25},
assault = { "cis_inf_rocketeer",1, 4},
engineer = { "cis_inf_engineer",1, 4},
sniper = { "cis_inf_sniper",1, 4},
officer = {"cis_inf_officer",1, 4},
special = { "cis_inf_droideka",1, 4},
}
}

SetHeroClass(CIS, "cis_hero_darthmaul")
SetHeroClass(REP, "rep_hero_anakin")


-- 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("EntityLight", 200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 32)
SetMemoryPoolSize("Navigator", 128)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 128)
SetMemoryPoolSize("UnitController", 128)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:VVV\\VVV.lvl", "VVV_conquest")
ReadDataFile("dc:VVV\\VVV.lvl", "VVV_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.908386, -0.209095, -0.352873, -0.081226, -45.922508, -19.114113, 77.022636);

AddCameraShot(-0.481173, 0.024248, -0.875181, -0.044103, 14.767292, -30.602322, -144.506851);
AddCameraShot(0.999914, -0.012495, -0.004416, -0.000055, 1.143253, -33.602314, -76.884430);
AddCameraShot(0.839161, 0.012048, -0.543698, 0.007806, 19.152437, -49.802273, 24.337317);
AddCameraShot(0.467324, 0.006709, -0.883972, 0.012691, 11.825212, -49.802273, -7.000720);
AddCameraShot(0.861797, 0.001786, -0.507253, 0.001051, -11.986043, -59.702248, 23.263165);
AddCameraShot(0.628546, -0.042609, -0.774831, -0.052525, 20.429928, -48.302277, 9.771714);
AddCameraShot(0.765213, -0.051873, 0.640215, 0.043400, 57.692474, -48.302277, 16.540724);
AddCameraShot(0.264032, -0.015285, -0.962782, -0.055734, -16.681797, -42.902290, 129.553268);
AddCameraShot(-0.382320, 0.022132, -0.922222, -0.053386, 20.670977, -42.902290, 135.513001);
end
Now remember I'm pretty new at this type of work, and I don't really know what's going wrong. If you could possibly help and/or point me in the right direction I would be eternally appreciative.
Thanks!
Last edited by the best on Sun Apr 10, 2011 11:15 am, edited 1 time in total.
CalvaryCptMike
Captain
Captain
Posts: 476
Joined: Sat Feb 19, 2011 3:10 pm
Projects :: Nothing--absolutely nothing
Location: Freed by alien robots, now living on Mars
Contact:

Re: Campaign CTD

Post by CalvaryCptMike »

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




--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:AddCommandPost(cp4)


conquest:Start()
Okay something I noticed ( I could be wrong, I don't have much experience in BF2 lua scripting so i'm just assuming right now. Make sure you back your lua up. )

Everything I commented out ( with the -- ) and made yellow shouldn't be in your script(I don't think :? ). You just set up your objectives and now you're telling the game that you want a conquest objective. You are basically adding two totally unrelated objectives at once. You need to take out the conquest part of your script. Do that by adding a -- in front of the lines that I highlighted in your script (that way if it doesn't work you can just backspace the -- and be back to normal). But try that.
the best
Private First Class
Posts: 77
Joined: Thu Jun 03, 2010 5:18 pm
Projects :: No Mod project currently.
Games I'm Playing :: Skyrim
xbox live or psn: No gamertag set
Location: Grand Rapids, Michigan

Re: Campaign CTD

Post by the best »

Thank you so much! What you said to do worked! The rest I think I'll have to figure out on my own, because when I spawn, no one else does, and no objectives show up or anything. Other than that thank you thank you thank you!
User avatar
AceMastermind
Gametoast Staff
Gametoast Staff
Posts: 3285
Joined: Mon Aug 21, 2006 6:23 am
Contact:

Tips for commenting blocks of code

Post by AceMastermind »

You can also comment out blocks of code easily like this:

Code: Select all

--[[
line of code
line of code
line of code
line of code
line of code
line of code
line of code
]]
^To uncomment the entire block simply remove these:
--[[
]]

If you use a proper code editor they usually have tools that can comment and uncomment entire blocks of code with a single click.
the best
Private First Class
Posts: 77
Joined: Thu Jun 03, 2010 5:18 pm
Projects :: No Mod project currently.
Games I'm Playing :: Skyrim
xbox live or psn: No gamertag set
Location: Grand Rapids, Michigan

Re: Campaign CTD

Post by the best »

like notepad++, it saved my life when I got it :D thanks though, I didn't know about that one.
Post Reply