hey moggel!
nice to see you on the forum as well!
man i would love to be your crash test dummy!
my main aim is, to make that work for a coop mission, but it would be fine for offline use as well first!
regarding the submissions.....
i would like to introduce some random life on ground in my mission, which generates flights out of a pool of submissions as well...
my problem is mainly, that if i just put ground vehicles into my submissions, the longer the mission runs, the more vehicles will be on the ground, that in the end they are that many, that its not playable anymore because of performance decrease...
have a look, this is my script.....right now, there are no moving ground object placed in the submissions, only in the main mission template, there are static objects, and a few ships(its the ACG map template)....
HTML Code:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using maddox.game;
using maddox.game.world;
public class Mission : AMission
{
Stopwatch MissionTimer = new Stopwatch();
public override void OnBattleStarted()
{
base.OnBattleStarted();
MissionTimer.Start();
MissionNumberListener = -1;
}
public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
{
base.OnActorCreated(missionNumber, shortName, actor);
if (actor is AiAircraft)
{
switch ((actor as AiAircraft).InternalTypeName())
{
case "bob:Aircraft.He-111P-2":
case "bob:Aircraft.BlenheimMkIV":
Timeout(3000, () => // Time in Seconds
{
(actor as AiAircraft).Destroy();
});
break;
}
}
}
public override void OnAircraftCrashLanded(int missionNumber, string shortName, AiAircraft aircraft)
{
base.OnAircraftCrashLanded(missionNumber, shortName, aircraft);
if(IsActorDestroyable(aircraft))
aircraft.Destroy();
}
public override void OnAircraftLanded(int missionNumber, string shortName, AiAircraft aircraft)
{
base.OnAircraftLanded(missionNumber, shortName, aircraft);
if (IsActorDestroyable(aircraft))
aircraft.Destroy();
}
private bool IsActorDestroyable(AiActor actor)
{
bool actorDestroyable = true;
//Check if actor is empty (no Player)
if (actor is AiAircraft)
{
if ((actor as AiAircraft).ExistCabin(0))
for (int i = 0; i < (actor as AiAircraft).Places(); i++)
{
if ((actor as AiAircraft).Player(i) != null)
{
actorDestroyable = false;
break;
}
}
}
else if (actor is AiGroundActor)
{
if ((actor as AiGroundActor).ExistCabin(0))
for (int i = 0; i < (actor as AiGroundActor).Places(); i++)
{
if ((actor as AiGroundActor).Player(i) != null)
{
actorDestroyable = false;
break;
}
}
}
return actorDestroyable;
}
// to remove GroundActors after their Task is completed
public override void OnActorTaskCompleted(int missionNumber, string shortName, AiActor actor)
{
base.OnActorTaskCompleted(missionNumber, shortName, actor);
if (actor is AiGroundActor)
if (IsActorDestroyable(actor))
(actor as AiGroundActor).Destroy();
}
public int GetSumAllPlanes()
{
int planeCount = 0;
List<AiAirGroup> allAirgroups = new List<AiAirGroup>();
if (GamePlay.gpAirGroups(1) != null)
allAirgroups.AddRange(GamePlay.gpAirGroups(1));
if (GamePlay.gpAirGroups(2) != null)
allAirgroups.AddRange(GamePlay.gpAirGroups(2));
allAirgroups.ForEach(item =>
{
foreach (AiAircraft ac in item.GetItems())
{
planeCount++;
}
});
return planeCount;
}
public override void OnTickGame()
{
if(MissionTimer.Elapsed.TotalSeconds >= 130 && GetSumAllPlanes() < 30) //Loads a mission every 130s and only if the sum of all planes < 30
{
Random ZufaelligeMission = new Random();
MissionTimer.Restart(); // Sets timer to 0 and start again
switch (ZufaelligeMission.Next(1,34))
{
case 1:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission1.mis");
break;
case 2:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission2.mis");
break;
case 3:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission3.mis");
break;
case 4:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission4.mis");
break;
case 5:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission5.mis");
break;
case 6:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission6.mis");
break;
case 7:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission7.mis");
break;
case 8:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission8.mis");
break;
case 9:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission9.mis");
break;
case 10:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission10.mis");
break;
case 11:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission11.mis");
break;
case 12:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission12.mis");
break;
case 13:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission13.mis");
break;
case 14:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission14.mis");
break;
case 15:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission15.mis");
break;
case 16:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission16.mis");
break;
case 17:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission17.mis");
break;
case 18:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission18.mis");
break;
case 19:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission19.mis");
break;
case 20:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission20.mis");
break;
case 21:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission21.mis");
break;
case 22:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission22.mis");
break;
case 23:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission23.mis");
break;
case 24:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission24.mis");
break;
case 25:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission25.mis");
break;
case 26:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission26.mis");
break;
case 27:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission27.mis");
break;
case 28:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission28.mis");
break;
case 29:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission29.mis");
break;
case 30:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission30.mis");
break;
case 31:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission31.mis");
break;
case 32:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission32.mis");
break;
case 33:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission33.mis");
break;
case 34:
GamePlay.gpPostMissionLoad("missions\\Blitzkrieg\\mission34.mis");
break;
}
}
}
}
ps: to be honest, that is not my script,actually every single line was written by Kodiak(thx again)