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

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

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

Комбинированный просмотр

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Указывается для армии, массива игроков и для всех игроков?
    для массива, а этот массив уже делается таким как автор хочет.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    Просто если нельзя удалить объект, то миссию придется перезагружать. И на месте этого объекта другой не поставить(например поменять синий аэродром на красный с соответствующими статиками)
    да, это понятно.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    Я видимо запутал в понятиях. Под статиками имел в виду не только из группы "Статический" в редакторе, но и "Здания и сооружения" - вот они не грузятся в подмиссиях
    Да, здания не грузятся.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    Хотелось бы об их убиении тоже получать сообщения. Сейчас там стоят пушки. Ангар взрывается, пушки заваливает, их почти не достать после этого. Их вообще не должно там быть по-хорошему(к тому же они "живые" и при приближении вражеской наземки начнут стрелять).
    В общем нужно чтобы при уничтожении здания обрабатывалось событие соответствующее, чтобы не запихивать в него пушки или вагончики, а достаточно было бы самого здания. Ну и чтобы они могли перезагружаться на карте нормально для организации войны нон-стоп с динамической линией фронта и складами/заводами
    да, так и сделано, при уничтожении здания соответствующий ивент происходит.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    А зачем они в следующей?
    не знаю точно, возможно, чтобы не перезагружать лишний раз.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    И как это влияет на работу миссии и сервера?
    да никак по идее, просто стационарные объекты которых не убили остануться .
    Don't happy, be worry

  2. #2
    hehehe 111 Аватар для podvoxx
    Регистрация
    25.08.2008
    Адрес
    Барнаул - Питер
    Возраст
    41
    Сообщений
    4,245

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    для массива, а этот массив уже делается таким как автор хочет.
    Просто обычно используются три таких массива - армия, все игроки, произвольный массив игроков. И собрать такие массивы не так просто. Например если отправлять сообщения всем в чат и на экран одновременно нужно обязательно исключать Server из массива адресатов, иначе при отправке HUD на выделенном появляется ошибка. Это часть проблемы универсальности - нужно сначала определить что за тип игры, отсортировать, потом проверять на null и так для все трех вышеуказанных основных типов сообщений. И это будет засорять каждый скрипт, где есть отправка сообщений. Вот такой кусок примерно:
    Код:
    public static void SendMessageToAll(string langFolderPath, string msgKey, string target, params object[] args)
            {
                List<Player> players = new List<Player>();
                List<Player> playersScreen = new List<Player>();
                if (target == "Chat")
                {
                    if (GamePlay.gpPlayer() != null)           
                        players.Add(GamePlay.gpPlayer());            
                    if (GamePlay.gpRemotePlayers() != null)
                     players.AddRange(GamePlay.gpRemotePlayers());
    
                    if (players.ToArray() != null)
                        {
                            send(langFolderPath, players.ToArray(), msgKey, target, args);
                        }
    
                }
                else if (target == "Screen")
                {
                    if (GamePlay.gpPlayer() != null)
                        if (GamePlay.gpPlayer().Name().ToString() != "Server")
                        {
                            players.Add(GamePlay.gpPlayer());
                        }
                    if (GamePlay.gpRemotePlayers() != null)
                        players.AddRange(GamePlay.gpRemotePlayers());
    
                    if (players.ToArray() != null)
                    {
                        send(langFolderPath, players.ToArray(), msgKey, target, args);
                    }
                }
                else if (target == "ChatAndScreen")
                {
                    // Chat
                    if (GamePlay.gpPlayer() != null)                    
                        players.Add(GamePlay.gpPlayer());
                    if (GamePlay.gpRemotePlayers() != null)
                        players.AddRange(GamePlay.gpRemotePlayers());
    
                    if (players.ToArray() != null)
                    {
                        send(langFolderPath, players.ToArray(), msgKey, "Chat", args);
                    }
    
                    //Screen
                    if (GamePlay.gpPlayer() != null)
                        if (GamePlay.gpPlayer().Name().ToString() != "Server")
                        {
                            playersScreen.Add(GamePlay.gpPlayer());
                        }
                    if (GamePlay.gpRemotePlayers() != null)
                        playersScreen.AddRange(GamePlay.gpRemotePlayers());
    
                    if (playersScreen.ToArray() != null)
                    {
                        send(langFolderPath, playersScreen.ToArray(), msgKey, "Screen", args);
                    }
                }    
            }
    
            public static void SendMessageToArmy(string langFolderPath, string msgKey, int army, string target, params object[] args)
            {
                List<Player> players = new List<Player>();
                List<Player> acceptedPlayers = new List<Player>();
    
                if (GamePlay.gpPlayer() != null)           
                    players.Add(GamePlay.gpPlayer());            
                if (GamePlay.gpRemotePlayers() != null)
                    players.AddRange(GamePlay.gpRemotePlayers());
    
                if (players != null)
                {
                    foreach (Player player in players)
                    {
                        if (player.Army() == army) acceptedPlayers.Add(player);
                    }
                    if (acceptedPlayers.Count > 0)
                    {
                        send(langFolderPath, acceptedPlayers.ToArray(), msgKey, target, args);
                    }
                }
            }
    
            public static void SendMessageToPlayers(string langFolderPath, string msgKey, Player[] players, string target, params object[] args)
            {
                if (players != null)
                {
                    send(langFolderPath, players, msgKey, target, args);
                }
            }
    При том, что обычно используются только эти три типа(они покрывают все потребности) - SendMessageToAll, SendMessageToArmy и произвольные массив - SendMessageToPlayers
    Цитата Сообщение от naryv Посмотреть сообщение
    Да, здания не грузятся.
    Это не планируется менять? Просто для миссий, где загрузка подмиссий меняется от каких-то условий невозможно предусмотреть все постройки в хост миссии. И вообще получается окопы где-то в хостмиссии, артиллерия в подмиссии и еще неизвестно, появится ли она на карте(в зависимости от условий). Это не дает воспользоваться возможностями игры по организации динамической войны.

    И еще вопрос. По мультиплеерным аддинам будут изменения в новом патче?

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Просто обычно используются три таких массива ...
    При том, что обычно используются только эти три типа(они покрывают все потребности) - SendMessageToAll, SendMessageToArmy и произвольные массив - SendMessageToPlayers
    Это уход в частности, думаю вряд-ли будем делать.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Это не планируется менять? Просто для миссий, где загрузка подмиссий меняется от каких-то условий невозможно предусмотреть все постройки в хост миссии. И вообще получается окопы где-то в хостмиссии, артиллерия в подмиссии и еще неизвестно, появится ли она на карте(в зависимости от условий). Это не дает воспользоваться возможностями игры по организации динамической войны.
    Поменять нельзя, это связано с сетевым кодом и механизмом работы домиков. Как вариант - можно в стационарные объекты добавить здания нужные для подгрузки в таких миссиях(только надо список таких зданий).

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

  4. #4
    hehehe 111 Аватар для podvoxx
    Регистрация
    25.08.2008
    Адрес
    Барнаул - Питер
    Возраст
    41
    Сообщений
    4,245

    Re: Вопросы.

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

    Цитата Сообщение от naryv Посмотреть сообщение
    Поменять нельзя, это связано с сетевым кодом и механизмом работы домиков. Как вариант - можно в стационарные объекты добавить здания нужные для подгрузки в таких миссиях(только надо список таких зданий).
    Все ангары, промышленные здания и окопы можно перенести в статические. Остальное не помню, посмотрю сегодня. А так будет идеальное решение.

    И спасибо за ответы и доработку

Ваши права

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