xedoc Опубликовано: 31 марта 2015 Автор Опубликовано: 31 марта 2015 Надо зарегистрироваться на il2.info, чтобы получить Token для передачи данных(после входа, клик на email, справа вверху), На сервере надо запустить il2cdr.exe из любой папки. Сама программа никаких портов не открывает. Передаются только события из лога, обычным HTTP POST-ом. Исходники открыты, лежат на гитхабе. Сама статистика работает через .cs-скрипт, который по-умолчанию в текстовом виде. Я планирую добавить на сайт управление rcon-ом через веб, но это будет отключаемая опция и никаких портов для этого тоже не надо. Будут веб-запросы от программы и long-polling Захожу с мобилы, с хрома, таблица пустая Тоже попробовал с телефона - работает :/
=KK=Des_ Опубликовано: 31 марта 2015 Опубликовано: 31 марта 2015 Захожу с мобилы, с хрома, таблица пустая Ф5 жмем и все заполнится. Почему-то после открытия тоже пустую видел. Ф5 помогло!
xedoc Опубликовано: 31 марта 2015 Автор Опубликовано: 31 марта 2015 Проблему поймал, сделаю отложенную загрузку, чтобы ajax не дергало на первой странице. 2
xedoc Опубликовано: 31 марта 2015 Автор Опубликовано: 31 марта 2015 (изменено) исправил Изменено 31 марта 2015 пользователем xedoc
1CGS -DED-Rapidus Опубликовано: 1 апреля 2015 1CGS Опубликовано: 1 апреля 2015 теперь кажеть, спасибо
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Интересный перекос получается. BF 109 F-4 набили 3925 фрагов (техники, зданий), а Yak-1 ser.69 всего 86... https://docs.google.com/spreadsheets/d/1BjW6A6NrSWntTbEOA0V3KN6symJtOLOT2SLQyd0awZg/edit?usp=sharing странно...
Valdamar Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 А почему фридрихов два? там над яком еще один, с 94 фрагами.
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Интересный вопрос. У них id почему-то разный в референсной таблице. Надо будет перепроверить генерацию этого ID.
Valdamar Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 Там еще две пешки и вундервафля Голова бота обычная. Не сочти за первое апреля, но что это? )
NobbyNobbs Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 Интересный перекос получается. BF 109 F-4 набили 3925 фрагов (техники, зданий) особенно занятно что они набили довольно много хенкелей и прочих штук. саботажники.
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Приходит такое с серверов. Есть стандартный набор названий, а есть то, что в миссиях прописывают. Голова бота, кстати вроде стандартное название. Где-то по-моему встречал, тоже улыбнуло
Valdamar Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 С верхним фридрихом какая то бяка, он даже самолеты из РоФа убивает
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 особенно занятно что они набили довольно много хенкелей и прочих штук. саботажники. Хенкелей всего 4 штуки фридрихи настреляли С верхним фридрихом какая то бяка, он даже самолеты из РоФа убивает И попрошу заметить, было это в ноябре 42-го :D
-DED-ASF Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 (изменено) надо на полигоне и акробатике стату вырубить.. а то там еще и не такого напишет))) ща потушу. Изменено 1 апреля 2015 пользователем -DED-ASF
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Скоро можно будет отключать это дело птичками
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Хм, а на DED- серверах можно за обе стороны на F4 летать ?
-DED-ASF Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 (изменено) на полигоне можно все) и на дуэльнике тоже. Изменено 1 апреля 2015 пользователем -DED-ASF
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 А на этом - "1CGS Official Server (Normal) by -DED-" ?
-DED-ASF Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 на нормале крафты согласно выбранной стороны..
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Спасибо, похоже баг нашелся с названиями крафтов :/ Буду разбираться
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Нашел проблемку, просьба всем участникам теста обновиться: https://app.box.com/s/g6tmcu9tjv3eyeexf9buvhi1dqc4ofj1
=KK=Des_ Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 Нашел косячек. Как проверю повторно выложу! Предваритеьно, после суток и более работы программы начинает выдавать ошибку и потом даже после перезагрузке не загорается индикация подключения ркон.
xedoc Опубликовано: 1 апреля 2015 Автор Опубликовано: 1 апреля 2015 Вот, теперь нормально названия целей пошли. В логах просто тип это имя, а имя это тип. Меня это с толку сбило 1
=KK=Des_ Опубликовано: 1 апреля 2015 Опубликовано: 1 апреля 2015 [01.04.2015 23:18:51] Start server monitor for server -AIR open test WAR- il2 kupikolesa ru [01.04.2015 23:18:51] Initialize action manager for -AIR open test WAR- il2 kupikolesa ru [01.04.2015 23:18:51] Reading events history from F:\IL-2 Sturmovik Battle of Stalingrad\data\logs\text\missionReport(2015-04-01_22-57-19)[0].txt [01.04.2015 23:18:51] New mission started F:\IL-2 Sturmovik Battle of Stalingrad\data\logs\text\missionReport(2015-04-01_22-57-19)[0].txt [01.04.2015 23:18:52] Successfuly connected to il2.info [01.04.2015 23:29:36] Error: http://il2.info/e Время ожидания операции истекло [01.04.2015 23:29:36] Send result: FAIL (HTTP error) [01.04.2015 23:46:31] 611331 [01.04.2015 23:46:37] Error: http://il2.info/e Время ожидания операции истекло [01.04.2015 23:46:37] Send result: FAIL (HTTP error) [01.04.2015 23:47:27] Error: http://il2.info/e Время ожидания операции истекло [01.04.2015 23:47:27] Send result: FAIL (HTTP error) [01.04.2015 23:49:27] Error: http://il2.info/e Время ожидания операции истекло [01.04.2015 23:49:27] Send result: FAIL (HTTP error) [01.04.2015 23:49:57] Error: http://il2.info/e Время ожидания операции истекло [01.04.2015 23:49:57] Send result: FAIL (HTTP error) [02.04.2015 0:22:56] 574466 [02.04.2015 0:22:56] 559106 [02.04.2015 0:31:54] 617477 [02.04.2015 0:31:54] 618501
Vostochniy* Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 Xedoc! Кажется, если заканчиваешь миссию в воздухе на исправном самолёте, но за линией фронта, то в статистику пишется поражение (Losses). По крайней мере у меня других версий нет. Делал только несколько пробных вылетов, в которых в меня даже не стреляли. А вот конец миссии в воздухе меня как раз настигал пару раз. В стате прописано два поражения. А, ещё версия! Пару раз нажимал кнопку выхода, сразу после респауна на стоянке. Сама игра потом писала, что вылет прерван. В любом случае, надо проверить.
-DED-Zlodey Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 Xedoc! Кажется, если заканчиваешь миссию в воздухе на исправном самолёте, но за линией фронта... Смотря на каком сервере и на какой карте. Иногда (скорее чаще, чем реже) редакторы не добавляют разграничение территории, так как это дело сжирает ресурсы. Поэтому, может быть не важно где тебя настигнет конец миссии.
xedoc Опубликовано: 2 апреля 2015 Автор Опубликовано: 2 апреля 2015 Xedoc! Кажется, если заканчиваешь миссию в воздухе на исправном самолёте, но за линией фронта, то в статистику пишется поражение (Losses). По крайней мере у меня других версий нет. Делал только несколько пробных вылетов, в которых в меня даже не стреляли. А вот конец миссии в воздухе меня как раз настигал пару раз. В стате прописано два поражения. А, ещё версия! Пару раз нажимал кнопку выхода, сразу после респауна на стоянке. Сама игра потом писала, что вылет прерван. В любом случае, надо проверить. Поражение пишется, только когда от сервера приходит событие "Kill", других вариантов нет. Но проверю. [01.04.2015 23:29:36] Error: http://il2.info/e Время ожидания операции истекло Это не страшно, при ошибке идет повторная отправка.
Vostochniy* Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 Поражение пишется, только когда от сервера приходит событие "Kill", других вариантов нет. Но проверю. Хм... А сейчас эти два поражения из статистики пропали. Видимо глюк статы. Или действительно исправил чего?
xedoc Опубликовано: 2 апреля 2015 Автор Опубликовано: 2 апреля 2015 Правлю. Нашел возможную проблему. Не учитывался тип цели, если игрока сбивал бот.
REDFOX-WL-GAGARIN Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 А по серверам в статистику можно добавить какой стороной была одержена победа на карте?
xedoc Опубликовано: 2 апреля 2015 Автор Опубликовано: 2 апреля 2015 Подправил. Сейчас алгоритм такой: SELECT nickname_id, SUM(if(isteamkill is NULL, 0, details.isteamkill)) AS teamkills, SUM(if(isplayerkill IS NULL, 0, details.isplayerkill)) as playerkills, SUM(if(isgroundkill is NULL, 0, details.isgroundkill)) AS groundkills, SUM(IF(isbotairkill IS NULL,0,details.isbotairkill)) as botairkills, SUM(if(iscrash is NULL,0, iscrash)) AS crashes, SUM(if(iskilledbyplayer is NULL,0, iskilledbyplayer)) AS iskilledbyplayer, SUM(if(iskilledbyairbot is NULL,0, iskilledbyairbot)) AS iskilledbyairbot, SUM(if(iskilledbygroundunit is NULL,0, iskilledbygroundunit)) AS iskilledbygroundunit FROM ( SELECT IF(attackerplayers.nickname_id IS NULL, targetplayers.nickname_id, attackerplayers.nickname_id) as nickname_id, @isteamkill:=attacker_coalition=target_coalition as isteamkill, @isairattacker:= NOT @isteamkill AND attackerinfo.class = 'Plane' AS isairattacker, @isairtarget:= NOT @isteamkill AND targetinfo.class = 'Plane' AS isairtarget, @isplayerkill:= @isairtarget AND NOT @isteamkill AND NOT ISNULL(attackerplayer_id) AND NOT ISNULL(targetplayer_id) as isplayerkill, @isgroundkill:=NOT @isairtarget AND NOT @isteamkill AND NOT ISNULL(attackerplayer_id) AND NOT ISNULL(targetobject_id) as isgroundkill, @isairbotkill:=@isairtarget AND NOT @isteamkill AND NOT ISNULL(targetobject_id) AND ISNULL(targetplayer_id) as isbotairkill, @iscrash:=ISNULL(attackerplayer_id) AND ISNULL(attackerobject_id) AS iscrash, @iskilledbyplayer:=@isairattacker AND @isairtarget AND NOT ISNULL(attackerplayer_id) AS iskilledbyplayer, @iskilledbyairbot:=@isairattacker AND @isairtarget AND ISNULL(attackerplayer_id) AS iskilledbyairbot, @iskilledbygroundunit:=NOT @isairattacker AND @isairtarget AND ISNULL(attackerplayer_id) AS iskilledbygroundunit FROM frags LEFT JOIN players attackerplayers ON attackerplayers.nickname_id = frags.attackerplayer_id LEFT JOIN players targetplayers ON targetplayers.nickname_id = frags.targetplayer_id LEFT JOIN objectsinfo targetinfo ON frags.targetobject_id = targetinfo.object_id LEFT JOIN objectsinfo attackerinfo ON frags.attackerobject_id = attackerinfo.object_id LEFT JOIN players targets ON targets.nickname_id = frags.targetplayer_id ) details GROUP BY nickname_id А по серверам в статистику можно добавить какой стороной была одержена победа на карте? Нужно
xedoc Опубликовано: 2 апреля 2015 Автор Опубликовано: 2 апреля 2015 (изменено) А вот как сейчас в MySQL обрабатывается каждое событие: DECLARE class_ varchar(50); DECLARE isnotteamkill_ bool; SET isnotteamkill_ = attacker_coalition_ != target_coalition_; --- Killed by player IF NOT ISNULL(attackerplayer_id_) THEN --- PvP IF NOT ISNULL(targetplayer_id_) THEN SELECT class INTO class_ FROM objectsinfo WHERE object_id = targetobject_id_ LIMIT 1; --- If target is plane - change attacker's and target's wins/losses IF class_ = 'Plane' THEN UPDATE players SET playerairkills = if(isnotteamkill_, playerairkills + 1, playerairkills), team_kills = if(isnotteamkill_, team_kills, team_kills+1), air_damage = air_damage + damage_, air_hits = air_hits + hits_ WHERE nickname_id = attackerplayer_id_; UPDATE players SET killedbyplayers = killedbyplayers + 1 WHERE nickname_id = targetplayer_id_; END IF; --- PvE ELSEIF NOT ISNULL(targetobject_id_) THEN SELECT class INTO class_ FROM objectsinfo WHERE object_id = targetobject_id_ LIMIT 1; IF NOT ISNULL(class_) THEN --- AI planes IF class_ = 'Plane' THEN UPDATE players SET botairkills = if(isnotteamkill_, botairkills + 1,botairkills), team_kills = if(isnotteamkill_, team_kills, team_kills+1), air_hits = air_hits + hits_, air_damage = air_damage + damage_ WHERE nickname_id = attackerplayer_id_; --- Ground units and others ELSE UPDATE players SET botgroundkills = if(isnotteamkill_, botgroundkills + 1, botgroundkills), team_kills = if(isnotteamkill_,team_kills,team_kills + 1), ground_hits = ground_hits + hits_, ground_damage = ground_damage + damage_ WHERE nickname_id = attackerplayer_id_; END IF; END IF; END IF; --- Killed not by player ELSE IF NOT ISNULL(targetplayer_id_) AND NOT ISNULL(attackerobject_id_) THEN SELECT class INTO class_ FROM objectsinfo WHERE object_id = targetobject_id_ LIMIT 1; --- Dont count a kill if target object not a plane. IF class_ <> 'Plane' THEN LEAVE PROC; END IF; SELECT class INTO class_ FROM objectsinfo WHERE object_id = attackerobject_id_ LIMIT 1; IF NOT ISNULL(class_) THEN --- Killed by air AI IF class_ = 'Plane' THEN UPDATE players SET killedbyairbots = killedbyairbots + 1 WHERE nickname_id = targetplayer_id_; --- Killed by ground unit or other unknown object ELSE UPDATE players SET killedbygroundbots = killedbygroundbots + 1 WHERE nickname_id = targetplayer_id_; END IF; END IF; --- Crashed ELSEIF NOT ISNULL( targetplayer_id_ ) THEN UPDATE players SET crashes = crashes + 1 WHERE nickname_id = targetplayer_id_; END IF; END IF; Изменено 2 апреля 2015 пользователем xedoc
=KK=Des_ Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 Как и писал вчера. После присланного вчера лога ничего в нем не изменилось. Закрыл коммандер и запустил заново, результат эдентичный: [02.04.2015 15:02:32] Application is starting... [02.04.2015 15:02:32] Loading script C:\Users\Администратор\Documents\IL2CDR\Scripts\GlobalStatistics.cs... [02.04.2015 15:02:32] Loading script C:\Users\Администратор\Documents\IL2CDR\Scripts\LogParser.cs... [02.04.2015 15:02:32] Loading script C:\Users\Администратор\Documents\IL2CDR\Scripts\LogParserTest.cs... [02.04.2015 15:02:33] Error: Exception: c:\Users\Администратор\AppData\Local\Temp\CSSCRIPT\787dd32f-000c-4b1a-8d9f-8c0bd885c543.tmp(38,13): error CS0012: Тип "System.Windows.Forms.DialogResult" определен в сборке, ссылка на которую отсутствует. Следует добавить ссылку на сборку "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". в csscript.CSExecutor.ProcessCompilingResult(CompilerResults results, CompilerParameters compilerParams, ScriptParser parser, String scriptFileName, String assemblyFileName, String[] additionalDependencies) в csscript.CSExecutor.Compile(String scriptFileName) в csscript.CSExecutor.Compile(String scriptFile, String assemblyFile, Boolean debugBuild) в CSScriptLibrary.CSScript.LoadWithConfig(String scriptFile, String assemblyFile, Boolean debugBuild, Settings scriptSettings, String compilerOptions, String[] refAssemblies) в CSScriptLibrary.CSScript.LoadCode(String scriptText, String tempFileExtension, String assemblyFile, Boolean debugBuild, String[] refAssemblies) в CSScriptLibrary.CSScript.LoadCode(String scriptText, String assemblyFile, Boolean debugBuild, String[] refAssemblies) в IL2CDR.Model.ScriptManager.LoadScript(String scriptPath) в c:\Users\meshkov\Source\Repos\IL2CDR\IL2CDR\IL2CDR\Model\ScriptManager.cs:строка 173 в IL2CDR.Model.ScriptManager.<>c__DisplayClass3a.<LoadScripts>b__32() в c:\Users\meshkov\Source\Repos\IL2CDR\IL2CDR\IL2CDR\Model\ScriptManager.cs:строка 248 в IL2CDR.Model.Util.Try(Action action, Boolean logException) в c:\Users\meshkov\Source\Repos\IL2CDR\IL2CDR\IL2CDR\Model\Util.cs:строка 35 [02.04.2015 15:02:33] Rcon authentication: OK [02.04.2015 15:02:33] Start server monitor for server -AIR open test WAR- il2 kupikolesa ru [02.04.2015 15:02:33] Initialize action manager for -AIR open test WAR- il2 kupikolesa ru [02.04.2015 15:02:33] Reading events history from F:\IL-2 Sturmovik Battle of Stalingrad\data\logs\text\missionReport(2015-04-01_22-57-19)[0].txt [02.04.2015 15:02:33] New mission started F:\IL-2 Sturmovik Battle of Stalingrad\data\logs\text\missionReport(2015-04-01_22-57-19)[0].txt [02.04.2015 15:02:34] Successfuly connected to il2.info [02.04.2015 15:03:10] 611331 [02.04.2015 15:03:36] 574466 [02.04.2015 15:03:36] 559106 [02.04.2015 15:03:44] 617477 [02.04.2015 15:03:45] 618501
=AxA=KamAL Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 В командерах для старичка был такой раздел как BanList. Как думаете, нужен ли такой функционал в IL2CDR?
xedoc Опубликовано: 2 апреля 2015 Автор Опубликовано: 2 апреля 2015 Как и писал вчера. После присланного вчера лога ничего в нем не изменилось. Закрыл коммандер и запустил заново, результат эдентичный: LogParser*.cs можно прибить в папке Scripts рядом с экзешником и в Documents\IL2CDR\Scripts Он не нужен для статистики. В остальном, в логе все вроде ок. В командерах для старичка был такой раздел как BanList. Как думаете, нужен ли такой функционал в IL2CDR? Что за раздел ? Для обмена списками ?
=AxA=KamAL Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 Что за раздел ? Для обмена списками ? Нет, это черный список игроков, которых не пускает на сервер за те или иные злодеяния
xedoc Опубликовано: 2 апреля 2015 Автор Опубликовано: 2 апреля 2015 (изменено) Ну это понятно. Я думал, может был какой-то общий список для обмена между серверами. Тут я пока не разбирался, где хранится список забаненных. В RCON есть возможность забанить игрока, но нет возможности разбанить конкретного игрока. Очевидно где-то пишется какой-то файлик с банами. Изменено 2 апреля 2015 пользователем xedoc
=AxA=KamAL Опубликовано: 2 апреля 2015 Опубликовано: 2 апреля 2015 Насколько я знаю, в РоФ и БзС команда ban отсылает данные об игроке на мастер сервер и доступ на сервер для игрока закрывается именно там. И, действительно, разбанить можно только всех сразу. Но есть решение проще, сделать интерфейс со списком игроков в командере и согласно списка делать kick(). Я локально пытался рисовать такой интерфейс в IL2CDR.
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас