Jump to content
xedoc

IL2 CDR (AKA Командер)

Recommended Posts

Через чат группу создать не проблема. Проблема, что для миссии это будет не группа.

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

В старичке писали код для ручного объединения в группы через команды в чат. Создать группу, цель группы, присоединится к группе.....Но это заморочно.

Эти функции можно вынести в вебморду. Тогда задача будет сильно проще. Разве что за неимением планшета или второго компа/монитора придется альт-табаться...

Share this post


Link to post
Share on other sites

Через чат группу создать не проблема. Проблема, что для миссии это будет не группа.

ИМХО Главно это в базу записать, чтоб учитывать после миссии. Кто помнит - это было нужно для поощрения и наказания. Это уже не коммандер, а обработка статистики, но писать в базу должен он, родимый.

Edited by JGr124_boRada
  • Upvote 2

Share this post


Link to post
Share on other sites

Не прав!. 20 чел в ТС это перебор. Практика показывает что сквады сидят по своим ТС. У нас 4 иногда такой галдеж устраивают в бою, что слово вставить трудно.

Проблема организации игрового процесса. Бобры отдельно ястребы отдельно...старший группы на прослушке другого канала + деление по фронтам. А главных говорунов утихомирить чтоб по делу говорили.

Средствами редактора можно работать только со статичной группой (которая сразу в миссии рисуется). Даже если спавнить объекты нпс - в группы их уже объединить нельзя. Во всяком случае так было в РОФ и в предыдущей версии редактора. так что сама по себе работа с такими группами тут особо не поможет.

Да тут такая же фигня! Только по одиночке. мало того что наземку жутко тупая, так еще и по одиночке приходится везти их к цели. Тупость наземки иногда убивает просто.

Share this post


Link to post
Share on other sites

Проблема организации игрового процесса. Бобры отдельно ястребы отдельно...старший группы на прослушке другого канала + деление по фронтам. А главных говорунов утихомирить чтоб по делу говорили.

Мир не идеален. Реалии больно бьют по желаниям. В итоге  на популярном проекте проще организоваться в чате, чем в базарном ТС. Нервов уйдет больше.

Да и разговор не о том, что выбирать, а о том что нужны все возможные инструменты. Кто-то в ТС сможет, кому-то  через чат-команды (особенно если с иностранцами летать)

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

Edited by JGr124_boRada

Share this post


Link to post
Share on other sites

Интересный момент - игрок это комплексный объект, состоящий из собственно игрока, самолета и бота-пилота. У каждой составной части есть свой ID.

 

При этом повреждения наносятся боту-пилоту и самолету отдельно...

Share this post


Link to post
Share on other sites

Это возможно. Для этого только придется выяснить все комбинации флажков для заданного самолета. 

 

Если я все правильно понял - под каждый самолет выделено аж 8 битов под анлоки. При этом один бит занят под "дефолт". То-есть максимум 7 анлоков на каждый самолет. То-есть например для Яка может быть комбинация: 100010 - выбран РПК и ракеты.

Плюс, есть n-нное количество вариаций выбранной комплектации - вроде дистанции срабатывания взрывателя на ракетах.

 

В скрипте эти флаги анлоков будут просто пронумерованы и придется делать что-то вроде:

при спауне игрока, предупреждаем:

OnSpawn(...)

{

...для каждого самолета свое условие проверки...

if( player.Plane.Mods.Has( Unlocks.Mod1 ) ) 

server.Rcon.Message(player, "Unlock #1 is prohibited! Please change your setup!");

}

 

и потом кик на взлете

OnTakeOff(...)

{

if( player.Plane.Mods.Has( Unlocks.Mod1 ) ) 

server.Rcon.Message("Player blablah is kicked due to violation of the server rules!");

server.Rcon.Kick( player);

}

 

Вот это Unlocks.Mod1 так и останется. Названия сюда прикрутить не получится. Надо будет просто знать, что номер такой-то отвечает за анлок такой-то.

Тут все несколько проще. Используется битовая маска https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%B0%D1%81%D0%BA%D0%B0 По сути, мы имеем не 7-мь максимальных модификаций, а 255. И нам не нужно подбирать все возможные комбинации модификаций и запоминать их. Достаточно знать (далее сугубо пример без привязки к реальным ID)

1. ID модификации. Так, допустим просто РПК пусть будет RPK= 00000010. А ракеты ROKET= 00000100

2. ID пустого или дефолтного состояния. Пусть это будет DEFAULT= 00000000

Ставим на самолет РПК. Маска будет генерироватся логическим умножением: planeStatus = DEFAULTRPK (результат 00000010)

Теперь еще и ракеты: planeStatus = planeStatus | ROKET (результат 00000110)

 

Теперь чтобы узнать установлены ли ракеты нам достаточно применить логическое сложение & к planeStatus:

if(palneStatus & ROKET) {

  ууииии у нас установлены ракеты

}

 

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

Edited by vortekc

Share this post


Link to post
Share on other sites

Не вижу как может получиться 255..

 

Например, в редакторе 100010 это компас и ракеты:

первая единица - ракеты, вторая компас. Каждый бит отвечает за определенный номер анлока у каждого самолета. Комбинация битов = комбинация анлоков, а не номер комплектации или номер анлока.

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

 

Собственно вот то .Has() и делает planeStatus & ROCKET

Это удобство из C#. Там можно enum пометить как битовое поле с помощью аттрибута Flags и пользоваться удобными методами, вместо булевых операций.

 

Да, если-бы у каждого анлока, каждого самолета, был-бы свой уникальный ID на всю игру, то было-бы проще. 

Но имеем то, что имеем. 

 

Позже могу написать такой хелпер-метод, который на входе будет получать три параметра: самолет, анлоки и их модификацию, а на выходе отдавать enum-тип со значениями вида: Unlocks.Yak1Rockets82mmx2

Но для этого надо составить полную таблицу битовых масок и модификаций анлоков под каждый самолет.

Share this post


Link to post
Share on other sites

Ну да. ID есть для конкретной модификации. Но они пересекаются в разных самолетах да. Все верно нужно знать еще какой самолет.
Кажется и вправду мы говорили об одном и том же.

Share this post


Link to post
Share on other sites

Буду в отъезде до субботы. Желающие, можете потестить мониторинг процесса DServer-а, запись фрагов в MySQL и т.п:

https://app.box.com/s/g6tmcu9tjv3eyeexf9buvhi1dqc4ofj1

 

Настройки mysql меняются на закладке Scripts->Frag counter

Описание скрипта и список полей в настройках генерируется автоматически на основе кода в скрипте:

71bGRpr.png

 

 

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

 

Скрипты и конфиг сохраняются в папке Documents\IL2CDR\

В примере скрипта (LocalStatistics.cs) запись в MySQL сейчас вызывается так:

JqUXR0l.png

 

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

 

Имя процедуры: RecordPlayerKill()

Переменные сессии mysql:

@Kill.EventId - Уникальные Guid события

@Kill.Attacker.Name - ник атакующего

@Kill.Target.Name - ник фрага

@Kill.Attacker.Country.Id - ID страны атакующего. Название тоже доступно в attacker.Country.Name, например.

@Kill.Target.Country.Id - ID страны фрага.

 

Сам не тестил еще  :rolleyes:

  • Upvote 4

Share this post


Link to post
Share on other sites

 

Позже могу написать такой хелпер-метод, который на входе будет получать три параметра: самолет, анлоки и их модификацию, а на выходе отдавать enum-тип со значениями вида: Unlocks.Yak1Rockets82mmx2

Но для этого надо составить полную таблицу битовых масок и модификаций анлоков под каждый самолет.

Лучше подобное описание выносить в отдельный скрипт, который можно будет дополнять в соответствии с появлением новых самолетов и их модификаций.

Share this post


Link to post
Share on other sites

Не стартует:

Сигнатура проблемы:
  Имя события проблемы:	APPCRASH
  Имя приложения:	IL2CDR.exe
  Версия приложения:	0.0.0.1
  Отметка времени приложения:	54f85c3e
  Имя модуля с ошибкой:	KERNELBASE.dll
  Версия модуля с ошибкой:	6.1.7601.17651
  Отметка времени модуля с ошибкой:	4e211319
  Код исключения:	e0434352
  Смещение исключения:	0000b9bc
  Версия ОС:	6.1.7601.2.1.0.274.10
  Код языка:	1049
  Дополнительные сведения 1:	0a9e
  Дополнительные сведения 2:	0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:	0a9e
  Дополнительные сведения 4:	0a9e372d3b4ad19135b953a78882e789

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt

qYwKGZY9.png

Share this post


Link to post
Share on other sites

Забыл сказать, что программе нужен .Net 4.5

О и какая операционка? Я пока на северной винде не тестил... Только 7/8

Edited by xedoc

Share this post


Link to post
Share on other sites

Есть у меня такая-же, только стандарт. Проверю. А нет фреймворк установлен, 4.5 ? Без него сейчас даже новый интеловский установщик дров не работает...

Share this post


Link to post
Share on other sites

Что нужно стартовать для проверки? Просто IL2CDR.exe ? На вин 8.1 у мну запустилось ,вижу  вот это:

post-204-0-42076100-1425636970_thumb.png

  • Upvote 1

Share this post


Link to post
Share on other sites

На закладке Servers, при запуске DServer, должен появиться статус ркона и конфига. Если открыть sds, то имя сервера появится. Если есть mysql, то можно его настроить в Scripts и тоже потестить. Процедуру в mysql пока надо вручную создавать.

Share this post


Link to post
Share on other sites

Я бы под четвертый писал, но в 4.5 столько всякого вкусного. Не могу отказаться :)

Share this post


Link to post
Share on other sites

Да, DS заставил работать IL2CDR.exe ,что там завертелось и т д) ...я просто любопытствовал ,я не из тех кто планирует держать сервер.

Share this post


Link to post
Share on other sites

Для одиночной миссии тоже может в теории работать. Надо будет глянуть что там за логи.

 

Если получится, то добавлю индикатор попаданий по ботам, чтобы стрельбу тренировать. Хотя это и на уровне миссии наверное можно сделать.

Edited by xedoc

Share this post


Link to post
Share on other sites

Лучше подобное описание выносить в отдельный скрипт, который можно будет дополнять в соответствии с появлением новых самолетов и их модификаций.

Не проверял, но по идее скрипты должны видеть классы определенные в соседних скриптах. Попробую, как вернусь.

Share this post


Link to post
Share on other sites

А что там с проектом Joystick Curves? Год не проверял, с тех времен купил педали, которые WT не видит. Не велика потеря, но иногда после какого-нибудь здорового патча тянет туда зайти поногебать)) Так вот Ваша прога - это единственный выход, но мне помнится, что в свое время казалось, что отклик виртуального джоя не так хорош, как хотелось бы. В этой части что-нибудь дорабатывалось за год, или все, что можно, Вы из этой проги уже выжали раньше?

Share this post


Link to post
Share on other sites

Не проверял, но по идее скрипты должны видеть классы определенные в соседних скриптах. Попробую, как вернусь.

 

Хedoc ,личку глянь.

Share this post


Link to post
Share on other sites

А что там с проектом Joystick Curves? Год не проверял, с тех времен купил педали, которые WT не видит. Не велика потеря, но иногда после какого-нибудь здорового патча тянет туда зайти поногебать)) Так вот Ваша прога - это единственный выход, но мне помнится, что в свое время казалось, что отклик виртуального джоя не так хорош, как хотелось бы. В этой части что-нибудь дорабатывалось за год, или все, что можно, Вы из этой проги уже выжали раньше?

Задержки отклика были из-за драйвера. Я уже давно добавил поддержку еще одного виртуального джоя (headsoft-овского), который абсолютно не тормозит. Так-что все работает быстро и стабильно.

Хedoc ,личку глянь.

Ответил. Я два дня в отъезде был. С плашета не очень удобно отвечать было.

Со вторника кстати опять с бала на корабль...

Share this post


Link to post
Share on other sites

Есть у кого логи сервера? Побольше желательно. Хочу поексперементировать немного.

Share this post


Link to post
Share on other sites

Если у тебя есть игра ты их сам создаешь у себя локально))

Share this post


Link to post
Share on other sites

Есть у кого логи сервера? Побольше желательно. Хочу поексперементировать немного.

если побольше, то спроси у ДЕДов или у Гагарина

их топики:

http://forum.il2sturmovik.ru/topic/2397-cerver-krylya-cvobody-wings-liberty-expert/page-18

http://forum.il2sturmovik.ru/topic/2093-ded-expert-server/page-31

Share this post


Link to post
Share on other sites

Не проверял, но по идее скрипты должны видеть классы определенные в соседних скриптах. Попробую, как вернусь.

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

Все подхватывается.

Также и локализацию сообщений можно сделать. Вплоть до привязки к geo2ip ;)

  • Upvote 3

Share this post


Link to post
Share on other sites

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

Все подхватывается.

Также и локализацию сообщений можно сделать. Вплоть до привязки к geo2ip ;)

Круто.

Остался один вопрос: скрипт на Шарпе это какая-то отдельная специфичная конструкция или что? Если есть ссылка на описание (лучше на русскоязычное) - лучше ее, дабы не оффтопить... А то гугл на русском не хочет на вскидку давать...

Share this post


Link to post
Share on other sites

Нет, используется обычный синтаксис C#. Просто не компилируется, а выполняется из текстового файла.

Используется этот движок: http://www.csscript.net/

 

Взял-бы roslyn, но микрософт никак его не выпустит :)

Share this post


Link to post
Share on other sites

e7f6a0cf1d41.jpg

 

Для посонов расшифруйте... (я спарава)

Edited by Mihalich1981

Share this post


Link to post
Share on other sites

Расшифровываю: программа делается максимально доступной для внесения изменений и серьезно облегчает работу с сервером игры :D

 

Сегодня добавил поддержку всех rcon-команд. Остался только перехват чата и можно приступать к различным ADW.

Пока в отъезде буду, подумаю над веб-страничкой статистики. Сделаю зарисовки на планшете.

 

Думаю сделать один глобальный сайт для всех серверо-держателей.

Для начала простой, с K/D, но с заделом на разные топы: с килстриками, снайперами и т.п.

  • Upvote 17

Share this post


Link to post
Share on other sites

Расшифровываю: программа делается максимально доступной для внесения изменений и серьезно облегчает работу с сервером игры :D

Спасибо. Вы просто... ну там раз в неделю (если не затруднит) , для тех кто в танке новости давайте на простом русском ;)  А то у меня после прочтения темы каждый раз глаза как у того чела справа становятся :lol: А ведь интересно ж когда оно уже.

 

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

Edited by Mihalich1981
  • Upvote 3

Share this post


Link to post
Share on other sites

А на этом сервере спаун игроков где происходит ? В воздухе, на филде ?

Логи взял за длительный период....могут и так и так быть.

Share this post


Link to post
Share on other sites

Думаю сделать один глобальный сайт для всех серверо-держателей.

Для начала простой, с K/D, но с заделом на разные топы: с килстриками, снайперами и т.п.

А можно не глобальный, а каждому свой? А то понаделают таких убожеств, что глаза в кучу бегут.  Давай я спрошу у Графита, может быть он смог бы нарисовать макет под сайт статы. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...