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

Страница 18 из 32 ПерваяПервая ... 814151617181920212228 ... КрайняяКрайняя
Показано с 426 по 450 из 789

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

  1. #426

    Re: Вопросы.

    ВНИМАНИЕ! Код приведенный здесь не работает, рабочая версия кода находится на несколько постов ниже.


    Подвох, если все скрипты исполняются в одном процессе, то обмен данными можно организовать так:
    Код:
          // требуемые пространства имен
          using System.Windows;
          using System.Collections.Generic;
    
          // при инициализации хост миссии создаем и регистрируем таблицу достижений пилотов
          var table = new Dictionary<Player, int>();
          Application.Current.Properties.Add("PlayerScoreTable", table);
    
    
    
    
    
          // в процессе игры, в подмиссии, получаем количество очков пилота
          if (Application.Current.Properties.Contains("PlayerScoreTable"))
          {
            // получаем таблицу
            var tablex = (Dictionary<Player, int>)Application.Current.Properties["PlayerScoreTable"];
            
            // блокируем таблицу на время использования
            lock (tablex)
            {
              // тут получаем, не важно откуда, объект нужного нам игрока
              Player player = GamePlay.gpPlayer();
    
              // проверяем, есть ли в таблице запись для указанного игрока
              if (tablex.ContainsKey(player))
              {
                // получаем количество очков
                int score = tablex[player];
    
                // добавляем указанному игроку 25 очков
                tablex[player] += 25;
              }
              else
              {
                // добавляем в таблицу запись для указанного игрока
                tablex.Add(player, 0);
              }
            }
          }
    Крайний раз редактировалось Octocat; 13.01.2012 в 18:26.

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

    Re: Вопросы.

    Цитата Сообщение от Octocat Посмотреть сообщение
    см. ниже
    Спасибо, очень грамотные и интересные решения всегда от тебя Попробую разобраться
    Крайний раз редактировалось podvoxx; 03.02.2012 в 09:18.

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

    Re: Вопросы.

    Цитата Сообщение от Octocat Посмотреть сообщение
    Подвох, если все скрипты исполняются в одном процессе, то обмен данными можно организовать так:
    Ругается на namespace CS0234
    using System.Windows;

    Читал обсуждение про референсы в соседней теме, придется перечитывать еще раз

  4. #429

    Re: Вопросы.

    Если под рукой нет Вижуал Студио, в подобных случаях можно делать так:

    - Смотрим какие новые классы введены в программу:
    1. Dictionary - он из System.Collections, и к возникшей проблеме явно не имеет отношения.
    2. Application - этот подозрительный, смотрим на него доку в онлайн MSDN-е, и там видим такие строчки:

    Namespace: System.Windows.Forms
    Assembly: System.Windows.Forms (in System.Windows.Forms.dll)


    Ага, это явно наш пациент.
    Добавляем в скрипт макрос с линком на указанную в доке сборку:

    //$reference System.Windows.Forms.dll

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

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

    Re: Вопросы.

    Цитата Сообщение от Octocat Посмотреть сообщение
    Если под рукой нет Вижуал Студио, в подобных случаях можно делать так:

    - Смотрим какие новые классы введены в программу:
    1. Dictionary - он из System.Collections, и к возникшей проблеме явно не имеет отношения.
    2. Application - этот подозрительный, смотрим на него доку в онлайн MSDN-е, и там видим такие строчки:

    Namespace: System.Windows.Forms
    Assembly: System.Windows.Forms (in System.Windows.Forms.dll)


    Ага, это явно наш пациент.
    Добавляем в скрипт макрос с линком на указанную в доке сборку:

    //$reference System.Windows.Forms.dll

    Полный путь к сборке указывать не надо, она системная, поэтому заранее откомпилированная лежит в глобальном кэше сборок, и там будет найдена по любому.
    Спасибо, формы видел, но в мсдн пропустил мимо мозга Еще и папку NET всю просмотрел, теперь знают где что лежит. А студия не работает, только 2008я и только с++, решение -переустановка системы, но эти сотни гигабайт музыкальных программ убивают напрочь такое желание))

  6. #431

    Re: Вопросы.

    По кикобане посредством скриптов ничего нового? Все остановилось на этом?
    http://forum.1cpublishing.eu/showthr...246#post348246

    Как получить чьё-то сообщение из чата?
    Крайний раз редактировалось Vetochka; 04.01.2012 в 15:29.

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

    Re: Вопросы.

    Цитата Сообщение от Octocat Посмотреть сообщение
    Если под рукой нет Вижуал Студио, в подобных случаях можно делать так:

    - Смотрим какие новые классы введены в программу:
    1. Dictionary - он из System.Collections, и к возникшей проблеме явно не имеет отношения.
    2. Application - этот подозрительный, смотрим на него доку в онлайн MSDN-е, и там видим такие строчки:

    Namespace: System.Windows.Forms
    Assembly: System.Windows.Forms (in System.Windows.Forms.dll)


    Ага, это явно наш пациент.
    Добавляем в скрипт макрос с линком на указанную в доке сборку:

    //$reference System.Windows.Forms.dll

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

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

    Re: Вопросы.

    Цитата Сообщение от Vetochka Посмотреть сообщение
    По кикобане посредством скриптов ничего нового? Все остановилось на этом?
    http://forum.1cpublishing.eu/showthr...246#post348246

    Как получить чьё-то сообщение из чата?
    Small_Bee кажется говорил, что его лимитер-коммандер читает чат через телнет. Телнет программка, что стоит на Репках тоже видит, что в чате пишется.

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

    Разработчики давно молчат по этому поводу.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Small_Bee кажется говорил, что его лимитер-коммандер читает чат через телнет. Телнет программка, что стоит на Репках тоже видит, что в чате пишется.

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

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

  10. #435

    Re: Вопросы.

    Подвох, сорри за нерабочий пример, вот 100% рабочий код:

    Код:
    //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Xaml.dll"
    //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WindowsBase.dll"
    //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\PresentationFramework.dll"
    
    using System;
    using System.Globalization;
    using System.IO;
    using System.Windows;
    using maddox.game;
    using maddox.GP;
    using maddox.game.world;
    
    public class Mission : AMission
    {
      private void Log(string format, params object[] args)
      {
        GamePlay.gpLogServer(new[] { GamePlay.gpPlayer() }, string.Format(CultureInfo.InvariantCulture, format, args), null);
      }
    
      public override void OnBattleInit()
      {
        base.OnBattleInit();
    
        try
        {
          if (Application.Current == null)
          {
            new Application();
            Log("**Application Instance Created");
          }
    
            Application.Current.Properties.Add("AF2505FCA", "OurStatsTable");
            Log("**Stats Table Added");
    
            if (Application.Current.Properties.Contains("AF2505FCA"))
            {
              Log("**Stats Table Founded");
              Log("**Value is: {0}", (string)System.Windows.Application.Current.Properties["AF2505FCA"]);
            }
        }
        catch (Exception error)
        {
          Log("**EXCEPTION: {0}", error);
        }
      }
    }
    Крайний раз редактировалось Octocat; 09.01.2012 в 14:48.

  11. #436

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Small_Bee кажется говорил, что его лимитер-коммандер читает чат через телнет. Телнет программка, что стоит на Репках тоже видит, что в чате пишется.

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

    Разработчики давно молчат по этому поводу.
    Со статой будет идти коммандер, я встрою возможность отправлять команды серверу из скрипта. Без телнета, будет перехватывать напрямую ввод\вывод.


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

    Цитата Сообщение от Vetochka Посмотреть сообщение
    По кикобане посредством скриптов ничего нового? Все остановилось на этом?
    http://forum.1cpublishing.eu/showthr...246#post348246

    Как получить чьё-то сообщение из чата?
    Обратное тоже в принципе возможно.

  12. #437

    Re: Вопросы.

    Полная версия, с таблицей достижений:

    Код:
    //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Xaml.dll"
    //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WindowsBase.dll"
    //$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\PresentationFramework.dll"
    
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.IO;
    using System.Windows;
    using maddox.game;
    using maddox.game.world;
    
    public class Mission : AMission
    {
      private void Log(string format, params object[] args)
      {
        GamePlay.gpLogServer(new[] { GamePlay.gpPlayer() }, string.Format(CultureInfo.InvariantCulture, format, args), null);
      }
    
      public override void OnBattleInit()
      {
        base.OnBattleInit();
    
        try
        {
          // Master-mission
          if (true)
          {
            var player = GamePlay.gpPlayer();
            var pscore = PlayerScore.Get(player.Name());
            Log("********Initial PlayerScore {0}", pscore);
          }
    
          // Submission
          Timeout(5, () =>
            {
              var player = GamePlay.gpPlayer();
              var pscore = PlayerScore.Get(player.Name());
              pscore.KillsGnd++;
              pscore.Score += 10;
              Log("********PlayerScore After Tank Destroyed {0}", pscore);
            });
    
          // Another submission
          Timeout(10, () =>
          {
            var player = GamePlay.gpPlayer();
            var pscore = PlayerScore.Get(player.Name());
            pscore.KillsAir++;
            pscore.Score += 50;
            Log("********PlayerScore After Aircraft Killed {0}", pscore);
          });
    
        }
        catch (Exception error)
        {
          Log("********EXCEPTION: {0}", error);
        }
      }
    
      class PlayerScore
      {
        public string Name { get; private set; }
        public double Score { get; set; }
        public int KillsAir { get; set; }
        public int KillsGnd { get; set; }
    
        public override string ToString()
        {
          return string.Format(CultureInfo.InvariantCulture,
            "Name:{0} Score:{1} KillsAir/Ground: {2}/{3}", Name, Score, KillsAir, KillsGnd);
        }
    
        public static PlayerScore Get(string pname)
        {
          if (Application.Current == null)
          {
            new Application();
          }
    
          string token = "AF2505FCA";
          Dictionary<string, PlayerScore> table = null;
    
          if (Application.Current.Properties.Contains(token))
          {
            table = (Dictionary<string, PlayerScore>)Application.Current.Properties[token];
          }
          else Application.Current.Properties.Add(token, table = new Dictionary<string, PlayerScore>());
    
          PlayerScore pscore = null;
          if (table.TryGetValue(pname, out pscore) == false)
          {
            table.Add(pname, pscore = new PlayerScore() { Name = pname });
          }
    
          return pscore;
        }
      }
    }
    Крайний раз редактировалось Octocat; 09.01.2012 в 14:45.

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

    Re: Вопросы.

    Цитата Сообщение от Octocat Посмотреть сообщение
    Полная версия, с таблицей достижений:
    Спасибо большое!
    Пока не пробовал, но уже выяснил что NET 4.0 у меня по указанному пути нет. В этой папке только 3.0 , 3.5. Сам 4-й есть, на всякий случай заново установил. Наверное искать его надо

    Нашелся в папке Windows по такому пути:
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319

    На сервере это не создаст проблемы?

  14. #439

    Re: Вопросы.

    Да, у меня они тоже там есть. Поправил исходный пост.

    Попробуй, думаю все будет нормально.

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

    Re: Вопросы.

    1. Сейчас есть возможность в скриптах завершить миссию без использования аддинов? И загрузить потом следующую, т.е. oрганизовать ротацию?
    Пробовал сделать ротацию на выделенном - первая миссия грузится нормально, в последующих подмиссии не грузятся. Читал на желтом о различии команд f и file, но не разобрался, подписсии все равно оказываются за бортом.
    2. Старт самолетов на парковке сейчас корректно работает?
    Крайний раз редактировалось podvoxx; 10.01.2012 в 12:21.

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

    Re: Вопросы.

    Нарисовалась проблема. Запустил миссию на выделенном, все воюет считается нормально, а как только сам захожу выскакивают ошибки и почти все объекты пропадают из миссии. Самому можно вообще заходить на свой выделенный?
    Раньше это удавалось... Что в скрипте может приводить к такой ошибке?

    Код:
    =================================================
    [21:56:12]	System.NullReferenceException: Object reference not set to an instance of an object.
    [21:56:12]	
    [21:56:12]	Server stack trace: 
    [21:56:12]	   at 6UZP66dp5dKAdD5LMYr.F9pJL9dGtcbAt8r8Umh.JwjWWYN9w9(xnKDxkk8wATA33F3hpA , G7xPRi2e9fpuLtHG23a )
    [21:56:12]	   at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.sp1UnA9jmwb(Player[] , String , Object[] , Double )
    [21:56:12]	   at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.yEy1eAe2YPQxskLBZIku(Object , Object , Object , Double )
    [21:56:12]	   at 5iyST5gABhh0WhImZtw.4W7PgSgvHpySuqonJno.d87UnNOmgnm(Player[] , String , Object[] )
    [21:56:12]	   at pqlnUTF7gnMAoU4L9MP.lm1GgkFoiOOBGu1gmwf.ZnhKPrKgxsgJUIGtmgOK(Object , Object , Object )
    [21:56:12]	   at pqlnUTF7gnMAoU4L9MP.lm1GgkFoiOOBGu1gmwf.HUDLogCenter(Player[] , String , Object[] )
    [21:56:12]	   at maddox.game.GameDef.gpHUDLogCenter(Player[] to, String msg, Object[] parms)
    [21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
    [21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
    [21:56:12]	
    [21:56:12]	Exception rethrown at [0]: 
    [21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    [21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    [21:56:12]	   at maddox.game.IGamePlay.gpHUDLogCenter(Player[] to, String msg, Object[] parms)
    [21:56:12]	   at Mission.sendScreenMessageTo(Int32 army, String msg, Object[] parms)
    [21:56:12]	   at Mission.OnActorDead(Int32 missionNumber, String shortName, AiActor actor, List`1 damages)
    [21:56:12]	   at maddox.game.world.Strategy.OnActorDead(Int32 missionNumber, String shortName, AiActor actor, AiDamageInitiator initiator)
    [21:56:12]	   at maddox.game.ABattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
    [21:56:12]	   at maddox.game.world.Strategy.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
    [21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
    [21:56:12]	   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
    [21:56:12]	
    [21:56:12]	Exception rethrown at [1]: 
    [21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    [21:56:12]	   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    [21:56:12]	   at maddox.game.IBattle.OnEventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
    [21:56:12]	   at maddox.game.GameDef.eventGame(GameEventId eventId, Object eventArg0, Object eventArg1, Int32 eventArgInt)
    [21:56:12]	   at RoFTf9069W6jWRmA8PN.U2RoVL0OVdWjVQJ7319.eventGame(GameEventId , Object , Object , Int32 )
    [21:56:12]	   at NTlYp6NdtgpnKt7wGgO.VvFELvNie2My3mOTesk.WPGBQuHHKI8(GameEventId , Object , Object , Int32 )
    [21:56:12]	=================================================

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Читал на желтом о различии команд f и file, но не разобрался, подмиссии все равно оказываются за бортом.
    Это только из .cmd файла вроде. Из скрипта должно работать если все миссии будут подмиссией мастермиссии или 2я миссия будет подмиссией первой и т.д. Самое надежное, наверное, все подмиссии всех миссий из одного мастер-скрипта грузить.

    Ошибка вроде бы с отправкой сообщений как-то связана. Попробуй отключить. На выделенном сервере отсутствуют player, есть только remoteplayers емнип. У Kodiak система сообщений для онлайна и офлайна отличается поэтому.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Это только из .cmd файла вроде. Из скрипта должно работать если все миссии будут подмиссией мастермиссии или 2я миссия будет подмиссией первой и т.д. Самое надежное, наверное, все подмиссии всех миссий из одного мастер-скрипта грузить.
    Так и есть сейчас. Могу выслать миссию

    Цитата Сообщение от -atas- Посмотреть сообщение
    Ошибка вроде бы с отправкой сообщений как-то связана. Попробуй отключить. На выделенном сервере отсутствуют player, есть только remoteplayers емнип. У Kodiak система сообщений для онлайна и офлайна отличается поэтому.
    Вот тут может быть. Хотя на нуль проверяется, а у Кодиака скрипты универсальные. Видимо из-за player, хотя проверка стоит же вроде..

    Код:
    //=========================LOCALIZATION=============================
        string[] languageArray = { "en", "ru", "de", "fr", "es", "cs", "it", "pl" };
    	
    	//******************Localize Message Method*******************
        private string getLocalizedMessage(string textTranslate)
        {
            if (GamePlay.gpPlayer() != null)
            {
                string[] localizeArray;
                string langIndex = GamePlay.gpPlayer().LanguageName();
                switch (textTranslate)
                {
                    //GET TEAM POINTS and win-msg
                    case "getPointsRED":
                        {
                            localizeArray = new string[]
                        {
                            "Red team gets points for complite task : ",
                            "Команда красных получает очки за выполнение задания: ",
                            "Red team gets points for complite task : ",
                            "Red team gets points for complite task : ",
                            "Red team gets points for complite task : ",
                            "Red team gets points for complite task : ",
                            "Red team gets points for complite task : ",
                            "Red team gets points for complite task : "
                        };
                            return localizeArray.GetValue(Array.IndexOf(languageArray, langIndex)).ToString();
                        } break;
    }
            return textTranslate;
        }
    	//======================================================================

  19. #444

    Re: Вопросы.

    [QUOTE=podvoxx;1767574]Так и есть сейчас. Могу выслать миссию
    Вот тут может быть. Хотя на нуль проверяется, а у Кодиака скрипты универсальные.

    Высылал ты мне эту миссию? Если хочешь, прикручу к ней свой локалайзер и отправлю назад - сразу пример будет.

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

    Re: Вопросы.

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

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Вот тут может быть. Хотя на нуль проверяется, а у Кодиака скрипты универсальные. Видимо из-за player, хотя проверка стоит же вроде..
    Там еще Server есть. Он возможно как player считается, не помню уже, когда-то на желтом обсуждали с Kodiak. Лучше посмотреть как у него реализовано. Он раз 10 код менял, чтобы все заработало на выделенном.
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Там еще Server есть. Он возможно как player считается, не помню уже, когда-то на желтом обсуждали с Kodiak. Лучше посмотреть как у него реализовано. Он раз 10 код менял, чтобы все заработало на выделенном.
    Сами сообщения сервера проходят как положено. Думаю разберусь, только нескоро получится. Заодно добавлю еще пару интересных вещей.
    Кажется нашел ошибку, хотя не уверен. Много раз читал тему, но все равно особенности выделеного не учел.
    Сам скрипт сообщений работает идеально.

    Код:
    //******************Send Screen Message Method*******************
        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);
        }
    Код:
    [21:34:02]	Server to [Server]: ======================================
    [21:34:02]	Server to [Server]: RED> [ 142 ] / [ 166 ] <BLUE 
    [21:34:02]	Server to [Server]: Миссия будет остановлена через 2 min.
    [21:34:02]	Server to [Server]: ======================================
    [21:34:19]	Server to [Server]: Команда красных уничтожила самолет-разведчик синих[ 1 ]
    [21:34:19]	Server to [Server]: Команда красных получает очки за выполнение задания: [ 100 ]
    [21:34:19]	Server: Bf 110 C-4 () (Бот) сбил FW 200 () (Бот).
    Пока "в игре" только [Server] - локализация тоже работает правильно, но в ней есть определение языка игрока:
    Код:
    string langIndex = GamePlay.gpPlayer().LanguageName();
    Получается, что текст сообщения определяется по GamePlay.gpPlayer()(скорее всего здесь конфликт), а сообщения отправляются массиву игроков(они все могут оказаться с разными языками):
    Код:
    sendScreenMessageTo(-1, getLocalizedMessage("noWinner"), new object[] { });
    Попробую сделать определение языка для каждого игрока из массива и тправку сообщений в соответствии с ним, но я не очень хорошо понимаю отличия выделенного/сингла от мультиплеера. Хотел бы уточнить, чтобы правильно понимать что происходит с этими плеерами, так как они везде используются.
    Для сингла и dedi:
    GamePlay.gpPlayer() - это кто?

    Для мультиплеера:
    GamePlay.gpRemotePlayers() - массив игроков на сервере(он состоит из GamePlay.gpPlayer() ?)

    И почему определение игрока отличается для сингла и выделенного?
    Крайний раз редактировалось podvoxx; 11.01.2012 в 10:35.

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

    Re: Вопросы.

    Еще пара вопросов.

    1.
    GamePlay.gpPlayer() - игрок , выделенный сервер/сингл
    GamePlay.gpPlayer().LanguageName() - язык игрока, string, вида "ru", "en" и т.д.
    GamePlay.gpPlayer().Army() - армия игрока, может быть 1 и 2

    GamePlay.gpRemotePlayers() - игрок , мультиплеер через главное меню
    GamePlay.gpRemotePlayers().Length - количество игроков

    Какие еще есть варианты и можно ли при помощи GamePlay.gpPlayer() определить ник игрока?

    2.
    Корректно ли в БОБе будет использовать метод определения и отсчета времени на основе DateTime?
    Например для отсчета времени от начала миссии? Подойдет для точной засечки времени в миссии на гоночном сервере?

    Код:
    DateTime dateTime = DateTime.Now;
       C.WriteLine ("d = {0:d}", dateTime );  // mm/dd/yyyy
       C.WriteLine ("D = {0:D}", dateTime );  // month dd, yyyy
       C.WriteLine ("f = {0:f}", dateTime );  // day, month dd, yyyy hh:mm 
       C.WriteLine ("F = {0:F}", dateTime );  // day, month dd, yyyy HH:mm:ss AM/PM 
       C.WriteLine ("g = {0:g}", dateTime );  // mm/dd/yyyy HH:mm
       C.WriteLine ("G = {0:G}", dateTime );  // mm/dd/yyyy hh:mm:ss
       C.WriteLine ("M = {0:M}", dateTime );  // month dd
       C.WriteLine ("R = {0:R}", dateTime );  // ddd Month yyyy hh:mm:ss GMT
       C.WriteLine ("s = {0:s}", dateTime );  // yyyy-mm-dd hh:mm:ss (Sortable)
       C.WriteLine ("t = {0:t}", dateTime );  // hh:mm AM/PM
       C.WriteLine ("T = {0:T}", dateTime );  // hh:mm:ss AM/PM
     
       // yyyy-mm-dd hh:mm:ss (Sortable)
       C.WriteLine ("u = {0:u}", dateTime );  
     
       // day, month dd, yyyy hh:mm:ss AM/PM
       C.WriteLine ("U = {0:U}", dateTime );
     
       // month, yyyy (March, 2006)
       C.WriteLine ("Y = {0:Y}", dateTime );  
       C.WriteLine ("Month = " + dateTime.Month); // month number (3)
     
       // day of week name (Friday)
       C.WriteLine ("Day Of Week = " + dateTime.DayOfWeek);     
     
       // 24 hour time (16:12:11)
       C.WriteLine ("Time Of Day = " + dateTime.TimeOfDay);     
     
       // (632769991310000000)
       C.WriteLine("DateTime.Ticks = " + dateTime.Ticks);   
       // Ticks are the number of 100 nanosecond intervals since 01/01/0001 12:00am
       // Ticks are useful in elapsed time measurement.
    3.
    Есть примеры с использованием Stopwatch(), он тоже подходит для отсчета времени? Выглядит очень удобным
    Крайний раз редактировалось podvoxx; 11.01.2012 в 13:13.

  24. #449

    Re: Вопросы.

    Подвох, вот SharpDevelop - думаю неплохой вариант для тебя, раз уж студия не встает. Ставишь, подключаешь игровые либы, как описано здесь [Tutorial] Simple Scripting Lessons - Preparations. Писать и отлаживать код в блокноте - это не вариант.

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

    Re: Вопросы.

    Цитата Сообщение от Octocat Посмотреть сообщение
    Подвох, вот SharpDevelop - думаю неплохой вариант для тебя, раз уж студия не встает. Ставишь, подключаешь игровые либы, как описано здесь [Tutorial] Simple Scripting Lessons - Preparations. Писать и отлаживать код в блокноте - это не вариант.
    У меня стоит 2008-я, но я ее использую как удобный редактор только. И на работе какие-то тулзы с урезанной студией стоят, тоже как редактор подходит. Спасибо за наводку, как-то не подумал что в других программах тоже библиотеки можно подключить

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

Ваши права

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