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

Страница 7 из 32 ПерваяПервая ... 3456789101117 ... КрайняяКрайняя
Показано с 151 по 175 из 789

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

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    2 -atas- вот скрипт для движения ЛФ со списком маркеров для любой карты - при инициализации из основной миссии берутся начальные маркеры, к ним делаются триггеры смены фронта и дальше маркеры переключаются. Я комментарии написал, думаю понятно должно быть как и что там делается.
    Спасибо! Будем разбираться.

    Триггеры нужно ставить в места где маркеры?
    Если некоторые маркеры будут без триггеров, т.е. за них воевать не будем, это нормально?

    А баг с захваченными аэродромами примерно когда будет поправлен?

    upd. Прочитал. Скрипт сам генерирует триггеры. Т.е. достаточно группам наземки поставить вейпойнты в точках маркеров, чтобы триггеры срабатывали и маркеры перекрашивались. Спасибо еще раз!

    А с кораблями будет работать?

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

    Полный редактор не показывает номер маркера, желательно, чтобы показывал, чтобы правильно наименовать подмиссии. Из текста миссии трудно понять где какой маркер находится. У них нумерация по какому принципу идет, с севера на юг или по мере добавления?

    Код:
    [FrontMarker]
      FrontMarker0 193800.67 284451.58 1
      FrontMarker1 246980.85 226963.31 1
      FrontMarker2 251325.46 210380.54 1
      FrontMarker3 275586.66 198279.23 1
      FrontMarker4 271565.74 226153.49 2
      FrontMarker5 291232.39 290262.39 2
      FrontMarker6 280999.42 205308.98 2
      FrontMarker7 254422.00 205240.09 1
      FrontMarker8 285952.32 187798.51 1
      FrontMarker9 297108.99 187924.80 2
      FrontMarker10 277191.75 204364.41 2
      FrontMarker11 284403.88 203340.48 1
      FrontMarker12 284582.39 207814.80 2
      FrontMarker13 298579.39 203750.47 2
      FrontMarker14 274014.50 214794.12 2


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

    Код:
        private void DestroyEnemyAtCaptured(int markerNum, int army)
        {                                                        // если надо уничтожить всех врагов на захваченном маркере - уничтожаем в этой процедуре
            Point3d AirportPos;
            AirportPos.x = MissionMarkers[markerNum].x;
            AirportPos.y = MissionMarkers[markerNum].y;
            AirportPos.z = 1;
    Думаю, будет полезнее уничтожать врагов на перекрашенном аэродроме. Это будет более юзер-френдли для тех, кто захочет там отспауниться. Например, если кто-то только что присоединился к серверу.

    У маркеров врагов можно не уничтожать - пусть отвоевывают его обратно, если смогут.
    Крайний раз редактировалось -atas-; 26.05.2011 в 14:35.
    ...зелёные горят.
    ----------------------

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

  2. #152
    Любопытный
    Регистрация
    03.10.2005
    Адрес
    Киров
    Возраст
    40
    Сообщений
    1,386

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    Такой открытый код можно проверить, а с закрытым - нельзя, т.е. опять же любой возьмёт Вашу кампанию, напишет вместо Вашего скрипта свой - и увидеть это нельзя будет никак.
    Только вот кто этой проверкой будет заниматься?!

    Цитата Сообщение от naryv Посмотреть сообщение
    На стиме, к сожалению, хранить кампании не получится, почему - попробуйте у Лютьера уточнить. А можно детали про удаление нестандартных кампаний? По идее кампания хранящаяся в своей папке не должна удаляться, если удаляется может быть баг какой-то, постараемся исправить.
    При установке патча, если пользователь сделал проверку кэша, то все "левые" файлы, которые есть в папке с игрой, удаляются.
    Так как кампании находятся в папке, куда установлена игра, то файл campaings.ini заменяется на стандартный, где прописаны только стандартные кампании. Все папки, которые не идут вместе с игрой тоже удаляются. Так что возможны такие ситуации: поставил патч-ставь кампанию снова, прописывай в файлах все снова, начинай проходить все снова. Это очень неудобно и у пользователей были с этим проблемы.
    Мне кажется любая кампания по своему принципу должна быть "plug and play", а не как сейчас, все делается с помощью костылей, даже приходится 2 установочных файла распространять, для 86-х и 64-х систем.

    С Уважением, Евгений.
    AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    А баг с захваченными аэродромами примерно когда будет поправлен?
    Имеете ввиду не обновление спаун точек? Если да, то в следующем патче скорее всего. В принципе можно сейчас скриптом менять армию игроку на 0 и возвращать стоявшую раньше и в самолёт его засовывать снова, но это корявое решение.

    Цитата Сообщение от -atas- Посмотреть сообщение
    upd. Прочитал. Скрипт сам генерирует триггеры. Т.е. достаточно группам наземки поставить вейпойнты в точках маркеров, чтобы триггеры срабатывали и маркеры перекрашивались. Спасибо еще раз!
    да, всё правильно.

    Цитата Сообщение от -atas- Посмотреть сообщение
    А с кораблями будет работать?
    да , только для кораблей надо "TPassThrough 4" а не "TPassThrough 3" ставить. Ну или "TPassThrough 2" для армии вообще.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Полный редактор не показывает номер маркера, желательно, чтобы показывал, чтобы правильно наименовать подмиссии. Из текста миссии трудно понять где какой маркер находится. У них нумерация по какому принципу идет, с севера на юг или по мере добавления?
    по мере добавления, емнип. Отображение номеров сделаем.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Думаю, будет полезнее уничтожать врагов на перекрашенном аэродроме. Это будет более юзер-френдли для тех, кто захочет там отспауниться. Например, если кто-то только что присоединился к серверу.

    У маркеров врагов можно не уничтожать - пусть отвоевывают его обратно, если смогут.
    тогда надо этот дестрой в RefreshBirthPlaces запихнуть, чтобы когда по аэродромам бежал цикл на них дестроил всё.

    Цитата Сообщение от Geniok Посмотреть сообщение
    Только вот кто этой проверкой будет заниматься?!
    сам пользователь, тут других вариантов нет, насколько я понимаю.

    Цитата Сообщение от Geniok Посмотреть сообщение
    При установке патча, если пользователь сделал проверку кэша, то все "левые" файлы, которые есть в папке с игрой, удаляются.
    Так как кампании находятся в папке, куда установлена игра, то файл campaings.ini заменяется на стандартный, где прописаны только стандартные кампании. Все папки, которые не идут вместе с игрой тоже удаляются. Так что возможны такие ситуации: поставил патч-ставь кампанию снова, прописывай в файлах все снова, начинай проходить все снова. Это очень неудобно и у пользователей были с этим проблемы.
    Мне кажется любая кампания по своему принципу должна быть "plug and play", а не как сейчас, все делается с помощью костылей, даже приходится 2 установочных файла распространять, для 86-х и 64-х систем.
    Спасибо за описание. Я правильно понимаю, что сами добавленные файлы кампаний стим не трогал, вернув только инишник стандартный? Если так, то решение есть, попозже оформим его и озвучу, ок?
    Don't happy, be worry

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

    Re: Вопросы.

    naryv,

    У меня есть идея. Было бы хорошо иметь возможность ввести любое количество мета-данных для каждого объекта в редакторе миссий. То есть диалог объекта должен содержать отдельную вкладку с сеткой строк, где пользователь должен иметь возможность ввести несколько пар типа [имя, значение] (в примере: ["AutoDespawn", "1 "]). Все эти мета-данные должны быть доступны позже в скрипте (например, AiAircraft.getMeta (). Value("AutoDespawn") и так далее).

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

  5. #155

    Re: Вопросы.

    Цитата Сообщение от zaltys Посмотреть сообщение
    naryv,

    У меня есть идея. Было бы хорошо иметь возможность ввести любое количество мета-данных для каждого объекта в редакторе миссий. То есть диалог объекта должен содержать отдельную вкладку с сеткой строк, где пользователь должен иметь возможность ввести несколько пар типа [имя, значение] (в примере: ["AutoDespawn", "1 "]). Все эти мета-данные должны быть доступны позже в скрипте (например, AiAircraft.getMeta (). Value("AutoDespawn") и так далее).

    Это могло бы позволить более универсальные скрипти и более тесное сотрудничество между скриптеров и дизайнеров миссии.
    Поддерживаю, это было бы удобно. Причем походу даже необязательно передавать метаданные клиенту при загрузке миссии.
    Пока что-то похожее можно провернуть, изменив имя актора непосредственно в файле миссии.

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

    Re: Вопросы.

    Цитата Сообщение от zaltys Посмотреть сообщение
    naryv,

    У меня есть идея. Было бы хорошо иметь возможность ввести любое количество мета-данных для каждого объекта в редакторе миссий. То есть диалог объекта должен содержать отдельную вкладку с сеткой строк, где пользователь должен иметь возможность ввести несколько пар типа [имя, значение] (в примере: ["AutoDespawn", "1 "]). Все эти мета-данные должны быть доступны позже в скрипте (например, AiAircraft.getMeta (). Value("AutoDespawn") и так далее).

    Это могло бы позволить более универсальные скрипти и более тесное сотрудничество между скриптеров и дизайнеров миссии.
    ок, передам, но когда будет и будет ли - не знаю. Сейчас, емнип через tag можно что-то похожее делать.
    Don't happy, be worry

  7. #157
    Любопытный
    Регистрация
    03.10.2005
    Адрес
    Киров
    Возраст
    40
    Сообщений
    1,386

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    Спасибо за описание. Я правильно понимаю, что сами добавленные файлы кампаний стим не трогал, вернув только инишник стандартный? Если так, то решение есть, попозже оформим его и озвучу, ок?
    Были отзывы и о том, что сами папки с кампаниями удалялись. Я смогу проверить в выходные, отпишусь что конкретно меняет Стим.

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

    Цитата Сообщение от naryv Посмотреть сообщение
    сам пользователь, тут других вариантов нет, насколько я понимаю.
    То есть по сути дела никто.
    Единственный вариант выходит хранить миссии на сервере и запускать выделенный сервер. Получается офф-лайн постепенно умирает и переходит в он-лайн. Жаль.
    AMD Phenom(tm) II X4 955 3.21ГГц, Gigabyte GA-MA770-US3, 4Гб DDR2-800, ATI Radeon HD 5850 1Гб DDR5 256-бит, Microsoft Windows 7 Home SP1 x64, 1920х1080 24"

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    ок, передам, но когда будет и будет ли - не знаю. Сейчас, емнип через tag можно что-то похожее делать.
    Еще на эту же тему в АрмА2 в свойствах каждой группы есть пустое окошко, куда через запятую или дифис как в ярлыке можно перечислить скрипты (или даже аддоны) которые будут подгружаться и управлять этой конкретной группой. Так можно поменять у группы вооружение, боеукладку, ИИ и все что угодно. 3-и лица пишут такие отдельные скрипты, другие собирают их в наборы адд-онов, а 3и просто вставляют их названия в свои миссии.

    Вообще АрмА очень продвинута в плане удобства для разработки миссий и адд-онов 3ми лицами. Разработчикам было бы здорово в ней разобраться, с ней поиграться. Как делается, например мод ACE, как миссии работают вроде Warfare (интерфейс в файле миссии содержится и скачивается с сервера и т.п), как картоделы адд-оны в миссии добавляют.
    Благодаря такому удобству вот это все сделано коммюнити. http://www.armaholic.com/
    Скрипты у них кстати не на С#, а на специальном скриптовом языке, более читаемом для обывателя, хотя могу здесь ошибаться.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Если можно по серверу:
    - в списке забаненных 0 после имени что означает? "name 3GIAP_Atas 0"
    - ban PATTERN [<pattern>] это для использования ? и * вместо символов или чего-то другого?
    - после перезагрузки сервера необходимо загрузить сохраненный заранее файл ban LOAD banned.txt или сервер сам внутри сохраняет список тоже?
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    да, корабль - это AiGroundActor и AiGroundGroup ,с типом Ship , всех кораблей страны найти можно так :
    Код:
    foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army))
            {
                if (gg.Type == AiGroundGroupType.Ship)
                      {// тут делаем с ними что нам нужно, например 
                                if (gg != null) 
                                       (gg as AiGroundActor).Destroy();  // уничтожаем
                      }
            }
    Тогда получается, что уничтожаем через 55 минут после рождения так?

    Код:
        //Ships will die after 55 min when counted from their birth
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            foreach (AiGroundGroup gg in GamePlay.gpGroundGroups(army))
            {
                if (gg.Type == AiGroundGroupType.Ship)
                      {// тут делаем с ними что нам нужно, например 
                            Timeout (3300, () =>     
                            {    if (gg != null) 
                                       (gg as AiGroundActor).Destroy();  // уничтожаем
                            }
                      }
            }
        }
    OnActorCreated относится к акторам, а gg.Type к группам. Актор он же каждый по отдельности создается OnActorCreated, тогда зачем их всех перебирать foreach ? Перебор foreach пойдет только по созданной группе или по всем, что есть на карте уже? Если так, тогда они все и уничтожатся через 55 минут, а этого не нужно.

    upd.
    А так не будет работать? Похожим скриптом машинки уничтожаются нормально.

    Код:
        public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
        {
            base.OnActorCreated(missionNumber,shortName,actor);
            //ships will die after 55 min when counted from their birth
            if ((actor as AiGroundActor).Type() == maddox.game.world.AiGroundActorType.Ship)  
                    Timeout (3300, () => 
                                        { if (actor != null)
                                            { (actor as AiGroundActor).Destroy(); }
                                        }
                            );
        }
    Крайний раз редактировалось -atas-; 27.05.2011 в 22:08.
    ...зелёные горят.
    ----------------------

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

  11. #161

    Re: Вопросы.

    Вот так попробуй

    Код:
    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
            {
                base.OnActorCreated(missionNumber, shortName, actor);
                if (actor is AiGroundGroup)
                {
                    if ((actor as AiGroundGroup).Type() == AiGroundGroupType.Ship)
                    {
                        Timeout(3300, () =>
                            {
                                if (actor != null)
                                {
                                    (actor as AiGroundActor).Destroy();  // уничтожаем
                                }
                            }
                        );
    
                    }
                }
            }

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение

    так вот же - http://www.sukhoi.ru/forum/showthrea...=1#post1608824 скрипт с проверкой в многоместных самолётах. Оттуда проверку можно взять.
    Тот скрипт не работал на выделенном сервере, а тольк на невыделенном, поэтому от него отказались.

    В том скрипте проверка:
    Код:
            public void _DespawnEmptyPlane(AiActor actor)
            {
                if (actor == null)
                { return; }
    
                Player[] Players = GamePlay.gpRemotePlayers();
    
                bool PlaneIsEmpty = true;
    
                foreach (Player i in Players)
                {
                    if ((i.Place() as AiAircraft) == (actor as AiAircraft))
                    {
                        PlaneIsEmpty = false;
                        break;
                    }
                }
    В нашем текущем скрипте проверка:
    Код:
       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;
    	}
    Не могу увидеть разницы.
    p.Place () is AiAircraft должно подтвердить, что ирок все еще в самолете, если даже он сел на место штурмана?
    Или не выполняется условие p.Place () as AiAircraft) == aircraft?

    Как правильно?

    Полный код http://www.sukhoi.ru/forum/showthrea...=1#post1627122

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

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Вот так попробуй
    Спасибо. А в чем разница, искать их как группы или как акторов? Должно быть все равно, так как:

    Сообщение от naryv Посмотреть сообщение
    да, корабль - это AiGroundActor и AiGroundGroup ,с типом Ship
    Просто интересно разобраться, почему нужно их искать через foreach и почему (с чего всё началось) этот скрипт всё кроме кораблей уничтожает, если корабли тоже AiGroundActor?

    Код:
        //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(); }
                    }
                            );
        }
    ...зелёные горят.
    ----------------------

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

  13. #163

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Спасибо. А в чем разница, искать их как группы или как акторов? Должно быть все равно, так как...
    Неверно. Деталь в методе Type(). Для AiGroundActor он возвращает AiGroundActorType, для AiGroundGroup - AiGroundGroupType.
    В первом случае проверки другие, и их целая пачка:
    ShipMisc,
    ShipTransport,
    ShipSmallWarship,
    ShipDestroyer,
    ShipCruiser,
    ShipBattleship,
    ShipCarrier,
    ShipSubmarine

    Акторов у нас 39 типов, а групп всего 6.

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

    Re: Вопросы.

    Статические корабли тоже к группе ship относятся или у статиков своя иерархия?

    Как 2 проверки в один метод вставить? Так не работает.

    Код:
        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(); }
                    }
                            );
    
            // Destroying ships
    
            if (actor is AiGroundGroup)
            {
                if ((actor as AiGroundGroup).Type() == AiGroundGroupType.Ship)
                { // 3300
                    Timeout(3300, () =>
                    {
                        if (actor != null)
                        {
                            (actor as AiGroundActor).Destroy();  // уничтожаем
                        }
                    }
                    );
    
                }
            }
        }
    ...зелёные горят.
    ----------------------

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

  15. #165

    Re: Вопросы.

    Вот это работает:

    Код:
    if (actor is AiGroundGroup)
                {
                    if ((actor as AiGroundGroup).Type() == AiGroundGroupType.Ship)
                    {
                        AiGroundGroup shipGroup = actor as AiGroundGroup;
                        foreach (AiActor item in shipGroup.GetItems())
                        {
                            if (item is AiCart)
                            {
                                Timeout(10, () =>
                                {
                                    if (item != null)
                                    {
                                        (item as AiCart).Destroy();  // уничтожаем
                                    }
                                }
                                );
                            }
                        }
                    }
                }
    При создании событие OnActorCreated генерит только группа - единственный айтем кораблика в группе событие не вызывает, поэтому и не работало.

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

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

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    2 -atas- вот скрипт для движения ЛФ со списком маркеров для любой карты - при инициализации из основной миссии берутся начальные маркеры, к ним делаются триггеры смены фронта и дальше маркеры переключаются. Я комментарии написал, думаю понятно должно быть как и что там делается.
    Атакующие миссии можно в самом начале загрузить 1 раз вот таким образом? (Возможно пару оборонительных тоже для начала придется загрузить.)

    Код:
       public override void OnBattleStarted()
        {
            base.OnBattleStarted();
            MissionNumberListener = -1;                                 // ставим MissionNumberListener = -1 , чтобы основная миссия "слышала" все триггеры и события в битве
            GamePlay.gpPostMissionLoad(triggersFile);                   // подгружаем миссию с триггерами созданую раньше, в Init
            // загружаем атакующие миссии. Как их грузить 1 раз, а не каждый цикл?
            GamePlay.gpPostMissionLoad("missions\\Multi\\Dogfight\\BoF2\\sub\\0_2_attack.mis");
            GamePlay.gpPostMissionLoad("missions\\Multi\\Dogfight\\BoF2\\sub\\2_1_attack.mis");
    
            RefreshBirthPlaces();                                       // и запускаем рефреш спаунов - чтобы они рассчитались   
        }
    Не будут они случайно снова грузиться при изменении флажка номера миссии?

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

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Вот это работает:
    Спасибо, будем внедрять.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Если можно по серверу:
    - в списке забаненных 0 после имени что означает? "name 3GIAP_Atas 0"
    - ban PATTERN [<pattern>] это для использования ? и * вместо символов или чего-то другого?
    - после перезагрузки сервера необходимо загрузить сохраненный заранее файл ban LOAD banned.txt или сервер сам внутри сохраняет список тоже?
    тут не знаю, скорее всего всё должно быть как в Ил-2

    Цитата Сообщение от -atas- Посмотреть сообщение
    Тогда получается, что уничтожаем через 55 минут после рождения так?
    OnActorCreated относится к акторам, а gg.Type к группам. Актор он же каждый по отдельности создается OnActorCreated, тогда зачем их всех перебирать foreach ? Перебор foreach пойдет только по созданной группе или по всем, что есть на карте уже? Если так, тогда они все и уничтожатся через 55 минут, а этого не нужно.
    у меня foreach был чтобы уничтожить все кораблики, в какой-то момент, я просто не понял, что Вы на onActorCreated его вешали в таком случае никаких foreach-ей не надо, конечно, ну да Small_Bee уже написал всё.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Атакующие миссии можно в самом начале загрузить 1 раз вот таким образом? (Возможно пару оборонительных тоже для начала придется загрузить.)
    да, конечно, можно.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Не будут они случайно снова грузиться при изменении флажка номера миссии?
    нет, OnBattleStarted один раз срабатывает на старт битвы, загрузка миссий на него не влияет.
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение

    2 -atas- вот скрипт для движения ЛФ со списком маркеров для любой карты - при инициализации из основной миссии берутся начальные маркеры, к ним делаются триггеры смены фронта и дальше маркеры переключаются.
    Нарисовали подмиссии для карты с Repka #1, но возникла проблеммка: Филды не перекрашиваются, ЛФ не двигается.
    По достижению красными танками красного филда в D3 срабатывает тригер, пишется сообщение о захвате. Далее красные танки дестроились на своем же филде, пришлось эту часть скрипта выключить.
    После этого красные танки проезжают маркер на синем филде в D3. Триггер не срабатывает, маркер не перекрашивается. Затем эти танки доезжают до синего филда в D4, триггер не срабатывает.

    Сообщение о захвате красными поля в D3 возникает периодически (хотя оно всегда было красным). Счет за захват начисляется, причем растет счет у обеих сторон и разница постоянна и составляет 10 очков (у красных на 1 захват больше.) Синее поле в D3 тоже есть, и его красные танки проезжают, но оно не перекрашивается.

    Синие танки, атакующие Е3 и затем F3 не вызывают срабатывание триггера.

    Миссию можно прогонять в оффлане с ускорением времени. Тестировалось именно так. Миссия во вложении.
    BoF2.zip

    Подмиссии присутствуют не для каждого маркера (соответствено, не для каждого триггера). Надеюсь, это не вызовет проблем при попытке скрипта их подгрузить.

    Скрипт приходится прикладывать также файлом, т.к. превышает допустимую длину сообщения. Переименован в txt.

    BoF_1_main1_8.txt

    (Часть кода отключена, но будет включаться позже. Если сразу увидите нестыковки, буду благодарен за совет.)
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Нарисовали подмиссии для карты с Repka #1, но возникла проблеммка: Филды не перекрашиваются, ЛФ не двигается.
    По достижению красными танками красного филда в D3 срабатывает тригер, пишется сообщение о захвате. Далее красные танки дестроились на своем же филде, пришлось эту часть скрипта выключить.
    После этого красные танки проезжают маркер на синем филде в D3. Триггер не срабатывает, маркер не перекрашивается. Затем эти танки доезжают до синего филда в D4, триггер не срабатывает.

    Сообщение о захвате красными поля в D3 возникает периодически (хотя оно всегда было красным). Счет за захват начисляется, причем растет счет у обеих сторон и разница постоянна и составляет 10 очков (у красных на 1 захват больше.) Синее поле в D3 тоже есть, и его красные танки проезжают, но оно не перекрашивается.

    Синие танки, атакующие Е3 и затем F3 не вызывают срабатывание триггера.

    Миссию можно прогонять в оффлане с ускорением времени. Тестировалось именно так. Миссия во вложении.
    BoF2.zip

    Подмиссии присутствуют не для каждого маркера (соответствено, не для каждого триггера). Надеюсь, это не вызовет проблем при попытке скрипта их подгрузить.

    Скрипт приходится прикладывать также файлом, т.к. превышает допустимую длину сообщения. Переименован в txt.

    BoF_1_main1_8.txt

    (Часть кода отключена, но будет включаться позже. Если сразу увидите нестыковки, буду благодарен за совет.)
    Сейчас глянул быстро, завтра подробнее посмотрю. Вы отключили уничтожение танков на маркере, поэтому получается такая ситуация - синие приезжают к маркеру, он срабатывает перекрашивая маркер, но поскольку там же находятся красные - тут же срабатывает обратный триггер и перекрашивает маркер опять в красный, происходит это достаточно быстро - счёт начисляется и тем и другим но смена ЛФ происходит незамеченной. Т.е. надо сделать так, чтобы одновременно две группы разных цветов у одного маркера не оказывались, либо, при перекраске маркера проигравшая группа уничтожалась. По поводу вопроса "что за триггер активируется?" - там не активируется а наоборот деактивируется триггер, который был у меня в каждой атакующей подмиссии - когда группа танков уничтожалась защитниками - рождалась новая группа танков, но при смене маркера, новая группа танков нам не нужна - вот я этот триггер и выключал.

    PS спаунточки в начальной миссии не нужны - они всё равно при старте битвы удалятся.
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    Вы отключили уничтожение танков на маркере, поэтому получается такая ситуация - синие приезжают к маркеру, он срабатывает перекрашивая маркер, но поскольку там же находятся красные - тут же срабатывает обратный триггер и перекрашивает маркер опять в красный, происходит это достаточно быстро - счёт начисляется и тем и другим но смена ЛФ происходит незамеченной.
    Там синие и красные атакуют разные направления, на одном филде не встречаются. Но на будущее, конечно надо бы такие ситуации исключить, т.к. могут встретиться. В принципе нормально, если маркер меняет цвет несколько раз подряд, т.к. резервы могут подтягиваться в зону действия тригера по очереди. Если так, пусть воюют до конца честно, а дестроить врагов нужно только в радиусе спауна, чтобы не обижали игроков при спауне на захваченном филде. На маркере пусть все идет естественным путем, как в жизни. Может быть его нейтральным делать на время боя или таймаут ввести перед перекрашиванием, или красить в цвет стороны, которой в радиусе присутствует больше (проверять раз в 5 минут, например).

    Отключение уничтожения танков - это следствие. Т.к. красные приезжают на свой же красный филд в D3, почему-то пишется сообщение о захвате своего же изначально филда, и эти же красные танки уничтожаются скриптом как будто бы они синие, как я описал выше. Т.е. как будто срабатывает противоположный тригер. А синих там и близко не было, они другой фланг совсем атакуют в Е3. Только после этого уничтожение танков было отключено.

    PS. я как-то писал о баге, что при сохранении миссии триггер на проезд синей наземки сбрасывается на проезд красной наземки (спорадически наблюдается, как и британские взрыватели к немецким бомбам). Возможно, это он вылезает: приезжает красная группа, а срабатывает синий триггер, который уничтожает красные танки, но перед этим они успевают перекрасить филд снова в красный, т.к. триггера там 2. Видимо нужен таймаут на перекрашивание маркера и филдов: если за пару минут враги не приехали, перекрасить, если приехали, отсчитывать заново и проверять чья взяла каждые 2-5 минут.
    Крайний раз редактировалось -atas-; 31.05.2011 в 20:09.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Там синие и красные атакуют разные направления, на одном филде не встречаются. Но на будущее, конечно надо бы такие ситуации исключить, т.к. могут встретиться. В принципе нормально, если маркер меняет цвет несколько раз подряд, т.к. резервы могут подтягиваться в зону действия тригера по очереди. Если так, пусть воюют до конца честно, а дестроить врагов нужно только в радиусе спауна, чтобы не обижали игроков при спауне на захваченном филде. На маркере пусть все идет естественным путем, как в жизни. Может быть его нейтральным делать на время боя или таймаут ввести перед перекрашиванием, или красить в цвет стороны, которой в радиусе присутствует больше (проверять раз в 5 минут, например).

    Отключение уничтожения танков - это следствие. Т.к. красные приезжают на свой же красный филд в D3, почему-то пишется сообщение о захвате своего же изначально филда, и эти же красные танки уничтожаются скриптом как будто бы они синие, как я описал выше. Т.е. как будто срабатывает противоположный тригер. А синих там и близко не было, они другой фланг совсем атакуют в Е3. Только после этого уничтожение танков было отключено.

    PS. я как-то писал о баге, что при сохранении миссии триггер на проезд синей наземки сбрасывается на проезд красной наземки (спорадически наблюдается, как и британские взрыватели к немецким бомбам). Возможно, это он вылезает: приезжает красная группа, а срабатывает синий триггер, который уничтожает красные танки, но перед этим они успевают перекрасить филд снова в красный, т.к. триггера там 2. Видимо нужен таймаут на перекрашивание маркера и филдов: если за пару минут враги не приехали, перекрасить, если приехали, отсчитывать заново и проверять чья взяла каждые 2-5 минут.
    Ух, вроде разобрался в чём дело миссия, конечно, головусворачивающая по количеству всего что там есть . Значит основная проблема с некорректно срабатывающими триггерами - это армии заданные в миссии, вот эти строчки в файле основной миссии:
    Army 1 gb
    Army 2 de

    вариантов решения проблемы сейчас 2 - либо эти строчки удалить совсем(наверное более предпочтительный), либо дополнить ещё одной вот так:
    Army 0 nn
    Army 1 gb
    Army 2 de

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

    Соответственно уничтожение танков на маркере в скрипте можно включить назад, свои танки не должны больше убиваться. Ещё нашёл свой косяк в скрипте - везде MissionMarkers.Capacity лучше заменить на MissionMarkers.Count, а то эксепшны будут сыпаться.
    Теперь по самой миссии - вот этот кусок
    Код:
    [NPC]
      10_Chief Armor.SdKfz_222 de /posx 271412.66/posy 205413.17 /npc_count 4/target Spawn3 - Attack D3 /num_units 4
      16_Chief Armor.Guy_Mk_IA gb /posx 277976.34/posy 195607.69 /script baseAntiAir.cpp/npc_count 4/target BirthPlace_0 - Attack D3 /num_units 4
      7_Chief Armor.Beaverette_III gb /posx 273296.41/posy 200605.77 /script baseAntiAir.cpp/npc_count 4/num_units 4
      17_Chief Armor.SdKfz_222 gb /posx 287501.72/posy 202349.14 /script baseAntiAir.cpp/npc_count 4/target BirthPlace_5 - Attack D3 /num_units 4
      0_Chief Armor.Guy_Mk_IA gb /posx 272533.38/posy 200932.58 /script baseAntiAir.cpp/npc_count 8/num_units 8
      1_Chief Armor.SdKfz_222 gb /posx 276254.53/posy 191791.23 /script baseAntiAir.cpp/npc_count 4/target BirthPlace_01 - Attack D3 /num_units 4
    почти весь неправильный - скрипт baseAntiAir.cpp для прожекторов, не для техники, техника рождаться не будет, и очень возможны глюки различные , с таргетами для наземки тоже неправильно, в случае техники таргет будет работать на сплайновой дороге если скрипт car.cpp назначен NPC группе.
    Ну и в целом всё сразу сделано много и сложно, очень сложно отладить так - лучше кусочками делать - поставили пушки, пустили пару групп танчиков - если корректно отработали - дальше уже добавляем усложняем и т.д. а то сразу куча объектов все по своему работают и сложно понять кто что и почему делает . А так, без строчек с армиями прогнал - вроде всё перекрашивается как надо.
    Don't happy, be worry

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

    Re: Вопросы.

    Спасибо, будем тестировать.
    Миссия взята целиком с Repka #1, а там за 2 месяца обучения редактору много чего налеплено. Заново собирать с нуля времени нет.

    baseAntiAir.cpp иногда удачно расставляет машинки вокруг аэродрома, но нестабильно. Иногда нужно группу машин в качестве пво использовать. На будущее может пригодиться.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Ситуация: в начале загружаем 2 "_defend" подмиссии. Путь атакующей группы противника проходит через маркер противника, который мы атакуем. Если нам удается захватить маркер противника, то триггер загружающий "_attack" подмиссии противника перестает срабатывать, т.е. противник перестает атаковать наш маркер. Хотя по логике если "_defend" подмиссия запущена, атаки должны продолжаться пока маркер не будет захвачен.

    Либо этот код выключает триггер возрождения групп не только атакующих данный конкретный маркер, но и просто проезжающих через него по своим делам.
    Код:
                   if (gg.Pos().distance(ref AirportPos) < 2000)   // 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;
    Либо когда группа проезжает через перекрашивающийся маркер, она дестроится скриптом и это уничтожение не вызывает срабатывание триггера.

    Цикл возрождения прерывается, а нужно чтобы не прерывался.
    Скрипт прилагаю.BoF_1_main1_8.txt

    upd. арта, кстати, на захваченных маркерах не уничтожается почему-то, продолжает в спину стрелять после проезда маркера.
    Крайний раз редактировалось -atas-; 02.06.2011 в 11:44.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    FG28_Kodiak с желтого форума 1С, неплохо на мой неискушенный взгляд разбирающийся в С#, изъявляет желание написать add-in/мод для интерфейса онлайна, показывающий после выбора филда список припаркованных на нем самолетов с возможностью выбора их из списка. Мод необходим для совместных полетов сосквадников на одном самолете в полном реале без иконок самолетов на карте. При выключенных иконках занять место в уже созданном самолете практически невозможно, т.к его на карте не видно. (Это кто придумал? )

    Вопрос: каким образом этот код интерфейса можно подключить к БзБ? MuxaHuk на желтом форуме писал, что даже каждый сервер может иметь свой интерфейс и передавать его клиенту. Как это реализовать на практике в общих чертах?
    ...зелёные горят.
    ----------------------

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

  25. #175

    Wink Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    FG28_Kodiak с желтого форума 1С, неплохо на мой неискушенный взгляд разбирающийся в С#, изъявляет желание написать add-in/мод для интерфейса онлайна, показывающий после выбора филда список припаркованных на нем самолетов с возможностью выбора их из списка. Мод необходим для совместных полетов сосквадников на одном самолете в полном реале без иконок самолетов на карте. При выключенных иконках занять место в уже созданном самолете практически невозможно, т.к его на карте не видно. (Это кто придумал? )

    Вопрос: каким образом этот код интерфейса можно подключить к БзБ? MuxaHuk на желтом форуме писал, что даже каждый сервер может иметь свой интерфейс и передавать его клиенту. Как это реализовать на практике в общих чертах?
    В общих чертах там не расскажешь. Но мне кажется, все будет отшень карашо.
    шепотом: кнопки работают )))
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	MiSingle.jpg 
Просмотров:	185 
Размер:	127.4 Кб 
ID:	135354   Нажмите на изображение для увеличения. 

Название:	MySingle2.jpg 
Просмотров:	176 
Размер:	211.7 Кб 
ID:	135355  
    Крайний раз редактировалось Small_Bee; 03.06.2011 в 01:18.

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

Ваши права

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