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

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

Тема: Полный редактор и скрипты.

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

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

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Перед загрузкой миссии смотришь след. номер миссии
    А как его узнать и запомнить? Например, у меня в Степях может одновременно крутиться 3 одинаковых подмиссии с соответственно одинаковыми именами триггера. Мне нужно проверять триггер какой из подмиссии сработал, чтобы считать счет для каждой подмиссии (чтобы не путаться). OnTrigger я могу перебрать все активные миссии и проверить, if (missionnumber == x) но вот где получить х? Самому вручную считать при загрузке каждой подмиссии x = ++ ? Но возможно missionnumber, который присутствует в OnTrigger в каком-то своем внутреннем формате считается?

    Т.е. другими словами missionnumber из OnTrigger - это некая внутренняя вещь БзБ или я могу эти номера сам назначать перед загрузкой каждой подмиссии?

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

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Неа! Бесполезно. Не смог найти. Похоже, что этого и нет вовсе.
    В cross_roundel миссии naryv:

    Код:
            foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army))
            {            
                if (gg != null) 
                    if (gg.Pos().distance(ref AirportPos) < 2000)
                    {
                        string triggerName = gg.Name().Substring(0,gg.Name().IndexOf(":"))+":"+markerNum.ToString()+"_" + army .ToString()+ "_attack";
                        AiTrigger trigger = GamePlay.gpGetTrigger(triggerName);
                        if (trigger != null) trigger.Enable = false;
                        foreach (AiActor ggActor in gg.GetItems())
                        { if ((ggActor as AiGroundActor) != null) 
                              (ggActor as AiGroundActor).Destroy(); 
                        }
                    }
            }
    В других его миссиях тоже есть при похожих обстоятельствах но в других видах (отдельно для артиллерии и танков емнип).

    edit
    Там еще 2я часть интересная, как раз про артиллерию с перебором статиков.
    Код:
        private void DestroyEnemyAtCaptured(int markerNum, int army)
        {
            Point3d AirportPos;
            AirportPos.x = MissionMarkers[markerNum].x;
            AirportPos.y = MissionMarkers[markerNum].y;
            AirportPos.z = 1;
            
            foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army))
            {            
                if (gg != null) 
                    if (gg.Pos().distance(ref AirportPos) < 2000)
                    {
                        string triggerName = gg.Name().Substring(0,gg.Name().IndexOf(":"))+":"+markerNum.ToString()+"_" + army .ToString()+ "_attack";
                        AiTrigger trigger = GamePlay.gpGetTrigger(triggerName);
                        if (trigger != null) trigger.Enable = false;
                        foreach (AiActor ggActor in gg.GetItems())
                        { if ((ggActor as AiGroundActor) != null) 
                              (ggActor as AiGroundActor).Destroy(); 
                        }
                    }
            }       
    
            for (int i = 0; i < MissionsCount; i++)
            {
                AiGroundActor curActor;
                for (int j = 0; j < 10; j++)
                {
                    string nameActor = i.ToString() + ":Static" + j.ToString();
                    curActor = GamePlay.gpActorByName(nameActor) as AiGroundActor;
                    if (curActor != null)
                    {
                        if ( (curActor.Army() == army) && 
                             (curActor.Pos().distance(ref AirportPos) < 2000) &&
                             ((curActor.Type() == AiGroundActorType.AAGun)||(curActor.Type() == AiGroundActorType.Artillery) )
                                )  
                            {   
                                curActor.Destroy();
                            }
                    }                 
                                                   
                }
            }        
        }
    Крайний раз редактировалось -atas-; 25.11.2011 в 15:01.
    ...зелёные горят.
    ----------------------

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

Ваши права

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