Случайная подборка модов
Dead Autumn
4.1
Dark Ukraine v 1.0
3.9
Oblivion Lost Remake
4.1
Туман войны: Закалённые Зоной
3.2
Сюжетное продолжение Чистого неба
4.1
Тайный путь
3.6
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: Аdmin, Overfirst, Hardtmuth  
The FreeZone Project
Соединенные Штаты  Angry
Воскресенье, 25.09.2016, 07:23 | Сообщение # 1
Статус:
Зевака:
Сообщений: 10
Награды: 0
Регистрация: 06.12.2014


The FreeZone Project

Платформа: ЧН 1.5.10
Разработчик: FreeZone Team
Дата выхода: TBD, беты выходят по мере создания.











Сообщение отредактировал Angry - Воскресенье, 25.09.2016, 11:15
  Злобная реклама
Воскресенье, 25.09.2016, 07:23
Статус:
Сообщений: 666
Регистрация: 06.12.2014
Российская Федерация  drksnc
Понедельник, 23.10.2017, 18:06 | Сообщение # 76
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Привет. Когда только появились первые репозитории, я сделал полностью рабочий движковый LastManStanding, в который играл время от времени с другом. Понимаю, что там делать-то нечего, но это был мой первый опыт. В общем, увидев топик, захотел поднять сервер на старом компе, чтобы можно было играть с народом. Но вот проблема - исходников оригинального 1.5.10, которые бы работали на современных студиях нигде не найти, везде свои репозитории, которые уже по сто раз правленые. Из-за этого приходится заменять всё двигло, т.к. замена одного модуля (xrGame.dll) приводит к крашу при запуске. В общем, это я всё к тому, что мне нужно будет в том числе пересобирать и выделенный сервер, который у FZ свой. Исходников тутошнего xrEngine я не нашел, поэтому прошу ткнуть носом в возможное решение.
Сообщение отредактировал drksnc - Понедельник, 23.10.2017, 18:06
  Злобная реклама
Понедельник, 23.10.2017, 18:06
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Sin
Понедельник, 23.10.2017, 19:03 | Сообщение # 77
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Цитата drksnc ()
движковый LastManStanding

Неплохо. А если скриптами? smile Впрочем, и движковый - это тоже хорошо.

Цитата drksnc ()
исходников оригинального 1.5.10

Скорее всего, по истории коммитов того же ОпенХРея на гитхабе самый первый и будет оригинальными исходниками.

Цитата drksnc ()
замена одного модуля (xrGame.dll) приводит к крашу при запуске

Ожидаемо. Если ты собираешь в другой студии, то в итоге может получиться другое ВСЁ. Например, будут использованы другие С-рантаймы, будут другие смещения в классах и структурах. Ничего хорошего из такого франкенштейна не выйдет. Если хочешь совместимый с оригинальным двигом xrGame, то придется собирать в оригинальной же для этого движка студии... Да и то не факт, что со 100%-й гарантией получится. Так что не стоит париться этим, проще сразу весь двиг подменить.
Цитата drksnc ()
выделенный сервер, который у FZ свой

Ничего подобного. FZ использует оригинальный движок версии 1.5.10. xrEngine немного подправлен для удобства внедрения dll, но это можно сделать и любым другим способом на старте сервера. Впрочем, вопрос тут не в этом.
Дело в том, что сама FZ3.0 изначально завязана на использование конкретной даже не версии, а СБОРКИ движка. Сделано это было по нескольким причинам. Основная - желание сохранить совместимость с оригинальными клиентом и сервером, а также различными утилитами а-ля Stalker Controller. Вторая - под Ганса я разработал патчинговый фреймворк srcKit, переезд на который не состоялся в свете релиза исходников, а поработать с фреймворком хотелось. Если движок пересобрать - адреса "поедут" даже при использовании того же компилятора, и серверная часть FZ станет неработоспособной.
Но тащить FZ целиком, по сути, тебе и не нужно. Ведь в твоем случае достаточно лишь только функций по загрузке мода и запуску клиента с ним. Именно для этого в FZ создан отдельный модуль - sysmsgs.dll. В нем и сосредоточена вся "магия". Тебе достаточно лишь подключить этот модуль (вызовом LoadLibrary или статически) к твоему движку, а при коннекте клиента дернуть нужные для конструирования пакета-загрузчика API из sysmsgs.dll. Все относительно просто. Пример создания пакетов можно увидеть в функции OnAttachNewClient модуля Players. DLL-"загручик" для твоей задачи, скорее всего, подойдет стандартная. Нужно лишь правильно собрать этот велосипед, и он должен поехать. Если будет полностью рабочий новый режим и какие-либо проблемы с прикручиванием - можешь спрашивать, они решаемы.
  Злобная реклама
Понедельник, 23.10.2017, 19:03
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Вторник, 24.10.2017, 08:12 | Сообщение # 78
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Цитата Sin ()
А если скриптами?

Не умею smile
В любом случае, спасибо за разъяснения. Звучит не очень сложно. Буду пробовать.
  Злобная реклама
Вторник, 24.10.2017, 08:12
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Vojlok
Суббота, 28.10.2017, 23:23 | Сообщение # 79
Статус:
Гость:
Сообщений: 63
Награды: 0
Регистрация: 15.08.2014

LastManStanding" - это режим боя такой? Очень интересно было б пойграть во что-то новенькое в мп:)
  Злобная реклама
Суббота, 28.10.2017, 23:23
Статус:
Сообщений: 666
Регистрация: 15.08.2014
Российская Федерация  Hardtmuth
Воскресенье, 29.10.2017, 07:09 | Сообщение # 80
Статус:
Ветеран:
Сообщений: 5233
Награды: 37
Регистрация: 01.03.2012

Цитата Vojlok ()
LastManStanding" - это режим боя такой? Очень интересно было б пойграть во что-то новенькое в мп:)


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

Я знаю, что LastManStanding - первая бесплатная игра в жанре "battle royale" (батл роял), представляющая уникальное сочетание высокой динамики игрового процесса, накала адреналина от постоянно уменьшающейся карты боевых действий и драйва от участия в грандиозной охоте, где сражаются за жизнь сразу 100 игроков; энтузиазм молодой студии-разработчика гарантируют регулярные обновления и постоянное совершенствование игры на основе обратной связи от игроков!

Но она 2017 года, а значит автор при создании своего проекта об этой игре и знать не знал.
Сообщение отредактировал Hardtmuth - Воскресенье, 29.10.2017, 07:12
  Злобная реклама
Воскресенье, 29.10.2017, 07:09
Статус:
Сообщений: 666
Регистрация: 01.03.2012
Российская Федерация  francyfox
Воскресенье, 29.10.2017, 09:21 | Сообщение # 81
Статус:
Гость:
Сообщений: 32
Награды: 0
Регистрация: 01.09.2013

Vojlok, https://vk.com/dealtech (не реклама) толи это он) то ли другой чувак, оба делают короче pubg из сталкера) по мне так затея не супер, есть в стиме аналог pubg это lastmanstanding и он бесплатен. Я за рп ваще)
Сообщение отредактировал francyfox - Воскресенье, 29.10.2017, 09:23
  Злобная реклама
Воскресенье, 29.10.2017, 09:21
Статус:
Сообщений: 666
Регистрация: 01.09.2013
Российская Федерация  Hardtmuth
Воскресенье, 29.10.2017, 09:31 | Сообщение # 82
Статус:
Ветеран:
Сообщений: 5233
Награды: 37
Регистрация: 01.03.2012

Цитата francyfox ()
оба делают короче pubg из сталкера


Это не пабг из сталкера. Это проект, который делает сеттинг СО в ЗП.
  Злобная реклама
Воскресенье, 29.10.2017, 09:31
Статус:
Сообщений: 666
Регистрация: 01.03.2012
Российская Федерация  francyfox
Воскресенье, 29.10.2017, 09:33 | Сообщение # 83
Статус:
Гость:
Сообщений: 32
Награды: 0
Регистрация: 01.09.2013

drksnc, Hardtmuth,
режим battleroyal предумали еще при arma2, он не является чем это иновационым и придуман давно. pubg результат отделения от движка arma3 с режимом выживания одного игрока.

Добавлено (29.10.2017, 09:33)
---------------------------------------------
Hardtmuth, автор сказал что будет делать pubg. Просто нафига то напихал все из сзон)) я хз

  Злобная реклама
Воскресенье, 29.10.2017, 09:33
Статус:
Сообщений: 666
Регистрация: 01.09.2013
Российская Федерация  Hardtmuth
Воскресенье, 29.10.2017, 09:34 | Сообщение # 84
Статус:
Ветеран:
Сообщений: 5233
Награды: 37
Регистрация: 01.03.2012

Цитата francyfox ()
Hardtmuth, автор сказал что будет делать pubg. Просто нафига то напихал все из сзон))

Я сейчас с ним общаюсь на эту тему. Проект меняет сеттинг CoP На сеттинг S-Online. Но есть камера, приближенная к Pubg
  Злобная реклама
Воскресенье, 29.10.2017, 09:34
Статус:
Сообщений: 666
Регистрация: 01.03.2012
Коста Рика  Jargon
Воскресенье, 29.10.2017, 10:04 | Сообщение # 85
X-Ray Multiplayer Extension
Статус:
Бывалый:
Сообщений: 1078
Награды: 3
Регистрация: 24.06.2012

Цитата francyfox ()
автор сказал что будет делать pubg. Просто нафига то напихал все из сзон)) я хз

Автор сказал что есть настройки камеры приближающие её к камере pubg.
  Злобная реклама
Воскресенье, 29.10.2017, 10:04
Статус:
Сообщений: 666
Регистрация: 24.06.2012
Российская Федерация  drksnc
Пятница, 03.11.2017, 17:46 | Сообщение # 86
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

sin, спасибо за помощь в личке. Не знаю работают ли там bb-коды, поэтому все таки пощу свой кривой код здесь. Вылетает при попытке подключения клиента, если убрать проверку на локального игрока и запустить невыделенный сервер, то багтрап показывает что последняя вызванная функция была GetModuleVer.

*.h файл


Кусок из xrServer_connect.cpp, вставил в конец AttachNewClient()
Сообщение отредактировал drksnc - Пятница, 03.11.2017, 19:49
  Злобная реклама
Пятница, 03.11.2017, 17:46
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Sin
Суббота, 04.11.2017, 14:01 | Сообщение # 87
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Хм... На самом деле, в ДЛЛ сейчас заметил пару APIных неоднозначностей, которые надо бы пофиксить. Имей в виду их пока:
1) Размер enum'a - на разных платформах и компиляторах он может быть разным; не очень понятно, байт или двойное слово сейчас нужно.
2) boolean - скорее всего, там будет байт, но выравнивание может испортить жизнь

Теперь по коду:
using FZSysMsgSender = void*; - с ним так не прокатит, это колбэк, который будет дернут ДЛЛкой для отправки пакета; не забудь про соглашение о вызове, когда будешь его писать (stdcall, он же winapi).

void(*DLLFunc) - это вообще что? smile Для получения из длл SendSysMessage? Тогда смотри внимательнее на аргументы: вторым идет указатель, а не структура. Более того, структуры там могут передаваться разные в зависимости от того, какие требует первый аргумент. Последний аргумент - также указатель.

myCppProc(payload, moddllinfo, sndr, userdata); - в payload передается указатель на процедуру, тебе нужно передать на FZSysMsgsProcessClientModDll; moddllinfo - вместо нее самой надо указатель; sndr - вообще неинициализированное нечто, хотя там должен быть указатель на колбэк, отправляющий клиенту пакет; userdata - надо указатель.

Добавлено (04.11.2017, 14:01)
---------------------------------------------

Цитата Sin ()
сейчас заметил пару APIных неоднозначностей, которые надо бы пофиксить

Исправлено в последнем коммите. Теперь вместо enum'ов явно используются 4-байтовые целые, а структуры имеют атрибут packed (то есть, выровнены по байту). Просьба обратить внимание, что кроме этих двух моментов была расширена структура FZDllDownloadInfo.
  Злобная реклама
Суббота, 04.11.2017, 14:01
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Суббота, 04.11.2017, 21:08 | Сообщение # 88
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Цитата Sin ()
указатель на колбэк

Насколько я понимаю, коллбэк - обычная процедура, поэтому могу использовать typedef, так?
Код
typedef void(__stdcall *FZSysMsgSender)(char* msg, unsigned int len, FZSysMsgSendCallbackData* userdata);
  Злобная реклама
Суббота, 04.11.2017, 21:08
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Sin
Воскресенье, 05.11.2017, 03:57 | Сообщение # 89
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

drksnc, ну да, как-то так.
  Злобная реклама
Воскресенье, 05.11.2017, 03:57
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Среда, 08.11.2017, 02:14 | Сообщение # 90
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Я так понял что мне нужен этот коллбэк на С++. А что такое msg:pointer?
Код
procedure SysMsg_SendCallback(msg:pointer; len:cardinal; userdata:pointer); stdcall;
var
  data:pFZSysMsgSendCallbackData;
begin
  data:=pFZSysMsgSendCallbackData(userdata);
  //DPNSEND_IMMEDIATELLY + DPNSEND_GUARANTEED + DPNSEND_PRIORITY_HIGH
  IPureServer__SendTo_LL.Call([data.srv, data.cl_id.id, msg, len, $100+$8+$80, 0]);
end;

Код
void xrServer::SysMsg_SendCallback(void* msg, unsigned int len, FZSysMsgSendCallbackData* userdata)
{
    userdata->srv->SendTo_LL(userdata->cl_id, msg, len, DPNSEND_IMMEDIATELLY + DPNSEND_GUARANTEED + DPNSEND_PRIORITY_HIGH, 0);
}

И в FZSysMsgsSendSysMessage давать указатель на этот метод?
Сообщение отредактировал drksnc - Среда, 08.11.2017, 03:34
  Злобная реклама
Среда, 08.11.2017, 02:14
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Поиск: