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

Страница 14 из 30 ПерваяПервая ... 410111213141516171824 ... КрайняяКрайняя
Показано с 326 по 350 из 789

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    вот так попробуйте:
    System.Console.WriteLine("bla-bla-bla");
    ээ. елки, самый очевидный вариант, и даже не подумал за него... Тем более такое есть в скриптах к родным кампаниям.

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    вот так попробуйте:
    System.Console.WriteLine("bla-bla-bla");
    Kodiak попробовал. В консоль написало, но его не кикнуло. Как правильно это сделать?

    Nothing special, just for testing i tried (Tester was 30sec delay Trigger) :

    public override void OnTrigger(int missionNumber, string shortName, bool active)
    {
    base.OnTrigger(missionNumber, shortName, active);

    if ("Tester".Equals(shortName) && active)
    {

    System.Console.WriteLine("kick Kodiak");
    }
    }
    I also tried "\r\n" and "\n". I get the message kick Kodiak in console, thats all
    So the simply way doesn't exist
    http://forum.1cpublishing.eu/showpos...46&postcount=7
    ...зелёные горят.
    ----------------------

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

  3. #3

    Re: Вопросы.

    Я, конечно не эксперт... Но, по-моему, console.writeline тут нам не поможет
    Это вывод в stdout, а нам нужна запись в stdin, если я правильно понимаю задачу
    Нужно искать класс и метод, который обрабатывает input в консоли сервера и в него передавать строку "kick Kodiak"...

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

    Re: Вопросы.

    Нам поможет только naryv
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Как можно узнать к какой строке скрипта относится ошибка
    Код:
    [22:43:03]    =================================================
    [22:43:03]    System.NullReferenceException: Object reference not set to an instance of an object.
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.JKbi78CdjsN(X2gm2Hr3Eswyj0blEYg , Boolean , String , String , String , String , Tuple3f , Tuple3f , Tuple3f , Single )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.YBOi7ZxcXEW(D9b3NxnuyuLyLO34x8C )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.oN0isvENAcV(D9b3NxnuyuLyLO34x8C , Boolean )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.N5risyW927P(D9b3NxnuyuLyLO34x8C )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.netInput(D9b3NxnuyuLyLO34x8C )
    [22:43:03]       at 4oJSpAkF4ydQeQ505nZ.FBRfvmkapO7g2DdMggm.c48QfoHY4L2(Object )
    [22:43:03]       at NCas604dIJxONptaMSB.Dyj7wo4KItdTK2rJaTL.RWkX76dcAE(Object )
    [22:43:03]    =================================================
    Каким образом их расшифровывать самостоятельно?
    ...зелёные горят.
    ----------------------

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

  6. #6

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Как можно узнать к какой строке скрипта относится ошибка
    Код:
    [22:43:03]    =================================================
    [22:43:03]    System.NullReferenceException: Object reference not set to an instance of an object.
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.JKbi78CdjsN(X2gm2Hr3Eswyj0blEYg , Boolean , String , String , String , String , Tuple3f , Tuple3f , Tuple3f , Single )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.YBOi7ZxcXEW(D9b3NxnuyuLyLO34x8C )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.oN0isvENAcV(D9b3NxnuyuLyLO34x8C , Boolean )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.N5risyW927P(D9b3NxnuyuLyLO34x8C )
    [22:43:03]       at R91QoZjZ7ddcPNI42YN.CT4GbdjmtXCCwbuMTmW.netInput(D9b3NxnuyuLyLO34x8C )
    [22:43:03]       at 4oJSpAkF4ydQeQ505nZ.FBRfvmkapO7g2DdMggm.c48QfoHY4L2(Object )
    [22:43:03]       at NCas604dIJxONptaMSB.Dyj7wo4KItdTK2rJaTL.RWkX76dcAE(Object )
    [22:43:03]    =================================================
    Каким образом их расшифровывать самостоятельно?
    Никак. Не факт, что это в скрипте. Такой ошибке стабильно предшествует появление нового самолета. Т.е. после самого появления - не всегда, а перед этой ошибкой - всегда. По крайней мере в чат уходит что-то вроде "Новая красная/синяя группа появилась".

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

    Цитата Сообщение от Dr. Lamov Посмотреть сообщение
    Я, конечно не эксперт... Но, по-моему, console.writeline тут нам не поможет
    Это вывод в stdout, а нам нужна запись в stdin, если я правильно понимаю задачу
    Нужно искать класс и метод, который обрабатывает input в консоли сервера и в него передавать строку "kick Kodiak"...
    Похоже именно так. В общем внешнюю утилитку сделаю.

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

    Re: Вопросы.

    А скрипт из консоли может читать? Например, переменные скрипта менять-какие-либо было бы полезно для отладки.
    Код:
    string line = System.Console.ReadLine();
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Подскажите, как не напортачить.
    Как проверить несколько триггеров в одном цикле OnTrigger?

    Если обе проверки вложить во все циклы и расположить подряд, их как-то разделять нужно, например
    if();
    if else ();
    else {};
    break;

    Или просто подряд перечислить?
    if();
    if();
    if();
    break;

    Или сделать отдельно 3 цикла проверок,
    if( циклы )
    if( циклы )
    if( циклы )

    Код:
           for (int j = 1; j < 3 ; j++) // Army
            {   for (int i = 0; i < attackSector.Length ; i++) 
                {   for (int k = 0; k < Submission1.Length ; k++)
                    {
                        // air missions
                        string str =  (j).ToString() + "_" + attackSector[i].ToString() + "_air"  + (k).ToString() ; // + missionType[0].ToString()
                        if (str.Equals(shortName1))                  
                        {      
                        }
    
                        // ground missions
                        if (str.Equals(shortName2))                  
                        {      
                        }
    
                        // sea missions
                        if (str.Equals(shortName3))                  
                        {      
                        }
    
                        break;
                        }
                    }
                }
            }
    Так будет работать? (это 2й вариант).

    Еще более важный вопрос, что происходит, если в процессе перебора цикла срабатывает новый триггер и начинается новый перебор. Оба перебора отработатся последовательно и корректно? В "танковых битвах" возрождение по тригеру работало несколько раз, но потом танки переставали рождаться по какой-то причине.

    break; кстати правильно используется?
    ...зелёные горят.
    ----------------------

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

  9. #9

    Re: Вопросы.

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

    Break означает выход из цикла, использовать его надо, если цикл больше не нужен. Например, найдено искомое совпадение и ясно, что больше совпадений не будет.
    Выбор варианта зависит от того, что хотите получить на выходе, так сказать, что какой-то из них неправильный, нельзя.

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

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

    Re: Вопросы.

    Спасибо за просвещение.

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

    (я убежал, сервер лежит до сих пор без стима)
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    У меня продолжается взаимная нелюбовь с триггерами.

    Есть 2 подмиссии:

    1_E3_air0.mis , 1_E3_air1.mis
    2я получена путем копирования 1й с изменением самолета с Веллингтона на Бленим. Название группы соответственно осталось прежним.

    В подмиссиях есть треиггеры на пролет группы 1_E3_air и 1_E3_air. Сейчас одинаковые, но перед этим пробовал перебирать и триггеры 1_E3_air0 и 1_E3_air1 в цикле с таким же результатом. Триггер создавался в 1й подмиссии, затем копировался во 2ю в блокноте.
    1_E3_air TPassThrough 1 gb02.07 53073 33421 2000
    1_E3_air TPassThrough 1 gb02.07 53073 33421 2000

    В результате при пролете группы из 1й подмиссии триггер не срабатыват ни разу. При пролете группы из 2й подмиссии триггер срабатывает 2-5 раз (на каждый самолет?).

    Вопросы: почему 1й триггер не срабатывает?
    В каких случаях нужна проверка // && active) ?
    В каких случаях добавлять //GamePlay.gpGetTrigger(shortName).Enable = false; ?
    Как убрать повторные срабатывания?
    Могут ли все триггеры подмиссий иметь одинаковые названия?
    При копировании файла миссии нужно ли изменять название группы, чтобы оно было уникальным?
    Если включить все триггеры только в миссию-хост, будут ли они срабатывать при пролете групп из подмиссий?

    Код:
           public override void OnTrigger(int missionNumber, string shortName, bool active)   
            {   base.OnTrigger(missionNumber, shortName, active);
    
    
            string[] attackSector = { "C5", "D4", "E3" };           // sectors attacked 
    
            // air missions
            #region air missions 
            
           string currMissType = "air";
    
                for (int j = 1; j < 3 ; j++) // Army
                {   
                    for (int i = 0; i < attackSector.Length ; i++)
                    {
                        string str = (j).ToString() + "_" + attackSector[i].ToString() + "_" + currMissType; // +k.ToString(); // + missionType[1].ToString() //string str = i.ToString() + "_" + (j).ToString() + "_gg";
    // && active) нужно?
                            if (str.Equals(shortName)) // && active)    нужно?      // test      
                            {                      
                               sendChatMessageTo(-1, str , null);                   // test msg
                            
                               if (j == 1) // red win
                                {
                                   currBonusLoss = allowed109s - min109s;
                                   if (currBonusLoss < 1) currBonusLoss++;
    
                                   allowed109s = min109s;
                                   ScoreRed += 1;
    
                                    sendScreenMessageTo(-1, new string[] { "ru" }, "The Allies bombed the Axis' airfield! Limit of available Bf-109E4 is reduced by {0}!", new object[] { currBonusLoss });
                                   sendScreenMessageTo(-1, "Красные разбомбили синий аэродром! Лимит доступных Bf-109E4 снижен на {0}!", new object[] { currBonusLoss });
                                   sendChatMessageTo(-1, new string[] { "ru" }, "The Allies bombed the Axis' airfield! Limit of available Bf-109E4 is reduced by {0}!", new object[] { currBonusLoss });
                                   sendChatMessageTo(-1, "ru", "Красные разбомбили синий аэродром! Лимит доступных Bf-109E4 снижен на {0}!", new object[] { currBonusLoss });
      // testing                             
                                   sendScreenAndChatMessageTo( -1, new object[] { currBonusLoss },
                                       "Testing! sendScreenAndChatMessageTo Bf-109E4 is reduced by {0}!",
                                       "Тест! sendScreenAndChatMessageTo Bf-109E4 is reduced by {0}!");
    
    
                                }
    
                                else // blue win
                                {
    
                                   allowedSpit2s = minSpit2s;
                                   ScoreBlue += 1;
    
                                   sendScreenMessageTo(-1, new string[] { "ru" }, "The Axis bombed the Allies' airfield! Limit of available Spitfire IIa  is reduced by {0}!", new object[] { currBonusLoss });
                                   sendScreenMessageTo(-1, "Синие разбомбили красный аэродром! Лимит доступных Spitfire IIa снижен на {0}!", new object[] { currBonusLoss });
                                   sendChatMessageTo(-1, new string[] { "ru" }, "The Axis bombed the Allies' airfield! Limit of available Spitfire IIa  is reduced by {0}!", new object[] { currBonusLoss });
                                   sendChatMessageTo(-1, "ru", "Синие разбомбили красный аэродром! Лимит доступных Spitfire IIa снижен на {0}!", new object[] { currBonusLoss }); 
    
                                }
    // это нужно?
                               //GamePlay.gpGetTrigger(shortName).Enable = false;   
    
                               break;
                            }
    
                }
            }
            #endregion    
    }
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    В миссии для онлайна можно сделать так, чтобы одни спауны были старт с аэродрома, а другие в воздухе?

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

    Re: Вопросы.

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

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Да, высота спауна задается отдельно для каждого.
    Спасибо.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    Чувствую назревает высадка в Нормандии на планерах .
    Нет, хочу тренировочную миссию на скриптах сделать (через меню можно было выбрать задание), в которую можно будет онлайн полетать.

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

    А ограничить вооружение на спауне возможно как-то?

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

    Re: Вопросы.

    Цитата Сообщение от andersbravers Посмотреть сообщение
    А в свойствах спауна разве нет? Там где самолеты закидываешь. Чето не помню уже. Кстати, твою миссию на Хеше еще не пробовал.
    Я ни разу еще спауны не использовал, хочу подготовиться заранее )
    В той миссии ничего особенного, сделано наспех, только городок мне очень понравился. Хочу отделить обЪекты по разным подмиссиям, чтобы проще было редактировать. Постараюсь сделать две версия города для синих и красных

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

    Re: Вопросы.

    В коллекции скриптов от Атаса есть такой скрипт от naryv для использования меню:

    Код:
    using System;
    using System.Collections;
    using maddox.game;
    using maddox.game.world;
    
    public class Mission : AMission {
    
      private void setMainMenu( Player player ) {
        GamePlay.gpSetOrderMissionMenu( player, false, 0, new string[] { "1", "2", "3" }, new bool[] { true, false, false } );
      }
      private void setSubMenu( Player player ) {
        GamePlay.gpSetOrderMissionMenu( player, true, 1, new string[] { "1-1", "1-2", "1-3" }, new bool[] { false, false, false } );
      }
    
      public override void OnOrderMissionMenuSelected( Player player, int ID, int menuItemIndex ) {
        if( ID == 0 ) { // main menu
          if( menuItemIndex == 1 ) {
              GamePlay.gpHUDLogCenter("Menu selected Loading mission aaa2.mis");
              GamePlay.gpPostMissionLoad("missions\\aaa2.mis");
              setSubMenu( player );
          }
        } else if( ID == 1 ) { // sub menu
          setMainMenu( player );
        }
      }
    
      public override void OnPlayerConnected( Player player ) {
        if( MissionNumber == 0 ) {
          setMainMenu( player );
        }
      }
    
      public override void Inited() {
        if( MissionNumber == 0 ) {
          setMainMenu(GamePlay.gpPlayer());
        }
      }
    }
    Попробовал к онлайн-миссии прикрутить, вызов скрипта из хоста. Tab 4 не реагирует на нажатие (скорее всего из-за второго параметра false). Интересует формат команд.

    1.
    Код:
     GamePlay.gpSetOrderMissionMenu( player, false, 0, new string[] { "1", "2", "3" }, new bool[] { true, false, false } );
    1,2,3 - это текст пунктов меню как я понял. Что значит "new bool" - зависит отображается пункт или нет?

    2. Зачем нужнаа проверка if( MissionNumber == 0 ) точнее как этот номер узнать или задать?

    3. MainMenu - это меню, которое вызывается по Tab+4?
    SubMenu - вложенных меню может быть сколько угодно уровней?

    4. Для онлайна этот скрипт подходит?

    5. Несколько раз встречал такую строчку:
    Код:
    List<string> CarTypes = new List<string>();
    Это класс используемый вместо массива, какое преимущество он дает?
    Крайний раз редактировалось podvoxx; 26.10.2011 в 10:59.

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    В коллекции скриптов от Атаса есть такой скрипт от naryv для использования меню:

    Код:
    using System;
    using System.Collections;
    using maddox.game;
    using maddox.game.world;
    
    public class Mission : AMission {
    
      private void setMainMenu( Player player ) {
        GamePlay.gpSetOrderMissionMenu( player, false, 0, new string[] { "1", "2", "3" }, new bool[] { true, false, false } );
      }
      private void setSubMenu( Player player ) {
        GamePlay.gpSetOrderMissionMenu( player, true, 1, new string[] { "1-1", "1-2", "1-3" }, new bool[] { false, false, false } );
      }
    
      public override void OnOrderMissionMenuSelected( Player player, int ID, int menuItemIndex ) {
        if( ID == 0 ) { // main menu
          if( menuItemIndex == 1 ) {
              GamePlay.gpHUDLogCenter("Menu selected Loading mission aaa2.mis");
              GamePlay.gpPostMissionLoad("missions\\aaa2.mis");
              setSubMenu( player );
          }
        } else if( ID == 1 ) { // sub menu
          setMainMenu( player );
        }
      }
    
      public override void OnPlayerConnected( Player player ) {
        if( MissionNumber == 0 ) {
          setMainMenu( player );
        }
      }
    
      public override void Inited() {
        if( MissionNumber == 0 ) {
          setMainMenu(GamePlay.gpPlayer());
        }
      }
    }
    Попробовал к онлайн-миссии прикрутить, вызов скрипта из хоста. Tab 4 не реагирует на нажатие (скорее всего из-за второго параметра false).
    вот, пример кооп-миссии онлайновой с выбором места в самолёте из меню http://www.sukhoi.ru/forum/showthrea...=1#post1716159
    Цитата Сообщение от podvoxx Посмотреть сообщение
    Интересует формат команд.

    1.
    Код:
     GamePlay.gpSetOrderMissionMenu( player, false, 0, new string[] { "1", "2", "3" }, new bool[] { true, false, false } );
    1,2,3 - это текст пунктов меню как я понял. Что значит "new bool" - зависит отображается пункт или нет?
    gpSetOrderMissionMenu( Player player, bool thisSubMenu, int ID, string[] keys, bool[] bSubMenu ); параметры :
    Player player - игрок которому выдаётся кастомное меню
    bool thisSubMenu - является ли данный набор пунктов подменю
    int ID - ID пункта по которому его можно идентифицировать
    string[] keys массив строк-пунктов меню
    bool[] bSubMenu массив bool показывающий есть ли у каждого пункта подменю

    Цитата Сообщение от podvoxx Посмотреть сообщение
    2. Зачем нужнаа проверка if( MissionNumber == 0 ) точнее как этот номер узнать или задать?
    MissionNumber это номер миссии, по умолчанию, каждый скрипт работает только в "своей" миссии, задаётся номер автоматически при подгрузке миссии в битву. Чтобы скрипт "слушал" другие миссии надо задать MissionNumberListener с номером желаемой миссии, или MissionNumberListener= -1, чтобы работать со всеми объектами в битве.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    3. MainMenu - это меню, которое вызывается по Tab+4?
    SubMenu - вложенных меню может быть сколько угодно уровней?
    да, и практически да(несколько десятков уровней вложения тестировали, теоретически сколько угодно можно)

    Цитата Сообщение от podvoxx Посмотреть сообщение
    4. Для онлайна этот скрипт подходит?
    должен, по идее.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    5. Несколько раз встречал такую строчку:
    Код:
    List<string> CarTypes = new List<string>();
    Это класс используемый вместо массива, какое преимущество он дает?
    с List-ом по-моему удобнее и проще работать, легко добавлять, искать значения, размер не надо задавать и тд
    Don't happy, be worry

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

    Re: Вопросы.

    Спасибо, теперь более понятно.

    Еще вопрос, вот такая записья является правильной?

    Код:
    //Параметры меню
    string[] descMainMenu;    //Описание пунктов главного меню
    descMainMenu = new string[] { "Тест системы сообщений", "Конвои" };
    
    private void setMainMenu( Player player )
        {
            GamePlay.gpSetOrderMissionMenu( player, true, 0, descMainMenu, new bool[] { false, true } );
        }

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Спасибо, теперь более понятно.

    Еще вопрос, вот такая записья является правильной?

    Код:
    //Параметры меню
    string[] descMainMenu;    //Описание пунктов главного меню
    descMainMenu = new string[] { "Тест системы сообщений", "Конвои" };
    
    private void setMainMenu( Player player )
        {
            GamePlay.gpSetOrderMissionMenu( player, true, 0, descMainMenu, new bool[] { false, true } );
        }
    не совсем - с 0 ID (самый первый уровень вложения) не считается подменю , надо так -GamePlay.gpSetOrderMissionMenu( player, false, 0, descMainMenu, new bool[] { false, true });
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    не совсем - с 0 ID (самый первый уровень вложения) не считается подменю , надо так -GamePlay.gpSetOrderMissionMenu( player, false, 0, descMainMenu, new bool[] { false, true });
    Ясно. А вариант с list так будет выглядеть?:

    Код:
        List<string> descMainMenu = new List<string>();
        descMainMenu.Add("Тест системы сообщений");
        descMainMenu.Add("Конвои");
    
        private void setMainMenu( Player player )
        {
            GamePlay.gpSetOrderMissionMenu( player, false, 0, descMainMenu, new bool[] { false, true } );
        }

  21. #21

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Ясно. А вариант с list так будет выглядеть?:

    Код:
        List<string> descMainMenu = new List<string>();
        descMainMenu.Add("Тест системы сообщений");
        descMainMenu.Add("Конвои");
    
        private void setMainMenu( Player player )
        {
            GamePlay.gpSetOrderMissionMenu( player, false, 0, descMainMenu, new bool[] { false, true } );
        }
    GamePlay.gpSetOrderMissionMenu( player, false, 0, descMainMenu.ToArray(), new bool[] { false, true } );

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

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    GamePlay.gpSetOrderMissionMenu( player, false, 0, descMainMenu.ToArray(), new bool[] { false, true } );
    Спасибо за преобразование в массив

    Еще вопрос. Есть загруженная подмиссия с неизвестным номером. Как удалить все юниты именно этой подмиссией не перебирая в циклах всю наземку? Или может быть просто можно подмиссию выгрузить?
    Крайний раз редактировалось podvoxx; 26.10.2011 в 13:34.

  23. #23

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Спасибо за преобразование в массив

    Еще вопрос. Есть загруженная подмиссия с неизвестным номером. Как удалить все юниты именно этой подмиссией не перебирая в циклах всю наземку? Или может быть просто можно подмиссию выгрузить?
    Никак.
    Что бы миссия не была неизвестной, надо перед ее загрузкой запомнить след. номер (NextMissionNumber или как то так).
    Частичное решение состоит в переборе наземных и воздушных групп для всех представленных армий и сверке запомненного номера миссии с номером, заключенном в полном имени юнита (формат примерно такое - номер миссии, двоеточие, shortName). Полное имя получается через AiActor.Name().
    Почему частичное? Перебором групп ты не найдешь юнитов, которые групп не имеют (артиллерия и стат. корабли как минимум), т.е. по OnActorCreated надо еще и их запоминать. Похожее решение используется в морском льве.
    Домики, ящички и все что в разделе статический и т.д. не удалишь вообще никак.

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

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

    Re: Вопросы.

    Решено, работает прекрасно
    1. С меню разобрался, остались брошенные самолеты. Такой код, если его добавить в хост миссию будет выполнять свою работу в онлайн? Или еще что-то нужно добавить?
    2. Если загрузить отдельным скриптом будет работать?

    Код:
        //Удаление покинутых самолетов
        public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
        {
            base.OnPlaceLeave(player, actor, placeIndex);
            Timeout(5, () =>
            {
                AiAircraft CurAircraft = player.Place() as AiAircraft;
                AiAircraft PrevAircraft = actor as AiAircraft;
                if (CurAircraft != PrevAircraft)   
                    {(actor as AiAircraft).Destroy();} 
            });
        }
    
        //Удаление разбившихся самолетов
        public override void OnAircraftCrashLanded(int missionNumber, string shortName, AiAircraft aircraft)
        {
            base.OnAircraftCrashLanded(missionNumber, shortName, aircraft);
            Timeout(10, () =>
            { destroyPlane(aircraft); } 
            );
        }
    
        //Удаление приземлившихся самолетов
        public override void OnAircraftLanded(int missionNumber, string shortName, AiAircraft aircraft)
        {
            base.OnAircraftLanded(missionNumber, shortName, aircraft);
            Timeout(10, () =>
            { destroyPlane(aircraft); }
            );
        }
    3. Неактуально

    Решено
    4. Как правильно использовать list<> в скриптах? Если делать по msdn выдает ошибки

    5. Как получить ник игрока в онлайне, чтобы отправить в чат сервера?
    6-7. Неактуально
    Крайний раз редактировалось podvoxx; 07.11.2011 в 09:35.

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

    Re: Вопросы.

    8. Такой вопрос. В методе OnBattleStarted вызывается подмиссия с конвоем движущихся кораблей. При старте выделенного сервера и появлении первого игрока на аэродроме (не в воздухе) корабли стоят на месте и не двигаются, возможно другая техника тоже в спящем режиме. При появлении в воздухе/взлете процесс движения начинается. С чем это связано?

Страница 14 из 30 ПерваяПервая ... 410111213141516171824 ... КрайняяКрайняя

Ваши права

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