Concerning the translation from german to english, I just cleaned up the test2.cs script a little, to make the menu options a little bit clearer, maybe that helps to understand.

I only tested as host on a dedicated server.

Код:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
using System.Diagnostics;

public class Mission : AMission
{


bool AIGroundDestr = false;
bool AIAircraftDestr = false;
 	
bool TestTimer1 = false;
bool TestTimer2 = false;

Stopwatch Test = new Stopwatch();
Stopwatch Test2 = new Stopwatch();

public override void OnBattleStarted()
	{
        base.OnBattleStarted();	
		
		MissionNumberListener = -1;

		Test.Start();
	}		

	
public override void OnTickGame()
	{
				
	base.OnTickGame();
		if ((Test.Elapsed.Seconds >=30) && (TestTimer1 == true))
		{
		Test.Reset();
		GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/test-sub.mis");
		GamePlay.gpLogServer(null, "blue flight loaded", new object[] { });
		}
		if ((Test2.Elapsed.Seconds >=40) && (TestTimer2 == true))
		{
		Test2.Reset();
		GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/InterceptR1.mis");
		GamePlay.gpLogServer(null, "red flight loaded", new object[] { });
		}
		
	
	}

public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
    {
        base.OnActorCreated(missionNumber, shortName, actor);
	
		if ((actor is AiGroundActor) && (AIGroundDestr == true))
                Timeout(15, () =>
                {
                    if (actor != null)
                    { 
					(actor as AiGroundActor).Destroy();
					GamePlay.gpHUDLogCenter(null, " Groundunits destroyed 15seconds after creation", new object[] {});					
					}
                }
                        );
		else if ((actor is AiAircraft) && (AIAircraftDestr == true))
		{
		Timeout(30, () =>
                {
				AiAircraft aircraft = actor as AiAircraft;				
				Player player = null;
				for (int i = 0; i < aircraft.Places(); i++)
				{
				if  (aircraft.Player(i) != null)
					{
					
					player = aircraft.Player(i);
					break;
					}
				}
				if (player != null)
				{
				GamePlay.gpHUDLogCenter(new Player[] { player }, "You were removed!", new object[] {  });
				return;
				}
				else
					(actor as AiAircraft).Destroy();			
					GamePlay.gpHUDLogCenter(null, " AiAircrafts destroyed 30 seconds after creation", new object[] {});
				}
				);
		}
    }
                    
    
	
   bool dmgOn = false;
	

    private void setMainMenu(Player player)
    {
        GamePlay.gpSetOrderMissionMenu(player, false, 0, new string[] { "Options 1 - blue flight loading", "Options 2 - red flight loading" }, new bool[] { true, true });
    }

    private void setSubMenu(Player player)
    {
        GamePlay.gpSetOrderMissionMenu(player, true, 1, new string[] { "Load Blue Flight", "AirGroundDestr true - Grondunits will be destroyed after 15sec", "AIAircraftDestr true - Aircraft will be destroyed after 30sec", "AIGroundDestr false - Groundunits will not be destroyed", "AIAircraftDestr false - Aircraft will not be destroyed" }, new bool[] {true, true, true, true, true });
    }

    private void setSubMenu2(Player player)
    {
        GamePlay.gpSetOrderMissionMenu(player, true, 2, new string[] { "Load Red Flight", "TestTimer 1 True - blue flights loaded every 30 sec", "TestTimer 2 True - red flights load every 40 sec", }, new bool[] { true, true, true });
    }


    public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex)
    {
        base.OnOrderMissionMenuSelected(player, ID, menuItemIndex);
        
        
        if (ID == 0)
        { // main menu
            if (menuItemIndex == 1)
            {
                GamePlay.gpHUDLogCenter(new Player[] { player }, "Options 1 - blue flight loading/switching destroying OnActorCreated", new object[] {});
                setSubMenu(player);
            }
            if (menuItemIndex == 2)
            {
                GamePlay.gpHUDLogCenter(new Player[] { player }, "Options 2 - red flight loading/ repeated loading on timer on ", new object[] { });
                setSubMenu2(player);
            }
        }
        else if (ID == 1)
        { // sub menu
            switch (menuItemIndex)
            {
                case 1:
					GamePlay.gpLogServer(null, "Load Blue Flight", null);
					GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/test-sub.mis");
                    setMainMenu(player);
                    break;
                case 2:
                    GamePlay.gpLogServer(new Player[] { player }, "AiGroundDestroy true", null);
					AIGroundDestr = true;
                    setMainMenu(player);
                    break;
                case 3:
                    GamePlay.gpLogServer(new Player[] { player }, "AIAircraftDestroy true", null);
					AIAircraftDestr = true;
                    setMainMenu(player);
                    break;
                case 4:
                    GamePlay.gpLogServer(new Player[] { player }, "AIGround Destroy false", null);
					AIGroundDestr = false;
                    setMainMenu(player);
                    break;
                case 5:
                    GamePlay.gpLogServer(new Player[] { player }, "AIAircraft Destroy false", null);
					AIAircraftDestr = false;
                    setMainMenu(player);
                    break;
                case 0:
                    setMainMenu(player);
                    break;
            }

        }
        else if (ID == 2)
        { // sub menu
            switch (menuItemIndex)
            {
                case 1:
                    GamePlay.gpLogServer(new Player[] { player }, "Load Red Flight", null);
					GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/InterceptR1.mis");
                    setMainMenu(player);
                    break;
                case 2:
                    GamePlay.gpLogServer(new Player[] { player }, "TestTimer1 true", null);
                    TestTimer1 = true;
					Test.Start();
					setMainMenu(player);
                    break;
                case 3:
                    GamePlay.gpLogServer(new Player[] { player }, "TestTimer2 true", null);
                    TestTimer2 = true;
					Test.Start();
                    setMainMenu(player);
                    break;
                case 0:
                    setMainMenu(player);
                    break;            
             }

        }
    }

   
   public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);
		
		if(player != null)
		{
	
		setMainMenu(player); 
		
		}
	}
}