Page 1 of 2

How do I make AI play as heroes? [Solved]

Posted: Tue Aug 11, 2009 3:08 pm
by Coley
So, last question for this time.
I can change my heroes, I can play them, everything works.
But, the other ai-side in game don´t use the hero...so I always win.
How can I make it, that the other side (and my, of course) uses automic heroes??
Thanks for help

Re: Hero

Posted: Tue Aug 11, 2009 3:10 pm
by YaNkFaN
http://www.gametoast.com/forums/viewtop ... =64&t=7088

there is a script here that allows for AI heros for both teams this being said you can still play as the hero take a look at it and possibly use it

Re: Hero

Posted: Tue Aug 11, 2009 3:13 pm
by Coley
I can´t download it.

EDIT
Is there another way?

Re: Hero

Posted: Tue Aug 11, 2009 3:16 pm
by -_-
If you look a tad further down, you would see a "Fixed Link".

Re: Hero

Posted: Tue Aug 11, 2009 3:22 pm
by Coley
okay, now I can see another link, too :oops: .
I´ll try it

EDIT

uuuh...I downloaded it, and tried to follow the guide...but isn´t the...hugest description.
mmmh...can somebody help me?^^
I do´nt know where I have to add lines in the lua EXACTLY...and this isn´t very good :(

Re: Hero

Posted: Tue Aug 11, 2009 3:38 pm
by -_-
I'm pretty sure there's are a couple reference .luas in that file to look at.

Re: Hero

Posted: Tue Aug 11, 2009 3:42 pm
by Coley
I HAVE seen these "references".
But it doesn´t EXACTLY tell me where I have to writ any codes!

Re: Hero

Posted: Tue Aug 11, 2009 3:45 pm
by DarthD.U.C.K.
sometimes readmes can be really usefull....
Hidden/Spoiler:
they sometimes even include something like a tutorial...

Re: Hero

Posted: Tue Aug 11, 2009 3:48 pm
by Coley
I READ THE README AND IT WASN´T VERY HELPFUL!!!! :x
But anyhow, I thank you...

Re: Hero

Posted: Tue Aug 11, 2009 3:55 pm
by DarthD.U.C.K.
maybe it explained everything to you, but you didnt understand it? :roll:

Re: Hero

Posted: Tue Aug 11, 2009 3:58 pm
by Coley
sorry, that I am angry. possible, my english isn´t very good. But I know one thing:
this isn´t the easiest and hugest addme and reference.... :cry:
And when you can explain it, then DO it, and don´t say me I´m to silly to understand anything...

Re: Hero

Posted: Tue Aug 11, 2009 4:02 pm
by DarthD.U.C.K.
erm, tutorials explain how to do it do you expect us to write all tutorials again and again for everybody who doesnt understand them? :x

i didnt say you were to silly to understand it, but do you claim that this tutorial is bad/wrong because you cant understand it?

sorry, but im getting really tired of these "i dont understand the tutorial, tell me (EXACTLY) how to do it!" guys, modding isnt easy..

Re: Hero

Posted: Tue Aug 11, 2009 4:07 pm
by Coley
Okay...I can understand you. But did you read this tutorial?
You can´t know where you must put in some words or where you just must change anything.... :(
but I will try it again tomorrow....sorry...

Re: Hero

Posted: Tue Aug 11, 2009 4:11 pm
by DarthD.U.C.K.
but thats exactly what the tutorial tells you

as an example:
="Tutorial"
2- You will see a bunch of "ScriptCB_DoFile(something here)" commands at the top
3- Add this just after them:


ScriptCB_DoFile("AIHeroSupport")
and if you cant ifn the place you have to put it in, just open an example lua and look where the line, to which the tutorial references, is written

what else do you need?

Re: Hero

Posted: Tue Aug 11, 2009 4:14 pm
by Coley
for example, there are two lines wich the CB name

Re: Hero

Posted: Tue Aug 11, 2009 4:15 pm
by Super_Clone
You can just set the hero as a unit with a point unlock, set it to allow only 1 of each hero on the battlefield at all times, and the AI will play as that hero throughout the map. Thats a really really really easy, well working, work around I use.

Re: Hero

Posted: Tue Aug 11, 2009 4:20 pm
by Blade
Or you could do it the other way, which isn't a whole lot harder and isn't a workaround.

Re: Hero

Posted: Tue Aug 11, 2009 4:21 pm
by YaNkFaN
but then once you unlock the hero ie by killing one person you get the hero for the rest of the map which kind of defeats the purpose of the infantry..

Re: Hero

Posted: Tue Aug 11, 2009 4:36 pm
by DarthD.U.C.K.
Coley wrote:for example, there are two lines wich the CB name
yes, but whats the problem?
if you are being confused by the

Code: Select all

    ScriptCB_SndPlaySound("KAS_obj_13") 
line in the reference lua
you can see, that the

Code: Select all

ScriptCB_DoFile("AIHeroSupport")
line is not blow this line, so you have to add it under the upper lines of this kind

if you are possibly confused by the

Code: Select all

     ScriptCB_SetDopplerFactor(0.4)
line in your own maps lua, chack the reference and see that it doesnt has this line and that the

Code: Select all

ScriptCB_DoFile("AIHeroSupport")
line is added below the two upper lines of this kind

and if you are possibly confused by the two

Code: Select all

ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("setup_teams")
lines on top of the lua and dont know undwer which line to add the new script, you can read n the readme that you have to add the

Code: Select all

ScriptCB_DoFile("AIHeroSupport")
line below both

i hope i was able to show how to solve all possible problems you could have meant with your question (yourself) by just drawing logical conclusions

Re: Hero

Posted: Wed Aug 12, 2009 7:01 am
by Coley
mmmh...this is now my lua...and I can play my map, but there isn´t any jedi unplayed hero.
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("AIHeroSupport")
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(herosupport = AIHeroSupport:New{AIATTHeroHealth = 5000, AIDEFHeroHealth = 3000, gameMode = "NonConquest",})

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_ep2_rifleman",
"rep_inf_ep2_rocketeer",
"rep_inf_ep2_engineer",
"rep_inf_ep2_sniper",
"rep_inf_ep3_officer",
"rep_inf_ep2_jettrooper",
"rep_hover_fightertank",
"rep_hero_macewindu",
"rep_hover_barcspeeder")
ReadDataFile("dc:SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_inf_officer",
"cis_inf_droideka",
"cis_hero_jangofett",
"cis_hover_aat")


ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_laser",
"tur_bldg_tower")

SetupTeams{
rep = {
team = REP,
units = 30,
reinforcements = 150,
soldier = { "rep_inf_ep2_rifleman",9, 25},
assault = { "rep_inf_ep2_rocketeer",1, 4},
engineer = { "rep_inf_ep2_engineer",1, 4},
sniper = { "rep_inf_ep2_sniper",1, 4},
officer = {"rep_inf_ep3_officer",1, 4},
special = { "rep_inf_ep2_jettrooper",1, 4},

},
cis = {
team = CIS,
units = 30,
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},
}
}

herosupport: SetHeroClass(CIS, "cis_hero_jangofett")
herosupport: SetHeroClass(REP, "rep_hero_macewindu")
herosupport:CP1("CP1","CP1_spawn")
herosupport:CP2("CP2","CP2_spawn")

-- 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:SUM\\SUM.lvl", "SUM_conquest")
ReadDataFile("dc:SUM\\SUM.lvl", "SUM_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
sorry, that I annoy you...