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

Показано с 1 по 8 из 8

Тема: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

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

    [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    2 универсальных скрипта на все случаи жизни

    http://forum.1cpublishing.eu/showthread.php?t=26623

    Не совсем понятно как это совместить с LocalizedMessages

    sendChatMessageTo(-1, GetLocalizedMessage("ru", "Hello"), null);
    Это отправит сообщение только владельцам русской версии? А если нужно отправить всем, но на разных языках. Мысли вслух.

    GetLocalizedMessage сам проверяет язык установленной игры у клиента?

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

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

    А для Player есть LanguageName() - языковая проблема походу решена.
    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Все остальное примерно так

    Код:
    private string GetLocalizedMessage(string lang, string key)
    {
       switch(key)
       {
          case "Hello":
          {
             switch (lang)
             {
                case "ru": return "Привет!";
                case "en": return "Hello!";
                case "turtle": return "Cawabanga dude!";
             }
          } break;
       }
       return String.Empty;
    }
    Вот эти вещи как совместить можно, т.е. как этот скрипт узнает на каком конкретно языке писать конкретному пользователю?

    Так будет работать?
    Код:
    GetLocalizedMessage(LanguageName(), "mission1");
    
    private string GetLocalizedMessage(string lang, string key)
    {
       switch(key)
       {
          case "mission1":
          {
            if (lang = "ru") 
             {
                return "Загружена миссия 1.";
             }
    	    else 	
             {
                return "Mission 1 loaded.";
             }
          } break;
       }
       return String.Empty;
    }
    Крайний раз редактировалось -atas-; 01.10.2011 в 21:47.
    ...зелёные горят.
    ----------------------

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

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

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    Kodial внес ясность. Теперь скрипты включают языки.
    Вмето немецкого пока можно ставить английский текст, потом желающие переведут.

    Код:
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using maddox.game;
    using maddox.game.world;
    
    
    public class Mission : AMission
    {
    
        private void sendScreenMessageTo(int army, string msg, object[] parms)
        {
            if (army != -1)
            {
                //Singleplayer (for Testing)
                if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
                {
                    if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army)
                        GamePlay.gpHUDLogCenter(null, msg, parms);
    
                }
                else // Multiplayer
                {
                    List<Player> Players = new List<Player>();
    
                    foreach (Player p in GamePlay.gpRemotePlayers())
                    {
                        if (p.Army() == army)
                            Players.Add(p);
                    }
                    GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
                }
            }
            else GamePlay.gpHUDLogCenter(null, msg, parms);
        }
    
    
        private void sendChatMessageTo(int army, string msg, object[] parms)
        {
            if (army != -1)
            {
                //Singleplayer (for Testing)
                if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
                {
                    if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army)
                        GamePlay.gpLogServer(null, msg, parms);
    
                }
                else // Multiplayer
                {
                    List<Player> Players = new List<Player>();
    
                    foreach (Player p in GamePlay.gpRemotePlayers())
                    {
                        if (p.Army() == army)
                            Players.Add(p);
                    }
                    GamePlay.gpLogServer(Players.ToArray(), msg, parms);
                }
            }
            else GamePlay.gpLogServer(null, msg, parms);
        }
    
    
        private void sendScreenMessageTo(int army, string playerlanguage, string msg, object[] parms)
        {
            if (army != -1)
            {
                //Singleplayer (for Testing)
                if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
                {
                    if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                        GamePlay.gpHUDLogCenter(null, msg, parms);
    
                }
                else // Multiplayer
                {
                    List<Player> Players = new List<Player>();
    
                    foreach (Player p in GamePlay.gpRemotePlayers())
                    {
                        if (p.Army() == army && p.LanguageName().Equals(playerlanguage))
                            Players.Add(p);
                    }
                    GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
                }
            }
            else GamePlay.gpHUDLogCenter(null, msg, parms);
        }
    
    
        private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
        {
            if (army != -1)
            {
                //Singleplayer (for Testing)
                if (GamePlay.gpRemotePlayers() == null || GamePlay.gpRemotePlayers().Length <= 0)
                {
                    if (GamePlay.gpPlayer() != null && GamePlay.gpPlayer().Army() == army && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                        GamePlay.gpLogServer(null, msg, parms);
                }
                else // Multiplayer
                {
                    List<Player> Players = new List<Player>();
    
                    foreach (Player p in GamePlay.gpRemotePlayers())
                    {
                        if (p.Army() == army && p.LanguageName().Equals(playerlanguage))
                            Players.Add(p);
                    }
                    GamePlay.gpLogServer(Players.ToArray(), msg, parms);
                }
            }
            else GamePlay.gpLogServer(null, msg, parms);
        }
    
    
        public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
        {
            base.OnPlaceEnter(player, actor, placeIndex);
           
            
            //test
            switch (player.LanguageName())
            {
                case "de":
                    sendScreenMessageTo(2, "de", "Hallo!", null);
                    break;
                case "ru":
                    sendScreenMessageTo(2, "ru", "Привет!", null);
                    break;
                default:
                    sendScreenMessageTo(2, "Hello!", null);
                    break;
            }
            
        }
    }
    ...зелёные горят.
    ----------------------

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

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

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    ...зелёные горят.
    ----------------------

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

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

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    Исправлено
    Код:
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using maddox.game;
    using maddox.game.world;
    
    
    public class Mission : AMission
    {
    
        #region MessageSystem
    
        private void sendScreenMessageTo(int army, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
    
            //Singleplayer or Dedi Server
            if (GamePlay.gpPlayer() != null)
            {
                    if (GamePlay.gpPlayer().Army() == army || army == -1)
                        Players.Add(GamePlay.gpPlayer());
            } // Multiplayer
            if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
            {
                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if (p.Army() == army || army == -1)
                        Players.Add(p);
                }
            }
            if (Players != null && Players.Count > 0)
                GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
        }
    
    
        private void sendChatMessageTo(int army, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
    
            //Singleplayer or Dedi Server
            if (GamePlay.gpPlayer() != null)
            {
                if (GamePlay.gpPlayer().Army() == army || army == -1)
                    Players.Add(GamePlay.gpPlayer());
            } // Multiplayer
            if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
            {
                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if (p.Army() == army || army == -1)
                        Players.Add(p);
                }
            }
            if (Players != null && Players.Count > 0)
                GamePlay.gpLogServer(Players.ToArray(), msg, parms);
        }
    
    
        private void sendScreenMessageTo(int army, string playerlanguage, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
    
            //Singleplayer or Dedi Server
            if (GamePlay.gpPlayer() != null)
            {
                if ((GamePlay.gpPlayer().Army() == army || army == -1) && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                    Players.Add(GamePlay.gpPlayer());
            } // Multiplayer
            if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
            {
                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if ((p.Army() == army || army == -1) && p.LanguageName().Equals(playerlanguage))
                        Players.Add(p);
                }
            }
            if (Players != null && Players.Count > 0)
                GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
        }
    
    
        private void sendChatMessageTo(int army, string playerlanguage, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
    
            //Singleplayer or Dedi Server
            if (GamePlay.gpPlayer() != null)
            {
                if ((GamePlay.gpPlayer().Army() == army || army == -1) && GamePlay.gpPlayer().LanguageName().Equals(playerlanguage))
                    Players.Add(GamePlay.gpPlayer());
            } // Multiplayer
            if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
            {
                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if ((p.Army() == army || army == -1) && p.LanguageName().Equals(playerlanguage))
                        Players.Add(p);
                }
            }
            if (Players != null && Players.Count > 0)
                GamePlay.gpLogServer(Players.ToArray(), msg, parms);
        }
    
    
        private void sendChatMessageTo(int army, string[] exepttoplayerlanguages, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
    
            //Singleplayer or Dedi Server
            if (GamePlay.gpPlayer() != null)
            {
                if (GamePlay.gpPlayer().Army() == army || army == -1)
                    Players.Add(GamePlay.gpPlayer());
            } // Multiplayer
            if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
            {
                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if (p.Army() == army || army == -1) 
                        Players.Add(p);
                }
            }
    
            foreach (string st in exepttoplayerlanguages)
            {
                Players.RemoveAll(item => item.LanguageName().Equals(st));
            }
    
            if (Players != null && Players.Count > 0)
                GamePlay.gpLogServer(Players.ToArray(), msg, parms);
        }
    
    
        private void sendScreenMessageTo(int army, string[] exepttoplayerlanguages, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
    
            foreach (string st in exepttoplayerlanguages)
            {
                //Singleplayer or Dedi Server
                if (GamePlay.gpPlayer() != null)
                {
                    if (GamePlay.gpPlayer().Army() == army || army == -1)
                        Players.Add(GamePlay.gpPlayer());
                } // Multiplayer
                if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
                {
                    foreach (Player p in GamePlay.gpRemotePlayers())
                    {
                        if (p.Army() == army || army == -1)
                            Players.Add(p);
                    }
                }
            }
            foreach (string st in exepttoplayerlanguages)
            {
                Players.RemoveAll(item => item.LanguageName().Equals(st));
            }
    
            if (Players != null && Players.Count > 0)
                GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
        }
    
    
        private void sendChatMessageTo(Player player, string msg, object[] parms)
        {
            if (player != null)
                GamePlay.gpLogServer(new Player[] { player }, msg, parms);
        }
    
    
        private void sendScreenMessageTo(Player player, string msg, object[] parms)
        {
            if (player != null)
                GamePlay.gpHUDLogCenter(new Player[] { player }, msg, parms);
        }
    
    
        private void sendChatMessageTo(Player player, string playerlanguage, string msg, object[] parms)
        {
            if (player != null)
                if (player.LanguageName().Equals(playerlanguage))
                    GamePlay.gpLogServer(new Player[] { player }, msg, parms);
        }
    
    
        private void sendScreenMessageTo(Player player, string playerlanguage, string msg, object[] parms)
        {
            if (player != null)
                if (player.LanguageName().Equals(playerlanguage))
                    GamePlay.gpHUDLogCenter(new Player[] { player }, msg, parms);
        }
        
        
        private void sendChatMessageTo(Player player, string[] exepttoplayerlanguages, string msg, object[] parms)
        {
    
            List<Player> Players = new List<Player>();
            
            if (player != null)
                Players.Add(player);    
            
            foreach (string st in exepttoplayerlanguages)
            {
                if(Players != null)
                    Players.RemoveAll(item => item.LanguageName().Equals(st));
            }
    
            if (Players != null && Players.Count > 0)
                GamePlay.gpLogServer(Players.ToArray(), msg, parms);
        }
     
       
        private void sendScreenMessageTo(Player player, string[] exepttoplayerlanguages, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
            
            if (player != null)
                Players.Add(player);    
            
            foreach (string st in exepttoplayerlanguages)
            {
                if (Players != null)
                    Players.RemoveAll(item => item.LanguageName().Equals(st));
            }
    
            if (Players != null && Players.Count > 0)
                GamePlay.gpHUDLogCenter(Players.ToArray(), msg, parms);
        }
        
        #endregion
    
    }
    Крайний раз редактировалось -atas-; 12.10.2011 в 17:39.
    ...зелёные горят.
    ----------------------

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

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

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    Выкладываю свой вариант локализации, основан на массивах. Компактней и читабельней switch..case

    Код:
    using System;
    using System.Collections;
    using maddox.game;
    using maddox.game.world;
    using maddox.GP;
    using System.Collections.Generic;
    using System.IO;
    
    public class Mission : AMission
    {
        //=========================LOCALIZATION=============================
        string[] languageArray = { "en", "ru", "de", "fr", "es", "cs", "it", "pl" };
    	
        //******************Localize Message Method*******************
        private string getLocalizedMessage(string textTranslate)
        {
            
            string[] localizeArray;
            string langIndex = GamePlay.gpPlayer().LanguageName();
            switch (textTranslate)
            {
                case "Welcome to our server.":
                    {
                        localizeArray = new string[]
                        {
                            "Welcome to our server.EN",
                            "Добро пожаловать на наш сервер.RU",
                            "Welcome to our server.DE",
                            "Welcome to our server.FR",
                            "Welcome to our server.ES",
                            "Welcome to our server.CS",
                            "Welcome to our server.IT",
                            "Welcome to our server.PL"
                        };
                        return localizeArray.GetValue(Array.IndexOf(languageArray, langIndex)).ToString();
                    } break;            
            }
            return textTranslate;
        }
        //======================================================================
    
        //******************Send Chat Message Method*******************
        private void sendChatMessageTo(int army, string msg, object[] parms)
        {
            List<Player> Players = new List<Player>();
            //Singleplayer or Dedi Server
            if (GamePlay.gpPlayer() != null)
            {
                if (GamePlay.gpPlayer().Army() == army || army == -1)
                    Players.Add(GamePlay.gpPlayer());
            } // Multiplayer
            if (GamePlay.gpRemotePlayers() != null || GamePlay.gpRemotePlayers().Length > 0)
            {
                foreach (Player p in GamePlay.gpRemotePlayers())
                {
                    if (p.Army() == army || army == -1)
                        Players.Add(p);
                }
            }
            if (Players != null && Players.Count > 0)
                GamePlay.gpLogServer(Players.ToArray(), msg, parms);
        }
    	
    	public override void OnBattleStarted()
        {
            base.OnBattleStarted();
            MissionNumberListener = -1;
    		
    	sendChatMessageTo(-1, getLocalizedMessage("Welcome to our server."), new object[] { });
        }
    }
    Крайний раз редактировалось podvoxx; 11.01.2012 в 10:45.

  6. #6

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    Ну тогда уже и я отмечусь

    Класс для работы с языками

    Скрытый текст:
    Код:
        internal class LanguageManager
        {
            public string defaultLanguage;
            public IGamePlay gamePlay;
            public Dictionary<string, Dictionary<string, string>> lines = new Dictionary<string, Dictionary<string, string>>();
            public LanguageManager(IGamePlay gamePlay, string defaultLanguage, string langFolderPath)
            {
                this.defaultLanguage = defaultLanguage;
                this.gamePlay = gamePlay;
                //string fullPath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), langFolderPath);
                //load(fullPath);
                load(langFolderPath);
            }
    
            public string GetString(string msgKey, string language)
            {
                string retval = msgKey;
                if (!lines.ContainsKey(language))
                {
                    language = defaultLanguage;
                }
                if (lines.ContainsKey(language) && lines[language].ContainsKey(msgKey))
                {
                    retval = lines[language][msgKey];
                }
                return retval;
            }
    
            public void SendMessageToAll(string msgKey, SendMsgTarget target, params string[] parameters)
            {
                Player[] players = gamePlay.gpRemotePlayers();
                if (players != null)
                {
                    send(players, msgKey, target, parameters);
                }
            }
    
            public void SendMessageToArmy(string msgKey, int army, SendMsgTarget target, params string[] parameters)
            {
                Player[] players = gamePlay.gpRemotePlayers();
                List<Player> acceptedPlayers = new List<Player>();
                if (players != null)
                {
                    foreach (Player player in players)
                    {
                        if (player.Army() == army) acceptedPlayers.Add(player);
                    }
                    if (acceptedPlayers.Count > 0)
                    {
                        send(acceptedPlayers.ToArray(), msgKey, target, parameters);
                    }
                }
            }
    
            public void SendMessageToPlayers(string msgKey, Player[] players, SendMsgTarget target, params string[] parameters)
            {
                if (players != null)
                {
                    send(players, msgKey, target, parameters);
                }
            }
    
            private void send(Player[] players, string msgKey, SendMsgTarget target, params string[] parameters)
            {
                Dictionary<string, List<Player>> sorted = new Dictionary<string, List<Player>>();
                foreach (Player player in players)
                {
                    string langName = player.LanguageName();
                    if (!lines.ContainsKey(langName))
                    {
                        langName = defaultLanguage;
                    }
                    if (!sorted.ContainsKey(langName))
                    {
                        sorted.Add(langName, new List<Player>());
                    }
                    sorted[langName].Add(player);
                }
                foreach (KeyValuePair<string, List<Player>> kvp in sorted)
                {
                    if (lines[kvp.Key].ContainsKey(msgKey))
                    {
                        switch (target)
                        {
                            case SendMsgTarget.ChatAndScreen:
                                {
                                    gamePlay.gpLogServer(kvp.Value.ToArray(), lines[kvp.Key][msgKey], parameters);
                                    gamePlay.gpHUDLogCenter(kvp.Value.ToArray(), lines[kvp.Key][msgKey], parameters);
                                } break;
                            case SendMsgTarget.Chat: gamePlay.gpLogServer(kvp.Value.ToArray(), lines[kvp.Key][msgKey], parameters); break;
                            case SendMsgTarget.Screen: gamePlay.gpHUDLogCenter(kvp.Value.ToArray(), lines[kvp.Key][msgKey], parameters); break;
                        }
                    }
                }
            }
    
            private void load(string langFolderPath)
            {
                IEnumerable<string> fileNames = Directory.EnumerateFiles(langFolderPath, "*.txt", SearchOption.TopDirectoryOnly);
                foreach (string filename in fileNames)
                {
                    parseLanguageFile(filename);
                }
            }
    
            private void parseLanguageFile(string filename)
            {
                string[] filelines = File.ReadAllLines(filename);
                string[] firstLine = filelines[0].Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (firstLine[0].Equals("LanguageName"))
                {
                    string langName = firstLine[1];
                    if (!lines.ContainsKey(langName))
                    {
                        lines.Add(langName, new Dictionary<string, string>());
                    }
                    for (int i = 1; i < filelines.Length; i++)
                    {
                        string[] lineArr = filelines[i].Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                        if (lineArr.Length != 2) continue;
                        lines[langName][lineArr[0]] = lineArr[1];
                    }
                }
            }
        }
    
        internal enum SendMsgTarget
        {
            Chat,
            Screen,
            ChatAndScreen
        }


    Инициализация:

    В конструкторе класса передаем следующие параметры
    1. IGamePlay gamePlay - собственно GamePlay наш дорогой, что бы менеджер мог найти игроков и отправлять сообщения.
    2. string defaultLanguage - язык, который будет использоваться по-умолчанию (если соотв. игроку языковой файл не существует).
    3. string langFolderPath - полный путь к папке, где хранятся языковые файлы.

    Методы
    Класс предоставляет четыре публичных метода для работы с ним.

    1. GetString(string msgKey, string language)
    Получить строку на требуемом языке. Первый параметр ключ строки, второй - язык. Может потребоваться, к примеру, для заполнения строк в миссионном меню на языке игрока.

    2. SendMessageToAll(string msgKey, SendMsgTarget target, params string[] parameters)
    Отправить сообщение всем игрокам.
    Первый параметр - ключ строки.
    Второй параметр перечисление, куда выводить сообщение. Может принимать три значения:
    • Chat - сообщение будет выведено в чат;
    • Screen - сообщение будет выведено по центру экрана большими красными буквами;
    • ChatAndScreen - сообщение будет выведено и в чат, и на экран.

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

    3. SendMessageToArmy(string msgKey, int army, SendMsgTarget target, params string[] parameters)
    Отправить сообщение команде.
    Первый параметр - аналогично п.2.
    Второй параметр - целевая армия, 1 - красным, 2 - синим:
    Третий параметр - перечисление, аналогично п.2
    Четвертый параметр - аналогично п.2.

    4. SendMessageToPlayers(string msgKey, Player[] players, SendMsgTarget target, params string[] parameters)
    Отправить сообщение только указанным игрокам
    Второй параметр - массив игроков, которым надо отправить сообщение, остальное аналогично указанному выше.

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

    Требования
    1. Должен быть как минимум один языковой файл для языка по умолчанию, который вы передаете в конструкторе.
    2. Первой строкой в языковом файле должно быть наименование языка, для которого этот файл используется. Имя файла значения не имеет.
    3. Актуален для онлайн миссий.

    Преимущества
    1. Минимум кода для при использовании непосредственно в скрипте миссии.
    2. Нас не волнует язык игрока, класс самостоятельно выбирает нужный язык, и если его не существует, использует язык по-умолчанию.
    3. Не надо править/исправлять скрипт для добавления языков или изменения строк, все делается в языковых файлах.

    Полный cs-файл и пример языкового файла во вложении. cs-файл выдрал из проекта, поэтому при использовании может понадобится удалить/переименовать namespace.
    Собственно старая версия этого класса использовалась в морском льве.
    Вложения Вложения
    Крайний раз редактировалось Small_Bee; 08.01.2012 в 03:23.

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

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    И правда ,зачем изобретать велосипед )) Использую готовое профессиональное решение, а освободившееся время потрачу на что-нибудь другое интересное. Спасибо за код

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

    Re: [Скрипт] Сообщение на экран и в чат для оффлана и онлайна

    http://forum.1cpublishing.eu/showpos...9&postcount=14

    Локализация от Кодиака с использованием xml-файла

Ваши права

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