Using a timer in conquest mode [solved]

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
Locutus
1st Lieutenant
1st Lieutenant
Posts: 420
Joined: Fri Jun 04, 2010 10:08 am
Projects :: Stargate Battlefront Pegasus
Location: Germany
Contact:

Using a timer in conquest mode [solved]

Post by Locutus »

Hi everyone!
That may sound stupid but can I use timers in conquest mode?
I'm pretty sure you can but when I try the AI refuses to spawn.

Pretty sure I'm just too stupid to set up the code correctly:

Code: Select all

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


  function Bridge()  
    bridge_timer = CreateTimer("bridge_timer")
    SetTimerValue(bridge_timer, 320)
    StartTimer(bridge_timer)
    OnTimerElapse(
        function(timer)
                UnblockPlanningGraphArcs("Connection51")
                DisableBarriers("bridgebarrier1")
                DisableBarriers("bridgebarrier2")
                DisableBarriers("barrier321")
                print("Auf Kameraden, es geht los!")
                DestroyTimer(timer)
        end,
        bridgetimer
      )
  end


[...]
end
Complete lua:
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("LinkedTurrets")

-- REP Attacking (attacker is always #1)
REP = 1;
CIS = 2;
-- These variables do not change
ATT = REP;
DEF = CIS;


function ScriptPostLoad()

BlockPlanningGraphArcs("Connection75")

--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)

-- Bridge();
--IsObjectAlive (all_prop_blockaderunner, bridge)

conquest:Start()

EnableSPHeroRules()


--Cloudcar = TargetType:New{classname = "bes_fly_cloudcar", killLimit = 1, icon = nil}
--cc_count = 1

-- Cloudcar.OnDestroy = function(self, objectPtr)
-- cc_count = cc_count - 1
-- if cc_count == 0 then
-- PlayAnimation("cortest")
-- end
-- end
--SetProperty("local_cp", "SpawnPath", "")
cc_count = 0
animateobja = OnObjectKill(
function(object, killer)
if GetEntityName(object) == "bes_fly_cloudcar5" then
cc_count = cc_count + 1
if cc_count == 1 then
SetProperty("local_cp", "SpawnPath", "local_spawn")
end
end
end
)

animateobjb = OnObjectKill(
function(object, killer)
if GetEntityName(object) == "bes_fly_cloudcar1" then
cc_count = cc_count + 1
if cc_count == 1 then
SetProperty("local_cp", "SpawnPath", "local_spawn")
end
end
end
)

killobja = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_1" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjb = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_2" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjc = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_3" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjd = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_4" then
AddAssaultDestroyPoints(killer)
end
end
)

killobje = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_5" then
AddAssaultDestroyPoints(killer)
end
end
)

killobjf = OnObjectKill(
function(object, killer)
if killer and IsCharacterHuman(killer) and GetEntityName(object) == "test_turr_6" then
AddAssaultDestroyPoints(killer)
end
end
)



-- function Bridge()
-- bridge_timer = CreateTimer("bridge_timer")
-- SetTimerValue(bridge_timer, 320)
-- StartTimer(bridge_timer)
-- OnTimerElapse(
-- function(timer)
-- UnblockPlanningGraphArcs("Connection51");
-- DisableBarriers("bridgebarrier1");
-- DisableBarriers("bridgebarrier2");
-- DisableBarriers("barrier321");
-- print("Auf Kameraden, es geht los!")
-- DestroyTimer(timer)
-- end,
-- bridgetimer
-- )
-- end

function SetupTurrets()
turretLinkageCIS = LinkedTurrets:New{ team = CIS, mainframe = "cis-defense",
turrets = {"test_turr_1", "test_turr_2", "test_turr_3"} }
turretLinkageCIS:Init()
end

function SetupTurrets()
turretLinkageREP = LinkedTurrets:New{ team = REP, mainframe = "rep-defense",
turrets = {"test_turr_4", "test_turr_5", "test_turr_6"} }
turretLinkageREP:Init()
end



AddDeathRegion("dr1")
AddDeathRegion("dr2")


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("dc:Load\\common.lvl")

ReadDataFile("ingame.lvl")

SetMaxFlyHeight(64)
SetMaxPlayerFlyHeight (64)

SetMemoryPoolSize ("ClothData",20)
SetMemoryPoolSize ("Combo",30) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",500) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",500) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",400) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",4000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",88) -- should be ~1x #combo
SetMemoryPoolSize ("FLEffectObject::OffsetMatrix",190)
SetMemoryPoolSize ("ParticleTransformer::SizeTransf",1030)

ReadDataFile("dc:sound\\HTM.lvl;htmcw")
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")
ReadDataFile("SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_inf_officer",
"cis_inf_droideka")


ReadDataFile("SIDE\\des.lvl",
"tat_inf_jawa")

ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_spa_all_cannon")

ReadDataFile("dc:SIDE\\bes.lvl",
"bes_fly_cloudcar",
"bes_inf_flametrooper",
"bes_inf_geonosian",
"bes_hero_kitfisto")

ReadDataFile("dc:SIDE\\lis.lvl",
"lis_hero_grievous")


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},
pilot = { "bes_inf_flametrooper",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},
pilot = { "bes_inf_geonosian",1, 4},
officer = { "cis_inf_officer",1, 4},
special = { "cis_inf_droideka",1, 4},
}
}

--AddUnitClass(REP, "bes_inf_flametrooper",1,4)
--AddUnitClass(CIS, "bes_inf_geonosian",1,4)


SetTeamName (3, "jawas")
AddUnitClass (3, "tat_inf_jawa", 10,15)
SetUnitCount (3, 15)
AddAIGoal(3, "Deathmatch", 100)
SetTeamAsEnemy(ATT,3)
SetTeamAsEnemy(3,ATT)
SetTeamAsEnemy(DEF,3)
SetTeamAsEnemy(3,DEF)

SetHeroClass(CIS, "lis_hero_grievous")
SetHeroClass(REP, "bes_hero_kitfisto")



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("SoldierAnimation", 500)
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)
SetMemoryPoolSize("EntityRemoteTerminal", 12)
SetMemoryPoolSize("MountedTurret", 70)

SetSpawnDelay(10.0, 0.25)
ReadDataFile("dc:UCM\\UCM.lvl", "UCM_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("dc:sound\\htm.lvl", "htm_hero_vo_quick");
-- 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.634142, -0.010264, 0.773047, 0.012512, 170.609879, 45.829781, -174.404480);
AddCameraShot(0.432235, -0.048634, -0.894802, -0.100681, 4.130234, 59.789005, -191.375732);
AddCameraShot(0.932976, -0.083817, -0.348639, -0.031321, 73.343254, 52.536682, -123.949089);
AddCameraShot(0.856000, 0.142202, -0.490315, 0.081453, -81.838860, 35.117371, -22.050468);


end
ErrorLog:
Hidden/Spoiler:
Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\LuaHelper.cpp(312)
CallProc failed: (none):0: attempt to call global `Bridge' (a nil value)
stack traceback:
(none): in function `ScriptPostLoad'
Thanks for taking a look.
~Locutus
Last edited by Locutus on Thu Feb 23, 2012 11:05 am, edited 1 time in total.
User avatar
Firefang
Major
Major
Posts: 518
Joined: Mon Nov 15, 2010 8:55 pm
Location: California

Re: Using a timer in conquest mode

Post by Firefang »

Locutus wrote: function Bridge()
bridge_timer = CreateTimer("bridge_timer")
SetTimerValue(bridge_timer, 320)
StartTimer(bridge_timer)
OnTimerElapse(
function(timer)
UnblockPlanningGraphArcs("Connection51")
DisableBarriers("bridgebarrier1")
DisableBarriers("bridgebarrier2")
DisableBarriers("barrier321")
print("Auf Kameraden, es geht los!")
DestroyTimer(timer)
end,
bridge_timer
)
end
That needs to be the name of your timer.
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: Using a timer in conquest mode

Post by Locutus »

Argh, I double-checked for typos and still didn't see it >.<
Thank you!
There was even an additional mistake because the function needed to placed after PostLoad.

Fixed both and got it working :D
User avatar
Tears2Roses
Chief Warrant Officer
Chief Warrant Officer
Posts: 336
Joined: Thu Jul 07, 2011 9:20 am
Projects :: Oh some random stuff who knows
Games I'm Playing :: SWBF2
xbox live or psn: PC beats xbox.

Re: Using a timer in conquest mode [solved]

Post by Tears2Roses »

may I ask, what does:

Code: Select all

print("Auf Kameraden, es geht los!")
that code do? translation would be nice too.
kinetosimpetus
Imperial Systems Expert
Imperial Systems Expert
Posts: 2381
Joined: Wed Mar 25, 2009 4:15 pm
Projects :: A secret project
Games I'm Playing :: Warframe STO

Re: Using a timer in conquest mode [solved]

Post by kinetosimpetus »

prints that message to the errorlog.
Webster27
Rebel Warrant Officer
Rebel Warrant Officer
Posts: 312
Joined: Tue Nov 08, 2011 11:14 am
Projects :: The Republic Commando Mod
Games I'm Playing :: SWBF2 Minecraft
xbox live or psn: No gamertag set
Location: Germany

Re: Using a timer in conquest mode [solved]

Post by Webster27 »

Tears2Roses wrote:may I ask, what does:

Code: Select all

print("Auf Kameraden, es geht los!")
that code do? translation would be nice too.
Translation: "Come on comrades, let's go !"
User avatar
Tears2Roses
Chief Warrant Officer
Chief Warrant Officer
Posts: 336
Joined: Thu Jul 07, 2011 9:20 am
Projects :: Oh some random stuff who knows
Games I'm Playing :: SWBF2
xbox live or psn: PC beats xbox.

Re: Using a timer in conquest mode [solved]

Post by Tears2Roses »

I still dont understand how printing "come on comrades, lets go!" to the error log does anything, but lets not drag this topic on any further.
THEWULFMAN
Space Ranger
Posts: 5557
Joined: Tue Aug 17, 2010 3:30 pm
Projects :: Evolved 2
Location: Columbus, Ohio
Contact:

Re: Using a timer in conquest mode [solved]

Post by THEWULFMAN »

Tears2Roses wrote:I still dont understand how printing "come on comrades, lets go!" to the error log does anything, but lets not drag this topic on any further.


Basically, it's required for functions to work. It can be named pretty much anything, like "I drink your milkshake" or "no soup for you". It just needs something to print out in the error log.
User avatar
Tears2Roses
Chief Warrant Officer
Chief Warrant Officer
Posts: 336
Joined: Thu Jul 07, 2011 9:20 am
Projects :: Oh some random stuff who knows
Games I'm Playing :: SWBF2
xbox live or psn: PC beats xbox.

Re: Using a timer in conquest mode [solved]

Post by Tears2Roses »

oohh I see, thanks wulf.
User avatar
Firefang
Major
Major
Posts: 518
Joined: Mon Nov 15, 2010 8:55 pm
Location: California

Re: Using a timer in conquest mode [solved]

Post by Firefang »

You actually don't need to put print in to have the function work, sorry Wulf, but it's actually used as a debugger. When the game has read passed that point in the code, it will put the print line into the debugger. You can use this if you have errors in the code to figure out where it stops working (first line, second, thirtieth, etc.) or to give yourself notes that the function has run properly.
Example:

Code: Select all

boxkill = OnCharacterDeath(
function(character, killer)
print("line 1")
if IsCharacterHuman(character) then
KillObject("box")
print("the box has been destroyed")
end
end
)
If "line 1" appears in your debug log, you know the function has been activated. And if "the box has been destroyed" appears, you know it was destroyed, even if you didn't see it.
THEWULFMAN
Space Ranger
Posts: 5557
Joined: Tue Aug 17, 2010 3:30 pm
Projects :: Evolved 2
Location: Columbus, Ohio
Contact:

Re: Using a timer in conquest mode [solved]

Post by THEWULFMAN »

Firefang wrote:You actually don't need to put print in to have the function work, sorry Wulf, but it's actually used as a debugger.

I had guessed as much, but since it's always included I just wanted to simplify it for Rosy. Anyway, thanks for the info. :)
Post Reply