-
Вложений: 1
REPKA.Commander public beta v1.1
REPKA.Commander public beta v1.1
Важно! Для корректной работы коммандер требует прав администратора, установленного .NET Framework 4, и на всякий случай, файловую систему NTFS ))
Предыдущая версия: http://www.sukhoi.ru/forum/showthrea...=1#post1844059
Исправления в версии public beta 1.1
- исправлен запуск карты, которая была отмечена как исключенная из ротации
- исправлена ошибка при запуске сражения в обход ротатора
Изменения в версии public beta 1.1
1. Установка.
Порядок установки не изменился. Если у Вас уже была установлена предыдущая версия, просто скопируйте файлы с заменой. Ваши старые настройки не пострадают
2. Ротатор миссий.
Принцип хранения миссий для ротатора изменился. Теперь сами миссии могут лежать где угодно, а в REPKA.Commander/Missions мы кладем ини-файл, в котором описываем, где вашу миссию искать и некоторые добавочные сведения (подробнее ниже)
3. Новые возможности RSTMission.
Старые методы (DrawnBattle(), RedArmyWon() и BlueArmyWon()) можно считать устаревшими, но они все еще работают. Использовать их в новых миссиях не рекомендуется.
Добавлено свойство public RstMissionHelper MissionHelper;
Доступные свойства MissionHelper:
string HostMissionFolder (только чтение)
Предоставляет путь к папке хост-миссии относительно пользовательской папки игры. Полезно для загрузки субмиссий посредством gpMissionLoad().
public string HostMissionFolderAbs (только чтение)
Абсолютный путь к папке хост-миссии. Полезен для загрузки или сохранения каких то своих файлов.
public int WinnerArmy (только чтение)
Предоставляет армию, которая будет победителем при завершении миссии
public string NextMap (только чтение)
Предоставляет имя ini-файла, в котором указана следующая миссия для загрузки по окончании текущей.
Если не пустое, загрузит следующей указанную миссию (если найдет) даже если она отмечена как исключенная из ротации.
public bool IsBattleWillBeComplete (только чтение)
Означает, что миссия будет завершена максимум через минуту
Доступные методы MissionHelper:
public void SetNextMap(string nextMap)
Устанавливает имя ini-файла (без расширения), в котором указана следующая миссия для загрузки по окончании текущей.
DrawnBattle(), RedArmyWon() и BlueArmyWon() - то же самое, что и аналогичные методы RSTMission
public string lmGetString(string msgKey, string language)
public void lmSendMessageToAll(string msgKey, SendMsgTarget target, params string[] parameters)
public void lmSendMessageToArmy(string msgKey, int army, SendMsgTarget target, params string[] parameters)
public void lmSendMessageToPlayers(string msgKey, maddox.game.Player[] players, SendMsgTarget target, params string[] parameters)
Если общий языковой менеджер включен, возвращает указанную строку для указанного языка, отправляет сообщение всем игрокам, отправляет сообщение команде, отправляет сообщение выбранным игрокам соответственно.
4. Новые классы, которые сможно использовать
LanguageManager, SharedStorage и SharedStorageUnit - примеры их использования смотрите в папке Samples (скопируйте ее предварительно в пользовательскую папку игры)
5. Формат ini-файла для ротатора
Секция [main] (обязательно)
Параметр mission (путь к миссии хосту относительно пользовательской папки игры), обязательный
Секция [additional] (опционально, все параметры в ней также опциональные)
Параметр loc_dir (путь к папке общего языкового менеджера относительно пользовательской папки игры, если не указать - работать менеджер не будет)
Примеры ini файлов ищите в папке Samples
6. Контекстное меню журнала сервера на главной теперь рабочее.
7. Добавлен английский язык интерфейса (-atas-)
Известные проблемы
1. При отправке сообщения в чат из коммандера русскими словами, слетает кодировка.
-
Re: REPKA.Commander public beta v1.1
Спасибо, сегодня вечером надеюсь посмотреть. :thx:
По хранилищу и пример с ресурсами - выглядит очень удобно и многообещающе))
-
Re: REPKA.Commander public beta v1.1
Поставил РК1.1 на Р4, работает... в папке Game теперь 3 dll, на всякий скопировал в папку игры все три.
-
Re: REPKA.Commander public beta v1.1
Small_Bee отличная новость. Поздравляю. :cool:
-
Re: REPKA.Commander public beta v1.1
Ура!!! :cool:
P.S. Тимофей, а ты случайно не планируешь РН на 109-м починить? ;)
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
BigREPA
Поставил РК1.1 на Р4, работает... в папке Game теперь 3 dll, на всякий скопировал в папку игры все три.
Эээ. В архиве -два. И должно быть два. То какой-то левый пассажир, как его зовут?
Ээ блин, мой ошибка, сейчас поправлю, сорри.
-
Re: REPKA.Commander public beta v1.1
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
BigREPA
REPKA.Stat.dll
Это как раз нужный пассажир, RstCommander.dll удали из папки игры, это движок самого коммандера. Перезалил правильный архив.
И все, кто скачивал и ставил до этого сообщения - то же самое сделайте.
-
Re: REPKA.Commander public beta v1.1
Small_Bee, а ты уже назначил какой-то пункт меню для командера? Вчера на тестах просто при нажатии Tab+4+1+1 на экран выдавалось сообщение со временем до конца миссии. Я поставил туда свой пункт меню(с таким же назначением, но он был до красоты до этого открытия) .
И сейчас только досрочно можно завершить миссию? Или есть возможность по истечение времени миссии подсчитать очки и выбрать победителя?
В остальном вроде все понятно и работает. Ротатор не шалит, контекстное меню работает(спасибо за пукт "Очистить журнал").
-
Вложений: 1
Re: REPKA.Commander public beta v1.1
После нажатия кнопки "Остановить сервер" в окне появляется вот такое, в логе же этого нет.
Вложение 155098
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
BigREPA
После нажатия кнопки "Остановить сервер" в окне появляется вот такое, в логе же этого нет.
Вложение 155098
это нормально.
--- Добавлено ---
Цитата:
Сообщение от
podvoxx
Small_Bee, а ты уже назначил какой-то пункт меню для командера? Вчера на тестах просто при нажатии Tab+4+1+1 на экран выдавалось сообщение со временем до конца миссии. Я поставил туда свой пункт меню(с таким же назначением, но он был до красоты до этого открытия) .
И сейчас только досрочно можно завершить миссию? Или есть возможность по истечение времени миссии подсчитать очки и выбрать победителя?
В остальном вроде все понятно и работает. Ротатор не шалит, контекстное меню работает(спасибо за пукт "Очистить журнал").
Да, есть такое, я пока не определился еще, как точно это делать, а обработку пункта меню убрать забыл. ) Пока подставляй сам нужное название под него, если не сложно.
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
Small_Bee
Да, есть такое, я пока не определился еще, как точно это делать, а обработку пункта меню убрать забыл. ) Пока подставляй сам нужное название под него, если не сложно.
Так и получилось) Только я не понял, как так два меню накладываются одно на другое?
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
podvoxx
Так и получилось) Только я не понял, как так два меню накладываются одно на другое?
Никак. Я пока убрал свое меню, но обработка определенного id и индекса меню осталась. Представляю твои глаза, когда сделал "для красоты" а оно бац и заработало )))))
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
Small_Bee
Никак. Я пока убрал свое меню, но обработка определенного id и индекса меню осталась. Представляю твои глаза, когда сделал "для красоты" а оно бац и заработало )))))
Замешательство было, я даже скрипт меню проверил, мало ли - вдруг ночью лунатил да дописал несколько строк :)
-
Re: REPKA.Commander public beta v1.1
На Р1
Код:
Приложение: CommanderUI.exe
Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: System.Reflection.TargetInvocationException
Стек:
в System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
в System.RuntimeMethodHandle.InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.Signature, System.Reflection.MethodAttributes, System.RuntimeType)
в System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
в System.Delegate.DynamicInvokeImpl(System.Object[])
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
в System.Windows.Threading.DispatcherOperation.InvokeImpl()
в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
в System.Threading.ExecutionContext.runTryCode(System.Object)
в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
в System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в System.Windows.Threading.DispatcherOperation.Invoke()
в System.Windows.Threading.Dispatcher.ProcessQueue()
в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
в MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
в System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
в MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
в System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
в System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
в System.Windows.Threading.DispatcherOperation.Wait(System.TimeSpan)
в System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
в CommanderUI.ui.LauncherContext.LauncherContext_GameEventReceived(System.Object, RstCommander.Core.GameEventReceivedEventArgs)
в RstCommander.Core.GameEventReceivedEventHandler.Invoke(System.Object, RstCommander.Core.GameEventReceivedEventArgs)
в RstCommander.RstCommanderBasic.OnGameEventReceived(RstCommander.Core.GameEventReceivedEventArgs)
в RstCommander.RstCommanderBasic.RstCommanderBasic_LauncherStateChanged(System.Object, RstCommander.Core.LauncherStateChangedEventArgs)
в RstCommander.Core.LauncherStateChangedEventHangler.Invoke(System.Object, RstCommander.Core.LauncherStateChangedEventArgs)
в RstCommander.Core.LauncherController.OnLauncherStateChanged(RstCommander.Core.LauncherStateChangedEventArgs)
в RstCommander.Core.LauncherController._controllerStateChanged(System.Object)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
в System.Windows.Threading.DispatcherOperation.InvokeImpl()
в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
в System.Threading.ExecutionContext.runTryCode(System.Object)
в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
в System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в System.Windows.Threading.DispatcherOperation.Invoke()
в System.Windows.Threading.Dispatcher.ProcessQueue()
в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
в MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
в System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
в MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
в System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
в System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
в System.Windows.Application.RunDispatcher(System.Object)
в System.Windows.Application.RunInternal(System.Windows.Window)
в System.Windows.Application.Run(System.Windows.Window)
в CommanderUI.App.Main()
Имя сбойного приложения: CommanderUI.exe, версия: 1.1.0.0, отметка времени: 0x4fc517af
Имя сбойного модуля: KERNELBASE.dll, версия: 6.1.7601.17651, отметка времени 0x4e211319
Код исключения: 0xe0434352
Смещение ошибки: 0x0000b9bc
Идентификатор сбойного процесса: 0x588
Время запуска сбойного приложения: 0x01cd3fbe72f98f0a
Путь сбойного приложения: C:\Users\Cod\Desktop\rc\CommanderUI.exe
Путь сбойного модуля: C:\Windows\syswow64\KERNELBASE.dll
Код отчета: 83d029ed-abe7-11e1-91f7-000c29565998
--- Добавлено ---
На Р4 тоже самое - Одновременно!
--- Добавлено ---
Перед вылетом на обоих хостах цпу - 100 процентов было. Народу - о, миссии разные, с чего это интересно...
-
Re: REPKA.Commander public beta v1.1
Произошло в момент смены состояния лончера - запуск/остановка была. Так сразу и не скажешь, буду пытаться воспроизвести. Причем.. При запуске самого коммандера, что-ли?
-
Re: REPKA.Commander public beta v1.1
Опять падало... и вместе и Р4 одна.
-
Вложений: 1
Re: REPKA.Commander public beta v1.1
Вложение 155486
Вот то о чем мы говорили, но в 1102 немного по другому, все летает и стреляет но процесса Два:)
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
BigREPA
Вложение 155486
Вот то о чем мы говорили, но в 1102 немного по другому, все летает и стреляет но процесса Два:)
Угу. В логе (в папке коммандера) ошибки есть какие-то? Удали плиз старые, если остались, ибо пишет только последнюю, ну и на почту мне.
-
Re: REPKA.Commander public beta v1.1
Упс, а логов то и нет... последний имеет имя 20120526_03.30.11-20120604_17.42.32(30) и на этом все.
В самой консоли не видел ничего криминального. Иногда Null, но редко...
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
BigREPA
Упс, а логов то и нет... последний имеет имя 20120526_03.30.11-20120604_17.42.32(30) и на этом все.
В самой консоли не видел ничего криминального. Иногда Null, но редко...
Не не, ErrorLog.txt (вроде так) в корне коммандера.
Кстати, у тебя в confs.ini стоит перезапись лога?
-
Re: REPKA.Commander public beta v1.1
Код:
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.IndexOutOfRangeException: Индекс находился вне границ массива.
в CommanderUI.ui.LauncherContext.<>c__DisplayClassa.<LauncherContext_GameEventReceived>b__4()
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
в System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
в System.Delegate.DynamicInvokeImpl(Object[] args)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
System.IndexOutOfRangeException: Индекс находился вне границ массива.
в CommanderUI.ui.LauncherContext.<>c__DisplayClassa.<LauncherContext_GameEventReceived>b__4()
Ну ессесно LOG=0 а было 1... поэтому раньше и ставил реадонли на confs.ini
-
Re: REPKA.Commander public beta v1.1
Small_Bee, а планируется такую функцию добавить?
Цитата:
Сообщение от
podvoxx
Может все-таки еще один метод ввести, который вызывается автоматически за одну минуту до конца миссии(и куда можно прописать выдачу результата)?
-
Re: REPKA.Commander public beta v1.1
Цитата:
Сообщение от
podvoxx
Small_Bee, а планируется такую функцию добавить?
Вообще он и сейчас есть, однако присуждение победы в нем не поменяешь. Будут изменения - вызываться будет до "щелчка" на завершение и можно будет поменять победителя как раз в этот момент. Правда когда не скажу - сейчас к коммандеру прикручивается стата в первую очередь.