View Single Post
  #5  
Old 07-27-2011, 09:14 AM
SNAFU SNAFU is offline
Approved Member
 
Join Date: Feb 2011
Posts: 324
Default

Quote:
Originally Posted by FG28_Kodiak View Post
Can i have the complete code, please.
What i see will not work correctly, without some improvements
As you wish!
This is main mission script:

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission
{
////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Abschnitt: Lade zufaellige Reihenfolge eine Submission


    int LastMissionLoaded = 0;

    double initTime;

                                                                       
    public override void OnTickGame()
    	{
        if (Time.tickCounter() % 216000 == 1800)       // 1800 = 1min Beginn, wiederholt sich alle 120min
            {                                                                // randomly selects 1 of several submissions excluding the recent one

            Random RandomIncident = new Random();
            int CurrentMissionSelected;
			
            do
                
                CurrentMissionSelected = RandomIncident.Next(1, 4); 	// Hier ist die zweite Zahl in der Klammer die Anzahl Optionen + 1, du hast 3 Submissionen, also (1, 4)
                
            while (LastMissionLoaded == CurrentMissionSelected);

            LastMissionLoaded = CurrentMissionSelected;

            switch (CurrentMissionSelected)

            {
            case 1:
                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/July1940/Mid-July1940Submissionen/Mission1.mis"); // hier der Submission A den Pfad korrekt eingeben
                GamePlay.gpHUDLogCenter("12th July - Mission No1 tasks set");	// hier Nachricht welche nach laden der Mission kommen soll
                                                                                                   
                initTime = 0.0;
                Timeout(initTime += 1800, () =>				// Hier Zeit (30) in Sekunden eingeben nach welcher die 1te Nachricht kommen soll, nach laden der Mission A
                {
                    GamePlay.gpHUDLogCenter("30minutes into mission");		// Hier Text der 1ten Nachricht
                });
                Timeout(initTime += 3600, () =>				// Hier Zeit (60) in Sekunden eingeben nach welcher die 2te Nachricht kommen soll				
                {
                    GamePlay.gpHUDLogCenter("60 minutes into mission"); // Hier Text der 2ten Nachricht
                });
                break;
            case 2:
                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/July1940/Mid-July1940Submissionen/Mission1.mis"); // hier der Submission B den Pfad korrekt eingeben
                GamePlay.gpHUDLogCenter("12th July - Mission No1 tasks set");	// hier Nachricht welche nach laden der Mission kommen soll
                                                                                                   
                initTime = 0.0;
                Timeout(initTime += 1800, () =>				// Hier Zeit (30) in Sekunden eingeben nach welcher die 1te Nachricht kommen soll, nach laden der Mission A
                {
                    GamePlay.gpHUDLogCenter("30minutes into mission");		// Hier Text der 1ten Nachricht
                });
                Timeout(initTime += 3600, () =>				// Hier Zeit (60) in Sekunden eingeben nach welcher die 2te Nachricht kommen soll				
                {
                    GamePlay.gpHUDLogCenter("60 minutes into mission"); // Hier Text der 2ten Nachricht
                });
                break;
            case 3:
                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/July1940/Mid-July1940Submissionen/Mission1.mis"); // hier der Submission C den Pfad korrekt eingeben
                GamePlay.gpHUDLogCenter("12th July - Mission No1 tasks set");	// hier Nachricht welche nach laden der Mission kommen soll
                                                                                                   
                initTime = 0.0;
                Timeout(initTime += 1800, () =>				// Hier Zeit (30) in Sekunden eingeben nach welcher die 1te Nachricht kommen soll, nach laden der Mission A
                {
                    GamePlay.gpHUDLogCenter("30minutes into mission");		// Hier Text der 1ten Nachricht
                });
                Timeout(initTime += 3600, () =>				// Hier Zeit (60) in Sekunden eingeben nach welcher die 2te Nachricht kommen soll				
                {
                    GamePlay.gpHUDLogCenter("60 minutes into mission"); // Hier Text der 2ten Nachricht
                });
                break;
        }
    }

//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////Abschnitt: Lade regelmaeßig eine Submission ohne Nachricht
//
    
     if (Time.tickCounter() % 162000 == 36000)     // Start nach 20min, Wiederholung nach 1,5h
     {
         GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/July1940Mid-July1940Submissionen/Intercept1.mis"); // hier der Submission Wiederholung den Pfad korrekt eingeben
     }

     if (Time.tickCounter() % 216000 == 18000)        // Start nach 10min=18000, Wied3erholung nach 2 Stundem 216000=120min
     {
         GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/July1940/Mid-July1940Submissionen/Intercept2.mis"); // hier der Submission Wiederholung den Pfad korrekt eingeben
     }
	 
    if (Time.tickCounter() % 129600 == 1800)        // Start nach 1min, Wiederholung nach 12h
	{
         GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/July1940/Mid-July1940Submissionen/Vesseltraffic1.mis"); // hier der Submission Wiederholung den Pfad korrekt eingeben
     }
	
 }

//////////////////////////////////////////////////////////////////////////////////////////////////
////////////Abschnitt: Events aus Submission werden beruecksichtigt aktiviert

    public override void Init(maddox.game.ABattle battle, int missionNumber)
    {
        base.Init(battle, missionNumber);
        MissionNumberListener = -1; 
    }

//andere Version für Redudanz
public override void OnBattleStarted()
    {
        base.OnBattleStarted();

        //listen to events from all missions.
        MissionNumberListener = -1;
    }
 //////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////Abschnitt: Verlassene Flieger werden zerstoert/entfernt (Syndicate Server Version)

// destroys aircraft abandoned by a player.
    private bool isAiControlledPlane (AiAircraft aircraft) 
    {
		if (aircraft == null) 
        { 
			return false;
		}

		Player [] players = GamePlay.gpRemotePlayers ();
		foreach (Player p in players) 
        {    
			if (p != null && (p.Place () is AiAircraft) && (p.Place () as AiAircraft) == aircraft)
            { 
				return false;
			}
		}

		return true;
	}

	private void destroyPlane (AiAircraft aircraft) {
		if (aircraft != null) { 
			aircraft.Destroy ();
		}
	}

	private void explodeFuelTank (AiAircraft aircraft) 
    {
		if (aircraft != null) 
        { 
			aircraft.hitNamed (part.NamedDamageTypes.FuelTank0Exploded);
		}
	}

	private void destroyAiControlledPlane (AiAircraft aircraft) {
		if (isAiControlledPlane (aircraft)) {
			destroyPlane (aircraft);
		}
	}

	private void damageAiControlledPlane (AiActor actor) 
	{
		if (actor == null || !(actor is AiAircraft)) 
		{ 
			return;
		}

		AiAircraft aircraft = (actor as AiAircraft);

		if (!isAiControlledPlane (aircraft)) {
			return;
		}

		if (aircraft == null) { 
			return;
		}

		aircraft.hitNamed (part.NamedDamageTypes.ControlsElevatorDisabled);
		aircraft.hitNamed (part.NamedDamageTypes.ControlsAileronsDisabled);
		aircraft.hitNamed (part.NamedDamageTypes.ControlsRudderDisabled);
		aircraft.hitNamed (part.NamedDamageTypes.FuelPumpFailure);

        int iNumOfEngines = (aircraft.Group() as AiAirGroup).aircraftEnginesNum();
        for (int i = 0; i < iNumOfEngines; i++)
        {
            aircraft.hitNamed((part.NamedDamageTypes)Enum.Parse(typeof(part.NamedDamageTypes), "Eng" + i.ToString() + "TotalFailure"));
        }

        /***Timeout (240, () =>
                {explodeFuelTank (aircraft);}
            );
         * ***/

        Timeout (150, () =>
				{destroyPlane (aircraft);}
			);
	}

    //////////////////////////////////////////

	public override void OnPlaceLeave (Player player, AiActor actor, int placeIndex) 
    {
		base.OnPlaceLeave (player, actor, placeIndex);
		Timeout (1, () =>
				{damageAiControlledPlane (actor);}
			);
	}

	public override void OnAircraftCrashLanded (int missionNumber, string shortName, AiAircraft aircraft) 
    {
		base.OnAircraftCrashLanded (missionNumber, shortName, aircraft);
		Timeout (150, () =>
            { destroyPlane(aircraft); }
			);
	}
    public override void OnAircraftLanded (int missionNumber, string shortName, AiAircraft aircraft) 
    {
        base.OnAircraftLanded(missionNumber, shortName, aircraft);
        Timeout(150, () =>
            { destroyPlane(aircraft); }
            );
    }
	
	}

This is main submission Script:

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission
{
//-----------------------------------------------------------------------------------------------
//Section 1: Trigger Nachrichten

	public override void OnTrigger(int missionNumber, string shortName, bool active) 
	{
			if ("Trigger1R".Equals(shortName) && active) 				//Trigger 1 Nachricht
			{
				GamePlay.gpHUDLogCenter("Blue succeeded and sunk 3 red tanker"); 
				GamePlay.gpGetTrigger(shortName).Enable = false;
			}

			if ("Trigger2R".Equals(shortName) && active) 				//Trigger 1 Nachricht
			{
				GamePlay.gpHUDLogCenter("Red successfully reconnoitered LeHavre"); 
				GamePlay.gpGetTrigger(shortName).Enable = false;
			}

			if ("Trigger1B".Equals(shortName) && active) 				//Trigger 2 Nachricht
			{
				GamePlay.gpHUDLogCenter("Red succeeded and shot down 20% blue bomber"); 
				GamePlay.gpGetTrigger(shortName).Enable = false;
	}		

// Trigger Aktionen
base.OnTrigger(missionNumber, shortName, active); 

          if ("SpawnIntercept1".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("SpawnIntercept1");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		  if ("SpawnIntercept2".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("SpawnIntercept2");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		  if ("SpawnEscort1".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("SpawnEscort1");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		  if ("SpawnEscort2".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("SpawnEscort2");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		  if ("SpawnStuka1".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("SpawnStuka1");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		  if ("SpawnStuka2".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("SpawnStuka2");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
    }




//-----------------------------------------------------------------------------------------------
//Section 3: Briefing 
						
	public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);
        AiAircraft aircraft = actor as AiAircraft; 
        
        if (aircraft != null)
        switch (aircraft.Army())
      	  {                
            case 1:
		 if (aircraft.Type() == AircraftType.Bomber)				//Nachricht fuer rote Spieler beim spawnen
                { GamePlay.gpHUDLogCenter(new Player[] {player},"Fly a recon from Manston -AW25 to LeHavre -AN4"); }		
                else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Cover our shipping south of Isle of White - AD17"); }	
                break;
            case 2:
                if (aircraft.Type() == AircraftType.Bomber) //Nachricht fuer blaue Spieler beim spawnen
		{ GamePlay.gpHUDLogCenter(new Player[] { player }, "Attack britisch shipping south of Isle of White - AD17"); }                 
                else { GamePlay.gpHUDLogCenter(new Player[] { player }, "Escort Ju87 from Theville - AC6 to AE15"); }           
                break;

     	   }
    }

  	  public override void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft)
   {
        base.OnAircraftTookOff(missionNumber, shortName, aircraft);

        if (GamePlay.gpPlayer().Place() != aircraft)
            return;
        
        switch (aircraft.Army())
      	  {
            case 1:
              if (aircraft.Type() == AircraftType.Bomber)							//Nachricht fuer rote Spieler nach Start
                { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Fly a recon from Manston -AW25 to LeHavre -AN4"); }			
                else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Cover our shipping south of Isle of White - AD17"); } 		
              break;
            case 2:
                 if ((aircraft.Type() == AircraftType.Bomber) || (aircraft.Type() == AircraftType.DiveBomber)) //Nachricht fuer blaue Spieler nach Start
              { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Attack britisch shipping south of Isle of White - AD17"); }       		
                else { GamePlay.gpHUDLogCenter(new Player[] { GamePlay.gpPlayer() }, "Escort Ju87 from Theville - AC6 to AE15"); } 		
              break;

       	 }
    }
	
//Section 4 : AI entfernen
public override void OnTickGame()
{
   double initTime;    

    if (Time.tickCounter() % 324000 == 323999) // Nach 180 Minuten werden die AI wieder entfernt
  {

foreach (int army in GamePlay.gpArmies())
            {
                foreach (AiAirGroup group in GamePlay.gpAirGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile L schen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiAircraft).Destroy();
                        }
                    }
                }
                foreach (AiGroundGroup group in GamePlay.gpGroundGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile L schen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiGroundActor).Destroy();
                        }
                    }
                }
            }
	}
}
			
		public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
				{

        base.OnActorCreated(missionNumber, shortName, actor);

        if (actor is AiGroundActor)
        {
            Timeout(324000, () => {	// nach 180minuten werden AI entfernt
                if (actor != null)
                { 
                    (actor as AiGroundActor).Destroy(); 
                }
            });
        }
    }
    }
This is intercept script:

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission
{
    
    public override void OnTrigger(int missionNumber, string shortName, bool active) 
    {
       base.OnTrigger(missionNumber, shortName, active); 

          if ("RedIntercept1".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("RedIntercept1");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		    if ("RedIntercept2".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("RedIntercept2");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		    if ("RedIntercept3".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("RedIntercept3");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		    if ("RedIntercept4".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("RedIntercept4");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		    if ("RedIntercept5".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("RedIntercept5");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		  if ("BlueIntercept1".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept1");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept2".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept2");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept3a".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept3a");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept3b".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept3b");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept4a".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept4a");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept4b".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept4b");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept5a".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept5a");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
		  
		   if ("BlueIntercept5b".Equals(shortName) && active) 
          { 
                AiAction action = GamePlay.gpGetAction("BlueIntercept5b");
                if (action != null)
                {
                     action.Do();
                }
                GamePlay.gpGetTrigger(shortName).Enable = false;            
          }
    }



	

public override void OnTickGame()
{
   double initTime;    

    if (Time.tickCounter() % 160200 == 160199) // Nach 89 Minuten werden die AI wieder entfernt, wiederholt sich jede 2h
  {

foreach (int army in GamePlay.gpArmies())
            {
                foreach (AiAirGroup group in GamePlay.gpAirGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile L schen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiAircraft).Destroy();
                        }
                    }
                }
                foreach (AiGroundGroup group in GamePlay.gpGroundGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile L schen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiGroundActor).Destroy();
                        }
                    }
                }
            }
	}
}
	
}
This is patrol script:

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission
{



	
public override void OnTickGame()
{
   double initTime;    

    if (Time.tickCounter() % 214200 == 214199) // Nach 119 Minuten werden die AI wieder entfernt, wiederholt sich jede 2h
  {

foreach (int army in GamePlay.gpArmies())
            {
                foreach (AiAirGroup group in GamePlay.gpAirGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile Löschen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiAircraft).Destroy();
                        }
                    }
                }
                foreach (AiGroundGroup group in GamePlay.gpGroundGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile Löschen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiGroundActor).Destroy();
                        }
                    }
                }
            }
	}
}
	
}
And this is script for vesseltraffic:

Code:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;

public class Mission : AMission
{	public override void OnTickGame()
{
   double initTime;    

    if (Time.tickCounter() % 1294800 == 1294799) // Nach 11h59min Minuten werden die AI wieder entfernt, wiederholt sich jede 2h
  {

foreach (int army in GamePlay.gpArmies())
            {
                foreach (AiAirGroup group in GamePlay.gpAirGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile Löschen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiAircraft).Destroy();
                        }
                    }
                }
                foreach (AiGroundGroup group in GamePlay.gpGroundGroups(army))
                {
                    if (ActorName.MissionNumber(group.Name()).Equals(MissionNumber)) // Zeile Löschen wenn auch AAA entfernt werden soll
                    {
                        AiActor[] members = group.GetItems();
                        for (int i = members.Length - 1; i > -1; i--)
                        {
                            (members[i] as AiGroundActor).Destroy();
                        }
                    }
                }
            }
	}
}
			
		public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
				{

        base.OnActorCreated(missionNumber, shortName, actor);

        if (actor is AiGroundActor)
        {
            Timeout(43140, () => {	// nach 11h59minuten werden AI entfernt
                if (actor != null)
                { 
                    (actor as AiGroundActor).Destroy(); 
                }
            });
        }
    }
            }
That is not the latest version, in but basically more or less.
__________________
http://cornedebrouwer.nl/cf48e
Reply With Quote