Цитата Сообщение от 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 Посмотреть сообщение
Да, здания не грузятся.
Это не планируется менять? Просто для миссий, где загрузка подмиссий меняется от каких-то условий невозможно предусмотреть все постройки в хост миссии. И вообще получается окопы где-то в хостмиссии, артиллерия в подмиссии и еще неизвестно, появится ли она на карте(в зависимости от условий). Это не дает воспользоваться возможностями игры по организации динамической войны.

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