???
Математика на уровне МГУ

Показано с 1 по 25 из 3198

Тема: Сервер Repka

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #6
    3GIAP.ru Аватар для -atas-
    Регистрация
    26.12.2001
    Адрес
    Москва
    Возраст
    54
    Сообщений
    2,992
    Записей в дневнике
    1

    Re: Сервер Repka

    Рандомайзер подмиссий не грузит подмиссии и на экран ничего не пишет. Хелп!

    Код:
    // v.1_17_05. script by oreva, zaltys, small_bee
    
    using System;
    using maddox.game;
    using maddox.game.world;
    using System.Collections.Generic;
    
    public class Mission : AMission
    {
       
     
    // loading sub-missions
    public override void OnTickGame()
    {
        
        if (Time.tickCounter() % 3000 == 2500) // 54000=30 min repeat. 12600=7 min delay. 
      {
            // randomly selects 1 of several submissions
    
            Random RandomIncident = new Random();
    
            switch (RandomIncident.Next(1,4))
            {
                case 1:
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air01.mis");
                    GamePlay.gpHUDLogCenter("mission 1 objectives loaded...");
    
                    double initTime = 0.0;
                    Timeout(initTime += 600, () =>
                    {
                        GamePlay.gpHUDLogCenter("Attention! Enemy activity is expected at E3!");
                    });
                    Timeout(initTime += 600, () =>
                    {
                        GamePlay.gpHUDLogCenter("Attention! Help is needed at E3/D4!");
                    });
                break;
                case 2:
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_sea01.mis");
                    GamePlay.gpHUDLogCenter("mission 2 objectives loaded..."); 
    
                    double initTime = 0.0;
                    Timeout(initTime += 500, () =>
                    {
                        GamePlay.gpHUDLogCenter("Attention! Cover your shipping at C4!");
                    });
                
                    Timeout(initTime += 300, () =>
                    {
                        GamePlay.gpHUDLogCenter("Attention! Ships are under attack at C4!");
                    });
                break;
                case 3:
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air02.mis");
                    GamePlay.gpHUDLogCenter("mission 3 objectives loaded...");
    
                    double initTime = 0.0;
                    Timeout(initTime += 600, () =>
                    {
                        GamePlay.gpHUDLogCenter("Attention! Enemy activity is expected at E2!");
                    });
                    Timeout(initTime += 300, () =>
                    {
                        GamePlay.gpHUDLogCenter("Attention! All airgroups please proceed to E2/D3!");
                    });
                break;
            }
        }
    
        ///////////////////////
    
        //loads small submissions w/o messages
        
         if (Time.tickCounter() % 216000 == 108000) // 216000=120 min repeat. 108000=60 min delay. 
         {
             GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_small01.mis");
         }
    
         if (Time.tickCounter() % 216000 == 215999) // 216000=120 min repeat. 215999=120 min delay. 
         {
             GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_small02.mis");
         }
           
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    
    // 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 (300, () =>
    				{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 (300, () =>
                { destroyPlane(aircraft); }
    			);
    	}
        public override void OnAircraftLanded (int missionNumber, string shortName, AiAircraft aircraft) 
        {
            base.OnAircraftLanded(missionNumber, shortName, aircraft);
            Timeout(300, () =>
                { destroyPlane(aircraft); }
                );
        }
        
        
    //////////////////////////////////////////////////////////////////////////////////////////////////
    
        //Listen to events of every mission
        public override void Init(maddox.game.ABattle battle, int missionNumber)
        {
            base.Init(battle, missionNumber);
            MissionNumberListener = -1; //Listen to events of every mission
        }
    
     //////////////////////////////////////////////////////////////////////////////////////////////////
    
        //Ground objects (except AA Guns) will die after 55 min when counted from their birth
    
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber, shortName, actor);
            //Ground objects (except AA Guns) will die after 55 min when counted from their birth
            if (actor is AiGroundActor)
                if ((actor as AiGroundActor).Type() != maddox.game.world.AiGroundActorType.AAGun)
                    Timeout(3300, () =>
                    {
                        if (actor != null)
                        { (actor as AiGroundActor).Destroy(); }
                    }
                            );
        }
    
        /****
        //Ground objects will die after 55 min when counted from their birth
        
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber, shortName, actor);
    
            //Ground objects will die after 55 min when counted from their birth
            if (actor is AiGroundActor)
                Timeout(3300, () =>
                {
                    if (actor != null)
                    { (actor as AiGroundActor).Destroy(); }
                }
                        );
        }
        ****/
    }
    upd. fixed

    --- Добавлено ---

    Если будет рабочий скрипт дестроящий всех акторов, можно попробовать его в начале миссии прогонять, и только потом грузить наши миссии.

    Код:
    public override void OnBattleStarted()
            {
                base.OnBattleStarted();
                GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/blue01.mis");
    	    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/red01.mis");
            }
    Крайний раз редактировалось -atas-; 17.05.2011 в 17:51.
    ...зелёные горят.
    ----------------------

    i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •