Перейти к содержимому
xedoc

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

Рекомендованные сообщения

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем JGr124_boRada
  • Поддерживаю! 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Изменено пользователем JGr124_boRada

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Если я все правильно понял - под каждый самолет выделено аж 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) {

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

}

 

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

Изменено пользователем vortekc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

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

 

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

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

 

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот сделал простой пример 
https://gist.github.com/vortekc/977d1c140afedf029f74

 

P.S. правда он на JAVA

Изменено пользователем vortekc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Буду в отъезде до субботы. Желающие, можете потестить мониторинг процесса 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:

  • Поддерживаю! 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не стартует:

Сигнатура проблемы:
  Имя события проблемы:	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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем xedoc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

  • Поддерживаю! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Изменено пользователем xedoc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

их топики:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

https://cloud.mail.ru/public/7e2acba573db/data.rar - берите наздоровье

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

  • Поддерживаю! 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Круто.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

e7f6a0cf1d41.jpg

 

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

Изменено пользователем Mihalich1981

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

 

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

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

  • Поддерживаю! 17

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Изменено пользователем Mihalich1981
  • Поддерживаю! 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно конечно, почему нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×