Page 1 of 1

Problem with my Lua

Posted: Thu Aug 27, 2009 12:13 am
by Fierfek
I have added a ton of stuff to my lua, and (no surprise), I got some munge errors:
Hidden/Spoiler:
C:\BF2_ModTools\data_RC1\_BUILD\..\..\ToolsFL\Bin\luac.exe: ..\..\common\scripts\RC1\RC1c_con.lua:81: unexpected symbol near `='
ERROR[scriptmunge scripts\RC1\RC1c_con.lua]:Could not read input file.ERROR[scriptmunge scripts\RC1\RC1c_con.lua]:Could not read input file. [continuing]
2 Errors 0 Warnings

ERROR[levelpack mission\RC1c_con.req]:Expecting bracket, but none was found.
File : munged\pc\rc1c_con.script.req(1)...

ucft <--
ERROR[levelpack mission\RC1c_con.req]:Expecting bracket, but none was found.
File : munged\pc\rc1c_con.script.req(1)...

ucft <--

2 Errors 0 Warnings
I did a manual clean, same thing.
I can't figure out what these mean - can someone please check my lua? It would really help.
Here is the 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("MultiObjectiveContainer")
ScriptCB_DoFile("ObjectiveGoto")
ScriptCB_SetGameRules("Campaign")

-- 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"}
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(cp4)

conquest:Start()

SetUberMode(1);

EnableSPHeroRules()

onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
AddAIGoal(1,'Follow', 50, character)
ReleaseCharacterSpawn(onfirstspawn)
onfirstspawn = nil
objectives_timer = CreateTimer("objectives_timer")
SetTimerValue(objectives_timer, 2)
StartTimer(objectives_timer)
begin_objectives = OnTimerElapse(
function(timer)
StartObjectives ()
ScriptCB_EnableCommandPostVO(0)
end,
objectives_timer
)
end
end
)

AllowAISpawn(REP, False)

KillObject("cp5")
SetReinforcementCount(3, 1000)
SetAIDifficulty(5, -5)
SetUnitCount (3, 0)

--Objective 1
Objective1CP = CommandPost:New{name = "cp1", hideCPs = false}
EnableBarriers("hall3")
BlockPlanningGraphArcs("hall")
BlockPlanningGraphArcs("hall2")
CreateTimer("rein_timer")
SetTimerValue("rein_timer", 360)
ShowTimer("rein_timer")
StartTimer("rein_timer")
textATT = "level.RC1.objectives.timer",
popupText = "level.RC1.objectives.timer",
timeLimit = 360, timeLimitWinningTeam = DEF}
Objective1:AddCommandPost(Objective2CP)
Objective1.OnStart = function(self)
Objective1.defendGoalATT = AddAIGoal(ATT, "Defend", 1000, "cp2")
MapAddEntityMarker("cp2", "hud_objective_icon", 3.0, 1, "YELLOW", true)
end
Objective1.OnComplete = function(self)
ShowMessageText("game.objectives.complete", ATT)
DeleteAIGoal(Objective2.defendGoalATT)
MapRemoveEntityMarker("cp2")
DEF_ReinforcementCount = GetReinforcementCount(ATT)
SetReinforcementCount(ATT, ATT_ReinforcementCount + 50)
end

--Objective 2
textATT = "level.RC1.objectives.clones",
popupText = "level.RC1.objectives.clones",
timeLimit = 60, timeLimitWinningTeam = DEF}
StartTimer("lose")
Objective2.OnStart = function(self)
Objective2.defendGoalATT = AddAIGoal(ATT, "Defend", 1000, "cp2")
MapAddEntityMarker("cp2", "hud_objective_icon", 3.0, 1, "YELLOW", true)
end
Objective2.OnComplete = function(self)
ShowMessageText("game.objectives.complete", ATT)
DeleteAIGoal(Objective2.defendGoalATT)
MapRemoveEntityMarker("cp2")
end

--Objective 3
textATT = "level.RC1.objectives.wall",
KillObject("col1")
KillObject("col2")
KillObject("col3")
popupText = "level.RC1.objectives.wall",
Objective3.OnStart = function(self)
MapAddEntityMarker("panel", "hud_objective_icon", 3.0, 1, "YELLOW", true)
end
Objective3.OnComplete = function(self)
PlayAnimation("door_open")
ShowMessageText("game.objectives.complete", ATT)
MapRemoveEntityMarker("panel")
DisableBarriers("hall3")
UnblockPlanningGraphArcs("hall")
UnblockPlanningGraphArcs("hall2")
end

Objective4 = ObjectiveGoto:New{TeamATT = ATT, -- objective made
text = "level.RC1.objectives.hall", popupText = "level.RC1.objectives.hall", -- show objective on screen
regionName = "goto", mapIcon = "hud_objective_icon_circle", AIGoalWeight = 0}

Objective4.OnStart = function(self)
ATT_obj1_aigoal = AddAIGoal(ATT, "Deathmatch", 100)
MapAddEntityMarker("goto", "hud_objective_icon", 3.0, 1, "YELLOW", true) -- AI objective
end

Objective4.OnComplete = function(self)
ShowMessageText("game.objectives.complete", ATT)
DeleteAIGoal(Objective1.defGoal1)
DeleteAIGoal(Objective1.defendGoal1)
PlayAnimation("door_close")
end



OnTimerElapse(
function(timer)
RespawnObject("cp5)
SetUnitCount (3, 500)
SetUnitCount (2, 100)
DestroyTimer("rein_timer")
CreateTimer("lose")
SetTimerValue("lose", 60)
end,
"rein_timer"
)



OnTimerElapse(
function(timer)
SetUnitCount (3, 0)
SetUnitCount (2, 100)
DestroyTimer("lose")
end,
"lose"
)

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


SetTeamAggressiveness(ATT, 1)

SetTeamAggressiveness(3, 1)

SetTeamAggressiveness(DEF, 0)


ReadDataFile("ingame.lvl")

ForceHumansOntoTeam1()

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_atin_commando",
"rep_inf_boss_commando",
"rep_inf_scorch_commando",
"rep_inf_sev_commando",
"rep_inf_fixer_commando",
"rep_inf_niner_commando",
"rep_inf_darman_commando",
"rep_inf_ep2_rifleman")
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 = 50,
reinforcements = 45,
soldier = { "rep_inf_atin_commando",1, 2},
assault = { "rep_inf_darman_commando",1, 2},
engineer = { "rep_inf_fixer_commando",1, 2},
sniper = { "rep_inf_sev_commando",1, 2},
officer = {"rep_inf_scorch_commando",1, 2},
special = { "rep_inf_niner_commando",1, 2},

},
cis = {
team = CIS,
units = 400,
reinforcements = 1000,
soldier = { "cis_inf_rifleman",300, 350},
engineer = { "cis_inf_engineer",3, 10},
sniper = { "cis_inf_sniper",2, 10},
special = { "cis_inf_droideka",1, 5},
}
}

SetTeamName (3, "clones")
AddUnitClass (3, "rep_inf_ep2_rifleman", 400,500)
SetUnitCount (3, 500)
AddAIGoal(3, "Deathmatch", 100)
SetTeamAsFriend(ATT,3)
SetTeamAsFriend(3,ATT)
SetTeamAsEnemy(DEF,3)
SetTeamAsEnemy(3,DEF)

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


-- 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:RC1\\RC1.lvl", "RC1_conquest")
ReadDataFile("dc:RC1\\RC1.lvl", "RC1_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 used YaNkFaN's tut for campaign maps, if it helps solve the problem.

Re: Problem with my Lua

Posted: Thu Aug 27, 2009 2:39 pm
by Frisbeetarian
Fierfek wrote:I did a manual clean, same thing.
Manual clean is not a magic pill that relieves problems. If you get an error like your first one there, it's likely that you actually have a problem.

You also need to learn how to read a munge log, because most of the time they are very descriptive.

Code: Select all

C:\BF2_ModTools\data_RC1\_BUILD\..\..\ToolsFL\Bin\luac.exe: ..\..\common\scripts\RC1\RC1c_con.lua:81: unexpected symbol near `='
Up through luac.exe: tells you what program is generating the error. The next part tells you what file the error is from and most importantly, what line in that file. In this case, line 81 in your conquest script has something screwy. The last part tells you where on that line something is wrong.

Looking at your script, the compiler sees the comma on the previous line and doesn't know what to make of the "=" sign in line 81 because of that comma. People, however, are smarter than the compiler, which just stops when it sees something wrong.

Your exact problem is that the code in lines 80-82 should go inside the CommandPost:New{} instead of where you have it (I'm not even sure why you moved it). Basically, this:

Code: Select all

Objective1CP = CommandPost:New{name = "cp1", hideCPs = false}
EnableBarriers("hall3")
BlockPlanningGraphArcs("hall")
BlockPlanningGraphArcs("hall2")
CreateTimer("rein_timer")
SetTimerValue("rein_timer", 360)
ShowTimer("rein_timer")
StartTimer("rein_timer")
textATT = "level.RC1.objectives.timer",
popupText = "level.RC1.objectives.timer",
timeLimit = 360, timeLimitWinningTeam = DEF}
should look like this

Code: Select all

Objective1CP = CommandPost:New{name = "cp1", hideCPs = false, textATT = "level.RC1.objectives.timer",
popupText = "level.RC1.objectives.timer", timeLimit = 360, timeLimitWinningTeam = DEF}
EnableBarriers("hall3")
BlockPlanningGraphArcs("hall")
BlockPlanningGraphArcs("hall2")
CreateTimer("rein_timer")
SetTimerValue("rein_timer", 360)
ShowTimer("rein_timer")
StartTimer("rein_timer")
Offtopic: I should also like to note that you have two timers running for the same amount of time and starting at the same time, the one you created in the objective and "rein_timer". I believe that the one in the objective is automaticaly shown, so you shouldn't need the "rein_timer" at all.

Re: Problem with my Lua

Posted: Thu Aug 27, 2009 7:00 pm
by Fierfek
Okay - I figured out the problems on my own (it took a while).
Now, though, I get no munge errors, but a couple problems happen:
1. The objectives don't show
2. The cp5 is respawned automatically (before it should)
3. The Droids aren't spawning

Here is my 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("MultiObjectiveContainer")
ScriptCB_DoFile("ObjectiveGoto")
ScriptCB_SetGameRules("Campaign")

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


function ScriptPostLoad()

onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
AddAIGoal(REP,'Follow', 50, character)
ReleaseCharacterSpawn(onfirstspawn)
onfirstspawn = nil
objectives_timer = CreateTimer("objectives_timer")
SetTimerValue(objectives_timer, 2)
StartTimer(objectives_timer)
begin_objectives = OnTimerElapse(
function(timer)
StartObjectives ()
ScriptCB_EnableCommandPostVO(0)
end,
objectives_timer
)
end
end
)

--Objective 1
Objective1CP = CommandPost:New{name = "cp1", hideCPs = false}
Objective1 = ObjectiveConquest:New{teamATT = DEF, teamDEF = ATT, text = "level.RC1.objectives.1", popupText = "level.RC1.objectives.timer", AIGoalWeight = 0}
EnableBarriers("hall3")
BlockPlanningGraphArcs("hall")
BlockPlanningGraphArcs("hall2")
CreateTimer("rein_timer")
SetTimerValue("rein_timer", 360)
ShowTimer("rein_timer")
StartTimer("rein_timer")
Objective1:AddCommandPost(Objective1CP)
Objective1.OnStart = function(self)
Objective1.defendGoalDEF = AddAIGoal(DEF, "Defend", 1000, "cp1")
MapAddEntityMarker("cp1", "hud_objective_icon", 3.0, 1, "YELLOW", true)
end
OnTimerElapse(
function(timer)
Objective1.OnComplete = function(self)
ShowMessageText("game.objectives.complete", DEF)
DeleteAIGoal(Objective1.defendGoalDEF)
MapRemoveEntityMarker("cp1")
RespawnObject("cp5")
SetUnitCount (3, 500)
SetUnitCount (2, 100)
DestroyTimer("rein_timer")
CreateTimer("lose")
SetTimerValue("lose", 60)
DEF_ReinforcementCount = GetReinforcementCount(DEF)
SetReinforcementCount(DEF, DEF_ReinforcementCount + 50)
end,
"rein_timer"
end)

--Objective 2
Objective2 = ObjectiveConquest:New{teamATT = DEF, teamDEF = ATT, text = "level.RC1.objectives.1", popupText = "level.RC1.objectives.timer", AIGoalWeight = 0}
StartTimer("lose")
Objective2.OnStart = function(self)
Objective2.defendGoalDEF = AddAIGoal(DEF, "Defend", 1000, "cp2")
MapAddEntityMarker("cp1", "hud_objective_icon", 3.0, 1, "YELLOW", true)
end
OnTimerElapse(
function(timer)
Objective2.OnComplete = function(self)
ShowMessageText("game.objectives.complete", DEF)
SetUnitCount (3, 0)
SetUnitCount (2, 100)
AddAIGoal(2,'Follow', 50, cp4)
DeleteAIGoal(Objective2.defendGoalDEF)
MapRemoveEntityMarker("cp1")
end,
"lose"
end)

--objective: destroy panel
Dobjekt = Target:New{name = "panel"}
Dobjekt.OnDestroy = function(self)

end

Objective3 = ObjectiveAssault:New{teamATT = DEF, teamDEF = ATT,
text = "level.RC1.objectives.3", popupText = "level.RC1.objectives.wall"}
Objective3:AddTarget(Dobjekt)

KillObject("col1")
KillObject("col2")
KillObject("col3")
AddAIGoal(2,'Follow', 50, cp1)

Objective3.OnStart = function(self)
MapAddEntityMarker("panel", "hud_objective_icon", 3.0, 1, "YELLOW", true) -- AI objective


end

Objective3.OnComplete = function(self)
PlayAnimation("door_open")
ShowMessageText("game.objectives.complete", DEF)
DisableBarriers("hall3")
UnblockPlanningGraphArcs("hall")
UnblockPlanningGraphArcs("hall2")
end

--objective: kill magnaguards
Objective4= ObjectiveAssault:New{teamATT = DEF, teamDEF = ATT,
text = "level.RC1.objectives.4", popupText = "level.RC1.objectives.mags"}

Dclass = TargetType:New{classname = "mag_inf_guard", killLimit = 4}
Objective4:AddTarget(Dclass)

Objective4.OnStart = function(self)
RespawnObject("mag_cp")
SetUnitCount (4, 4)
Objective4.Dclass_cpGoal1 = AddAIGoal(4, "Defend", 100, "mag_cp")
Objective4.Dclass_cpGoal2 = AddAIGoal(DEF, "Defend", 100, "cp1")
AddAIGoal(DEF, "Destroy", 100, "mag_inf_guard")
AddAIGoal(DEF, "Destroy", 100, "Dclass")
MapAddEntityMarker("mag_inf_guard", "hud_objective_icon", 3.0, 1, "YELLOW", true) -- AI objective
end

Objective4.OnComplete = function(self)
DeleteAIGoal(Objective4.Dclass_cpGoal1)
DeleteAIGoal(Objective4.Dclass_cpGoal2)
ShowMessageText("game.objectives.complete", DEF)
end

--objective :escape
Objective5 = ObjectiveGoto:New{TeamATT = DEF, TeamDEF = ATT,
text = "level.RC1.objectives.5", popupText = "level.RC1.objectives.hall",
regionName = "goto", mapIcon = "hud_objective_icon_circle", AIGoalWeight = 0}

Objective5:AddHint("level.geo1.hints.movement")
Objective5:AddHint("level.geo1.hints.obj_markers")
Objective5:AddHint("level.geo1.hints.review_objectives")
Objective5:AddHint("level.geo1.hints.sprint")


Objective5.OnStart = function(self)
att_obj5_aigoal = AddAIGoal(ATT, "Deathmatch", 100)
def_obj5_aigoal = AddAIGoal(DEF, "Deathmatch", 100)
MapAddEntityMarker("goto", "hud_objective_icon", 3.0, 1, "YELLOW", true) -- AI objective

end

Objective5.OnComplete = function(self)
DeleteAIGoal(att_obj5_aigoal)
DeleteAIGoal(def_obj5_aigoal)
ShowMessageText("game.objectives.complete", DEF)
PlayAnimation("door_close")
ShowMessageText("level.RC1.continue", DEF)
MissionVictory(1)
end

--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp4 = CommandPost:New{name = "cp4"}


--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = DEF, teamDEF = ATT,
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(cp4)

conquest:Start()

SetUberMode(1);

EnableSPHeroRules()

KillObject("cp5")
KillObject("mag_cp")
SetReinforcementCount(3, 1000)
SetAIDifficulty(5, -5)
SetUnitCount (3, 0)

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


SetTeamAggressiveness(DEF, 1)

SetTeamAggressiveness(3, 1)

SetTeamAggressiveness(ATT, 0)


ReadDataFile("ingame.lvl")

ForceHumansOntoTeam1()

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_atin_commando",
"rep_inf_boss_commando",
"rep_inf_scorch_commando",
"rep_inf_sev_commando",
"rep_inf_fixer_commando",
"rep_inf_niner_commando",
"rep_inf_darman_commando",
"rep_inf_ep2_rifleman")
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("dc:SIDE\\mag.lvl",
"mag_inf_guard")


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

SetupTeams{
rep = {
team = REP,
units = 50,
reinforcements = 45,
soldier = { "rep_inf_atin_commando",1, 2},
assault = { "rep_inf_darman_commando",1, 2},
engineer = { "rep_inf_fixer_commando",1, 2},
sniper = { "rep_inf_sev_commando",1, 2},
officer = {"rep_inf_scorch_commando",1, 2},
special = { "rep_inf_niner_commando",1, 2},

},
cis = {
team = CIS,
units = 400,
reinforcements = 1000,
soldier = { "cis_inf_rifleman",300, 350},
engineer = { "cis_inf_engineer",3, 10},
sniper = { "cis_inf_sniper",2, 10},
special = { "cis_inf_droideka",1, 5},
}
}

SetTeamName (3, "clones")
AddUnitClass (3, "rep_inf_ep2_rifleman", 400,500)
SetUnitCount (3, 500)
AddAIGoal(3, "Deathmatch", 100)
SetTeamAsFriend(DEF,3)
SetTeamAsFriend(3,DEF)
SetTeamAsEnemy(ATT,3)
SetTeamAsEnemy(3,ATT)
SetTeamAsEnemy(4,3)
SetTeamAsEnemy(3,4)

SetTeamName (4, "magnaguards")
AddUnitClass (4, "mag_inf_guard", 4,5)
SetUnitCount (4, 0)
AddAIGoal(4, "Deathmatch", 100)
SetTeamAsFriend(ATT,3)
SetTeamAsFriend(3,ATT)
SetTeamAsEnemy(DEF,3)
SetTeamAsEnemy(3,DEF)
SetTeamAsEnemy(3,4)
SetTeamAsEnemy(4,3)

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


-- 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:RC1\\RC1.lvl", "RC1_conquest")
ReadDataFile("dc:RC1\\RC1.lvl", "RC1_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
Can you please go through the objectives, or just skim it, to make sure everything is in order?
I used the Mission Scripter and Yankfan's tut to do this.

Re: Problem with my Lua

Posted: Fri Aug 28, 2009 2:51 am
by lucasfart
this probably won't help much now but it thought i should let you know its a lot easier to find problems and fix them if you make 1 objective, try it out, and then move on to the next objective if there are no errors........