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

Страница 28 из 32 ПерваяПервая ... 18242526272829303132 КрайняяКрайняя
Показано с 676 по 700 из 789

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

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

    Re: Вопросы.

    Спасибо, информация по параметрам очень пригодится.
    Еще параметр видел, но пока не проверял - I_Time. Это время на часах в кабине должно быть?

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Спасибо, информация по параметрам очень пригодится.
    Еще параметр видел, но пока не проверял - I_Time. Это время на часах в кабине должно быть?
    I_Time нет, есть I_Timer - часы и секундомер:
    Код:
    /// <summary>
            /// [Inst: Timer]
            /// <para>Returns timer reading.</para>
            /// <para>Generic subtype (-1) shows clock / time of day, hours, [0.0, 24.0);</para>
            /// <para>Subtype 0 shows stopwatch reading, seconds.</para>
            /// </summary>
            I_Timer
    ещё время получить можно так - GamePlay.gpTimeofDay();
    Don't happy, be worry

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

    Re: Вопросы.

    1. Снова вопрос по GamePlay.gpNextMissionNumber(), намучался я тут с ним.
    При вот таком применении выдает номер подмиссии 0. Почему так может быть? До этого -1 было получается? Почему не 1?

    Код:
    public override void Inited()
        {
            SendMessage.ToServer("[TEST] Номер подмиссии - [{0}]", GamePlay.gpNextMissionNumber());
            GamePlay.gpPostMissionLoad("missions\\SMP\\Battle\\submission\\destroyAI.mis");
           
        }
    Задача была в методе OnActorCreated сохранить все созданные акторы в заранее созданные списки. Актор добавляется в список только если номер подмиссии совпадает с тем, что получен при помощи GamePlay.gpNextMissionNumber(). Потом этими списками легко управлять: удалять акторы, заново создавать и т.п.
    Далее необходимо было удалить все созданные акторы из одного из таких списков, создать новые и также добавить по номеру подмиссии в этот же список. Аналогично третья чистка/замена
    В игре выглядит так - город сначала имеет обычное зенитное прикрытие. Как только его выбирают для штурма - все зенитки удаляются и загружается усиленный набор зениток. Штурм закончился, снова загрузился первоначальный набор зениток. Это работает и вполне нормально.
    Однако сначала я не заметил баг, но потом попались на глаза зенитки синие и красные в одной точке, так как удаление акторов не происходило из-за неправильно определенного номера подмиссии. Разница была в единицу.
    - Т.е. первая загрузка зениток - номер определен неверно, на единицу меньше
    - Вторая и третья, уже во время миссии - номер в GamePlay.gpNextMissionNumber() верный

    Тут еще особенность, точнее две. В миссии используется наследование от миссии командера. И вторая - первоначально загрузка зениток происходила до Inited(), примерно так:

    Код:
    public class Mission : RSTMission
    {
        MissionBOR Data = MissionBOR.GetInstance; // Get MissionSMP class
        public override void Inited()
        {
            SendMessage.ToServer("[TEST] Номер подмиссии - [{0}]", GamePlay.gpNextMissionNumber());
            GamePlay.gpPostMissionLoad("missions\\SMP\\Battle\\submission\\destroyAI.mis");
           
        }
    }
    В этом Data в методе создания зениток правильный номер подмиссии определялся только если прибавить к нему единицу(так как на этот момент GamePlay.gpNextMissionNumber() равен нулю, т.е. номеру хост-миссии):

    Код:
    public void SetAAA()
            {
                AAAMisNumber = GamePlay.gpNextMissionNumber() + 1;
                SMPLibrary.LoadSubmission(BORLibrary.CreateAAArtilleryByTemplate(mapFile, this.Army, 0.2));
                SendMessage.ToServer("[SERVER]: Номер подмиссии ААА гарнизона [{0}] - [{1}]", Name, AAAMisNumber);
            }
    Однако если потом в методе OnTickGame(к примеру) удалить акторы-зенитки и создать новые методом SetAAA(), то к номеру подмиссии уже не нужно прибавлять единицу, а если прибавить - то новые акторы не попадут в список через метод OnActorCreated

    Код:
    public void SetAAA()
            {
                AAAMisNumber = GamePlay.gpNextMissionNumber();
                SMPLibrary.LoadSubmission(BORLibrary.CreateAAArtilleryByTemplate(mapFile, this.Army, 0.2));
            }
    Позже я вынес первое создание акторов в OnTickGame, номера стали совпадать.

    Т.е. сейчас так выглядит:
    Код:
    [15:19:09]	35>difficulty Vulnerability 1
    [15:19:09]	36>difficulty WindTurbulence 1
    [15:19:09]	37>missLoad missions\SMP\Battle\battle.mis
    [15:19:19]	38>[15:19:19]	Loading mission ...
    [15:19:19]	Server to [Server]: ......................
    [15:19:19]	Server to [Server]: [SERVER]: Инициализация миссии...ok
    [15:19:20]	Server to [Server]: [SERVER]: Load hostmission: Battle.mis
    [15:19:20]	Server to [Server]: [TEST] Номер подмиссии - [0]
    [15:19:20]	Load landscape...
    [15:19:22]	Load bridges
    [15:19:22]	LongBridge: wrong width. (3)
    [15:19:24]	Load static objects...
    [15:19:25]	Mission loaded. time = 5,933
    [15:19:25]	Loading mission ...
    [15:19:25]	Server to [Server]: [SERVER]: Load submission: destroyAI.mis
    [15:19:25]	Server to [Server]: [TEST]: ЗАГРУЖЕНА МИССИЯ # [1]
    Выходит до загрузки хостмиссии номер подмиссии на единицу меньше определяется?
    2. Вопрос по линии фронта. Сейчас она черная, это будет правиться?

    3. Постоянно сообщают о взрывах на аэродромах в некоторых ангарах. Имеет ли смысл собрать информацию о таких ангарах?

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    1. Снова вопрос по GamePlay.gpNextMissionNumber(), намучался я тут с ним.
    При вот таком применении выдает номер подмиссии 0. Почему так может быть? До этого -1 было получается? Почему не 1?

    Код:
    public override void Inited()
        {
            SendMessage.ToServer("[TEST] Номер подмиссии - [{0}]", GamePlay.gpNextMissionNumber());
            GamePlay.gpPostMissionLoad("missions\\SMP\\Battle\\submission\\destroyAI.mis");
           
        }
    Inited() вызывается до загрузки хост миссии, поэтому gpNextMissionNumber() - показывает 0, это номер хост миссии будет.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    Задача была в методе OnActorCreated сохранить все созданные акторы в заранее созданные списки. Актор добавляется в список только если номер подмиссии совпадает с тем, что получен при помощи GamePlay.gpNextMissionNumber(). Потом этими списками легко управлять: удалять акторы, заново создавать и т.п.
    Далее необходимо было удалить все созданные акторы из одного из таких списков, создать новые и также добавить по номеру подмиссии в этот же список. Аналогично третья чистка/замена
    В игре выглядит так - город сначала имеет обычное зенитное прикрытие. Как только его выбирают для штурма - все зенитки удаляются и загружается усиленный набор зениток. Штурм закончился, снова загрузился первоначальный набор зениток. Это работает и вполне нормально.
    Однако сначала я не заметил баг, но потом попались на глаза зенитки синие и красные в одной точке, так как удаление акторов не происходило из-за неправильно определенного номера подмиссии. Разница была в единицу.
    - Т.е. первая загрузка зениток - номер определен неверно, на единицу меньше
    - Вторая и третья, уже во время миссии - номер в GamePlay.gpNextMissionNumber() верный

    Тут еще особенность, точнее две. В миссии используется наследование от миссии командера. И вторая - первоначально загрузка зениток происходила до Inited(), примерно так:

    Код:
    public class Mission : RSTMission
    {
        MissionBOR Data = MissionBOR.GetInstance; // Get MissionSMP class
        public override void Inited()
        {
            SendMessage.ToServer("[TEST] Номер подмиссии - [{0}]", GamePlay.gpNextMissionNumber());
            GamePlay.gpPostMissionLoad("missions\\SMP\\Battle\\submission\\destroyAI.mis");
           
        }
    }
    В этом Data в методе создания зениток правильный номер подмиссии определялся только если прибавить к нему единицу(так как на этот момент GamePlay.gpNextMissionNumber() равен нулю, т.е. номеру хост-миссии):

    Код:
    public void SetAAA()
            {
                AAAMisNumber = GamePlay.gpNextMissionNumber() + 1;
                SMPLibrary.LoadSubmission(BORLibrary.CreateAAArtilleryByTemplate(mapFile, this.Army, 0.2));
                SendMessage.ToServer("[SERVER]: Номер подмиссии ААА гарнизона [{0}] - [{1}]", Name, AAAMisNumber);
            }
    Однако если потом в методе OnTickGame(к примеру) удалить акторы-зенитки и создать новые методом SetAAA(), то к номеру подмиссии уже не нужно прибавлять единицу, а если прибавить - то новые акторы не попадут в список через метод OnActorCreated

    Код:
    public void SetAAA()
            {
                AAAMisNumber = GamePlay.gpNextMissionNumber();
                SMPLibrary.LoadSubmission(BORLibrary.CreateAAArtilleryByTemplate(mapFile, this.Army, 0.2));
            }
    Позже я вынес первое создание акторов в OnTickGame, номера стали совпадать.

    Т.е. сейчас так выглядит:
    Код:
    [15:19:09]	35>difficulty Vulnerability 1
    [15:19:09]	36>difficulty WindTurbulence 1
    [15:19:09]	37>missLoad missions\SMP\Battle\battle.mis
    [15:19:19]	38>[15:19:19]	Loading mission ...
    [15:19:19]	Server to [Server]: ......................
    [15:19:19]	Server to [Server]: [SERVER]: Инициализация миссии...ok
    [15:19:20]	Server to [Server]: [SERVER]: Load hostmission: Battle.mis
    [15:19:20]	Server to [Server]: [TEST] Номер подмиссии - [0]
    [15:19:20]	Load landscape...
    [15:19:22]	Load bridges
    [15:19:22]	LongBridge: wrong width. (3)
    [15:19:24]	Load static objects...
    [15:19:25]	Mission loaded. time = 5,933
    [15:19:25]	Loading mission ...
    [15:19:25]	Server to [Server]: [SERVER]: Load submission: destroyAI.mis
    [15:19:25]	Server to [Server]: [TEST]: ЗАГРУЖЕНА МИССИЯ # [1]
    Выходит до загрузки хостмиссии номер подмиссии на единицу меньше определяется?
    до загрузки 0-й миссии gpNextMissionNumber() будет показывать 0 (см. лог -
    [15:19:09] 37>missLoad missions\SMP\Battle\battle.mis
    [15:19:19] 38>[15:19:19] Loading mission ... - миссия начала загружаться
    [15:19:20] Server to [Server]: [TEST] Номер подмиссии - [0] - она ещё не загружена, миссий в битве ещзё нет, gpNextMissionNumber() показывает 0
    [15:19:25] Mission loaded. time = 5,933 а вот тут она уже загрузилась, в битве есть миссия, gpNextMissionNumber() покажет 1),и я очень бы не советовал загружать какие-то подмиссии до старта основной, лучше это сделать хотя-бы в OnBattleStarted().

    Цитата Сообщение от podvoxx Посмотреть сообщение
    2. Вопрос по линии фронта. Сейчас она черная, это будет правиться?
    думаю да.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    3. Постоянно сообщают о взрывах на аэродромах в некоторых ангарах. Имеет ли смысл собрать информацию о таких ангарах?
    ну наверное да.
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    и я очень бы не советовал загружать какие-то подмиссии до старта основной, лучше это сделать хотя-бы в OnBattleStarted().
    Ясно, просто если грузить из OnBattleStarted, то там у меня не получалось в подмиссиях получать события по убитым акторам, т.е. подмиссия в таком случае "не видит" остальные миссии. Хотя надо будет еще проверить.

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Ясно, просто если грузить из OnBattleStarted, то там у меня не получалось в подмиссиях получать события по убитым акторам, т.е. подмиссия в таком случае "не видит" остальные миссии. Хотя надо будет еще проверить.
    Код:
    public override void OnBattleStarted()
        {
            base.OnBattleStarted();
            MissionNumberListener = -1;
        }
    а после этого уже грузить. Но в Inited-е грузить точно не стоит - может абсолютно не корректно работать.

    PS а ещё - зачем 400 точек линии фронта ставить - она прокладывается как среднее между соседними маркерами разных цветов. Может проще в центре миссионных районов ставить по флажку соответствующего цвета ?
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    PS а ещё - зачем 400 точек линии фронта ставить - она прокладывается как среднее между соседними маркерами разных цветов. Может проще в центре миссионных районов ставить по флажку соответствующего цвета ?
    Там нужна точная граница, иначе аэродромы и дороги могут попасть на чужую территорию. Т.е. чтобы соответствовало нарисованной карте, а не наоборот

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Там нужна точная граница, иначе аэродромы и дороги могут попасть на чужую территорию. Т.е. чтобы соответствовало нарисованной карте, а не наоборот
    ну на аэродромах тоже флажки поставить а дороги наверное не так важно на чьей территории, хотя если важно - можно, конечно и так
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Процитирую сам себя, и отсюда вопрос - интересно, что команды вроде chat и battle stopped в такой конструкции проходят, но команда kick [player_name] - нет. Это принудительно так сделали или баг какой-то?
    В такой конструкции работают дополнительные команды, их 5 штук - "?","help", "battle", "missLoad","record" , чтобы использовать kick и другие основные команды надо вот такую конструкцию использовать :
    Код:
    if( !gameServerDef.consoleInput(command))   // выполнит если команда из доп. списка, в противном случае вернёт false и тогда - 
        gameServerDef.game.CmdExec(command)// должно выполнить основную команду
    Don't happy, be worry

  10. #685

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    В такой конструкции работают дополнительные команды, их 5 штук - "?","help", "battle", "missLoad","record" , чтобы использовать kick и другие основные команды надо вот такую конструкцию использовать :
    Код:
    if( !gameServerDef.consoleInput(command))   // выполнит если команда из доп. списка, в противном случае вернёт false и тогда - 
        gameServerDef.game.CmdExec(command)// должно выполнить основную команду
    Спасибо, но с game у меня связана проблема такого плана - любая попытка обращения к нему из скрипта миссии вызывает ошибку. Что-то связанное с сериализацией. Вечером воспроизведу и точнее скажу. Аналогичная ситуация, если подсовывать свою strategy.dll, и пытаться то же самое из нее сделать.
    Единственное, как работает - если подсовывать свой серверный аддин (по аналогии с синглом), и запускать ее из интерфейса игры. Там даже срабатывает активация аддина (по крайней мере событие активации приходит). А вот как то же самое сделать для выделенного сервера пока не допер.
    Пока эту проблему правда (именно с командой сервера) тупо обошел - сначала команда уходит коммандеру, а он уже непосредственно в консоль ее транслирует.
    И никак не получается разобрать, как работают консольные команды admin и secure.

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

    Re: Вопросы.

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

    UPD. Можно попробовать поиграть ключём scriptAppDomain в секции [rts] confs.ini:
    [rts]
    scriptAppDomain=0
    0 или 1 возможные значения, может быть ошибка уйдёт.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    И никак не получается разобрать, как работают консольные команды admin и secure.
    Завтра напомните пожалуйста, попробую уточнить
    Крайний раз редактировалось naryv; 26.09.2012 в 18:12.
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    И никак не получается разобрать, как работают консольные команды admin и secure.
    admin позволяет назначить клиента администратором сервера. Такой клиент-админ может запускать все команды сервера - в консоль сервера их надо писать с приставкой sc перед командой, например "sc battle start" и т.п.

    secure позволяет поставить пароль на, армию, группу или юнит.
    Don't happy, be worry

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    admin позволяет назначить клиента администратором сервера. Такой клиент-админ может запускать все команды сервера - в консоль сервера их надо писать с приставкой sc перед командой, например "sc battle start" и т.п.

    secure позволяет поставить пароль на, армию, группу или юнит.
    Т.е. можно назначить любого игрока админом и он сможет кикать нарушителей? А кроме ника можно как-то иденитифицировать игрока?(в идеале - steamID).

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

    Re: Вопросы.

    Цитата Сообщение от podvoxx Посмотреть сообщение
    Т.е. можно назначить любого игрока админом и он сможет кикать нарушителей?
    да, любой такой игрок может выполнять все серверные команды, как сам сервер.
    Цитата Сообщение от podvoxx Посмотреть сообщение
    А кроме ника можно как-то иденитифицировать игрока?(в идеале - steamID).
    можно пароль поставить, по стимИД - нет, нельзя.
    Don't happy, be worry

  15. #690

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    хорошо, буду ждать уточнение, постараемся исправить.
    Вот такая ошибка

    Скрытый текст:
    Код:
    =================================================
    System.Runtime.Serialization.SerializationException: Type 'XCmHVL2XxNBIYasUAhA.m
    5wJuI2TCJecIAJ6C2k' in assembly 'maddox, Version=1.0.0.0, Culture=neutral, Publi
    cKeyToken=8b6839725e48404f' is not marked as serializable.
    
    Server stack trace:
       at maddox.game.GameServerDef.get_game()
       at maddox.game.world.Strategy.Init(IGamePlay gamePlay) in C:\Users\Small_Bee\
    Documents\Visual Studio 2010\Projects\Strategy\Strategy\Strategy.cs:line 29
       at maddox.game.ScriptRemote.loadBattleScript(String assemblyFileName, IGamePl
    ay gamePlay)
       at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(
    IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInCont
    ext, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMes
    sage msg, Int32 methodPtr, Boolean fExecuteInContext)
    
    Exception rethrown at [0]:
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage req
    Msg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa
    ta, Int32 type)
       at maddox.game.IScriptRemote.loadBattleScript(String assemblyFileName, IGameP
    lay gamePlay)
       at 5gH4oknoo5EY5CgCVcx.0YwoYOnr3vYskAKoCh6.yxDI29fawsP()
    =================================================
    
    =================================================
    System.Runtime.Serialization.SerializationException: Type 'XCmHVL2XxNBIYasUAhA.m
    5wJuI2TCJecIAJ6C2k' in assembly 'maddox, Version=1.0.0.0, Culture=neutral, Publi
    cKeyToken=8b6839725e48404f' is not marked as serializable.
    
    Server stack trace:
       at maddox.game.GameServerDef.get_game()
       at maddox.game.world.Strategy.Init(IGamePlay gamePlay) in C:\Users\Small_Bee\
    Documents\Visual Studio 2010\Projects\Strategy\Strategy\Strategy.cs:line 29
       at maddox.game.ScriptRemote.loadBattleScript(String assemblyFileName, IGamePl
    ay gamePlay)
       at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(
    IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInCont
    ext, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMes
    sage msg, Int32 methodPtr, Boolean fExecuteInContext)
    
    Exception rethrown at [0]:
       at 5gH4oknoo5EY5CgCVcx.0YwoYOnr3vYskAKoCh6.yxDI29fawsP()
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.f3jWCkg4F3(vjbTQEEtEVyjgU6D54J )
    =================================================
    
    =================================================
    System.Runtime.Serialization.SerializationException: Type 'XCmHVL2XxNBIYasUAhA.m
    5wJuI2TCJecIAJ6C2k' in assembly 'maddox, Version=1.0.0.0, Culture=neutral, Publi
    cKeyToken=8b6839725e48404f' is not marked as serializable.
    
    Server stack trace:
       at maddox.game.GameServerDef.get_game()
       at maddox.game.world.Strategy.Init(IGamePlay gamePlay) in C:\Users\Small_Bee\
    Documents\Visual Studio 2010\Projects\Strategy\Strategy\Strategy.cs:line 29
       at maddox.game.ScriptRemote.loadBattleScript(String assemblyFileName, IGamePl
    ay gamePlay)
       at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(
    IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInCont
    ext, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMes
    sage msg, Int32 methodPtr, Boolean fExecuteInContext)
    
    Exception rethrown at [0]:
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.f3jWCkg4F3(vjbTQEEtEVyjgU6D54J )
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.VaIifIGEbs1lvhe8qWB(Object )
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.Yi0WiwFXpL(vjbTQEEtEVyjgU6D54J )
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.EpqW0os9d1(String )
       at XCmHVL2XxNBIYasUAhA.m5wJuI2TCJecIAJ6C2k.MissionLoad(String )
    =================================================
    
    =================================================
    System.Runtime.Serialization.SerializationException: Type 'XCmHVL2XxNBIYasUAhA.m
    5wJuI2TCJecIAJ6C2k' in assembly 'maddox, Version=1.0.0.0, Culture=neutral, Publi
    cKeyToken=8b6839725e48404f' is not marked as serializable.
    
    Server stack trace:
       at maddox.game.GameServerDef.get_game()
       at maddox.game.world.Strategy.Init(IGamePlay gamePlay) in C:\Users\Small_Bee\
    Documents\Visual Studio 2010\Projects\Strategy\Strategy\Strategy.cs:line 29
       at maddox.game.ScriptRemote.loadBattleScript(String assemblyFileName, IGamePl
    ay gamePlay)
       at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(
    IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInCont
    ext, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMes
    sage msg, Int32 methodPtr, Boolean fExecuteInContext)
    
    Exception rethrown at [0]:
       at XCmHVL2XxNBIYasUAhA.m5wJuI2TCJecIAJ6C2k.MissionLoad(String )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.DNgTRJ0qZgs(gPJU6kIZ4shGykFNZg7 )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.ZJ8TYghii8gjhjgJGaF.rVjXD1enz1g4TJ
    NGAfGc(Object , Object )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.ZJ8TYghii8gjhjgJGaF.lnATRrMeUxh(gP
    JU6kIZ4shGykFNZg7 )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.y72nUBeniTInHs9txyUS(Object , Obje
    ct )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.consoleInput(String )
       at 3FZcxHms5IqjoeGeo2h.F0VeDtmByYlY9Blsrhq.SFKIPXhgdov(String )
       at IE6CYH9RP8HnCFpewZx.y26yKC95JK9uMUhliYG.vc5cAq3bmR4(String , c7ZuPW9BqdyfJ
    C6pStx )
    =================================================
    >battle start
    
    =================================================
    System.ApplicationException: Mission: Mission not loaded.
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.uZlW3QAC9N(Double )
       at MW1vr45kkDswEmVZaHH.nYyHpA5yJ8g95O4DLEa.OtqWYy0BF1()
       at XCmHVL2XxNBIYasUAhA.m5wJuI2TCJecIAJ6C2k.BattleStart()
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.s9DTR3ZqI4t(gPJU6kIZ4shGykFNZg7 )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.ZJ8TYghii8gjhjgJGaF.rVjXD1enz1g4TJ
    NGAfGc(Object , Object )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.ZJ8TYghii8gjhjgJGaF.lnATRrMeUxh(gP
    JU6kIZ4shGykFNZg7 )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.y72nUBeniTInHs9txyUS(Object , Obje
    ct )
       at aX2DOmhyS6kclbFDNtd.c6MannhpCKJgNfMedU4.consoleInput(String )
       at 3FZcxHms5IqjoeGeo2h.F0VeDtmByYlY9Blsrhq.SFKIPXhgdov(String )
       at IE6CYH9RP8HnCFpewZx.y26yKC95JK9uMUhliYG.vc5cAq3bmR4(String , c7ZuPW9BqdyfJ
    C6pStx )
    =================================================


    И кусочек кода Strategy, который ее вызывает

    Код:
    public override void Init(IGamePlay gamePlay)
            {
                base.Init(gamePlay);
                if (gamePlay is GameServerDef)
                {
                    gameServer = (GameServerDef)gamePlay;
                    gameServer.EventChat += new GameDef.Chat(gameServer_EventChat);
                    GameServerIterface gi = gameServer.game;
                    string addinName = gameServer.addInName;
                    this.GamePlay.gpLogServer(null, "Addin name is `" + addinName + "`", null);
                }   
            }
    
            public override void OnEventGame(GameEventId eventId, object eventArg0, object eventArg1, int eventArgInt)
            {
                base.OnEventGame(eventId, eventArg0, eventArg1, eventArgInt);
            }
    А именно строка GameServerIterface gi = gameServer.game;
    Похожую ошибку вызывает также строка
    gameServer.EventChat += new GameDef.Chat(gameServer_EventChat);
    если ее написать в скрипте миссии. В стратегии нормально.

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

    Re: Вопросы.

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



    И кусочек кода Strategy, который ее вызывает

    Код:
    public override void Init(IGamePlay gamePlay)
            {
                base.Init(gamePlay);
                if (gamePlay is GameServerDef)
                {
                    gameServer = (GameServerDef)gamePlay;
                    gameServer.EventChat += new GameDef.Chat(gameServer_EventChat);
                    GameServerIterface gi = gameServer.game;
                    string addinName = gameServer.addInName;
                    this.GamePlay.gpLogServer(null, "Addin name is `" + addinName + "`", null);
                }   
            }
    
            public override void OnEventGame(GameEventId eventId, object eventArg0, object eventArg1, int eventArgInt)
            {
                base.OnEventGame(eventId, eventArg0, eventArg1, eventArgInt);
            }
    А именно строка GameServerIterface gi = gameServer.game;
    Похожую ошибку вызывает также строка
    gameServer.EventChat += new GameDef.Chat(gameServer_EventChat);
    если ее написать в скрипте миссии. В стратегии нормально.
    по словам главного программиста
    [rts]
    scriptAppDomain=0
    должно помочь
    Don't happy, be worry

  17. #692

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    по словам главного программиста
    [rts]
    scriptAppDomain=0
    должно помочь
    При этой опции и скрипт работает по другому - по крайней мере относительно событий, связанных со стартом и остановкой битвы. Как именно я детально пока не разбирался (вроде они не вызываются должным образом). Т.е. на данный момент это не подходит.

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

    Re: Вопросы.

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

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

    Re: Вопросы.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    При этой опции и скрипт работает по другому - по крайней мере относительно событий, связанных со стартом и остановкой битвы. Как именно я детально пока не разбирался (вроде они не вызываются должным образом). Т.е. на данный момент это не подходит.
    как я понял, при scriptAppDomain=1(по умолчанию) весь game пытается перекинуться в другой домен, что и вызывает ошибку сериализации, глав. программист сказал, что вообще game не планировался для работы из скрипта - он для своего сервера скорее. При scriptAppDomain=0 game остаётся в своём домене и ошибку не должен давать,а вот что за проблема с стартом и стопом - не знаю, вроде-бы не должно ничего страшного происходить.

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


    Для юзерских меток - вот пример миссии tests.zip при создании юзером метки - пишется об этом сообщение и в точку метки от позиции игрока +1000м вылетают бомбардировщики, метка рисуется у всех клиентов. Есть один момент - ивенты о метках приходят в скрипт в сингле, либо от клиентов в сетевой игре, сервер сам свои ивенты не получает.
    Don't happy, be worry

  20. #695

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    как я понял, при scriptAppDomain=1(по умолчанию) весь game пытается перекинуться в другой домен, что и вызывает ошибку сериализации, глав. программист сказал, что вообще game не планировался для работы из скрипта - он для своего сервера скорее. При scriptAppDomain=0 game остаётся в своём домене и ошибку не должен давать,а вот что за проблема с стартом и стопом - не знаю, вроде-бы не должно ничего страшного происходить.
    С game вроде понятно.
    Ок, может моя ошибка была где-то, попробую позже наглядный пример накидать, что бы видно было разницу.

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

    Re: Вопросы.

    Цитата Сообщение от naryv Посмотреть сообщение
    только это - у меня вроде как ездили так и ездят, может им дорога узковата, если на обочину их маршрут сильно вынуждает выехать - они пытаются вернуться на дорогу, поэтому могут быть косяки.
    Не знаю, может из-за сборной колонны(могут быть танки с грузовиками) так. Но первая машина всегда в стороне от дороги, позже еще потестирую. До этого проверял на двух разных дорогах, результат примерно один и тот же.
    И они точно не едут по одной колее. Т.е. к примеру 5-6 машин более-менее ровно идут, а пара драндулетов на корпус или больше может в сторону уходить.

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

    Re: Вопросы.

    На форуме 1С не могут с метками разобраться. Нужна помощь http://forum.1cpublishing.eu/showthread.php?t=34676
    ...зелёные горят.
    ----------------------

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

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

    Re: Вопросы.

    Цитата Сообщение от -atas- Посмотреть сообщение
    На форуме 1С не могут с метками разобраться. Нужна помощь http://forum.1cpublishing.eu/showthread.php?t=34676
    Ага, спасибо за размещение ссылки на пример там, из примера вроде всё должно быть понятно, еслли нет, ребята здесь спросят.
    Don't happy, be worry

  24. #699

    Re: Вопросы.

    Hello naryv,

    thanks for posting the hind with "scriptAppDomain = 0", this finally allows me to register to the EventChat.

    I have some problems with the creation of user labels. Basically I want to use gpMakeUserLabel to create a user label for each waypoint of an air group, and than use gpMakeUserLabel to draw it to the player. This is needed to show the waypoints to the players under full real realism settings.

    Код:
    public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);
    
        if (actor is AiAircraft)
        {
            AiAircraft aiAircraft = actor as AiAircraft;
            AiAirGroup aiAirGroup = aiAircraft.AirGroup();
            if (aiAirGroup != null)
            {
                AiWayPoint[] waypoints = aiAirGroup.GetWay();
    
                foreach (AiWayPoint waypoint in waypoints)
                {
                    GPUserLabel userLabel = GamePlay.gpMakeUserLabel(new maddox.GP.Point2d(waypoint.P.x, waypoint.P.x), player, waypoint.P.z.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat), GamePlay.gpTimeofDay(), (int)GPUserIconType.Waypoint);
                    GamePlay.gpDrawUserLabel(new Player[] { player }, userLabel);
                }
            }
        }
    }
    The problem is that the labels are not displayed. The creation seems to have been successful, at least gpMakeUserLabel didn't return null. There is also no error or exception in the log.

    Am I missing something? Do I have to store the created user label in order to display it? Is it because the same player is used to create and draw it?
    Крайний раз редактировалось 41Sqn_Banks; 11.10.2012 в 03:27.

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

    Re: Вопросы.

    Цитата Сообщение от 41Sqn_Banks Посмотреть сообщение
    Hello naryv,
    Hi Banks!

    Цитата Сообщение от 41Sqn_Banks Посмотреть сообщение
    I have some problems with the creation of user labels. Basically I want to use gpMakeUserLabel to create a user label for each waypoint of an air group, and than use gpMakeUserLabel to draw it to the player. This is needed to show the waypoints to the players under full real realism settings.

    Код:
    public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
    {
        base.OnPlaceEnter(player, actor, placeIndex);
    
        if (actor is AiAircraft)
        {
            AiAircraft aiAircraft = actor as AiAircraft;
            AiAirGroup aiAirGroup = aiAircraft.AirGroup();
            if (aiAirGroup != null)
            {
                AiWayPoint[] waypoints = aiAirGroup.GetWay();
    
                foreach (AiWayPoint waypoint in waypoints)
                {
                    GPUserLabel userLabel = GamePlay.gpMakeUserLabel(new maddox.GP.Point2d(waypoint.P.x, waypoint.P.x), player, waypoint.P.z.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat), GamePlay.gpTimeofDay(), (int)GPUserIconType.Waypoint);
                    GamePlay.gpDrawUserLabel(new Player[] { player }, userLabel);
                }
            }
        }
    }
    The problem is that the labels are not displayed. The creation seems to have been successful, at least gpMakeUserLabel didn't return null. There is also no error or exception in the log.

    Am I missing something? Do I have to store the created user label in order to display it? Is it because the same player is used to create and draw it?
    Now in single mission there would be event OnUserCreateUserLabel(GPUserLabel ul) after you make gpDrawUserLabel(), but it really don't display, this is bug ( hope it would be fixed with next patch, we didn't test it this way in single). But it should work in online missions, displaying labels for users thats not a server, i mean client players would get displayed labels, server player wouldn't.
    Don't happy, be worry

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

Ваши права

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