Page 1 of 1

Adding a unit

Posted: Wed Sep 10, 2008 4:10 pm
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?

Re: Adding a unit

Posted: Wed Sep 10, 2008 4:14 pm
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?

Re: Adding a unit

Posted: Wed Sep 10, 2008 4:18 pm
by Commander_Cody771
I told you NOT to give that tut. Please just answer my Q.

Re: Adding a unit

Posted: Wed Sep 10, 2008 4:24 pm
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.

Re: Adding a unit

Posted: Wed Sep 10, 2008 5:56 pm
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?

Re: Adding a unit

Posted: Wed Sep 10, 2008 7:13 pm
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.

Re: Adding a unit

Posted: Thu Sep 11, 2008 12:53 am
by -_-
The easiest and most convenient way is to look and Mos Eisley GCW Hero Assault's .lua file.

Re: Adding a unit

Posted: Thu Sep 11, 2008 11:07 am
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.

Re: Adding a unit

Posted: Thu Sep 11, 2008 11:43 am
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.

Re: Adding a unit

Posted: Thu Sep 11, 2008 8:42 pm
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.

Re: Adding a unit

Posted: Fri Sep 12, 2008 1:09 pm
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".

Re: Adding a unit

Posted: Fri Sep 12, 2008 3:26 pm
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

Re: Adding a unit

Posted: Fri Sep 12, 2008 3:41 pm
by Teancum
Bless you for actually reading the docs.

See folks! The answers are in the docs.

Re: Adding a unit

Posted: Fri Sep 12, 2008 4:30 pm
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.

Re: Adding a unit

Posted: Fri Sep 12, 2008 4:32 pm
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).

Re: Adding a unit

Posted: Fri Sep 12, 2008 8:32 pm
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:

Re: Adding a unit

Posted: Fri Sep 12, 2008 8:55 pm
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. :)

Re: Adding a unit

Posted: Fri Sep 12, 2008 9:22 pm
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!

Re: Adding a unit

Posted: Fri Sep 12, 2008 11:45 pm
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 ='.