LUA Question

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
Cleb
Lieutenant General
Lieutenant General
Posts: 711
Joined: Sun Jun 17, 2012 10:12 pm
Projects :: Learning how to use 3DS Max
Games I'm Playing :: BF2 CIV4 MC
xbox live or psn: ˙. ˙. ˙. ˙. ˙. ˙
Location: Somewhere
Contact:

LUA Question

Post by Cleb »

I have a question about something I am trying to do with lua. This is my first time I've really actually done anything more than really simple things with the lua. Here is my code that I have:
Hidden/Spoiler:
OnFinishCapture(
function (cpcap)
PauseAnimation("capture");
RewindAnimation("capture");
PlayAnimation("capture");


end
)
What I would like to know if it is possible and if it is, how would I say which command post must be captured to activate an animation and which team would have to capture it for the animations to take place.

If what I am trying to do is impossible, well, so be it. I am not too good at lua, so I need a little help.
Thanks :wink:
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: LUA Question

Post by Locutus »

I'm not very good with lua either but I think something like this would work:

Code: Select all

   cp1team = 0  --create a variable that contains the owning team of your specified cp
   animation_triggered = false
   
   OnFinishCaptureTeam(YourFunction1, 1) --Everytime team 1 captures a cp, YourFunction will be called
   OnFinishCaptureTeam(YourFunction2, 2)
    
    function YourFunction1()
      cp1team = GetCommandPostTeam(cp1)  -- Lets get the owning team of our specified cp
      if cp1team == 1 and animation_triggered == false then --lets check wether our command post really belongs to team 1
         PauseAnimation("capture")
         RewindAnimation("capture")
         PlayAnimation("capture") --Play our animation
         animation_triggered = true --make sure we don't play the animation again if another cp gets captured
      end
    end

    function YourFunction2()
      cp1team = GetCommandPostTeam(cp1)  -- Lets get the owning team of our specified cp again
      if cp1team ~= 1 and animation_triggered == true then 
         animation_triggered = false --reenable the animation if the cp was captured back by team 2
      end
    end
User avatar
Cleb
Lieutenant General
Lieutenant General
Posts: 711
Joined: Sun Jun 17, 2012 10:12 pm
Projects :: Learning how to use 3DS Max
Games I'm Playing :: BF2 CIV4 MC
xbox live or psn: ˙. ˙. ˙. ˙. ˙. ˙
Location: Somewhere
Contact:

Re: LUA Question

Post by Cleb »

Hmmm.... It didn't seem to work... Though I added another part that might be making it not work having to do with cp neutrality...

My lua:
Hidden/Spoiler:
--THIS IS A TEST MAP
-- 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;
CLB = 3
-- 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"}
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)

conquest:Start()

SetUberMode(1);

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(30000)
SetMaxPlayerFlyHeight (300000)

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

-- OnFinishNeutralize(
-- function (cpdwn)
-- PauseAnimation("capturedown");
-- RewindAnimation("capturedown");
-- PlayAnimation("capturedown");

-- end
--)


-- OnFinishCapture(
-- function (cpcap)
-- PauseAnimation("capture");
-- RewindAnimation("capture");
-- PlayAnimation("capture");


-- end
--)


cp1team = 0 --create a variable that contains the owning team of your specified cp

OnFinishNeutralizeTeam(cpdown, 1) --Everytime team 1 captures a cp, YourFunction will be called

function cpdwn()
cp1team = GetCommandPostTeam(cp6) -- Lets get the owning team of our specified cp
if cp6team == 2 then --lets check wether our command post really belongs to team 1
PlayAnimation("capturedown") --Play your animation
cp1team = 0 --make sure we don't play the animation again if another cp gets captured
end
end

cp1team = 0 --create a variable that contains the owning team of your specified cp

OnFinishCaptureTeam(cpcap, 1) --Everytime team 1 captures a cp, YourFunction will be called

function cpcap()
cp1team = GetCommandPostTeam(cp6) -- Lets get the owning team of our specified cp
if cp6team == 1 then --lets check wether our command post really belongs to team 1
PlayAnimation("capture") --Play your animation
cp1team = 0 --make sure we don't play the animation again if another cp gets captured
end
end








ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("SIDE\\all.lvl",
"all_inf_rifleman_fleet")
ReadDataFile("SIDE\\cis.lvl",
"cis_hero_darthmaul",
"cis_hover_aat")

ReadDataFile("SIDE\\imp.lvl",
"imp_walk_atat")

ReadDataFile("dc:SIDE\\fed.lvl",
"cis_inf_droideka",
"geo_inf_aclay")

ReadDataFile("SIDE\\jed.lvl",
"jed_knight_01")

ReadDataFile("SIDE\\geo.lvl",
"geo_inf_acklay")

ReadDataFile("SIDE\\snw.lvl",
"snw_inf_wampa")

ReadDataFile("SIDE\\gam.lvl",
"gam_inf_gamorreanguard")

ReadDataFile("SIDE\\ewk.lvl",
"ewk_inf_trooper")


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

SetupTeams{
rep = {
team = REP,
units = 640,
reinforcements = 15000,
soldier = { "jed_knight_01",9, 640},
assault = { "geo_inf_acklay",9, 640},
sniper = { "gam_inf_gamorreanguard",9, 640},
officer = { "snw_inf_wampa",9, 640},
special = { "cis_inf_droideka",1, 640},

},
cis = {
team = CIS,
units = 640,
reinforcements = 15000,
soldier = { "all_inf_rifleman_fleet",9, 640},
assault = { "snw_inf_wampa",9, 640},
special = { "geo_inf_aclay",9, 640},
}
}

-- HI THERE --------------------------
SetTeamName (3, "locals")
AddUnitClass (3, "all_inf_rifleman_fleet", 7)
SetUnitCount (3, 7)
SetTeamAsNeutral(3,ATT)
SetTeamAsNeutral(3,DEF)
SetTeamAsNeutral(ATT,3)
SetTeamAsNeutral(DEF,3)
-----------------------------------

SetHeroClass(CIS, "cis_hero_darthmaul")
SetHeroClass(REP, "cis_hero_darthmaul")


-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 15) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 1) -- 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("CommandWalker", 1)
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:NUK\\NUK.lvl", "NUK_conquest")
ReadDataFile("dc:NUK\\NUK.lvl", "NUK_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
The old code had simply been commented out. :runaway:
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: LUA Question

Post by Locutus »

It would be easier to help if I knew exactly what you are trying to do.

But the code is in the wrong section anyways,m it should rather look like this:

Code: Select all

[...]
function ScriptPostLoad()	   
[...]
    conquest:Start()

    SetUberMode(1)

    EnableSPHeroRules()

    --variable setup (I dont think you need to do this in lua but it makes it easier to understand stuff
    cp6team = 0  
   
   OnFinishNeutralizeTeam(cpdwn, 1) 
   OnFinishNeutralizeTeam(cpcap, 2)

end --This ends ScriptPostLoad

--now we paste the functions after PostLoad but before ScriptInit
   
    function cpdwn()
      --Im not entirely sure what you want to do, so yeh, just put your stuff in here^^
    end

    
    function cpcap()
      --stuff
    end

    
function ScriptInit()
[...]
Post Reply