Page 1 of 2

Lua Help [Solved]

Posted: Thu Sep 03, 2009 10:54 pm
by IronJaw
I'm trying to get Darth D.U.C.K.'s Commandos to work on a map. I've placed everything rith I hope, and tried to switch the "special" unit type to Commando, but no go. It doesn't appear on the unite selection screen.

My ***c_con.lua:
Hidden/Spoiler:
--
-- 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(100)
SetMaxPlayerFlyHeight (100)

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",
"rep_inf_commando")
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_commando",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:CR1\\CR1.lvl", "CR1_conquest")
ReadDataFile("dc:CR1\\CR1.lvl", "CR1_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
I remember some one said something a bout a <AddUnite> type thing, but I forgot it.

Re: Lua Help

Posted: Thu Sep 03, 2009 10:57 pm
by kinetosimpetus
ReadDataFile("dc: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",
"rep_inf_commando")

add the dc:

Re: Lua Help

Posted: Thu Sep 03, 2009 10:59 pm
by obiboba3po
kinetosimpetus wrote:ReadDataFile("dc: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",
"rep_inf_commando")

add the dc:
correct. did you read the custom sides tutorial? youll need to add 2 files, a munge and clean.bat to the rep folder to make it custom as well. oh and make sure you made a req and added it to the side req file.

Re: Lua Help

Posted: Thu Sep 03, 2009 11:00 pm
by kinetosimpetus
no, only need to add .bat's when you make a totally new side, for instance "kin"

Re: Lua Help

Posted: Thu Sep 03, 2009 11:03 pm
by obiboba3po
kinetosimpetus wrote:no, only need to add .bat's when you make a totally new side, for instance "kin"
thanks for the correction. obviously haven't modded in months so im a bit rusty. but the req is absolutely necessary, it must be correct and all the right files there.

Re: Lua Help

Posted: Thu Sep 03, 2009 11:06 pm
by IronJaw
Thanks guys! I shall try it now.

Re: Lua Help

Posted: Thu Sep 03, 2009 11:21 pm
by IronJaw
No go, it still didn't work. it didn't even show up in the unit select screen.....

Re: Lua Help

Posted: Thu Sep 03, 2009 11:39 pm
by kinetosimpetus
Can you post rep.req and rep_inf_commando.req?

Re: Lua Help

Posted: Fri Sep 04, 2009 12:11 am
by IronJaw
Sure thing!

Here's the Req.req:
Hidden/Spoiler:
ucft
{
REQN
{
"lvl"
"rep_bldg_forwardcenter"
"rep_fly_anakinstarfighter_sc"
"rep_fly_arc170fighter_dome"
"rep_fly_arc170fighter_sc"
"rep_fly_assault_dome"
"rep_fly_cat_dome"
"rep_fly_gunship"
"kam_fly_ride_gunship"
"rep_fly_gunship_sc"
"rep_fly_gunship_dome"
"rep_fly_jedifighter_dome"
"rep_fly_jedifighter_sc"
"rep_fly_ride_gunship"
"rep_fly_vwing"
"rep_hero_aalya"
"rep_hero_anakin"
"rep_hero_cloakedanakin"
"rep_hero_kiyadimundi"
"rep_hero_macewindu"
"rep_hero_macewindu_obi"
"rep_hero_obiwan"
"rep_hero_yoda"
"rep_hover_fightertank"
"rep_hover_barcspeeder"
"rep_inf_ep2_engineer"
"rep_inf_ep2_jettrooper"
"rep_inf_ep2_jettrooper_training"
"rep_inf_ep2_jettrooper_rifleman"
"rep_inf_ep2_jettrooper_sniper"
"rep_inf_ep2_officer"
"rep_inf_ep2_officer_training"
"rep_inf_ep2_pilot"
"rep_inf_ep2_rifleman"
"rep_inf_ep2_rocketeer"
"rep_inf_ep2_rocketeer_chaingun"
"rep_inf_ep2_sniper"
"rep_inf_ep2_marine"
"rep_inf_ep3_engineer"
"rep_inf_ep3_jettrooper"
"rep_inf_ep3_officer"
"rep_inf_ep3_pilot"
"rep_inf_ep3_rifleman"
"rep_inf_ep3_marine"
"rep_inf_ep3_rocketeer"
"rep_inf_ep3_sniper"
"rep_inf_ep3_sniper_felucia"
"rep_inf_commando"
"rep_walk_atte"
"rep_walk_atte_nospawn"
"rep_walk_oneman_atst"
"rep_veh_remote_terminal"
"uta1_prop_gunship"
"uta_fly_ride_gunship"
"uta_fly_ride_gunshipmyg"

}
}
The commando didn't come with a .req. I guess that I just copy another unites .req, change the mane, and stick it in the req folder?

Re: Lua Help

Posted: Fri Sep 04, 2009 12:19 am
by kinetosimpetus
yes, you have to add the new req and rename it, but it also needs to be edited inside for rep_inf_commando, then in the odf folder you will need a new odf if you havent made one yet, called rep_inf_commando

to set it up, you can copy the rep_inf_ep3_rifleman and copy everything over, then you can add weaponsections that will override the ones in rifleman, givving the new unit different weapons

also change the GeometryName and LowResGeometry (idk if that't it, but theres 2 of them, normal and low res) to the name of the commando msh, maybe rep_commando_boss, i dont know their names off the top of my head

Re: Lua Help

Posted: Fri Sep 04, 2009 12:31 pm
by IronJaw
OK, thanks. This is a custom Commando, so I don't think it has a name.

So I:

1) Create the Commando.req file

2) Create Commando.odf (Copying the rep_inf_ep3trooper.odf)

3) Change the Commando.odf

4) Change the GemonitryName, and hte LowRes name to the Commando.msh.

Also do I have to put the duel wealdable guns that I donwloaded into a speciel file? I haven't looked at the readme yet, but I thought I would just ask anyway.

Re: Lua Help

Posted: Fri Sep 04, 2009 12:44 pm
by kinetosimpetus
1-3, yes, but use the same name as the names used in the reqs and lua

4 yes, the filename with out the .msh extension

the ingame name is set by running editlocalize.bat in data_***

go ahead and read the readme for the pistols, they probably explain how to set them up.

Re: Lua Help

Posted: Fri Sep 04, 2009 3:40 pm
by IronJaw
Ok, I have twodifferent dual pistol .zips.

Ones' by DarthD.U.C.K. the others by kinetosimpetus.

Kinetosimpetus says
You need a soldier animation for dual pistols (or you could just use one pistol)
not included
I guess that Darth Ducks has two different ways that hands can be held, and has several different gun types?

Re: Lua Help

Posted: Fri Sep 04, 2009 3:45 pm
by kinetosimpetus
DarthDUCK's animations are used for both his and my models

Re: Lua Help

Posted: Fri Sep 04, 2009 3:54 pm
by IronJaw
I copied the .odf of rep_inf_ep3_trooper and renamed it rep_inf_commando.

I opened the .odf up in Wordpad and changed it to:
Hidden/Spoiler:
[GameObjectClass]
ClassParent = "rep_inf_commando"

[Properties]
GeometryName = "rep_inf_commando"
GeometryLowRes = "rep_inf_commando"
FirstPerson = "REP\reptroop;rep_1st_trooper"
I looked at:
http://www.gametoast.com/forums/viewtop ... 27&t=12319

I didn't see any 1st person stuff for the commando, so would I leave the FirstPerson line alone?

Also what exactly does the abbreviation "dc:" stand for when you place it in front of "Sides" in the .lua? Is is just two letters? Or is there a deeper significance?

Re: Lua Help

Posted: Fri Sep 04, 2009 4:16 pm
by Xavious
IronJaw wrote: I didn't see any 1st person stuff for the commando, so would I leave the FirstPerson line alone?
Unless you created your own first person stuff, then yes.
IronJaw wrote:Also what exactly does the abbreviation "dc:" stand for when you place it in front of "Sides" in the .lua? Is is just two letters? Or is there a deeper significance?
It just tells the game to read the side.lvl from your map's side folder rather than the game's side folder.

Re: Lua Help

Posted: Fri Sep 04, 2009 7:27 pm
by IronJaw
So:

1) I put my custom commando .msh and the .tga files in the data_***/sides/rep/msh

2) I create a new .odf file called rep_inf_default_commando.odf. I change the weapons to my liking. Looks like this:
Hidden/Spoiler:
[GameObjectClass]
ClassParent = "rep_inf_default"


[Properties]
WEAPONSECTION = 1
WeaponName = "rep_weap_inf_rifle"
WeaponAmmo = 4

WEAPONSECTION = 2
WeaponName = "rep_weap_inf_pistol"
WeaponAmmo = 0

WEAPONSECTION = 3
WeaponName = "rep_weap_inf_thermaldetonator"
WeaponAmmo = 4
WeaponChannel = 1

WEAPONSECTION = 4
WeaponName = "rep_weap_inf_autoturret_dispenser"
WeaponAmmo = 1
WeaponChannel = 1

WEAPONSECTION = 5
WeaponName = "rep_weap_award_rifle"
WeaponAmmo = 4

WEAPONSECTION = 5
WeaponName = "rep_weap_award_pistol"
WeaponAmmo = 6

VOUnitType = 121


3) I create a .odf file named “rep_inf_commando” by copying the rep_inf_ep3_trooper.odf and changing/renaming it. The .odf looks like this:
Hidden/Spoiler:
[GameObjectClass]
ClassParent = "rep_inf_default_commando"

[Properties]
GeometryName = "rep_inf_commando"
GeometryLowRes = "rep_inf_commando"
FirstPerson = "REP\reptroop;rep_1st_trooper"
4) I make a rep_inf_commando.req file that looks like so:
Hidden/Spoiler:
ucft
{
REQN
{
"class"
"rep_inf_commando"
}
}
5) I add “rep_inf_commando” to the rep.req:
Hidden/Spoiler:
"rep_inf_ep3_pilot"
"rep_inf_ep3_rifleman"
"rep_inf_ep3_marine"
"rep_inf_ep3_rocketeer"
"rep_inf_ep3_sniper"
"rep_inf_ep3_sniper_felucia"
"rep_inf_commando"
"rep_walk_atte"
"rep_walk_atte_nospawn"
"rep_walk_oneman_atst"
"rep_veh_remote_terminal"
"uta1_prop_gunship"
"uta_fly_ride_gunship"
"uta_fly_ride_gunshipmyg"
6) I change the ***c_con.lua to:
Hidden/Spoiler:
ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("dc: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",
"rep_inf_commando")
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")

AddUnitClass(REP, "rep_inf_comando",1, 4)

Re: Lua Help

Posted: Fri Sep 04, 2009 8:41 pm
by kinetosimpetus
looks good to me

Re: Lua Help

Posted: Fri Sep 04, 2009 10:58 pm
by IronJaw
Good, right now it's doing the hour and a half Munge Process.

EDIT
I played the level, and still no Commando.... Everything works fine except the commando doesn't show up in the unit select screen. (NPC are not using the commando Unite either)

Re: Lua Help

Posted: Fri Sep 04, 2009 11:19 pm
by kinetosimpetus
oh, i missed something the last time.

AddUnitClass(REP, "rep_inf_comando",1, 4) there's only one m