Adding a unit

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
Commander_Cody771
Vader's Apprentice
Posts: 1069
Joined: Thu Jun 07, 2007 5:02 pm
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: Looking for a new CPU
Contact:

Adding a unit

Post by Commander_Cody771 »

Please just answer my question and please don't direct me to Caleb's "How to get a custom side working" topic as I have already been there with no success.
Hidden/Spoiler:
[code]--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

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

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


function ScriptPostLoad()


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

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("dc:SIDE\\rep.lvl",
"rep_inf_ep3_rifleman",
"rep_inf_ep3_rocketeer",
"rep_inf_ep3_engineer",
"rep_inf_support",
"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 = 40,
reinforcements = 500,
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, 2},
officer = {"rep_inf_ep3_officer",1, 4},
special = { "rep_inf_ep3_jettrooper",1, 4},



cis = {
team = CIS,
units = 40,
reinforcements = 500,
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_obiwan")


-- 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:THY\\THY.lvl", "THY_conquest")
ReadDataFile("dc:THY\\THY.lvl", "THY_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[/code]
The new unit is the support. Where else do I have to have his name? Don't I have to do the AddUnitClass thing?
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Adding a unit

Post by Maveritchell »

Custom Side How-to wrote:Ok, now scroll down to the unit line up.
This bit:
Image

Now if you could replace one of the normal unit’s with yours, but I’ll teach you how to add a new one, incase you don’t want to replace anyone, and hurt a trooper's feelings.

Under the SetHeroClass part, add this:

AddUnitClass(IMP, "pms_inf_supr_troopr",1,4)

This will add your unit under the Imperial side’s line up.

So now you’ve got this:
Image
Good? Good.


Now we munge.
How well did you read that tutorial?
Commander_Cody771
Vader's Apprentice
Posts: 1069
Joined: Thu Jun 07, 2007 5:02 pm
Projects :: No Mod project currently.
Games I'm Playing :: I have not listed any games yet
xbox live or psn: No gamertag set
Location: Looking for a new CPU
Contact:

Re: Adding a unit

Post by Commander_Cody771 »

I told you NOT to give that tut. Please just answer my Q.
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Adding a unit

Post by Maveritchell »

Commander_Cody771 wrote:Please just answer my Q.
I did just answer your question. It doesn't matter if the answer is inside or outside a quote box.
User avatar
Frisbeetarian
Jedi
Jedi
Posts: 1233
Joined: Wed Sep 12, 2007 3:13 pm

Re: Adding a unit

Post by Frisbeetarian »

While just checking to make sure that the answer to this question was not only clearly in the tut, but also in the documentation, I was looking at the Battlefront2_scripting_system.doc and noticed that it said:
Battlefront2_scripting_system.doc wrote:AddUnitClass (team, config)
with the "team" of course being the team name and the "config" being there shorthand for ODF file name.
My question is this, the docs say nothing about having the min and max numbers after the config, though it can obviously be done and is described in the Battlefront II Mission LUA Guide.doc, so do you actually have to have these numbers? If you do not, would leaving them off just mean that the team could have from none of that unit to all units (excluding the min for the other units) be that unit?
User avatar
AceMastermind
Gametoast Staff
Gametoast Staff
Posts: 3285
Joined: Mon Aug 21, 2006 6:23 am
Contact:

Re: Adding a unit

Post by AceMastermind »

Frisbeetarian wrote:My question is this, the docs say nothing about having the min and max numbers after the config, though it can obviously be done and is described in the Battlefront II Mission LUA Guide.doc, so do you actually have to have these numbers? If you do not, would leaving them off just mean that the team could have from none of that unit to all units (excluding the min for the other units) be that unit?
I just tested this with a custom magnaguard side that I have, this is what I put in the LUA:

Code: Select all

AddUnitClass(CIS,"cis_mag")
No errors logged during the munge and the game didn't crash either.
I had 7 of them running around on the battlefield, 32 units per side and my custom magnaguard was 1 of 4 units that I was loading for the CIS during this test:

Code: Select all

cis = {
			team = CIS,
			units = 32,
			reinforcements = 250,
         soldier  = { "cis_inf_rifleman",3, 13},
         special = { "cis_inf_droideka",3, 3},
         marine = { "cis_inf_marine",1, 15},
         AddUnitClass(CIS,"cis_mag")
It seems the game fills in the unit at will, but you have no control over how many there will be (not exceeding the total unit count) without a min and max number.
-_-
Gametoast Staff
Gametoast Staff
Posts: 2678
Joined: Sat May 07, 2005 1:22 pm

Re: Adding a unit

Post by -_- »

The easiest and most convenient way is to look and Mos Eisley GCW Hero Assault's .lua file.
Caleb1117
2008 Most Original Avatar
Posts: 3096
Joined: Sun Aug 20, 2006 5:55 pm
Projects :: No Mod project currently.
xbox live or psn: No gamertag set
Location: X-Fire: caleb1117 ಠ_ಠ

Re: Adding a unit

Post by Caleb1117 »

Maveritchell wrote:
Custom Side How-to wrote:Ok, now scroll down to the unit line up.
This bit:
Image

Now you could replace one of the normal unit’s with yours, but I’ll teach you how to add a new one, incase you don’t want to replace anyone, and hurt a trooper's feelings.

Under the SetHeroClass part, add this:

AddUnitClass(IMP, "pms_inf_supr_troopr",1,4)

This will add your unit under the Imperial side’s line up.

So now you’ve got this:
Image
Good? Good.


Now we munge.
How well did you read that tutorial?

Thats it. I assure you all you need to know is in the tutorial.
User avatar
Teancum
Jedi Admin
Jedi Admin
Posts: 11080
Joined: Wed Sep 07, 2005 11:42 pm
Projects :: No Mod project currently.
Games I'm Playing :: Destiny
xbox live or psn: No gamertag set
Location: Indiana

Re: Adding a unit

Post by Teancum »

Commander_Cody771 wrote:I told you NOT to give that tut. Please just answer my Q.
Wow, do you really think someone like Mav would tell you something other than what you need to know? If he mentioned it, it's probably a good idea to try and see what you missed instead of getting smart.
User avatar
Frisbeetarian
Jedi
Jedi
Posts: 1233
Joined: Wed Sep 12, 2007 3:13 pm

Re: Adding a unit

Post by Frisbeetarian »

Frisbeetarian wrote:It seems the game fills in the unit at will, but you have no control over how many there will be (not exceeding the total unit count) without a min and max number.
I happened to be looking through the space scripts for a different reason, and noticed that they added units with only one number after the ODF name.
spa1g_Diet Dr. Pepper.lua wrote:

Code: Select all

SetupTeams{

         all = {
            team = ALL,
            units = 32,
            reinforcements = -1,
            pilot    = { "all_inf_pilot",25},
            marine   = { "all_inf_marine",8},
The fact that these add up to more that 32 would indicate that only one number would be taken to be a max number. I looked through most of the other space scripts, and they all have numbers adding up to exactly 32.
MercuryNoodles
Jedi
Jedi
Posts: 1003
Joined: Sun Mar 12, 2006 7:16 pm
Projects :: Space - Boarding Action
xbox live or psn: No gamertag set

Re: Adding a unit

Post by MercuryNoodles »

The "units =" part defines how many will be in the game total for that team, so an overage like that would probably mean the game would try to fill both max numbers, but would never reach one because of the overall unit count. More than likely, it's just a typo. Don't try to read too deeply into it. There's no reason why the game would only accept one value over the other. As far as the game is concerned, both values are valid, but it will fill one before the other. The extra unit allocation is just ignored. At least, that's my understanding of it. The math rule of thumb we teach here is just to make sure nobody does anything like what you've shown, because that'd be another gaggle of threads on "ME UNITZOR IZNT' SHOWEENG UPP!!!11".
User avatar
Frisbeetarian
Jedi
Jedi
Posts: 1233
Joined: Wed Sep 12, 2007 3:13 pm

Re: Adding a unit

Post by Frisbeetarian »

I agree, that's why I was saying that if only one number was used, the game would take it to be the max value instead of the min value. If it took it to be the min value, well, I don't know what would happen, but...
Battlefront II Mission LUA Guide.doc wrote:You should never have you minimums exceed your total number of units allowed on the field
User avatar
Teancum
Jedi Admin
Jedi Admin
Posts: 11080
Joined: Wed Sep 07, 2005 11:42 pm
Projects :: No Mod project currently.
Games I'm Playing :: Destiny
xbox live or psn: No gamertag set
Location: Indiana

Re: Adding a unit

Post by Teancum »

Bless you for actually reading the docs.

See folks! The answers are in the docs.
User avatar
Frisbeetarian
Jedi
Jedi
Posts: 1233
Joined: Wed Sep 12, 2007 3:13 pm

Re: Adding a unit

Post by Frisbeetarian »

Heh, I'm looking a little closer at them of late as I'm trying to get them up at the modding wiki.
User avatar
[RDH]Zerted
Gametoast Staff
Gametoast Staff
Posts: 2982
Joined: Sun Feb 26, 2006 7:36 am
Projects :: Bos Wars AI - a RTS game
Games I'm Playing :: SWBF2 and Bos Wars
xbox live or psn: No gamertag set
Location: USA
Contact:

Re: Adding a unit

Post by [RDH]Zerted »

...noticed that they added units with only one number after the ODF name...
...if only one number was used, the game would take it to be the max value instead of the min value...
Instead of trying to guess what the game is doing, you follow can follow the code. That means opening up SetupTeams.lua and directly looking at what that number is used for (I'm not at home now, so I can't do it).
jedimoose32
Field Commander
Field Commander
Posts: 938
Joined: Thu Jan 24, 2008 12:41 am
Projects :: Engineering Degree
Location: The Flatlands of Canada

Re: Adding a unit

Post by jedimoose32 »

an alternate solution to the "addunitclass" bit is to go to 'data_abc\common\scripts' and then go into setup_teams.lua
once in there, you will find a list of unit types
i don't have the exact words available right now, but something like:

Code: Select all

"soldier", "assault", "sniper", etc.
then add, for example:

Code: Select all

"trooper", "assault", "sniper", "support", etc.
back in the ABCc_con.lua, you do this:

Code: Select all

trooper = {"rep_soldier",9,25},
assault = {"rep_rocketguy",1,4}
AND THEN YOU PUT
support = {"rep_my_super_awesome_support_person",1,4}
This may take longer, but when you are making a map with a lot of extra units it is probably one of the easiest ways, especially if both sides have plenty of extra units
just thought i'd try to help
:maulsaber:
Aman/Pinguin
Jedi
Jedi
Posts: 1104
Joined: Tue Jan 30, 2007 6:04 am
Projects :: Inactive
Location: Germany

Re: Adding a unit

Post by Aman/Pinguin »

jedimoose32 wrote:
Hidden/Spoiler:
an alternate solution to the "addunitclass" bit is to go to 'data_abc\common\scripts' and then go into setup_teams.lua
once in there, you will find a list of unit types
i don't have the exact words available right now, but something like:
[code]"soldier", "assault", "sniper", etc.[/code]
then add, for example:
[code]"trooper", "assault", "sniper", "support", etc.[/code]
back in the ABCc_con.lua, you do this:
[code]trooper = {"rep_soldier",9,25},
assault = {"rep_rocketguy",1,4}
AND THEN YOU PUT
support = {"rep_my_super_awesome_support_person",1,4}[/code]
This may take longer, but when you are making a map with a lot of extra units it is probably one of the easiest ways, especially if both sides have plenty of extra units
just thought i'd try to help
:maulsaber:
No idea why, but thats the way I ALWAYS use. Probably because it looks better. :)
jedimoose32
Field Commander
Field Commander
Posts: 938
Joined: Thu Jan 24, 2008 12:41 am
Projects :: Engineering Degree
Location: The Flatlands of Canada

Re: Adding a unit

Post by jedimoose32 »

Aman/Pinguin wrote:No idea why, but thats the way I ALWAYS use. Probably because it looks better. :)
OFF-TOPIC: High-five!
ON-TOPIC: hope this has helped, CC!
User avatar
[RDH]Zerted
Gametoast Staff
Gametoast Staff
Posts: 2982
Joined: Sun Feb 26, 2006 7:36 am
Projects :: Bos Wars AI - a RTS game
Games I'm Playing :: SWBF2 and Bos Wars
xbox live or psn: No gamertag set
Location: USA
Contact:

Re: Adding a unit

Post by [RDH]Zerted »

This has been mentioned a few times by others (mostly me). Make sure you also put in the commas (they are missing from the example code). You should also be able to set the hero by using 'hero ='.
Post Reply