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

Страница 5 из 32 ПерваяПервая 12345678915 ... КрайняяКрайняя
Показано с 101 по 125 из 789

Тема: Вопросы.

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

    Re: Вопросы.

    Цитата Сообщение от cFobos Посмотреть сообщение
    1) А можно ли задать для игрока условие "автопересадки" в другой самолёт, после выполнения задания, без выхода в меню?
    Т.е чтобы скажем выполнили задачи истребителя - оказались в бомбордировщике.
    Читайте тему выше:
    http://www.sukhoi.ru/forum/showthrea...=1#post1616450


    Цитата Сообщение от cFobos Посмотреть сообщение
    2) А можно ли задать для юнитов скриптовые маршруты зацикленные до бесконечности? Например чтобы поезд нарезал круги по рельсам и п.р до конца миссии.
    car.cpp гоняет машинку по сплайновой дороге туда-сюда. Для поезда нужно проверять как будет работать, он же не развернется сам на рельсах )
    ...зелёные горят.
    ----------------------

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

  2. #102
    Зашедший Аватар для zaltys
    Регистрация
    26.03.2011
    Адрес
    Литва
    Сообщений
    31

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Скрипт прекрасно уничтожает ботов в покинутых самолетах, но не уничтожает успешно севших на аэродромах.
    Нет, он разрушает даже самолеты, которые приземлились на аэродроме, но эти самолеты должны быть созданы в той же миссии. Потому что вы создаете самолеты в других миссиях, скрипт не может получить OnPlaneLanded() и OnPlaneCrashLanded() для этих самолетов. Есть 2 решения:

    1) Создать отдельный скрипт для уничтожения самолета в каждой миссии.
    2) Сделать скрипт так, что он слушал события каждой миссии. В этом случае, необходимо добавить:
    Код:
    	public override void Init(maddox.game.ABattle battle, int missionNumber)
    	{
    		base.Init(battle,missionNumber);
    		MissionNumberListener=-1; //Listen to events of every mission
    	}


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

    Цитата Сообщение от -atas- Посмотреть сообщение
    Код:
            aircraft.hitNamed (part.NamedDamageTypes.Eng0TotalFailure);
            aircraft.hitNamed (part.NamedDamageTypes.Eng1TotalFailure);
    Этот код дает вам много ошибок типа "Out of bounds", потому что он пытается убить второго двигателя и на самолете с одним двигателем.

    Попробуйте изменить эти строки на:
    Код:
    		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"));
    		}

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

    Re: Вопросы.

    Спасибо большое!!! Завтра потестирую в оффлайне и загружу на сервер. Вставлять MissionNumberListener=-1, как понимаю, лучше в начало файла?

    Out of bounds мы получали по-моему именно для 2х-моторных 110х емнип (и только для них). Но в любом случае исправим.

    Не подскажете, как корабли, танки, дымы минут через 50 - 75 убрать после их загрузки подмиссией?
    ...зелёные горят.
    ----------------------

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

  4. #104
    Зашедший Аватар для zaltys
    Регистрация
    26.03.2011
    Адрес
    Литва
    Сообщений
    31

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Аналогичная проблема существует так же с танкерами, танками, дымами.
    Можно было бы для танкеров, танков и дымов использовать аналогичный скрипт(см. ниже), но исполняемый только минут через 50 после подгрузки подмиссии? Как он будет выглядеть?
    Если объекты создаются только во время загрузки миссий, мы можем уменьшить эту проблему до: объекты должны умереть после минут XXX от их создания. Тогда, мы можем использовать:
    Код:
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber,shortName,actor);
    		
    		//Ground objects will die after 50 min when counted from their birth
    		if (actor is AiGroundActor)
    		Timeout (3000, () => 
    							{ if (actor != null)
    								{ (actor as AiGroundActor).Destroy(); }
    							}
    				);
        }


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

    Цитата Сообщение от -atas- Посмотреть сообщение
    Вставлять MissionNumberListener=-1, как понимаю, лучше в начало файла?
    В методе Init (). Он выполняется, когда миссия начинается. Нет никакой разницы, в каком порядке методы определены в классе, так что вы можете поместить его в начале, конце или середине.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Out of bounds мы получали по-моему именно для 2х-моторных 110х емнип (и только для них). Но в любом случае исправим.
    Давайте брать пример. Игрок покидает Spitfire в воздухе, скрипт пытается сделать некоторые повреждения. Spitfire имеет только один двигатель, поэтому скрипт успешно убивает двигателя № 1. Тогда скрипт продолжается, и пытается убить двигатель № 2, которой не существует, и в результате появляется ошибка "Out of bounds".

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

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

    Re: Вопросы.

    Цитата Сообщение от zaltys Посмотреть сообщение
    Если объекты создаются только во время загрузки миссий, мы можем уменьшить эту проблему до: объекты должны умереть после минут XXX от их создания. Тогда, мы можем использовать:
    Спасибо еще раз!!! Завтра будем внедрять.
    ...зелёные горят.
    ----------------------

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

  6. #106
    Зашедший Аватар для zaltys
    Регистрация
    26.03.2011
    Адрес
    Литва
    Сообщений
    31

    Re: Вопросы.

    Периодические загрузки миссии без использования TickCounter():

    Код:
    	//Runs once, when mission is loaded
    	public override void Init(maddox.game.ABattle battle, int missionNumber)
    	{
    		base.Init(battle,missionNumber);
    		//Planned missions
    		MissionLoader(30,10,"missions/Multi/Dogfight/bombers1.mis");  // 10s from main mission start and repeatedly every 30s
    		MissionLoader(100,60,"missions/Multi/Dogfight/bombers2.mis"); // 60s from main mission start and repeatedly every 100s
    	}
    	
    	public void MissionLoader(int period, int offset, string mission)
    	{
    		if (offset > 0)
    			Timeout(offset, () => {MissionLoader(period,0,mission);});
    		else
    			{
    				GamePlay.gpPostMissionLoad(mission);	
    				Timeout(period, () => {MissionLoader(period,0,mission);});		
    			}
    	}

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

    Re: Вопросы.

    Цитата Сообщение от zaltys Посмотреть сообщение
    Периодические загрузки миссии без использования TickCounter():
    Спасибо, а как туда отложенные по времени текстовые сообщения вставить как здесь:

    Код:
     // v.1_17_00. bot-destroying script based on one by oreva
    
    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() % 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");
        }
    
        /////////////////////////////////////////////////////////////////////////////////////
    
         if (Time.tickCounter() % 135000 == 9000) // 135000=75 min repeat. 9000=5 min delay. 
      {
          GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air01.mis");
          // GamePlay.gpHUDLogCenter("mis1 loaded!");
    
          double initTime = 0.0;
          Timeout(initTime += 600, () =>
          {
              GamePlay.gpHUDLogCenter("Attention! Enemy activity is expected at E3!");
          });
          Timeout(initTime += 300, () =>
          {
              GamePlay.gpHUDLogCenter("Attention! Help is needed at D4!");
          });
    
       }
    
         if (Time.tickCounter() % 135000 == 54000) //  ; 135000=75 min repeat, 54000 - 30 min delay. 
        {
          GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_ground01.mis");
          // GamePlay.gpHUDLogCenter("mis2 loaded"); 
    
          double initTime = 0.0;
          Timeout(initTime += 600, () =>
           {
               GamePlay.gpHUDLogCenter("Attention! Cover your shipping at C4!");
           });
                
          Timeout(initTime += 300, () =>
             {
               GamePlay.gpHUDLogCenter("Attention! All airgroups please proceed to C4!");
             });
        }
    
         if (Time.tickCounter() % 135000 == 99000) // 135000 == 99000 = 75 min repeat, 55 min delay 
           {
               GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air02.mis");
               // GamePlay.gpHUDLogCenter("mis3 loaded!");
    
               double initTime = 0.0;
               Timeout(initTime += 600, () =>
               {
                   GamePlay.gpHUDLogCenter("Attention! Enemy activity is expected at E2!");
               });
               Timeout(initTime += 300, () =>
               {
                   GamePlay.gpHUDLogCenter("Attention! Friendly aircrafts are under attack at D2!");
               });
           }
    }
    
    // destroys aircraft abandoned by a player. script by oreva
        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);
            aircraft.hitNamed (part.NamedDamageTypes.Eng0TotalFailure);
            aircraft.hitNamed (part.NamedDamageTypes.Eng1TotalFailure);
    
            /***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); }
                );
        }
    
    }
    Мне трудно что-то менять в коде. Лучше вставлять целый работающий кусок в готовый скрипт, если есть такая возможность.

    ps. Пока не было времени интегрировать предыдущие изменения, надеюсь займусь вечером.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Код:
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber,shortName,actor);
    		
    		//Ground objects will die after 50 min when counted from their birth
    		if (actor is AiGroundActor)
    		Timeout (3000, () => 
    							{ if (actor != null)
    								{ (actor as AiGroundActor).Destroy(); }
    							}
    				);
        }
    Можно ли каким-то образом исключить отсюда артиллерию? Т.е. чтобы зенитки оставались.
    ...зелёные горят.
    ----------------------

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

  9. #109
    Зашедший Аватар для zaltys
    Регистрация
    26.03.2011
    Адрес
    Литва
    Сообщений
    31

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Можно ли каким-то образом исключить отсюда артиллерию? Т.е. чтобы зенитки оставались.
    Код:
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber,shortName,actor);
    		//Ground objects (except AA Guns) will die after 50 min when counted from their birth
    		if (actor is AiGroundActor)
    			if ((actor as AiGroundActor).Type() !=  maddox.game.world.AiGroundActorType.AAGun)
    				Timeout (3000, () => 
    									{ if (actor != null)
    										{ (actor as AiGroundActor).Destroy(); }
    									}
    						);
        }
    Или вы можете просто удалить объекты, созданные в подмиссиях. В этом случае, вы должны поставить все зенитки в основной миссии.

    Код:
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber,shortName,actor);
    		HUDmsg("Actor "+actor.Name()+" was created.");
    		//Ground objects (except ones created in main mission) will die after 50 min when counted from their birth
    		if (actor is AiGroundActor && missionNumber > 0)
    				Timeout (3000, () => 
    									{ if (actor != null)
    										{ (actor as AiGroundActor).Destroy(); }
    									}
    						);
        }
    Крайний раз редактировалось zaltys; 15.05.2011 в 19:17.

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

    Re: Вопросы.

    Спасибо большое! Возьмем 1й вариант, т.к. в подмиссиях иногда зенитки немного добавляем, где нужно.

    Противотанковые пушки удалятся? (их лучше удалять, хотя не так принципиально пока их мало у нас совсем).

    upd. Вот так получилось. Тестируем. Спасибо за помощь.

    Код:
    // v.1_17_04. 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() % 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");
        }
    
        ///////////////////////
    
        if (Time.tickCounter() % 162000 == 9000) // 162000=90 min repeat. 9000=5 min delay. 
      {
          GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air01.mis");
          // GamePlay.gpHUDLogCenter("mis1 loaded!");
    
          double initTime = 0.0;
          Timeout(initTime += 600, () =>
          {
              GamePlay.gpHUDLogCenter("Attention! Enemy activity is expected at E3!");
          });
          Timeout(initTime += 500, () =>
          {
              GamePlay.gpHUDLogCenter("Attention! Help is needed at D4!");
          });
    
       }
    
         if (Time.tickCounter() % 162000 == 63000) //  ; 162000=90 min repeat, 63000 - 35 min delay. 
        {
          GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_sea01.mis");
          // GamePlay.gpHUDLogCenter("mis2 loaded"); 
    
          double initTime = 0.0;
          Timeout(initTime += 500, () =>
           {
               GamePlay.gpHUDLogCenter("Attention! Cover your shipping at C4!");
           });
                
          Timeout(initTime += 300, () =>
             {
                 GamePlay.gpHUDLogCenter("Attention! Friendly ships are under attack at C4!");
             });
        }
    
         if (Time.tickCounter() % 162000 == 117000) // 162000 == 117000 = 90 min repeat, 65 min delay 
           {
               GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air02.mis");
               // GamePlay.gpHUDLogCenter("mis3 loaded!");
    
               double initTime = 0.0;
               Timeout(initTime += 600, () =>
               {
                   GamePlay.gpHUDLogCenter("Attention! Enemy activity is expected at E3!");
               });
               Timeout(initTime += 300, () =>
               {
                   GamePlay.gpHUDLogCenter("Attention! All airgroups please proceed to D2!");
               });
           }
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    
    // 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(); }
                }
                        );
        }
        ****/
    }
    Крайний раз редактировалось -atas-; 15.05.2011 в 19:36.
    ...зелёные горят.
    ----------------------

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

  11. #111
    Зашедший Аватар для zaltys
    Регистрация
    26.03.2011
    Адрес
    Литва
    Сообщений
    31

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Противотанковые пушки удалятся? (их лучше удалять, хотя не так принципиально пока их мало у нас совсем).
    Возможно, да. Я думаю, PT оружие будет maddox.game.world.AiGroundActorType.Artillery. Это список актеров наземных объектов:

    Код:
        Unknown,
        Medic,
        Motorcycle,
        ArmoredCar,
        Tractor,
        Car,
        Amphibian,
        SPG,
        Tank,
        Bus,
        LightTruck,
        Truck,
        Trailer,
        Balloon,
        Generator,
        Predictor,
        Radar,
        RadioBeacon,
        RadioBeamProjector,
        Listener,
        AmmoComposition,
        ContainerShort,
        ContainerLong,
        Artillery,
        AAGun,
        Plane,
        EngineWagon,
        FreightWagon,
        PassengerWagon,
        ShipMisc,
        ShipTransport,
        ShipSmallWarship,
        ShipDestroyer,
        ShipCruiser,
        ShipBattleship,
        ShipCarrier,
        ShipSubmarine,
        Bridge,
        House
    Если вы хотите сохранить артиллерийских орудий и зенитных орудий, вам необходимо изменить так:

    Код:
    if ((actor as AiGroundActor).Type() != maddox.game.world.AiGroundActorType.AAGun &&
        (actor as AiGroundActor).Type() != maddox.game.world.AiGroundActorType.Artillery)

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

    Re: Вопросы.

    Спасибо! Поднял тестовую Repka #3 с этим скриптом.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Подскажите, пожалуйста, танкеры вот таким образом по сплайнновой дороге, которая просто "дорога" (это невидимый путь?) будут бегать?
    [NPC]
    18_Chief Ship.Tanker_Medium1 gb /posx 264072.63/posy 205404.94 /script car.cpp/target 0_SplineRoad /sleep 0/skill 2/slowfire 10/tow00_00 1_Static
    19_Chief Ship.Tanker_Medium1 de /posx 258181.84/posy 208404.95 /script car.cpp/target 1_SplineRoad /sleep 0/skill 2/slowfire 10/tow00_00 2_Static

    Что означают параметры /sleep 0/skill 2/slowfire 10 ?
    Какие для них предельные значения?
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

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

    Код:
    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() % 54000 == 12600) // 54000=30 min repeat. 12600=7 min delay. 
      {
            // randomly selects 1 of several submissions
            Random RandomIncident = new Random();
    
            switch (RandomIncident.Next(1, 3))
            {
                case 1:
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/BoF1/BoF1_air01.mis");
                    // GamePlay.gpHUDLogCenter("mis1 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("mis2 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("mis3 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");
         }
    }       
    }
    upd. fixed http://www.sukhoi.ru/forum/showthrea...=1#post1621945



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

    Подскажите, как можно настраивать GamePlay.gpHUDLogCenter , чтобы писать мельче, другим цветом (ярко-синим, например) и внизу экрана. Как можно возврат каретки / перенос вставить, менять длительность показа?

    Было бы неплохо все-таки дать игроку возможность по нажатию клавиши посмотреть текущие цели миссии, которые могут меняться в реальном времени. Например, можно на карте 2ю вкладку сделать для текущих целей и 3ю для общего брифинга, который был в начале миссии. Назначить горячие клавиши ALT-1, 2, 3 например. Для "онлайн-битвы за ресурсы" вещь необходимая.
    Крайний раз редактировалось -atas-; 18.05.2011 в 22:59.
    ...зелёные горят.
    ----------------------

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

  15. #115

    Re: Вопросы.

    Несколько вопросов возникло

    1. Можно ли как-то узнать локаль игрока, подключившегося к серверу (язык его копии игры), что бы отправлять ему сообщения на его языке?

    2. Можно ли отключить в чате сообщения о появлении самолетов в таком-то квадрате, а также сообщения кто куда упал и кто ему в этом помог?

    3. И присоединяюсь к вопросу - было бы неплохо для HUD сообщения регулировать его позицию и цвет, а также сделать его многострочным (у меня не получилось). И аналогично, регулировать цвет сообщения в чате (по примеру сообщений о повреждениях).

    4. Было бы классно добавить в онлайне что-то вроде таблицы с игроками (по кнопке S который), но содержимое такого окна мог бы регулировать сервер или миссия.

  16. #116
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    45
    Сообщений
    6,905
    Images
    51

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Подскажите, как можно настраивать GamePlay.gpHUDLogCenter , чтобы писать мельче, другим цветом (ярко-синим, например) и внизу экрана. Как можно возврат каретки / перенос вставить, менять длительность показа?
    GamePlay.gpHUDLogCenter("",123); 123 - длительность показывания, ещё можно показывать определённым игрокам сообщение , по остальным вопросам - пока никак, возможно позже добавится более широкое управление.
    Цитата Сообщение от -atas- Посмотреть сообщение
    Было бы неплохо все-таки дать игроку возможность по нажатию клавиши посмотреть текущие цели миссии, которые могут меняться в реальном времени. Например, можно на карте 2ю вкладку сделать для текущих целей и 3ю для общего брифинга, который был в начале миссии. Назначить горячие клавиши ALT-1, 2, 3 например. Для "онлайн-битвы за ресурсы" вещь необходимая.
    угу, передал, вместе с улучшением карты будут думать как сделать.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Несколько вопросов возникло

    1. Можно ли как-то узнать локаль игрока, подключившегося к серверу (язык его копии игры), что бы отправлять ему сообщения на его языке?
    погляжу, если можно.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    2. Можно ли отключить в чате сообщения о появлении самолетов в таком-то квадрате, а также сообщения кто куда упал и кто ему в этом помог?
    в настройке инфоокна, емнип это сообщения сервера - убрать и не будут показываться. Или как сделать чтобы сам сервер не писал их?
    Цитата Сообщение от Small_Bee Посмотреть сообщение
    3. И присоединяюсь к вопросу - было бы неплохо для HUD сообщения регулировать его позицию и цвет, а также сделать его многострочным (у меня не получилось). И аналогично, регулировать цвет сообщения в чате (по примеру сообщений о повреждениях).
    насчёт худ-а согласен, надо что-то придумывать, а цвет сообщений в чате вроде и так настраивается, при настройке инфоокна.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    4. Было бы классно добавить в онлайне что-то вроде таблицы с игроками (по кнопке S который), но содержимое такого окна мог бы регулировать сервер или миссия.
    ага, это планируется вроде.
    Don't happy, be worry

  17. #117

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    ...в настройке инфоокна, емнип это сообщения сервера - убрать и не будут показываться. Или как сделать чтобы сам сервер не писал их?
    Да, именно сервер. Сейчас он работает как хороший разведчик - скажем я хочу поднять "108-й со старшими офицерами", а сервер красным услужливо подсказывает, что такое дело там-то и там-то появилось.

    Цитата Сообщение от naryv Посмотреть сообщение
    насчёт худ-а согласен, надо что-то придумывать, а цвет сообщений в чате вроде и так настраивается, при настройке инфоокна.
    Аналогично, что бы из миссии можно было задать цвет - скажем сообщение не настолько важное, что бы писать его перед носом большими красными буквами, но тем не менее достаточно полезное для того, что бы его выделить. К тому же чат можно промотать, что бы посмотреть, что приходило ранее, в отличие от HUD сообщений.

  18. #118
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    45
    Сообщений
    6,905
    Images
    51

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Да, именно сервер. Сейчас он работает как хороший разведчик - скажем я хочу поднять "108-й со старшими офицерами", а сервер красным услужливо подсказывает, что такое дело там-то и там-то появилось.
    угу, понятно, надо наверное фильтр сделать с настройками из сервера.
    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Аналогично, что бы из миссии можно было задать цвет - скажем сообщение не настолько важное, что бы писать его перед носом большими красными буквами, но тем не менее достаточно полезное для того, что бы его выделить. К тому же чат можно промотать, что бы посмотреть, что приходило ранее, в отличие от HUD сообщений.
    ясно, в принципе к чату надо доступ наверное сделать серверу, это решит часть вопросов.
    По поводу локали игрока - нельзя, но если SayToGroup() использовать с уже существующими сообщениями - они на языке игрока будут.
    Don't happy, be worry

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

    Re: Вопросы.

    В режиме с включенными маркерами(иконками) самолетов можно ли как-то убрать с сервера (или скриптом) стрелки по краям экрана или сделать их абсолютно прозрачными для клиентов?

    Можно ли настроить дальность, отображаемую сторону (свои/чужие) и цвет иконок самолетов?
    ...зелёные горят.
    ----------------------

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

  20. #120
    Механик
    Регистрация
    12.05.2011
    Возраст
    32
    Сообщений
    491

    Re: Вопросы.

    Подскажите плз, как вращать обьекты в редакторе?

  21. #121

    Re: Вопросы.

    Цитата Сообщение от cFobos Посмотреть сообщение
    Подскажите плз, как вращать обьекты в редакторе?
    цифровые клавиши на нампаде.

  22. #122
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    45
    Сообщений
    6,905
    Images
    51

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    В режиме с включенными маркерами(иконками) самолетов можно ли как-то убрать с сервера (или скриптом) стрелки по краям экрана или сделать их абсолютно прозрачными для клиентов?
    как в Ил-е будет - если кабина включена - стрелочек нет, если выключена - есть/
    Цитата Сообщение от -atas- Посмотреть сообщение
    Можно ли настроить дальность, отображаемую сторону (свои/чужие) и цвет иконок самолетов?
    тут опять как в Иле- всё было через mp_dotrange настраивается.
    Don't happy, be worry

  23. #123
    Механик
    Регистрация
    12.05.2011
    Возраст
    32
    Сообщений
    491

    Re: Вопросы.

    А можно ли сделать иконки для наземных целей? :-)

  24. #124
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    45
    Сообщений
    6,905
    Images
    51

    Re: Вопросы.

    Цитата Сообщение от cFobos Посмотреть сообщение
    А можно ли сделать иконки для наземных целей? :-)
    так они есть на карте.+ в файле миссии, емнип, можно переопределить - показывать другую иконку.
    Don't happy, be worry

  25. #125
    Механик
    Регистрация
    12.05.2011
    Возраст
    32
    Сообщений
    491

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    так они есть на карте.+ в файле миссии, емнип, можно переопределить - показывать другую иконку.
    Я имею ввиду помечать наземку на экране, как самолёты (когда стоит соотв. галка в реализме).

Страница 5 из 32 ПерваяПервая 12345678915 ... КрайняяКрайняя

Ваши права

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