Code:
//$reference parts/core/Campaign.dll
//-$debug
using System;
using System.IO;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
public class Mission : maddox.game.campaign.Mission
{
int r = 0;
bool cmpl = false;
int cEnemy = 0;
int cFriendly = 0;
int cPlayer = 0;
int MySquad = 0;
string b, tx1;
string[] br = new string[100];
int cEnemyS, cFriendlyS, cPlayerS, MySquadS;
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> initiatorList)
{
if (actor is AiAircraft)
{
if (!(actor is AiAircraft))
return;
if (shortName.IndexOf("92Sqn",0) > 0) MySquad++;
if (actor.Army() == 2) cEnemy++;
if (actor.Army() == 1) cFriendly++;
if (actor.Army() == 2) {
if (GamePlay.gpPlayer().Place() != null) {
bool playerWin = false;
foreach (DamagerScore i in initiatorList) {
if (i.initiator != null && i.initiator.Actor == GamePlay.gpPlayer().Place()) {
playerWin = true;
}
}
if (playerWin) cPlayer++;
}
}
SaveRezult (cmpl);
}
}
private void SaveRezult (bool CComplite)
{
int n1 = 1;
int j = 0;
StreamReader f2 = new StreamReader(@"C:\Documents\1C SoftClub\il-2 sturmovik cliffs of dover\mission\campaign\custom\campaign_Spitfires_over_Dunkik\m1.txt");
b = f2.ReadLine();
cEnemyS = Int32.Parse(b) + cEnemy;
b = f2.ReadLine();
cFriendlyS = Int32.Parse(b) + cFriendly;
b = f2.ReadLine();
MySquadS = Int32.Parse(b) + MySquad;
b = f2.ReadLine();
cPlayerS = Int32.Parse(b) + cPlayer;
f2.Close();
StreamWriter f3 = new StreamWriter(@"C:\Documents\1C SoftClub\il-2 sturmovik cliffs of dover\mission\campaign\custom\campaign_Spitfires_over_Dunkik\m2.txt");
f3.WriteLine(String.Format("{0}", cEnemyS));
f3.WriteLine(String.Format("{0}", cFriendlyS));
f3.WriteLine(String.Format("{0}", MySquadS));
f3.WriteLine(String.Format("{0}", cPlayerS));
f3.Close();
StreamReader f1 = new StreamReader(@"C:\Documents\1C SoftClub\il-2 sturmovik cliffs of dover\mission\campaign\custom\campaign_Spitfires_over_Dunkik\m2.briefing");
do
{
b = f1.ReadLine();
br[n1++] = b;
}
while (b != "[2]") ;
f1.Close();
StreamWriter f = new StreamWriter(@"C:\Documents\1C SoftClub\il-2 sturmovik cliffs of dover\mission\campaign\custom\campaign_Spitfires_over_Dunkik\m2.briefing");
while (++j<n1) f.WriteLine(br[j]);
if (CComplite)
f.WriteLine("<Name>");
f.WriteLine("Success");
f.WriteLine("<Description>");
if (CComplite) f.WriteLine("Mission accomplished!");
else f.WriteLine("Mission tasks incomplete!");
if (MySquad >0) f.WriteLine("MISSION RESULTS");
else f.WriteLine("Overall, the squad performed well on the last mission.");
f.WriteLine(String.Format("RAF claims - {0} ", cEnemy));
f.WriteLine(String.Format("RAF losses - {0} ", cFriendly));
f.WriteLine(String.Format("Squadron claims - {0} ", MySquad));
f.WriteLine(String.Format("Personal claims - {0} ", cPlayer));
j = (cEnemy - cFriendly);
if (j<0) f.WriteLine("The overall outcome of the mission was unsatisfactory. The RAF suffer heavy losses.");
if (j==0)
{
if (cEnemy > 0) f.WriteLine("RAF's losses in the last battle were moderate. However, the overall performance needs to improve, the Luftwaffe has more aircraft.");
else f.WriteLine("The squadron's performance needs to improve.");
}
if (j > 0) f.WriteLine("The RAF it has performed well, the enemy's losses have been heavy.");
f.WriteLine(tx1);
f.WriteLine(" ");
f.WriteLine("CAMPAIGN PROGRESS");
f.WriteLine(String.Format("RAF claims - {0} ", cEnemyS));
f.WriteLine(String.Format("RAF losses - {0} ", cFriendlyS));
f.WriteLine(String.Format("Squadron losses - {0} ", MySquadS));
f.WriteLine(String.Format("Personal claims - {0} ", cPlayerS));
f.WriteLine("[3]");
f.WriteLine("<Name>");
f.WriteLine("Failure");
f.WriteLine("<Description>");
if (CComplite) f.WriteLine("Mission accomplished!");
else f.WriteLine("Mission tasks incomplete!");
if (MySquad >0) f.WriteLine("Results of the last mission:");
else f.WriteLine("The squadron's performance needs to improve.");
f.WriteLine(String.Format("RAF claims - {0}, ", cEnemy));
f.WriteLine(String.Format("RAF losses - {0}, ", cFriendly));
f.WriteLine(String.Format("Squadron losses - {0}, ", MySquad));
f.WriteLine(String.Format("Personal claims - {0}, ", cPlayer));
j = (cEnemy - cFriendly);
if (j<0) f.WriteLine("The RAF's performance in the battle has been unsatisfactory, attrition favors the Luftwaffe.");
if (j==0)
{
if (cEnemy > 0) f.WriteLine("RAF's losses in the last battle were moderate. However, the overall performance needs to improve, the Luftwaffe has more aircraft.");
else f.WriteLine("The squadron's performance was unsatisfactory.");
}
if (j > 0) f.WriteLine("The RAF has performed well, causing significant losses to the enemy.");
f.WriteLine(tx1);
if (MySquad>0)
f.WriteLine("The squadron's performance was remarkable.");
else
f.WriteLine("The squadron's performance increased. Very well, gentlemen.");
f.WriteLine(" ");
f.WriteLine("CAMPAIGN PROGRESS");
f.WriteLine(String.Format("RAF claims - {0} ", cEnemyS));
f.WriteLine(String.Format("RAF losses - {0} ", cFriendlyS));
f.WriteLine(String.Format("Squadron losses - {0} ", MySquadS));
f.WriteLine(String.Format("Personal claims - {0} ", cPlayerS));
f.WriteLine("<Slide>");
if (CComplite)
f.WriteLine("CampaignSuccess2.jpg");
else f.WriteLine("CampaignFailure2.jpg");
f.WriteLine("<Caption>");
f.Close();
}
// --------------------------
public override void OnBattleStarted()
{
base.OnBattleStarted() ;
MissionNumberListener = -1;
tx1 = "The mission's tasks were not all completed. Replay is recommended.";
SaveRezult (false) ;
}
public override void OnTrigger(int missionNumber, string shortName, bool active) {
if ("trigger_3".Equals(shortName) && active)
{
if (++r == 4)
{
GamePlay.gpHUDLogCenter("Waypoint reached.");
tx1 = "Task have been completed.";
cmpl = true;
SaveRezult (true) ;
}
else GamePlay.gpHUDLogCenter(String.Format("# {0}", r));
GamePlay.gpGetTrigger(shortName).Enable = false;
}
if ("trigger_1".Equals(shortName) && active)
{
GamePlay.gpGetTrigger(shortName).Enable = false;
if (++r == 4)
{
GamePlay.gpHUDLogCenter("Waypoint reached.");
tx1 = "Task have been completed.";
cmpl = true;
SaveRezult (true) ;
}
else GamePlay.gpHUDLogCenter(String.Format("# {0}", r));
AiAction action1 = GamePlay.gpGetAction("action_1");
if (action1 != null)
{
action1.Do();
}
}
if ("trigger_2".Equals(shortName) && active)
{
GamePlay.gpGetTrigger(shortName).Enable = false;
if (++r == 4)
{
GamePlay.gpHUDLogCenter("Waypoint reached.");
tx1 = "Task have been completed.";
cmpl = true;
SaveRezult (true) ;
}
else GamePlay.gpHUDLogCenter(String.Format("# {0}", r));
}
if ("trigger_6".Equals(shortName) && active)
{
GamePlay.gpGetTrigger(shortName).Enable = false;
if (++r == 4)
{
GamePlay.gpHUDLogCenter("Waypoint reached.");
tx1 = "Task have been completed.";
cmpl = true;
SaveRezult (true) ;
}
else GamePlay.gpHUDLogCenter(String.Format("# {0}", r));
}
if ("trigger_7".Equals(shortName) && active)
{
GamePlay.gpGetTrigger(shortName).Enable = false;
if (r < 4)
{
GamePlay.gpHUDLogCenter("Waypoint reached.");
tx1 = "Task have been completed.";
cmpl = true;
SaveRezult (true) ;
}
}
}
int countEnemyDead = 0;
int countFriendDead = 0;
private void checkLanded(AiAircraft aircraft)
{
if (GamePlay.gpPlayer().Place() != aircraft)
return;
bool complete = ((countEnemyDead - countFriendDead) >= 0);
if (Campaign != null)
{
if (Campaign.battleSuccess != null)
return;
Campaign.battleSuccess = complete;
}
if (complete)
{
GamePlay.gpHUDLogCenter("MISSION COMPLETE");
}
Timeout(20.0, () =>
{
GamePlay.gpHUDLogCenter("Press Esc to end mission.");
});
}
public override void OnAircraftLanded(int missionNumber, string shortName, AiAircraft aircraft)
{
checkLanded(aircraft);
}
public override void OnAircraftCrashLanded(int missionNumber, string shortName, AiAircraft aircraft)
{
checkLanded(aircraft);
}
}
Bookmarks