Crash without Error?

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

Posts: 3
Joined: Thu Feb 28, 2019 10:42 am
Location: Earth
Projects :: Bountyhunter Mod
Games I'm Playing :: Muchos gamos
xbox live or psn: No gamertag set

Crash without Error?

Postby Duskwingstudios » Thu Apr 04, 2019 11:00 am

Hey Guys, maybe someone here can help me.
I couldn't find a thread with this problem, so I created a new topic.

So I experiment a bit with bf2 scripting and created a map for testing.
Everything seems to be fine, no munge errors or other things,
BUT when I start my map in bf2, it crashes in the loading screen :shock:
And the Bf2 log does not issue a "normal" Message Serenity error:

Hidden/Spoiler:
Code: Select all
 BFfront2.log:

Opened logfile BFront2.log  2019-04-04 1554
shell_interface: Entered
shell_interface: gPlatformStr, gOnlineServiceStr, gLangStr, gLangEnum:     PC    GameSpy    german    4
ifs_era_handler - Entered
ifs_era_handler - Exited
shell_interface: No custom_gc_0.lvl
shell_interface: No custom_gc_1.lvl
shell_interface: No custom_gc_2.lvl
shell_interface: No custom_gc_3.lvl
shell_interface: No custom_gc_4.lvl
shell_interface: No custom_gc_5.lvl
shell_interface: No custom_gc_6.lvl
shell_interface: No custom_gc_7.lvl
shell_interface: No custom_gc_8.lvl
shell_interface: No custom_gc_9.lvl
shell_interface: Found custom_gc_10.lvl
custom_gc_10: Entered
custom_gc_10: Found custom_gc_11.lvl
custom_gc_11: Entered
ifs_freeform_init_dt.lua
ifs_freeform_start_dt.lua
custom_gc_11: Taking control of custom_GetGCButtonList()...
custom_gc_11: Taking control of custom_PressedGCButton()...
custom_gc_11: Exited
custom_gc_10: No custom_gc_12.lvl.  Will stop searching for any more cGC scripts.
custom_gc_10: Exited
custom_EraButtonList(): Finished building era button table    Known eras buttons: 28
custom_GetGMapEras(): Finished building era table    Known eras: 28
custom_GetGMapModes(): Finished building game mode table    Known Modes: 39
custom_GetMPGameModeList(): Finished building game mode list table    List Length: 40
custom_SetMovieLocation()
custom_gc_11: custom_GetGCButtonList(): Entered
custom_GetGCButtonList()
custom_gc_11: custom_GetGCButtonList(): Exited
custom_SetMovieLocation()
custom_GetFreeformBattleModeList(): Finished building freeform battle mode list    Known Modes: 39
ingame stream    movies\crawlgr.mvs
shell_interface: Opening movie:    movies\shellgr.mvs
shell_interface: Leaving
Mission Checker: Entered addme
Mission Checker: addme: Now listening in on AddDownloadableContent() calls
Mission Checker: Exited addme
adding conquest missions..
adding ctf missions..
adding tdm missions..
adding uber missions..
adding oder66 missions..
adding space missions..
adding hero assault missions..
adding XL missions..
prev =     none     iLastPage =     nil
prev =     texture     iLastPage =     2
prev =     texture     iLastPage =     3
ifs_legal.Exit

Message Severity: 2
C:\Battlefront2\main\Battlefront2\Source\GameMovie.cpp(399)
Unable to find open movie segment shell_main

ifs_saveop_DoOps     LoadFileList
ifs_saveop_DoOps     LoadFileList
ifs_saveop_DoOps     LoadProfile
ifs_saveop_DoOps     LoadProfile
ifs_sp_campaign: Input_Accept(): Entered:     [Nil]
ifs_sp_campaign: Input_Accept(): Entered:     _tab_instant
missionlist_ExpandMapList()
ifs_missionselect_pcMulti_fnSetMapPreview(): Defaulting index to 1
this.CurButton =    check_mode1
cur_button =    nil
Checkbox for check_era7 clicked
this.CurButton =    check_era7
cur_button =    nil
custom_AddMapNew()
custom_printTable():    table: 04FCA20C
The key, value is:    era_g    1
The key, value is:    isModLevel    1
The key, value is:    mode_con_g    1
The key, value is:    bSelected    1
The key is mapluafile, the formated value is:    BOU<A>_<B>
custom_printTable(): Returning
custom_printTable():    table: 04FCFB4C
The key, value is:    key    mode_con
The key, value is:    subst    con
The key, value is:    showstr    modename.name.con
The key, value is:    descstr    modename.description.con
The key, value is:    icon    mode_icon_con
custom_printTable(): Returning
gMapEras[i].key =    era_g     Era =    era_g     subst =    g
Adding map:     BOUg_con     idx:     1
this.CurButton =    _map_add
cur_button =    nil
this.CurButton =    Launch
cur_button =    nil
(none):0: attempt to index a nil value

-------


So before bf2 triggers the normal unimportant "error messages"
The game already stopped working :cry:

I'm really confused at this point. So, if someone could help me out of my misery, that would be great :mrgreen:
Last edited by Duskwingstudios on Fri Apr 05, 2019 11:37 am, edited 1 time in total.

Master of the Force
User avatar
Posts: 4776
Joined: Sat Sep 19, 2009 11:37 am
Location: Mos Espa (germany)
Projects :: RC Side Mod SWBF2 HD SWBF3 Legacy

Re: Crash without Error?

Postby Anakin » Fri Apr 05, 2019 4:44 am

hey and welcome to GT.
Your last message crashes the game. (non):0: attempt to index a nil value means that you try to access a table that does not exist.

can you show us your mission lua?

you can use [hide] and [code] tags to make the post look nice ;)

Posts: 3
Joined: Thu Feb 28, 2019 10:42 am
Location: Earth
Projects :: Bountyhunter Mod
Games I'm Playing :: Muchos gamos
xbox live or psn: No gamertag set

Re: Crash without Error?

Postby Duskwingstudios » Fri Apr 05, 2019 11:31 am

First of all, thanks: D

It's pretty messy, but yea ... here it is:
(I've tried to change noobasaurus script to have two or more same objectives just like a campaign mission.)

Hidden/Spoiler:
Code: Select all
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("MultiObjectiveContainer")
ScriptCB_SetGameRules("Campaign")

   --  REP Attacking (attacker is always #1)
    ALL = 1;
    IMP = 2;
    TAR = 3;
    CIV = 4;
    --  These variables do not change
    ATT = ALL;
    DEF = IMP;
   
function ScriptPostLoad()


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


   ForceHumansOntoTeam1()
        --This defines the CPs.  These need to happen first
    CP1 = CommandPost:New{name = "cp1"}
    CP2 = CommandPost:New{name = "cp2"}
    CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}

   
    --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,
    popupText = "game.modes.con",}
   
   
    --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(cp6)
   conquest:AddCommandPost(cp7)
   conquest:AddCommandPost(cp8)

conquest:Start()

 --Setup Timer--
    timePop = CreateTimer("timePop")
   SetTimerValue(timePop, 3.0)

dumb = CreateTimer("dumb")
   SetTimerValue(dumb, 0.5)
   StartTimer(dumb)

OnTimerElapse(
     function(timer)
      ClearAIGoals(2)
      AddAIGoal(2, "follow", 1000, GetCharacterUnit(target))
      MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true)
      DestroyTimer(dumb)
     end,
   dumb
   )
   
   SetTeamAsFriend(2,1)
   SetTeamAsNeutral(1,3)
   SetTeamAsFriend(3,1)
   SetTeamAsFriend(1,2)
   SetTeamAsFriend(4,1)
   SetTeamAsFriend(4,2)
   SetTeamAsFriend(4,3)
   SetTeamAsFriend(1,4)
   SetTeamAsFriend(2,4)
   SetTeamAsFriend(3,4)
   SetTeamAsFriend(2,3)
   SetTeamAsFriend(3,2)
   
   tarhp = nil
   
     
deathcheck = OnCharacterDeath(
      function(character, killer)
         if GetNumTeamMembersAlive(1) == 0 then
            MissionDefeat(1)
         elseif GetNumTeamMembersAlive(3) == 0 then
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer))
            ActivateRegion("CP2_Control")
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            MapAddRegionMarker("CP2_Control", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true)
         end
      end)
      
   i = 1
      
   TEAM = OnCharacterDeath(
      function(character, killer)
         if GetObjectTeam(killer) == 1 then
            SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer))
            i = i + 1
         end
      end)
      
   conquestComplete = OnEnterRegion(
      function(region, character)
      conquest:Complete(ATT)
      end,
      "CP2_Control"
      )
      
   x = 1
   
   AllowAISpawn(1, false)
   
   dmgcheck = OnObjectDamage(function(object, damager)
      print("check")
      if GetObjectTeam(GetCharacterUnit(damager)) == 1 and x == 1 then
         ClearAIGoals(3)
         AddAIGoal(3, "follow", 1000, "com_item_weaponrecharge0")
         ClearAIGoals(2)
         AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager))
         AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
         SetTeamAsEnemy(1,2)
         SetTeamAsEnemy(2,1)
         x = 2
      end
   end)

SetTeamAggressiveness(2, 1.0)
         DisableAIAutoBalance()
         SetAIDifficulty(0, 3)

        conquest.OnStart = function (self)
       ForceHumansOntoTeam1()
       AICanCaptureCP("cp1", 2, false)
       AICanCaptureCP("cp2", 2, false)
       AICanCaptureCP("cp3", 2, false)
       AICanCaptureCP("cp6", 2, false)
       AICanCaptureCP("cp7", 2, false)
       AICanCaptureCP("cp8", 2, false)
       AICanCaptureCP("cp1", 3, false)
       AICanCaptureCP("cp2", 3, false)
       AICanCaptureCP("cp3", 3, false)
       AICanCaptureCP("cp6", 3, false)
       AICanCaptureCP("cp7", 3, false)
       AICanCaptureCP("cp8", 3, false)
       SetAIDifficulty(999, -999, "hard")
       target = GetTeamMember(3,0)
       Deathmatch4 = AddAIGoal(4, "deathmatch", 100)
            Deathmatch3 = AddAIGoal(3, "deathmatch", 100)
       --AddAIGoal(2, "deathmatch", 100)
       SelectCharacterClass(target, "imp_inf_officer")
       SpawnCharacter(target, GetPathPoint("CP3_SpawnPath", 0)) --target spawnpoint
       onfirstspawn = OnCharacterSpawn(
        function(character)
         if IsCharacterHuman(character) then
            ReleaseCharacterSpawn(onfirstspawn)
            onfirstspawn = nil
            MoveCameraToEntity(GetCharacterUnit(target))
            AllowAISpawn(2, false)
            AllowAISpawn(3, false)
            AllowAISpawn(4, false)
            tarhp = GetObjectHealth(GetCharacterUnit(target))
            --ShowMessageText("level.abc.kill")
         end
        end
      )
   end
       
   
   

        conquest.OnComplete = function (self)
           ShowMessageText("game.objectives.complete", ATT)
       DeleteAIGoal(Deathmatch4)
       DeleteAIGoal(Deathmatch3)
   end
   
   
end


   ForceHumansOntoTeam1()
        --This defines the CPs.  These need to happen first
    CP1 = CommandPost:New{name = "cp1"}
    CP2 = CommandPost:New{name = "cp2"}
    CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}

   
    --This sets up the actual objective.  This needs to happen after cp's are defined
    conquest2 = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true,
    popupText = "game.modes.con",}
   
   
    --This adds the CPs to the objective.  This needs to happen after the objective is set up
   conquest2:AddCommandPost(cp1)
   conquest2:AddCommandPost(cp2)
   conquest2:AddCommandPost(cp3)

   conquest2:AddCommandPost(cp6)
   conquest2:AddCommandPost(cp7)
   conquest2:AddCommandPost(cp8)

conquest2:Start()

 --Setup Timer--
    timePop = CreateTimer("timePop")
   SetTimerValue(timePop, 3.0)

dumb = CreateTimer("dumb")
   SetTimerValue(dumb, 0.5)
   StartTimer(dumb)

OnTimerElapse(
     function(timer)
      ClearAIGoals(2)
      AddAIGoal(2, "follow", 1000, GetCharacterUnit(target))
      MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true)
      DestroyTimer(dumb)
     end,
   dumb
   )
   
   SetTeamAsFriend(2,1)
   SetTeamAsNeutral(1,3)
   SetTeamAsFriend(3,1)
   SetTeamAsFriend(1,2)
   SetTeamAsFriend(4,1)
   SetTeamAsFriend(4,2)
   SetTeamAsFriend(4,3)
   SetTeamAsFriend(1,4)
   SetTeamAsFriend(2,4)
   SetTeamAsFriend(3,4)
   SetTeamAsFriend(2,3)
   SetTeamAsFriend(3,2)
   
   tarhp = nil
   
     
deathcheck = OnCharacterDeath(
      function(character, killer)
         if GetNumTeamMembersAlive(1) == 0 then
            MissionDefeat(1)
         elseif GetNumTeamMembersAlive(3) == 0 then
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer))
            ActivateRegion("CP2_Control")
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            MapAddRegionMarker("CP2_Control", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true)
         end
      end)
      
   i = 1
      
   TEAM = OnCharacterDeath(
      function(character, killer)
         if GetObjectTeam(killer) == 1 then
            SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer))
            i = i + 1
         end
      end)
      
   conquest2Complete = OnEnterRegion(
      function(region, character)
      conquest2:Complete(ATT)
      end,
      "CP2_Control"
      )
      
   x = 1
   
   AllowAISpawn(1, false)
   
   dmgcheck = OnObjectDamage(function(object, damager)
      print("check")
      if GetObjectTeam(GetCharacterUnit(damager)) == 1 and x == 1 then
         ClearAIGoals(3)
         AddAIGoal(3, "follow", 1000, "com_item_weaponrecharge0")
         ClearAIGoals(2)
         AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager))
         AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
         SetTeamAsEnemy(1,2)
         SetTeamAsEnemy(2,1)
         x = 2
      end
   end)

SetTeamAggressiveness(2, 1.0)
         DisableAIAutoBalance()
         SetAIDifficulty(0, 3)

   
        conquest2.OnStart = function (self)
       ForceHumansOntoTeam1()
       AICanCaptureCP("cp1", 2, false)
       AICanCaptureCP("cp2", 2, false)
       AICanCaptureCP("cp3", 2, false)
       AICanCaptureCP("cp6", 2, false)
       AICanCaptureCP("cp7", 2, false)
       AICanCaptureCP("cp8", 2, false)
       AICanCaptureCP("cp1", 3, false)
       AICanCaptureCP("cp2", 3, false)
       AICanCaptureCP("cp3", 3, false)
       AICanCaptureCP("cp6", 3, false)
       AICanCaptureCP("cp7", 3, false)
       AICanCaptureCP("cp8", 3, false)
       SetAIDifficulty(999, -999, "hard")
       target = GetTeamMember(3,0)
       Deathmatch4 = AddAIGoal(4, "deathmatch", 100)
       Deathmatch3 = AddAIGoal(3, "deathmatch", 100)
       --AddAIGoal(2, "deathmatch", 100)
       SelectCharacterClass(target, "imp_inf_officer")
       SpawnCharacter(target, GetPathPoint("CP3_SpawnPath", 0)) --target spawnpoint
       onfirstspawn = OnCharacterSpawn(
        function(character)
         if IsCharacterHuman(character) then
            ReleaseCharacterSpawn(onfirstspawn)
            onfirstspawn = nil
            MoveCameraToEntity(GetCharacterUnit(target))
            AllowAISpawn(2, false)
            AllowAISpawn(3, false)
            AllowAISpawn(4, false)
            tarhp = GetObjectHealth(GetCharacterUnit(target))
            --ShowMessageText("level.abc.kill")
         end
        end
      )
        end
   
   
   
        conquest2.OnComplete = function (self)
            ShowMessageText("game.objectives.complete", ATT)
        DeleteAIGoal(Deathmatch4)
        DeleteAIGoal(Deathmatch3)
       

   

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 StartObjectives()
objectiveSequence = MultiObjectiveContainer:New{delayVictoryTime = 4.0}
objectiveSequence:AddObjectiveSet(conquest)
objectiveSequence:AddObjectiveSet(conquest2)
objectiveSequence:Start()
end

function ScriptInit()
    -- Designers, these two lines *MUST* be first!
    StealArtistHeap(256*1024)
    SetPS2ModelMemory(2097152 + 65536 * 10)
    ReadDataFile("ingame.lvl")



    SetTeamAggressiveness(ALL, 0.95)
    SetTeamAggressiveness(IMP, 0.95)

    SetMaxFlyHeight(40)
   SetMaxPlayerFlyHeight(40)

    ReadDataFile("sound\\tat.lvl;tat2gcw")
    ReadDataFile("SIDE\\all.lvl",
                    "all_inf_rifleman",
                    "all_inf_rocketeer",
                    "all_inf_sniper",
                    "all_inf_engineer",
                    "all_inf_officer",
                    "all_inf_wookiee",
                    "all_hero_hansolo_tat")
                   
    ReadDataFile("SIDE\\imp.lvl",
                    "imp_inf_rifleman",
                    "imp_inf_rocketeer",
                    "imp_inf_engineer",
                    "imp_inf_sniper",
                    "imp_inf_officer",
                    "imp_inf_dark_trooper",
                    "imp_hero_bobafett",
                    "imp_fly_destroyer_dome" )
 
    ReadDataFile("SIDE\\des.lvl",
                             "tat_inf_jawa")

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


   SetupTeams{
      all = {
         team = ALL,
         units = 20,
         reinforcements = -1,
         soldier  = { "all_inf_rifleman",10, 10},
         assault  = { "all_inf_rocketeer",0, 0},
         engineer = { "all_inf_engineer",0, 0},
         sniper   = { "all_inf_sniper",0, 0},
         officer = {"all_inf_officer",0, 0},
         special = { "all_inf_wookiee",0, 0},
          
      },
      imp = {
         team = IMP,
         units = 10,
         reinforcements = -1,
         officer = {"imp_inf_rifleman",12, 12},
      }
   }

    SetTeamName (3, "target")
    AddUnitClass (3, "imp_inf_officer", 1)
    SetUnitCount (3, 1)
   
    SetTeamName (4, "citizens")
    AddUnitClass (4, "all_inf_rifleman", 10)
    AddUnitClass (4, "all_inf_rocketeer", 10)
    AddUnitClass (4, "all_inf_engineer", 10)
    AddUnitClass (4, "all_inf_sniper", 10)
    AddUnitClass (4, "all_inf_officer", 10)
    SetUnitCount (4, 50)
   
    SetHeroClass(IMP, "imp_inf_officer")
      SetHeroClass(ALL, "all_hero_luke")

    --  Level Stats
    ClearWalkers()
    AddWalkerType(0, 3) -- 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 = 230
    SetMemoryPoolSize("Aimer", 23)
    SetMemoryPoolSize("AmmoCounter", weaponCnt)
    SetMemoryPoolSize("BaseHint", 325)
    SetMemoryPoolSize("EnergyBar", weaponCnt)
    SetMemoryPoolSize("EntityCloth", 19)
   SetMemoryPoolSize("EntityFlyer", 6) -- to account for rocket upgrade
    SetMemoryPoolSize("EntityHover", 1)
    SetMemoryPoolSize("EntitySoundStream", 2)
    SetMemoryPoolSize("EntitySoundStatic", 43)
    SetMemoryPoolSize("SoldierAnimation", 500)
    SetMemoryPoolSize("MountedTurret", 15)
    SetMemoryPoolSize("Navigator", 50)
    SetMemoryPoolSize("Obstacle", 667)
    SetMemoryPoolSize("PathFollower", 50)
    SetMemoryPoolSize("PathNode", 256)
    SetMemoryPoolSize("TreeGridStack", 325)
    SetMemoryPoolSize("UnitAgent", 50)
    SetMemoryPoolSize("UnitController", 50)
    SetMemoryPoolSize("Weapon", weaponCnt)

    SetSpawnDelay(0.0, 0.0)
    ReadDataFile("TAT\\tat2.lvl", "tat2_con")
    SetDenseEnvironment("false")


    --  Sound Stats
   
    voiceSlow = OpenAudioStream("sound\\global.lvl", "all_unit_vo_slow")
    AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_slow", voiceSlow)
    AudioStreamAppendSegments("sound\\global.lvl", "des_unit_vo_slow", voiceSlow)
    AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)
   
    voiceQuick = OpenAudioStream("sound\\global.lvl", "all_unit_vo_quick")
    AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_quick", voiceQuick)     
   
    OpenAudioStream("sound\\global.lvl",  "gcw_music")
    -- OpenAudioStream("sound\\global.lvl",  "global_vo_quick")
    -- OpenAudioStream("sound\\global.lvl",  "global_vo_slow")
    OpenAudioStream("sound\\tat.lvl",  "tat2")
    OpenAudioStream("sound\\tat.lvl",  "tat2")

    SetBleedingVoiceOver(ALL, ALL, "all_off_com_report_us_overwhelmed", 1)
    SetBleedingVoiceOver(ALL, IMP, "all_off_com_report_enemy_losing",   1)
    SetBleedingVoiceOver(IMP, ALL, "imp_off_com_report_enemy_losing",   1)
    SetBleedingVoiceOver(IMP, IMP, "imp_off_com_report_us_overwhelmed", 1)
   
    SetLowReinforcementsVoiceOver(ALL, ALL, "all_off_defeat_im", .1, 1)
    SetLowReinforcementsVoiceOver(IMP, ALL, "all_off_victory_im", .1, 1)
    SetLowReinforcementsVoiceOver(IMP, IMP, "imp_off_defeat_im", .1, 1)
    SetLowReinforcementsVoiceOver(IMP, ALL, "imp_off_victory_im", .1, 1)   

    SetOutOfBoundsVoiceOver(1, "allleaving")
    SetOutOfBoundsVoiceOver(2, "impleaving")

    SetAmbientMusic(ALL, 1.0, "all_tat_amb_start",  0,1)
    SetAmbientMusic(ALL, 0.8, "all_tat_amb_middle", 1,1)
    SetAmbientMusic(ALL, 0.2,"all_tat_amb_end",    2,1)
    SetAmbientMusic(IMP, 1.0, "imp_tat_amb_start",  0,1)
    SetAmbientMusic(IMP, 0.8, "imp_tat_amb_middle", 1,1)
    SetAmbientMusic(IMP, 0.2,"imp_tat_amb_end",    2,1)

    SetVictoryMusic(ALL, "imp_tat_amb_victory")
    SetDefeatMusic (ALL, "imp_tat_amb_defeat")
    SetVictoryMusic(IMP, "imp_tat_amb_victory")
    SetDefeatMusic (IMP, "imp_tat_amb_defeat")

    SetSoundEffect("ScopeDisplayZoomIn",  "binocularzoomin")
    SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
    --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")


    SetAttackingTeam(ATT)

    --  Camera Stats
    --Tat2 Mos Eisley
   AddCameraShot(0.974338, -0.222180, 0.035172, 0.008020, -82.664650, 23.668301, 43.955681);
   AddCameraShot(0.390197, -0.089729, -0.893040, -0.205362, 23.563562, 12.914885, -101.465561);
   AddCameraShot(0.169759, 0.002225, -0.985398, 0.012916, 126.972809, 4.039628, -22.020613);
   AddCameraShot(0.677453, -0.041535, 0.733016, 0.044942, 97.517807, 4.039628, 36.853477);
   AddCameraShot(0.866029, -0.156506, 0.467299, 0.084449, 7.685640, 7.130688, -10.895234);
end


i hope it's now accurate :)

Sry for my noob scripting in advance :wink:

Master of the Force
User avatar
Posts: 4776
Joined: Sat Sep 19, 2009 11:37 am
Location: Mos Espa (germany)
Projects :: RC Side Mod SWBF2 HD SWBF3 Legacy

Re: Crash without Error?

Postby Anakin » Sat Apr 06, 2019 9:27 am

All right, i already figured it out. Are you using notepad++ or any other editor with code highlighting?

Your ScriptPostLoad() function ends with this:
Code: Select all
        conquest.OnComplete = function (self)
           ShowMessageText("game.objectives.complete", ATT)
       DeleteAIGoal(Deathmatch4)
       DeleteAIGoal(Deathmatch3)
   end
end


But i'm pretty sure that those parts belong to PostLoad, too:
Code: Select all

   ForceHumansOntoTeam1()
        --This defines the CPs.  These need to happen first
    CP1 = CommandPost:New{name = "cp1"}
    CP2 = CommandPost:New{name = "cp2"}
    CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}

   
    --This sets up the actual objective.  This needs to happen after cp's are defined
    conquest2 = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true,
    popupText = "game.modes.con",}
   
   
    --This adds the CPs to the objective.  This needs to happen after the objective is set up
   conquest2:AddCommandPost(cp1)
   conquest2:AddCommandPost(cp2)
   conquest2:AddCommandPost(cp3)

   conquest2:AddCommandPost(cp6)
   conquest2:AddCommandPost(cp7)
   conquest2:AddCommandPost(cp8)
...


An extra tipp using proper indent code helps to identify the position where an 'end' is too much or missing

No need to apologize for your code. We all started somewhen and had all different previous knowledge in programming :D

Posts: 3
Joined: Thu Feb 28, 2019 10:42 am
Location: Earth
Projects :: Bountyhunter Mod
Games I'm Playing :: Muchos gamos
xbox live or psn: No gamertag set

Re: Crash without Error?

Postby Duskwingstudios » Sat Apr 06, 2019 1:09 pm

I've already corrected my lua (this time with notepad++ :wink: )
But I get the same error message in my bf2log as before

Corrected Lua:
Hidden/Spoiler:
Code: Select all
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("MultiObjectiveContainer")
ScriptCB_SetGameRules("Campaign")

   --  REP Attacking (attacker is always #1)
    ALL = 1;
    IMP = 2;
    TAR = 3;
    CIV = 4;
    --  These variables do not change
    ATT = ALL;
    DEF = IMP;
   
function ScriptPostLoad()


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


   ForceHumansOntoTeam1()
        --This defines the CPs.  These need to happen first
    CP1 = CommandPost:New{name = "cp1"}
    CP2 = CommandPost:New{name = "cp2"}
    CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}

   
    --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,
    popupText = "game.modes.con",}
   
   
    --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(cp6)
   conquest:AddCommandPost(cp7)
   conquest:AddCommandPost(cp8)

conquest:Start()

 --Setup Timer--
    timePop = CreateTimer("timePop")
   SetTimerValue(timePop, 3.0)

dumb = CreateTimer("dumb")
   SetTimerValue(dumb, 0.5)
   StartTimer(dumb)

OnTimerElapse(
     function(timer)
      ClearAIGoals(2)
      AddAIGoal(2, "follow", 1000, GetCharacterUnit(target))
      MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true)
      DestroyTimer(dumb)
     end,
   dumb
   )
   
   SetTeamAsFriend(2,1)
   SetTeamAsNeutral(1,3)
   SetTeamAsFriend(3,1)
   SetTeamAsFriend(1,2)
   SetTeamAsFriend(4,1)
   SetTeamAsFriend(4,2)
   SetTeamAsFriend(4,3)
   SetTeamAsFriend(1,4)
   SetTeamAsFriend(2,4)
   SetTeamAsFriend(3,4)
   SetTeamAsFriend(2,3)
   SetTeamAsFriend(3,2)
   
   tarhp = nil
   
     
deathcheck = OnCharacterDeath(
      function(character, killer)
         if GetNumTeamMembersAlive(1) == 0 then
            MissionDefeat(1)
         elseif GetNumTeamMembersAlive(3) == 0 then
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer))
            ActivateRegion("CP2_Control")
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            MapAddRegionMarker("CP2_Control", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true)
         end
      end)
      
   i = 1
      
   TEAM = OnCharacterDeath(
      function(character, killer)
         if GetObjectTeam(killer) == 1 then
            SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer))
            i = i + 1
         end
      end)
      
   conquestComplete = OnEnterRegion(
      function(region, character)
      conquest:Complete(ATT)
      end,
      "CP2_Control"
      )
      
   x = 1
   
   AllowAISpawn(1, false)
   
   dmgcheck = OnObjectDamage(function(object, damager)
      print("check")
      if GetObjectTeam(GetCharacterUnit(damager)) == 1 and x == 1 then
         ClearAIGoals(3)
         AddAIGoal(3, "follow", 1000, "com_item_weaponrecharge0")
         ClearAIGoals(2)
         AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager))
         AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
         SetTeamAsEnemy(1,2)
         SetTeamAsEnemy(2,1)
         x = 2
      end
   end)

SetTeamAggressiveness(2, 1.0)
         DisableAIAutoBalance()
         SetAIDifficulty(0, 3)

        conquest.OnStart = function (self)
       ForceHumansOntoTeam1()
       AICanCaptureCP("cp1", 2, false)
       AICanCaptureCP("cp2", 2, false)
       AICanCaptureCP("cp3", 2, false)
       AICanCaptureCP("cp6", 2, false)
       AICanCaptureCP("cp7", 2, false)
       AICanCaptureCP("cp8", 2, false)
       AICanCaptureCP("cp1", 3, false)
       AICanCaptureCP("cp2", 3, false)
       AICanCaptureCP("cp3", 3, false)
       AICanCaptureCP("cp6", 3, false)
       AICanCaptureCP("cp7", 3, false)
       AICanCaptureCP("cp8", 3, false)
       SetAIDifficulty(999, -999, "hard")
       target = GetTeamMember(3,0)
       Deathmatch4 = AddAIGoal(4, "deathmatch", 100)
            Deathmatch3 = AddAIGoal(3, "deathmatch", 100)
       --AddAIGoal(2, "deathmatch", 100)
       SelectCharacterClass(target, "imp_inf_officer")
       SpawnCharacter(target, GetPathPoint("CP3_SpawnPath", 0)) --target spawnpoint
       onfirstspawn = OnCharacterSpawn(
        function(character)
         if IsCharacterHuman(character) then
            ReleaseCharacterSpawn(onfirstspawn)
            onfirstspawn = nil
            MoveCameraToEntity(GetCharacterUnit(target))
            AllowAISpawn(2, false)
            AllowAISpawn(3, false)
            AllowAISpawn(4, false)
            tarhp = GetObjectHealth(GetCharacterUnit(target))
            --ShowMessageText("level.abc.kill")
         end
        end
      )
   end
       
   
   

        conquest.OnComplete = function (self)
           ShowMessageText("game.objectives.complete", ATT)
       DeleteAIGoal(Deathmatch4)
       DeleteAIGoal(Deathmatch3)
   end
   
   



   ForceHumansOntoTeam1()
        --This defines the CPs.  These need to happen first
    CP1 = CommandPost:New{name = "cp1"}
    CP2 = CommandPost:New{name = "cp2"}
    CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}

   
    --This sets up the actual objective.  This needs to happen after cp's are defined
    conquest2 = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true,
    popupText = "game.modes.con",}
   
   
    --This adds the CPs to the objective.  This needs to happen after the objective is set up
   conquest2:AddCommandPost(cp1)
   conquest2:AddCommandPost(cp2)
   conquest2:AddCommandPost(cp3)

   conquest2:AddCommandPost(cp6)
   conquest2:AddCommandPost(cp7)
   conquest2:AddCommandPost(cp8)

conquest2:Start()

 --Setup Timer--
    timePop = CreateTimer("timePop")
   SetTimerValue(timePop, 3.0)

dumb = CreateTimer("dumb")
   SetTimerValue(dumb, 0.5)
   StartTimer(dumb)

OnTimerElapse(
     function(timer)
      ClearAIGoals(2)
      AddAIGoal(2, "follow", 1000, GetCharacterUnit(target))
      MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true)
      DestroyTimer(dumb)
     end,
   dumb
   )
   
   SetTeamAsFriend(2,1)
   SetTeamAsNeutral(1,3)
   SetTeamAsFriend(3,1)
   SetTeamAsFriend(1,2)
   SetTeamAsFriend(4,1)
   SetTeamAsFriend(4,2)
   SetTeamAsFriend(4,3)
   SetTeamAsFriend(1,4)
   SetTeamAsFriend(2,4)
   SetTeamAsFriend(3,4)
   SetTeamAsFriend(2,3)
   SetTeamAsFriend(3,2)
   
   tarhp = nil
   
     
deathcheck = OnCharacterDeath(
      function(character, killer)
         if GetNumTeamMembersAlive(1) == 0 then
            MissionDefeat(1)
         elseif GetNumTeamMembersAlive(3) == 0 then
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer))
            ActivateRegion("CP2_Control")
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            MapAddRegionMarker("CP2_Control", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true)
         end
      end)
      
   i = 1
      
   TEAM = OnCharacterDeath(
      function(character, killer)
         if GetObjectTeam(killer) == 1 then
            SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer))
            i = i + 1
         end
      end)
      
   conquest2Complete = OnEnterRegion(
      function(region, character)
      conquest2:Complete(ATT)
      end,
      "CP2_Control"
      )
      
   x = 1
   
   AllowAISpawn(1, false)
   
   dmgcheck = OnObjectDamage(function(object, damager)
      print("check")
      if GetObjectTeam(GetCharacterUnit(damager)) == 1 and x == 1 then
         ClearAIGoals(3)
         AddAIGoal(3, "follow", 1000, "com_item_weaponrecharge0")
         ClearAIGoals(2)
         AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager))
         AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
         SetTeamAsEnemy(1,2)
         SetTeamAsEnemy(2,1)
         x = 2
      end
   end)

SetTeamAggressiveness(2, 1.0)
         DisableAIAutoBalance()
         SetAIDifficulty(0, 3)

   
        conquest2.OnStart = function (self)
       ForceHumansOntoTeam1()
       AICanCaptureCP("cp1", 2, false)
       AICanCaptureCP("cp2", 2, false)
       AICanCaptureCP("cp3", 2, false)
       AICanCaptureCP("cp6", 2, false)
       AICanCaptureCP("cp7", 2, false)
       AICanCaptureCP("cp8", 2, false)
       AICanCaptureCP("cp1", 3, false)
       AICanCaptureCP("cp2", 3, false)
       AICanCaptureCP("cp3", 3, false)
       AICanCaptureCP("cp6", 3, false)
       AICanCaptureCP("cp7", 3, false)
       AICanCaptureCP("cp8", 3, false)
       SetAIDifficulty(999, -999, "hard")
       target = GetTeamMember(3,0)
       Deathmatch4 = AddAIGoal(4, "deathmatch", 100)
       Deathmatch3 = AddAIGoal(3, "deathmatch", 100)
       --AddAIGoal(2, "deathmatch", 100)
       SelectCharacterClass(target, "imp_inf_officer")
       SpawnCharacter(target, GetPathPoint("CP3_SpawnPath", 0)) --target spawnpoint
       onfirstspawn = OnCharacterSpawn(
        function(character)
         if IsCharacterHuman(character) then
            ReleaseCharacterSpawn(onfirstspawn)
            onfirstspawn = nil
            MoveCameraToEntity(GetCharacterUnit(target))
            AllowAISpawn(2, false)
            AllowAISpawn(3, false)
            AllowAISpawn(4, false)
            tarhp = GetObjectHealth(GetCharacterUnit(target))
            --ShowMessageText("level.abc.kill")
         end
        end
      )
        end
   
   
   
        conquest2.OnComplete = function (self)
            ShowMessageText("game.objectives.complete", ATT)
        DeleteAIGoal(Deathmatch4)
        DeleteAIGoal(Deathmatch3)
       
        end
   



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 StartObjectives()
objectiveSequence = MultiObjectiveContainer:New{delayVictoryTime = 4.0}
objectiveSequence:AddObjectiveSet(conquest)
objectiveSequence:AddObjectiveSet(conquest2)
objectiveSequence:Start()
end

function ScriptInit()
    -- Designers, these two lines *MUST* be first!
    StealArtistHeap(256*1024)
    SetPS2ModelMemory(2097152 + 65536 * 10)
    ReadDataFile("ingame.lvl")



    SetTeamAggressiveness(ALL, 0.95)
    SetTeamAggressiveness(IMP, 0.95)

    SetMaxFlyHeight(40)
   SetMaxPlayerFlyHeight(40)

    ReadDataFile("sound\\tat.lvl;tat2gcw")
    ReadDataFile("SIDE\\all.lvl",
                    "all_inf_rifleman",
                    "all_inf_rocketeer",
                    "all_inf_sniper",
                    "all_inf_engineer",
                    "all_inf_officer",
                    "all_inf_wookiee",
                    "all_hero_hansolo_tat")
                   
    ReadDataFile("SIDE\\imp.lvl",
                    "imp_inf_rifleman",
                    "imp_inf_rocketeer",
                    "imp_inf_engineer",
                    "imp_inf_sniper",
                    "imp_inf_officer",
                    "imp_inf_dark_trooper",
                    "imp_hero_bobafett",
                    "imp_fly_destroyer_dome" )
 
    ReadDataFile("SIDE\\des.lvl",
                             "tat_inf_jawa")

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


   SetupTeams{
      all = {
         team = ALL,
         units = 20,
         reinforcements = -1,
         soldier  = { "all_inf_rifleman",10, 10},
         assault  = { "all_inf_rocketeer",0, 0},
         engineer = { "all_inf_engineer",0, 0},
         sniper   = { "all_inf_sniper",0, 0},
         officer = {"all_inf_officer",0, 0},
         special = { "all_inf_wookiee",0, 0},
          
      },
      imp = {
         team = IMP,
         units = 10,
         reinforcements = -1,
         officer = {"imp_inf_rifleman",12, 12},
      }
   }

    SetTeamName (3, "target")
    AddUnitClass (3, "imp_inf_officer", 1)
    SetUnitCount (3, 1)
   
    SetTeamName (4, "citizens")
    AddUnitClass (4, "all_inf_rifleman", 10)
    AddUnitClass (4, "all_inf_rocketeer", 10)
    AddUnitClass (4, "all_inf_engineer", 10)
    AddUnitClass (4, "all_inf_sniper", 10)
    AddUnitClass (4, "all_inf_officer", 10)
    SetUnitCount (4, 50)
   
    SetHeroClass(IMP, "imp_inf_officer")
      SetHeroClass(ALL, "all_hero_luke")

    --  Level Stats
    ClearWalkers()
    AddWalkerType(0, 3) -- 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 = 230
    SetMemoryPoolSize("Aimer", 23)
    SetMemoryPoolSize("AmmoCounter", weaponCnt)
    SetMemoryPoolSize("BaseHint", 325)
    SetMemoryPoolSize("EnergyBar", weaponCnt)
    SetMemoryPoolSize("EntityCloth", 19)
   SetMemoryPoolSize("EntityFlyer", 6) -- to account for rocket upgrade
    SetMemoryPoolSize("EntityHover", 1)
    SetMemoryPoolSize("EntitySoundStream", 2)
    SetMemoryPoolSize("EntitySoundStatic", 43)
    SetMemoryPoolSize("SoldierAnimation", 500)
    SetMemoryPoolSize("MountedTurret", 15)
    SetMemoryPoolSize("Navigator", 50)
    SetMemoryPoolSize("Obstacle", 667)
    SetMemoryPoolSize("PathFollower", 50)
    SetMemoryPoolSize("PathNode", 256)
    SetMemoryPoolSize("TreeGridStack", 325)
    SetMemoryPoolSize("UnitAgent", 50)
    SetMemoryPoolSize("UnitController", 50)
    SetMemoryPoolSize("Weapon", weaponCnt)

    SetSpawnDelay(0.0, 0.0)
    ReadDataFile("TAT\\tat2.lvl", "tat2_con")
    SetDenseEnvironment("false")


    --  Sound Stats
   
    voiceSlow = OpenAudioStream("sound\\global.lvl", "all_unit_vo_slow")
    AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_slow", voiceSlow)
    AudioStreamAppendSegments("sound\\global.lvl", "des_unit_vo_slow", voiceSlow)
    AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)
   
    voiceQuick = OpenAudioStream("sound\\global.lvl", "all_unit_vo_quick")
    AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_quick", voiceQuick)     
   
    OpenAudioStream("sound\\global.lvl",  "gcw_music")
    -- OpenAudioStream("sound\\global.lvl",  "global_vo_quick")
    -- OpenAudioStream("sound\\global.lvl",  "global_vo_slow")
    OpenAudioStream("sound\\tat.lvl",  "tat2")
    OpenAudioStream("sound\\tat.lvl",  "tat2")

    SetBleedingVoiceOver(ALL, ALL, "all_off_com_report_us_overwhelmed", 1)
    SetBleedingVoiceOver(ALL, IMP, "all_off_com_report_enemy_losing",   1)
    SetBleedingVoiceOver(IMP, ALL, "imp_off_com_report_enemy_losing",   1)
    SetBleedingVoiceOver(IMP, IMP, "imp_off_com_report_us_overwhelmed", 1)
   
    SetLowReinforcementsVoiceOver(ALL, ALL, "all_off_defeat_im", .1, 1)
    SetLowReinforcementsVoiceOver(IMP, ALL, "all_off_victory_im", .1, 1)
    SetLowReinforcementsVoiceOver(IMP, IMP, "imp_off_defeat_im", .1, 1)
    SetLowReinforcementsVoiceOver(IMP, ALL, "imp_off_victory_im", .1, 1)   

    SetOutOfBoundsVoiceOver(1, "allleaving")
    SetOutOfBoundsVoiceOver(2, "impleaving")

    SetAmbientMusic(ALL, 1.0, "all_tat_amb_start",  0,1)
    SetAmbientMusic(ALL, 0.8, "all_tat_amb_middle", 1,1)
    SetAmbientMusic(ALL, 0.2,"all_tat_amb_end",    2,1)
    SetAmbientMusic(IMP, 1.0, "imp_tat_amb_start",  0,1)
    SetAmbientMusic(IMP, 0.8, "imp_tat_amb_middle", 1,1)
    SetAmbientMusic(IMP, 0.2,"imp_tat_amb_end",    2,1)

    SetVictoryMusic(ALL, "imp_tat_amb_victory")
    SetDefeatMusic (ALL, "imp_tat_amb_defeat")
    SetVictoryMusic(IMP, "imp_tat_amb_victory")
    SetDefeatMusic (IMP, "imp_tat_amb_defeat")

    SetSoundEffect("ScopeDisplayZoomIn",  "binocularzoomin")
    SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
    --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")


    SetAttackingTeam(ATT)

    --  Camera Stats
    --Tat2 Mos Eisley
   AddCameraShot(0.974338, -0.222180, 0.035172, 0.008020, -82.664650, 23.668301, 43.955681);
   AddCameraShot(0.390197, -0.089729, -0.893040, -0.205362, 23.563562, 12.914885, -101.465561);
   AddCameraShot(0.169759, 0.002225, -0.985398, 0.012916, 126.972809, 4.039628, -22.020613);
   AddCameraShot(0.677453, -0.041535, 0.733016, 0.044942, 97.517807, 4.039628, 36.853477);
   AddCameraShot(0.866029, -0.156506, 0.467299, 0.084449, 7.685640, 7.130688, -10.895234);
end

Master of the Force
User avatar
Posts: 4776
Joined: Sat Sep 19, 2009 11:37 am
Location: Mos Espa (germany)
Projects :: RC Side Mod SWBF2 HD SWBF3 Legacy

Re: Crash without Error?

Postby Anakin » Sun Apr 07, 2019 4:33 am

All right, i just indent your code in a better way, so it's easier to read. And i added some print commands. use this script and munge. Then take a look at the munge log to identify the position where it crashes.
Hidden/Spoiler:
Code: Select all
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--
print("Test1")
ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("MultiObjectiveContainer")
ScriptCB_SetGameRules("Campaign")

--  REP Attacking (attacker is always #1)
ALL = 1;
IMP = 2;
TAR = 3;
CIV = 4;
--  These variables do not change
ATT = ALL;
DEF = IMP;

print("Test2")

function ScriptPostLoad()

   print("Test5")

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


   ForceHumansOntoTeam1()
        --This defines the CPs.  These need to happen first
   CP1 = CommandPost:New{name = "cp1"}
    CP2 = CommandPost:New{name = "cp2"}
    CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}

   
    --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,
   popupText = "game.modes.con",}
   
   
   --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(cp6)
   conquest:AddCommandPost(cp7)
   conquest:AddCommandPost(cp8)

   conquest:Start()

   --Setup Timer--
   timePop = CreateTimer("timePop")
   SetTimerValue(timePop, 3.0)

   dumb = CreateTimer("dumb")
   SetTimerValue(dumb, 0.5)
   StartTimer(dumb)

   OnTimerElapse(
      function(timer)
         ClearAIGoals(2)
         AddAIGoal(2, "follow", 1000, GetCharacterUnit(target))
         MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true)
         DestroyTimer(dumb)
      end,
      dumb
   )
   
   SetTeamAsFriend(2,1)
   SetTeamAsNeutral(1,3)
   SetTeamAsFriend(3,1)
   SetTeamAsFriend(1,2)
   SetTeamAsFriend(4,1)
   SetTeamAsFriend(4,2)
   SetTeamAsFriend(4,3)
   SetTeamAsFriend(1,4)
   SetTeamAsFriend(2,4)
   SetTeamAsFriend(3,4)
   SetTeamAsFriend(2,3)
   SetTeamAsFriend(3,2)
   
   tarhp = nil
   
     
   deathcheck = OnCharacterDeath(
      function(character, killer)
         if GetNumTeamMembersAlive(1) == 0 then
            MissionDefeat(1)
         elseif GetNumTeamMembersAlive(3) == 0 then
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer))
            ActivateRegion("CP2_Control")
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            MapAddRegionMarker("CP2_Control", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true)
         end
      end
   )

   i = 1
     
   TEAM = OnCharacterDeath(
      function(character, killer)
         if GetObjectTeam(killer) == 1 then
            SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer))
            i = i + 1
         end
      end
   )
     
   conquestComplete = OnEnterRegion(
      function(region, character)
         conquest:Complete(ATT)
      end,
      "CP2_Control"
   )

   x = 1
   
   AllowAISpawn(1, false)
   
   dmgcheck = OnObjectDamage(
      function(object, damager)
         print("check")
         if GetObjectTeam(GetCharacterUnit(damager)) == 1 and x == 1 then
            ClearAIGoals(3)
            AddAIGoal(3, "follow", 1000, "com_item_weaponrecharge0")
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager))
            AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            x = 2
         end
      end
   )

   SetTeamAggressiveness(2, 1.0)
   DisableAIAutoBalance()
   SetAIDifficulty(0, 3)

   conquest.OnStart = function (self)
      ForceHumansOntoTeam1()
      AICanCaptureCP("cp1", 2, false)
      AICanCaptureCP("cp2", 2, false)
      AICanCaptureCP("cp3", 2, false)
      AICanCaptureCP("cp6", 2, false)
      AICanCaptureCP("cp7", 2, false)
      AICanCaptureCP("cp8", 2, false)
      AICanCaptureCP("cp1", 3, false)
      AICanCaptureCP("cp2", 3, false)
      AICanCaptureCP("cp3", 3, false)
      AICanCaptureCP("cp6", 3, false)
      AICanCaptureCP("cp7", 3, false)
      AICanCaptureCP("cp8", 3, false)
      SetAIDifficulty(999, -999, "hard")
      target = GetTeamMember(3,0)
      Deathmatch4 = AddAIGoal(4, "deathmatch", 100)
      Deathmatch3 = AddAIGoal(3, "deathmatch", 100)
      --AddAIGoal(2, "deathmatch", 100)
      SelectCharacterClass(target, "imp_inf_officer")
      SpawnCharacter(target, GetPathPoint("CP3_SpawnPath", 0)) --target spawnpoint
      onfirstspawn = OnCharacterSpawn(
         function(character)
            if IsCharacterHuman(character) then
               ReleaseCharacterSpawn(onfirstspawn)
               onfirstspawn = nil
               MoveCameraToEntity(GetCharacterUnit(target))
               AllowAISpawn(2, false)
               AllowAISpawn(3, false)
               AllowAISpawn(4, false)
               tarhp = GetObjectHealth(GetCharacterUnit(target))
               --ShowMessageText("level.abc.kill")
            end
         end
      )
   end

   conquest.OnComplete = function (self)
      ShowMessageText("game.objectives.complete", ATT)
      DeleteAIGoal(Deathmatch4)
      DeleteAIGoal(Deathmatch3)
   end
   
   ForceHumansOntoTeam1()
   --This defines the CPs.  These need to happen first
   CP1 = CommandPost:New{name = "cp1"}
   CP2 = CommandPost:New{name = "cp2"}
   CP3 = CommandPost:New{name = "cp3"}

   CP6 = CommandPost:New{name = "cp6"}
   CP7 = CommandPost:New{name = "cp7"}
   CP8 = CommandPost:New{name = "cp8"}


   --This sets up the actual objective.  This needs to happen after cp's are defined
   conquest2 = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true,
   popupText = "game.modes.con",}


   --This adds the CPs to the objective.  This needs to happen after the objective is set up
   conquest2:AddCommandPost(cp1)
   conquest2:AddCommandPost(cp2)
   conquest2:AddCommandPost(cp3)

   conquest2:AddCommandPost(cp6)
   conquest2:AddCommandPost(cp7)
   conquest2:AddCommandPost(cp8)

   conquest2:Start()

   --Setup Timer--
   timePop = CreateTimer("timePop")
   SetTimerValue(timePop, 3.0)

   dumb = CreateTimer("dumb")
   SetTimerValue(dumb, 0.5)
   StartTimer(dumb)

   OnTimerElapse(
      function(timer)
         ClearAIGoals(2)
         AddAIGoal(2, "follow", 1000, GetCharacterUnit(target))
         MapAddEntityMarker(GetCharacterUnit(target), "hud_objective_icon_circle", 5, 1, "RED", true, true, true)
         DestroyTimer(dumb)
      end,
      dumb
   )

   SetTeamAsFriend(2,1)
   SetTeamAsNeutral(1,3)
   SetTeamAsFriend(3,1)
   SetTeamAsFriend(1,2)
   SetTeamAsFriend(4,1)
   SetTeamAsFriend(4,2)
   SetTeamAsFriend(4,3)
   SetTeamAsFriend(1,4)
   SetTeamAsFriend(2,4)
   SetTeamAsFriend(3,4)
   SetTeamAsFriend(2,3)
   SetTeamAsFriend(3,2)

   tarhp = nil

   deathcheck = OnCharacterDeath(
      function(character, killer)
         if GetNumTeamMembersAlive(1) == 0 then
            MissionDefeat(1)
         elseif GetNumTeamMembersAlive(3) == 0 then
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 1000, GetCharacterUnit(killer))
            ActivateRegion("CP2_Control")
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            MapAddRegionMarker("CP2_Control", "hud_objective_icon_circle", 5, 1, "BLUE", true, true, true)
         end
      end
   )

   i = 1
     
   TEAM = OnCharacterDeath(
      function(character, killer)
         if GetObjectTeam(killer) == 1 then
            SpawnCharacter(GetTeamMember(1,i),GetEntityMatrix(killer))
            i = i + 1
         end
      end
   )
     
   conquest2Complete = OnEnterRegion(
      function(region, character)
         conquest2:Complete(ATT)
      end,
      "CP2_Control"
   )
     
   x = 1
   
   AllowAISpawn(1, false)
   
   dmgcheck = OnObjectDamage(
      function(object, damager)
         print("check")
         if GetObjectTeam(GetCharacterUnit(damager)) == 1 and x == 1 then
            ClearAIGoals(3)
            AddAIGoal(3, "follow", 1000, "com_item_weaponrecharge0")
            ClearAIGoals(2)
            AddAIGoal(2, "destroy", 500, GetCharacterUnit(damager))
            AddAIGoal(2, "follow", 500, GetCharacterUnit(target))
            SetTeamAsEnemy(1,2)
            SetTeamAsEnemy(2,1)
            x = 2
         end
      end
   )

   SetTeamAggressiveness(2, 1.0)
   DisableAIAutoBalance()
   SetAIDifficulty(0, 3)


   conquest2.OnStart = function (self)
      ForceHumansOntoTeam1()
      AICanCaptureCP("cp1", 2, false)
      AICanCaptureCP("cp2", 2, false)
      AICanCaptureCP("cp3", 2, false)
      AICanCaptureCP("cp6", 2, false)
      AICanCaptureCP("cp7", 2, false)
      AICanCaptureCP("cp8", 2, false)
      AICanCaptureCP("cp1", 3, false)
      AICanCaptureCP("cp2", 3, false)
      AICanCaptureCP("cp3", 3, false)
      AICanCaptureCP("cp6", 3, false)
      AICanCaptureCP("cp7", 3, false)
      AICanCaptureCP("cp8", 3, false)
      SetAIDifficulty(999, -999, "hard")
      target = GetTeamMember(3,0)
      Deathmatch4 = AddAIGoal(4, "deathmatch", 100)
      Deathmatch3 = AddAIGoal(3, "deathmatch", 100)
      --AddAIGoal(2, "deathmatch", 100)
      SelectCharacterClass(target, "imp_inf_officer")
      SpawnCharacter(target, GetPathPoint("CP3_SpawnPath", 0)) --target spawnpoint
      onfirstspawn = OnCharacterSpawn(
         function(character)
            if IsCharacterHuman(character) then
               ReleaseCharacterSpawn(onfirstspawn)
               onfirstspawn = nil
               MoveCameraToEntity(GetCharacterUnit(target))
               AllowAISpawn(2, false)
               AllowAISpawn(3, false)
               AllowAISpawn(4, false)
               tarhp = GetObjectHealth(GetCharacterUnit(target))
               --ShowMessageText("level.abc.kill")
            end
         end
      )
   end
   
   
   
   conquest2.OnComplete = function (self)
      ShowMessageText("game.objectives.complete", ATT)
      DeleteAIGoal(Deathmatch4)
      DeleteAIGoal(Deathmatch3)
   end

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 StartObjectives()
   objectiveSequence = MultiObjectiveContainer:New{delayVictoryTime = 4.0}
   objectiveSequence:AddObjectiveSet(conquest)
   objectiveSequence:AddObjectiveSet(conquest2)
   objectiveSequence:Start()
end

function ScriptInit()
   print("Test4")
   -- Designers, these two lines *MUST* be first!
   StealArtistHeap(256*1024)
   SetPS2ModelMemory(2097152 + 65536 * 10)
   ReadDataFile("ingame.lvl")



   SetTeamAggressiveness(ALL, 0.95)
   SetTeamAggressiveness(IMP, 0.95)

   SetMaxFlyHeight(40)
   SetMaxPlayerFlyHeight(40)

   ReadDataFile("sound\\tat.lvl;tat2gcw")
   ReadDataFile("SIDE\\all.lvl",
               "all_inf_rifleman",
               "all_inf_rocketeer",
               "all_inf_sniper",
               "all_inf_engineer",
               "all_inf_officer",
               "all_inf_wookiee",
               "all_hero_hansolo_tat")
                   
   ReadDataFile("SIDE\\imp.lvl",
               "imp_inf_rifleman",
               "imp_inf_rocketeer",
               "imp_inf_engineer",
               "imp_inf_sniper",
               "imp_inf_officer",
               "imp_inf_dark_trooper",
               "imp_hero_bobafett",
               "imp_fly_destroyer_dome" )
 
   ReadDataFile("SIDE\\des.lvl",
               "tat_inf_jawa")

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


   SetupTeams{
      all = {
         team = ALL,
         units = 20,
         reinforcements = -1,
         soldier  = { "all_inf_rifleman",10, 10},
         assault  = { "all_inf_rocketeer",0, 0},
         engineer = { "all_inf_engineer",0, 0},
         sniper   = { "all_inf_sniper",0, 0},
         officer = {"all_inf_officer",0, 0},
         special = { "all_inf_wookiee",0, 0},
         
      },
      imp = {
         team = IMP,
         units = 10,
         reinforcements = -1,
         officer = {"imp_inf_rifleman",12, 12},
      }
   }

   SetTeamName (3, "target")
   AddUnitClass (3, "imp_inf_officer", 1)
   SetUnitCount (3, 1)

   SetTeamName (4, "citizens")
   AddUnitClass (4, "all_inf_rifleman", 10)
   AddUnitClass (4, "all_inf_rocketeer", 10)
   AddUnitClass (4, "all_inf_engineer", 10)
   AddUnitClass (4, "all_inf_sniper", 10)
   AddUnitClass (4, "all_inf_officer", 10)
   SetUnitCount (4, 50)
   
   SetHeroClass(IMP, "imp_inf_officer")
   SetHeroClass(ALL, "all_hero_luke")

   --  Level Stats
   ClearWalkers()
   AddWalkerType(0, 3) -- 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 = 230
   SetMemoryPoolSize("Aimer", 23)
   SetMemoryPoolSize("AmmoCounter", weaponCnt)
   SetMemoryPoolSize("BaseHint", 325)
   SetMemoryPoolSize("EnergyBar", weaponCnt)
   SetMemoryPoolSize("EntityCloth", 19)
   SetMemoryPoolSize("EntityFlyer", 6) -- to account for rocket upgrade
   SetMemoryPoolSize("EntityHover", 1)
   SetMemoryPoolSize("EntitySoundStream", 2)
   SetMemoryPoolSize("EntitySoundStatic", 43)
   SetMemoryPoolSize("SoldierAnimation", 500)
   SetMemoryPoolSize("MountedTurret", 15)
   SetMemoryPoolSize("Navigator", 50)
   SetMemoryPoolSize("Obstacle", 667)
   SetMemoryPoolSize("PathFollower", 50)
   SetMemoryPoolSize("PathNode", 256)
   SetMemoryPoolSize("TreeGridStack", 325)
   SetMemoryPoolSize("UnitAgent", 50)
   SetMemoryPoolSize("UnitController", 50)
   SetMemoryPoolSize("Weapon", weaponCnt)

   SetSpawnDelay(0.0, 0.0)
   ReadDataFile("TAT\\tat2.lvl", "tat2_con")
   SetDenseEnvironment("false")


   --  Sound Stats

   voiceSlow = OpenAudioStream("sound\\global.lvl", "all_unit_vo_slow")
   AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_slow", voiceSlow)
   AudioStreamAppendSegments("sound\\global.lvl", "des_unit_vo_slow", voiceSlow)
   AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

   voiceQuick = OpenAudioStream("sound\\global.lvl", "all_unit_vo_quick")
   AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_quick", voiceQuick)     

   OpenAudioStream("sound\\global.lvl",  "gcw_music")
   -- OpenAudioStream("sound\\global.lvl",  "global_vo_quick")
   -- OpenAudioStream("sound\\global.lvl",  "global_vo_slow")
   OpenAudioStream("sound\\tat.lvl",  "tat2")
   OpenAudioStream("sound\\tat.lvl",  "tat2")

   SetBleedingVoiceOver(ALL, ALL, "all_off_com_report_us_overwhelmed", 1)
   SetBleedingVoiceOver(ALL, IMP, "all_off_com_report_enemy_losing",   1)
   SetBleedingVoiceOver(IMP, ALL, "imp_off_com_report_enemy_losing",   1)
   SetBleedingVoiceOver(IMP, IMP, "imp_off_com_report_us_overwhelmed", 1)

   SetLowReinforcementsVoiceOver(ALL, ALL, "all_off_defeat_im", .1, 1)
   SetLowReinforcementsVoiceOver(IMP, ALL, "all_off_victory_im", .1, 1)
   SetLowReinforcementsVoiceOver(IMP, IMP, "imp_off_defeat_im", .1, 1)
   SetLowReinforcementsVoiceOver(IMP, ALL, "imp_off_victory_im", .1, 1)   

   SetOutOfBoundsVoiceOver(1, "allleaving")
   SetOutOfBoundsVoiceOver(2, "impleaving")

   SetAmbientMusic(ALL, 1.0, "all_tat_amb_start",  0,1)
   SetAmbientMusic(ALL, 0.8, "all_tat_amb_middle", 1,1)
   SetAmbientMusic(ALL, 0.2,"all_tat_amb_end",    2,1)
   SetAmbientMusic(IMP, 1.0, "imp_tat_amb_start",  0,1)
   SetAmbientMusic(IMP, 0.8, "imp_tat_amb_middle", 1,1)
   SetAmbientMusic(IMP, 0.2,"imp_tat_amb_end",    2,1)

   SetVictoryMusic(ALL, "imp_tat_amb_victory")
   SetDefeatMusic (ALL, "imp_tat_amb_defeat")
   SetVictoryMusic(IMP, "imp_tat_amb_victory")
   SetDefeatMusic (IMP, "imp_tat_amb_defeat")

   SetSoundEffect("ScopeDisplayZoomIn",  "binocularzoomin")
   SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
   --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")


   SetAttackingTeam(ATT)

   --  Camera Stats
   --Tat2 Mos Eisley
   AddCameraShot(0.974338, -0.222180, 0.035172, 0.008020, -82.664650, 23.668301, 43.955681);
   AddCameraShot(0.390197, -0.089729, -0.893040, -0.205362, 23.563562, 12.914885, -101.465561);
   AddCameraShot(0.169759, 0.002225, -0.985398, 0.012916, 126.972809, 4.039628, -22.020613);
   AddCameraShot(0.677453, -0.041535, 0.733016, 0.044942, 97.517807, 4.039628, 36.853477);
   AddCameraShot(0.866029, -0.156506, 0.467299, 0.084449, 7.685640, 7.130688, -10.895234);
end

print("Test3")

Return to SWBF2 Modding

Who is online

Users browsing this forum: No registered users and 10 guests