Loading two heroes from pre-munged sides

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
User avatar
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Loading two heroes from pre-munged sides

Post by Locutus »

Hi!
Finally I got time to start swbf2 modding again (using this sentence to apologize that didn't answer my pm's for quite some time).
I'm currently working on a new map and I'd like to use Kit Fisto and the Two-sword General Grievous as heroes. Both heroes were released with pre-munged files, but when I try to load both the games crashes the moment you try to play with the hero added in the second line.

Code: Select all

ReadDataFile("dc:SIDE\\kit.lvl", 
   			                    "rep_hero_fisto") 
                             
    ReadDataFile("dc:SIDE\\lis.lvl", 
   			                    "lis_hero_grievous") 
Is there any way to load both?


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

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

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


function ScriptPostLoad()

--BlockPlanningGraphArcs("Connection51")

--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"}
cp5 = CommandPost:New{name = "cp5"}
cp6 = CommandPost:New{name = "cp6"}



--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:AddCommandPost(cp5)
conquest:AddCommandPost(cp6)

-- Bridge();
--IsObjectAlive (all_prop_blockaderunner, bridge)

conquest:Start()

EnableSPHeroRules()


--Cloudcar = TargetType:New{classname = "bes_fly_cloudcar", killLimit = 1, icon = nil}
--cc_count = 1

-- Cloudcar.OnDestroy = function(self, objectPtr)
-- cc_count = cc_count - 1
-- if cc_count == 0 then
-- PlayAnimation("cortest")
-- end
-- end
cc_count = 0
animateobja = OnObjectKill(
function(object, killer)
if GetEntityName(object) == "bes_fly_cloudcar5" then
cc_count = cc_count + 1
if cc_count == 2 then
PlayAnimation("cortest")
end
end
end
)

animateobjb = OnObjectKill(
function(object, killer)
if GetEntityName(object) == "bes_fly_cloudcar1" then
cc_count = cc_count + 1
if cc_count == 2 then
PlayAnimation("cortest")
end
end
end
)

killobja = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_1" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjb = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_2" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjc = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_3" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjd = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_4" then
AddAssaultDestroyPoints(killer)
end
end
)

killobje = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_5" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjf = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_6" then
AddAssaultDestroyPoints(killer)
end
end
)



-- function Bridge()
-- bridge_timer = CreateTimer("bridge_timer")
-- SetTimerValue(bridge_timer, 320)
-- StartTimer(bridge_timer)
-- OnTimerElapse(
-- function(timer)
-- UnblockPlanningGraphArcs("Connection51");
-- DisableBarriers("bridgebarrier1");
-- DisableBarriers("bridgebarrier2");
-- DisableBarriers("barrier321");
-- print("Auf Kameraden, es geht los!")
-- DestroyTimer(timer)
-- end,
-- bridgetimer
-- )
-- end

function SetupTurrets()
turretLinkageCIS = LinkedTurrets:New{ team = CIS, mainframe = "cis-defense",
turrets = {"test_turr_1", "test_turr_2", "test_turr_3"} }
turretLinkageCIS:Init()
end

function SetupTurrets()
turretLinkageREP = LinkedTurrets:New{ team = REP, mainframe = "rep-defense",
turrets = {"test_turr_4", "test_turr_5", "test_turr_6"} }
turretLinkageREP:Init()
end



AddDeathRegion("dr1")
AddDeathRegion("dr2")


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

--tell the game to load our loading image
ReadDataFile("dc:Load\\common.lvl")

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(64)
SetMaxPlayerFlyHeight (64)

SetMemoryPoolSize ("ClothData",100)
SetMemoryPoolSize ("Combo",1000) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",9000) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",9000) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",900) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",9000) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",9999) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",9000) -- should be ~1x #combo

ReadDataFile("dc:sound\\HTM.lvl;htmcw")
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_spa_all_cannon")

ReadDataFile("dc:SIDE\\kit.lvl",
"rep_hero_fisto")

ReadDataFile("dc:SIDE\\lis.lvl",
"lis_hero_grievous")



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, "lis_hero_grievous")
SetHeroClass(REP, "rep_hero_fisto")


-- 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)
SetMemoryPoolSize("EntityRemoteTerminal", 12)
SetMemoryPoolSize("MountedTurret", 70)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:UCM\\UCM.lvl", "UCM_conquest")
ReadDataFile("dc:UCM\\UCM.lvl", "UCM_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("dc:sound\\htm.lvl", "htm_hero_vo_quick");
-- 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.634142, -0.010264, 0.773047, 0.012512, 170.609879, 45.829781, -174.404480);
AddCameraShot(0.432235, -0.048634, -0.894802, -0.100681, 4.130234, 59.789005, -191.375732);
AddCameraShot(0.932976, -0.083817, -0.348639, -0.031321, 73.343254, 52.536682, -123.949089);
AddCameraShot(0.856000, 0.142202, -0.490315, 0.081453, -81.838860, 35.117371, -22.050468);


end
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: Loading two heroes from pre-munged sides

Post by ARCTroopaNate »

This is a stupid question but have you put the munged sides folders for those two sides in your ABC sides folder in your addon folder? I forgot to do that one time when I was loading stuff from a munged side.
User avatar
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Re: Loading two heroes from pre-munged sides

Post by Locutus »

Yes.
When I -only- add Grievous in the code I can play him.
When I -only- add Kit Fisto I can play him as well.
But when I add both I can only play the hero that I added first in the script. The other one appears in the selection screen (I can see the model and so on) but as soon I try to spawn the game crashes.
User avatar
willinator
Major
Major
Posts: 517
Joined: Sun Mar 13, 2011 3:11 pm
Projects :: [Coming of the Sentinels]
Games I'm Playing :: SWBF2 Minecraft Halo
xbox live or psn: PC pwns all!
Location: The rings of Saturn...

Re: Loading two heroes from pre-munged sides

Post by willinator »

I wonder if you're having an animation issue. Kit Fisto has one of the most complicated combos in the history of the game, and Manderek's grievous isn't exactly diet either. Maybe you've run out of animation space?
User avatar
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Re: Loading two heroes from pre-munged sides

Post by Locutus »

If that's the case: Is there anything I could do about?
User avatar
willinator
Major
Major
Posts: 517
Joined: Sun Mar 13, 2011 3:11 pm
Projects :: [Coming of the Sentinels]
Games I'm Playing :: SWBF2 Minecraft Halo
xbox live or psn: PC pwns all!
Location: The rings of Saturn...

Re: Loading two heroes from pre-munged sides

Post by willinator »

Yes, you can. Compare the Mos Eisley Assault LUA to yours, and look for this section

Code: Select all

    SetMemoryPoolSize ("ClothData",20)
    SetMemoryPoolSize ("Combo",30)              -- should be ~ 2x number of jedi classes
    SetMemoryPoolSize ("Combo::State",500)      -- should be ~12x #Combo
    SetMemoryPoolSize ("Combo::Transition",500) -- should be a bit bigger than #Combo::State
    SetMemoryPoolSize ("Combo::Condition",500)  -- should be a bit bigger than #Combo::State
    SetMemoryPoolSize ("Combo::Attack",400)     -- should be ~8-12x #Combo
    SetMemoryPoolSize ("Combo::DamageSample",4000)  -- should be ~8-12x #Combo::Attack
    SetMemoryPoolSize ("Combo::Deflect",88)     -- should be ~1x #combo
Mos Eisley's pools are maxed out, change your LUA to match it.
User avatar
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Re: Loading two heroes from pre-munged sides

Post by Locutus »

Thanks.
Unfortunately it didn't help :/
Guess I have to use different heroes...
AQT
Gametoast Staff
Gametoast Staff
Posts: 4910
Joined: Sat Nov 03, 2007 4:55 pm
Location: SoCal, USA

Re: Loading two heroes from pre-munged sides

Post by AQT »

You don't need to load Anakin and Darth Maul if you're not going to use them. Even if you're not using them, loading them puts them into memory, and you are already using two memory intensive characters. Also, be sure to fill up the SoldierAnimation memory pool.
Locutus wrote:Finally I got time to start swbf2 modding again (using this sentence to apologize that didn't answer my pm's for quite some time).
But you've been lurking around between the last time you posted and just recently. :o
User avatar
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Re: Loading two heroes from pre-munged sides

Post by Locutus »

AQT wrote:You don't need to load Anakin and Darth Maul if you're not going to use them. Even if you're not using them, loading them puts them into memory, and you are already using two memory intensive characters. Also, be sure to fill up the SoldierAnimation memory pool.
You're right, I totally forgot about it.
Noobish question again:Where am I supposed to increase the SoldierAnimation memory pool and to what value?
AQT wrote:
Locutus wrote:Finally I got time to start swbf2 modding again (using this sentence to apologize that didn't answer my pm's for quite some time).
But you've been lurking around between the last time you posted and just recently. :o
Actually no. I was using a browser addon automatically checking the forums for updates and pm's. When I logged it regularly a few days ago I just found out that the pm checking did not work.
Sorry again that I didn't check earlier.
Marth8880
Resistance Leader
Posts: 5042
Joined: Tue Feb 09, 2010 8:43 pm
Projects :: DI2 + Psychosis
Games I'm Playing :: Silent Hill 2
xbox live or psn: Marth8880
Location: Edinburgh, UK
Contact:

Re: Loading two heroes from pre-munged sides

Post by Marth8880 »

Locutus wrote:
AQT wrote:You don't need to load Anakin and Darth Maul if you're not going to use them. Even if you're not using them, loading them puts them into memory, and you are already using two memory intensive characters. Also, be sure to fill up the SoldierAnimation memory pool.
You're right, I totally forgot about it.
Noobish question again:Where am I supposed to increase the SoldierAnimation memory pool and to what value?
BFront2.log errors explained (NOT FOR QUESTIONS)
User avatar
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Re: Loading two heroes from pre-munged sides

Post by Locutus »

Thank you.
Seems like I'm learning everyday something new. Unfortunately it didn't help...

Error log only refers to this, so I assume the max. animations are exceeded:
Hidden/Spoiler:
Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_WINDUP]::Animation: failed to add 'jumpattack1' [f6cfc20c]

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_WINDUP2]::Animation: failed to add 'jumpattack1' [f6cfc20c]

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_POSE]::Animation: failed to add 'jumpattack2' [f9cfc6c5]

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\Combo.cpp(2290)
Combo[91e0f927]::State[JUMPATTACK_POSE2]::Animation: failed to add 'jumpattack2' [f9cfc6c5]
Post Reply