Replacing SBD with B1?

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

darkling155
Private First Class
Posts: 87
Joined: Tue Dec 16, 2008 8:00 am
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: anywhere you arent

Re: Replacing SBD with B1?

Post by darkling155 »

Ok so I attempted making my own era/side mod with it, but I get these errors, and the map crashes with FATAL
Hidden/Spoiler:
Opened logfile BFront2.log 2012-03-07 2148
shell_interface: Entered

Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LuaCallbacks_Mission.cpp(866)
Lua ReadDataFile: Could not open v1.3patch_strings.lvl
shell_interface: gPlatformStr, gOnlineServiceStr, gLangStr, gLangEnum: PC GameSpy english 0
ifs_era_handler - Entered
ifs_era_handler - Exited
shell_interface: No custom_gc_0.lvl
shell_interface: No custom_gc_1.lvl
shell_interface: No custom_gc_2.lvl
shell_interface: No custom_gc_3.lvl
shell_interface: No custom_gc_4.lvl
shell_interface: No custom_gc_5.lvl
shell_interface: No custom_gc_6.lvl
shell_interface: No custom_gc_7.lvl
shell_interface: No custom_gc_8.lvl
shell_interface: No custom_gc_9.lvl
shell_interface: No custom_gc_10.lvl
custom_EraButtonList(): Finished building era button table Known eras buttons: 28
custom_GetGMapEras(): Finished building era table Known eras: 28
custom_GetGMapModes(): Finished building game mode table Known Modes: 39
custom_GetMPGameModeList(): Finished building game mode list table List Length: 40
custom_SetMovieLocation()
custom_GetGCButtonList()
custom_SetMovieLocation()
custom_GetFreeformBattleModeList(): Finished building freeform battle mode list Known Modes: 39
ingame stream movies\crawl.mvs
shell_interface: Opening movie: movies\shell.mvs
shell_interface: Leaving
prev = none iLastPage = nil
prev = texture iLastPage = 1
prev = texture iLastPage = 2
prev = texture iLastPage = 3
ifs_legal.Exit

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\GameMovie.cpp(399)
Unable to find open movie segment shell_main

ifs_saveop_DoOps LoadFileList
ifs_saveop_DoOps LoadFileList

Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LuaHelper.cpp(312)
CallProc failed: (none):0: attempt to compare two nil values
stack traceback:
(none): in function `ifs_login_EnterInterface'
(none): in function <(none):598>

ifs_saveop_DoOps LoadProfile
ifs_saveop_DoOps LoadProfile

Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LuaHelper.cpp(312)
CallProc failed: (none):0: attempt to compare two nil values
stack traceback:
(none): in function `ifs_login_EnterInterface'
(none): in function <(none):598>

ifs_sp_campaign: Input_Accept(): Entered: _tab_instant
missionlist_ExpandMapList()
ifs_missionselect_pcMulti_fnSetMapPreview(): Defaulting index to 1
ifs_missionselect_pcMulti_fnSetMapPreview(): Stored movie name, file: preview-loop MOVIES\pre-movie
custom_CheckChangeMovies(): Update(): Time to change movies
ifs_missionselect_pcMulti_ChangeMovieFile(): MovieFile: nil
ifs_missionselect_pcMulti_ChangeMovieFile(): Closed any open movie
ifs_missionselect_pcMulti_ChangeMovieFile(): Opening movie: MOVIES\pre-movie.mvs

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\GameMovie.cpp(301)
Unable to open movie file MOVIES\pre-movie.mvs:
ifs_missionselect_pcMulti_ChangeMovieFile(): Finished opening movie
this.CurButton = check_mode1
cur_button = nil
Checkbox for check_era20 clicked
this.CurButton = check_era20
cur_button = nil
custom_AddMapNew()
custom_printTable(): table: 0580468C
The key, value is: movieFile MOVIES\pre-movie
The key, value is: mode_con_c 1
The key is mapluafile, the formated value is: myg1<A>_<B>
The key, value is: bSelected 1
The key, value is: movieName preview-loop
The key, value is: mode_con_t 1
The key, value is: era_t 1
The key, value is: era_c 1
The key, value is: mode_ctf_g 1
The key, value is: era_g 1
The key, value is: mode_con_g 1
The key, value is: mode_c_c 1
The key, value is: mode_ctf_c 1
custom_printTable(): Returning
custom_printTable(): table: 0580672C
The key, value is: key mode_con
The key, value is: subst con
The key, value is: showstr modename.name.con
The key, value is: descstr modename.description.con
The key, value is: icon mode_icon_con
custom_printTable(): Returning
gMapEras.key = era_t Era = era_t subst = t
Adding map: myg1t_con idx: 1
this.CurButton = _map_add
cur_button = nil
this.CurButton = Launch
cur_button = nil

Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LoadUtil.cpp(1019)
Unable to find level chunk in MISSION.lvl


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LuaHelper.cpp(112)
OpenScript(myg1t_con): script (078ae6be) not found

Message Severity: 5
C:\Battlefront2\main\Battlefront2\Source\GameState.cpp(1283)
Could not open MISSION\myg1t_con.lvl
ARCTroopaNate
Jedi
Jedi
Posts: 1161
Joined: Mon Mar 21, 2011 8:12 pm
Projects :: Star Wars Battlefront - Tides of War
Games I'm Playing :: SWBF2 RC EAW
xbox live or psn: I have ps4
Location: STALKER!
Contact:

Re: Replacing SBD with B1?

Post by ARCTroopaNate »

How did you go about doing this? There is a great tutorial in the FAQ.
darkling155
Private First Class
Posts: 87
Joined: Tue Dec 16, 2008 8:00 am
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: anywhere you arent

Re: Replacing SBD with B1?

Post by darkling155 »

I followed the tutorial,
first I changed the mission.req like so:
Hidden/Spoiler:
ucft
{
REQN
{
"config"
"ingame_movies"
}

REQN
{
"script"
"setup_teams"
"gametype_conquest"
"gametype_capture"
"Objective"
"MultiObjectiveContainer"
"ObjectiveCTF"
"ObjectiveAssault"
"ObjectiveSpaceAssault"
"ObjectiveConquest"
"ObjectiveTDM"
"ObjectiveOneFlagCTF"
"SoundEvent_ctf"
"ObjectiveGoto"
"LinkedShields"
"LinkedDestroyables"
"LinkedTurrets"
"Ambush"
"PlayMovieWithTransition"
}

REQN
{
"lvl"
"WIPg_con"
"WIPc_con"
"myg1t_con"
}
}
then my t_con.lua
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script --
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")

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

---------------------------------------------------------------------------
-- 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 ScriptPostLoad()

DisableBarriers("dropship")
DisableBarriers("shield_03")
DisableBarriers("shield_02")
DisableBarriers("shield_01")
DisableBarriers("ctf")
DisableBarriers("ctf1")
DisableBarriers("ctf2")
DisableBarriers("ctf3")
DisableBarriers("coresh1")

EnableSPHeroRules()

cp1 = CommandPost:New{name = "CP1_CON"}
cp2 = CommandPost:New{name = "CP2_CON"}
--cp3 = CommandPost:New{name = "CP3_CON"}
cp4 = CommandPost:New{name = "CP4_CON"}
cp5 = CommandPost:New{name = "CP5_CON"}
cp7 = CommandPost:New{name = "CP7_CON"}
--cp8 = CommandPost:New{name = "CP8_CON"}

conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true}

conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
--conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)
conquest:AddCommandPost(cp5)
conquest:AddCommandPost(cp7)
--conquest:AddCommandPost(cp8)

conquest:Start()

end

function ScriptInit()
-- Designers, these two lines *MUST* be first!
StealArtistHeap(2048 * 1024)
SetPS2ModelMemory(4000000)
ReadDataFile("ingame.lvl")

ReadDataFile("sound\\myg.lvl;myg1cw")

ReadDataFile("SIDE\\rep.lvl",
--"rep_fly_assault_dome",
"rep_inf_ep3_rifleman",
"rep_inf_ep3_rocketeer",
"rep_inf_ep3_engineer",
"rep_inf_ep3_jettrooper",
"rep_inf_ep3_sniper",
"rep_inf_ep3_officer",
"rep_fly_gunship_dome",
"rep_hover_fightertank",
"rep_hero_kiyadimundi")
ReadDataFile("dc:SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_hover_aat",
"cis_fly_gunship_dome",
"cis_inf_officer",
"cis_inf_droideka",
"cis_hero_grievous")

ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_recoilless_lg")


SetupTeams{

rep={
team = REP,
units = 32,
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 = 32,
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},
}
}


-- Hero Setup Section --

SetHeroClass(REP, "rep_hero_kiyadimundi")
SetHeroClass(CIS, "cis_hero_grievous")

-- Level Stats
ClearWalkers()
AddWalkerType(0, 4)
AddWalkerType(2, 0)
local weaponCnt = 230
SetMemoryPoolSize("Aimer", 60)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 250)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 19)
SetMemoryPoolSize("EntityHover", 7)
SetMemoryPoolSize("EntityFlyer", 6)
SetMemoryPoolSize("EntitySoundStream", 1)
SetMemoryPoolSize("EntitySoundStatic", 76)
SetMemoryPoolSize("MountedTurret", 16)
SetMemoryPoolSize("Navigator", 50)
SetMemoryPoolSize("Obstacle", 500)
SetMemoryPoolSize("PathNode", 256)
SetMemoryPoolSize("TreeGridStack", 275)
SetMemoryPoolSize("UnitAgent", 50)
SetMemoryPoolSize("UnitController", 50)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(10.0, 0.25)
ReadDataFile("myg\\myg1.lvl", "myg1_conquest")
SetDenseEnvironment("false")
AddDeathRegion("deathregion")
SetMaxFlyHeight(20)
SetMaxPlayerFlyHeight(20)

-- Sound Stats

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\\myg.lvl", "myg1")
OpenAudioStream("sound\\myg.lvl", "myg1")
-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")
-- OpenAudioStream("sound\\myg.lvl", "myg1_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)

SetLowReinforcementsVoiceOver(REP, REP, "rep_off_defeat_im", .1, 1)
SetLowReinforcementsVoiceOver(REP, CIS, "rep_off_victory_im", .1, 1)
SetLowReinforcementsVoiceOver(CIS, CIS, "cis_off_defeat_im", .1, 1)
SetLowReinforcementsVoiceOver(CIS, REP, "cis_off_victory_im", .1, 1)

SetOutOfBoundsVoiceOver(1, "Repleaving")
SetOutOfBoundsVoiceOver(2, "Cisleaving")

SetAmbientMusic(REP, 1.0, "rep_myg_amb_start", 0,1)
SetAmbientMusic(REP, 0.8, "rep_myg_amb_middle", 1,1)
SetAmbientMusic(REP, 0.2,"rep_myg_amb_end", 2,1)
SetAmbientMusic(CIS, 1.0, "cis_myg_amb_start", 0,1)
SetAmbientMusic(CIS, 0.8, "cis_myg_amb_middle", 1,1)
SetAmbientMusic(CIS, 0.2,"cis_myg_amb_end", 2,1)

SetVictoryMusic(REP, "rep_myg_amb_victory")
SetDefeatMusic (REP, "rep_myg_amb_defeat")
SetVictoryMusic(CIS, "cis_myg_amb_victory")
SetDefeatMusic (CIS, "cis_myg_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--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")


--Camera Shizzle--

-- Collector Shot
AddCameraShot(0.008315, 0.000001, -0.999965, 0.000074, -64.894348, 5.541570, 201.711090);
AddCameraShot(0.633584, -0.048454, -0.769907, -0.058879, -171.257629, 7.728924, 28.249359);
AddCameraShot(-0.001735, -0.000089, -0.998692, 0.051092, -146.093109, 4.418306, -167.739212);
AddCameraShot(0.984182, -0.048488, 0.170190, 0.008385, 1.725611, 8.877428, 88.413887);
AddCameraShot(0.141407, -0.012274, -0.986168, -0.085598, -77.743042, 8.067328, 42.336128);
AddCameraShot(0.797017, 0.029661, 0.602810, -0.022434, -45.726467, 7.754435, -47.544712);
AddCameraShot(0.998764, 0.044818, -0.021459, 0.000963, -71.276566, 4.417432, 221.054550);
end
Then my addme
Hidden/Spoiler:
--Search through the missionlist to find a map that matches mapName,
--then insert the new flags into said entry.
--Use this when you know the map already exists, but this content patch is just
--adding new gamemodes (otherwise you should just add whole new entries to the missionlist)
function AddNewGameModes(missionList, mapName, newFlags)
for i, mission in missionList do
if mission.mapluafile == mapName then
for flag, value in pairs(newFlags) do
mission[flag] = value
end
end
end
end




--insert totally new maps here:
local sp_n = 0
local mp_n = 0
sp_n = table.getn(sp_missionselect_listbox_contents)

--add my modes to the singleplayer map selection screen

AddNewGameModes( sp_missionselect_listbox_contents, "myg1%s_%s", {era_t = 1, mode_con_t = 1,} )

AddNewGameModes( mp_missionselect_listbox_contents, "myg1%s_%s", {era_t = 1, mode_con_t = 1,} )

-- associate this mission name with the current downloadable content directory
-- (this tells the engine which maps are downloaded, so you need to include all new mission lua's here)
-- first arg: mapluafile from above
-- second arg: mission script name
-- third arg: level memory modifier. the arg to LuaScript.cpp: DEFAULT_MODEL_MEMORY_PLUS(x)

AddDownloadableContent("myg1","myg1t_con",4)

-- all done
newEntry = nil
n = nil

-- Now load our core.lvl into the shell to add our localize keys
ReadDataFile("..\\..\\addon\\WIP\\data\\_LVL_PC\\core.lvl")
*scratches head* I may be forgetting somethin..
User avatar
Unlucky13
Sergeant Major
Sergeant Major
Posts: 239
Joined: Mon Jan 24, 2011 11:11 am
Projects :: Models models models
Games I'm Playing :: Random stuff

Re: Replacing SBD with B1?

Post by Unlucky13 »

You probably forgot this step. :)
Era/Mode Side Mod Tutorial wrote:You'll need to add a req file for that mode to your data_XXX/Common/mission folder. This contains the req files for all stock scripts. Say we added a script called 'myg1a_con.' Copy the 'myg1g_con', rename it 'myg1a_con', open it, change the line 'myg1g_con' to 'myg1a_con'.
darkling155
Private First Class
Posts: 87
Joined: Tue Dec 16, 2008 8:00 am
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: anywhere you arent

Re: Replacing SBD with B1?

Post by darkling155 »

Nope, I did that, just forgot to put it up:
Hidden/Spoiler:
ucft
{
REQN
{
"script"
"myg1t_con"
}
}
User avatar
lucasfart
Sith
Sith
Posts: 1440
Joined: Tue Feb 24, 2009 5:32 am
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: Australia

Re: Replacing SBD with B1?

Post by lucasfart »

If you've replaced the default CIS.lvl in the main data folder, do you need to use "dc:"? If you haven't replaced the default cis.lvl, then ignore my post. :D
THEWULFMAN
Space Ranger
Posts: 5557
Joined: Tue Aug 17, 2010 3:30 pm
Projects :: Evolved 2
Location: Columbus, Ohio
Contact:

Re: Replacing SBD with B1?

Post by THEWULFMAN »

lucasfart wrote:If you've replaced the default CIS.lvl in the main data folder, do you need to use "dc:"? If you haven't replaced the default cis.lvl, then ignore my post. :D

If you are replacing the base data side levels, and you want to load them in your map or era, then you don't need the dc: Which, the dc stands for Downloadable Content. It was designed for DLCs, which were made for the Xbox. If you want to load the normal sides, then the dc: is unneeded.
darkling155
Private First Class
Posts: 87
Joined: Tue Dec 16, 2008 8:00 am
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: anywhere you arent

Re: Replacing SBD with B1?

Post by darkling155 »

I did indeed change the CIS so I need dc
User avatar
TGB
Private Third Class
Posts: 58
Joined: Sun Oct 25, 2009 2:21 am
Games I'm Playing :: LoL SWBF2 BF3 CNC3
xbox live or psn: pfff xbox
Location: New Zealand

Re: Replacing SBD with B1?

Post by TGB »

darkling155 wrote:thanks!!

So, how do I make the sides global? does that involve a lvl file?
Take the cis.lvl file from your custom side folder and put it in place of the cis.lvl file in the bf2 data\sides directory. (remember to back up the files you replace)

Alternately you could put it in your addon folder and edit the stock map luas with the dc function to reference you're custom cis.lvl instead of the stock one and replace the mission.lvl but this is slightly more complicated.
Post Reply