Page 1 of 1

LUA Question

Posted: Thu Oct 04, 2012 6:37 pm
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:

Re: LUA Question

Posted: Thu Oct 04, 2012 8:16 pm
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

Re: LUA Question

Posted: Fri Oct 05, 2012 3:12 pm
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:

Re: LUA Question

Posted: Fri Oct 05, 2012 4:03 pm
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()
[...]