Случайная подборка модов
Призраки Прошлого 2
3.0
Конец Света 2: Последний Восход
3.2
NEYA Online
3.1
День одиночки
1.6
Последний день
3.5
STALKER: [O.F.F.L.I.F.E.]
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: Аdmin, Overfirst, Hardtmuth  
Форум » S.T.A.L.K.E.R. Модификации » Прочие модификации » Незаконченные моды » The FreeZone Project (Вторая жизнь мультиплеера)
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
Российская Федерация  Sin
Среда, 08.11.2017, 13:53 | Сообщение # 91
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Цитата drksnc ()
msg:pointer

Указатель на данные, которые надо отправить клиенту вызовом SendTo_LL; len - длина этих данных.

Цитата drksnc ()
давать указатель

Да. Только прототип не совсем соответствует требуемому. Во-первых, соглашение о вызове stdcall. Во-вторых, колбэк не должен быть членом класса (или быть статическим членом, если очень хочется). В третьих - странно выглядит FZSysMsgSendCallbackData* userdata, тут достаточно xrServer* же передать.
  Злобная реклама
Среда, 08.11.2017, 13:53
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Среда, 08.11.2017, 17:00 | Сообщение # 92
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Цитата Sin ()
тут достаточно xrServer* же передать

А как тогда получить ClientID?
  Злобная реклама
Среда, 08.11.2017, 17:00
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Sin
Четверг, 09.11.2017, 03:06 | Сообщение # 93
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Хм, вообще, да, придется тогда паковать в структуру их.
  Злобная реклама
Четверг, 09.11.2017, 03:06
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Четверг, 09.11.2017, 18:59 | Сообщение # 94
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Вроде бы поправил, но все равно вылетает при попытке коннекта.
.h
Код
typedef unsigned int FZArchiveCompressionType;
FZArchiveCompressionType FZ_COMPRESSION_NO_COMPRESSION = 0;
FZArchiveCompressionType FZ_COMPRESSION_LZO_COMPRESSION = 1;
FZArchiveCompressionType FZ_COMPRESSION_CAB_COMPRESSION = 2;

#pragma pack(push, 1)
struct StructForCallBack {
    xrServer* srv;
    ClientID cl_id;
};
#pragma pack(pop)

struct FZSysMsgSendCallbackData {
    IPureServer* srv;
    ClientID cl_id;

};
using FZSysMsgsProcessClientModDll = void*;

void __stdcall FZSysMsgSender(void* msg, unsigned int len, StructForCallBack* userdata)
{
    userdata->srv->SendTo_LL(userdata->cl_id, msg, len, DPNSEND_IMMEDIATELLY + DPNSEND_GUARANTEED + DPNSEND_PRIORITY_HIGH, 0);
}
typedef void(__stdcall *PointerToFunc)(void* msg, unsigned int len, StructForCallBack* userdata);

#pragma pack(push, 1)
struct FZFileDownloadInfo {
  char* filename;
  char* url;
  unsigned int crc32;
  FZArchiveCompressionType compression;
  char* progress_msg;
  char* error_already_has_dl_msg;
};
#pragma pack(pop)

#pragma pack(push, 1)
struct FZReconnectInetAddrData {
  char* ip;
  unsigned int port;
};
#pragma pack(pop)

#pragma pack(push, 1)
struct FZDllDownloadInfo {
  FZFileDownloadInfo fileinfo;
  char* procname;
  char* procarg1;
  char* procarg2;
  char* dsign;
  FZReconnectInetAddrData reconnect_addr;
  unsigned int is_reconnect_needed;
  char* name_lock;
};
#pragma pack(pop)

typedef void(*FZSysMsgsSendSysMessage)(void*, FZDllDownloadInfo*, void*, FZSysMsgSendCallbackData*);
typedef bool(*FZSysMsgsInit)();

.cpp
Код
    if (GetClientByID(CL->ID) != GetServerClient()){
  FZSysMsgsProcessClientModDll* payload;

  FZDllDownloadInfo* moddllinfo;

  moddllinfo->fileinfo.filename = "ctz.mod";
  moddllinfo->fileinfo.url = "http://stalker.gamepolis.ru/mods_clear_sky/engine_1510/fz_mod_loader.dll";
  moddllinfo->fileinfo.crc32 = 0xBBBEF09F;
  moddllinfo->fileinfo.progress_msg = "fz_mod_downloading";
  moddllinfo->fileinfo.error_already_has_dl_msg = "fz_already_has_download";
  moddllinfo->fileinfo.compression = FZ_COMPRESSION_NO_COMPRESSION;
  moddllinfo->procname = "ModLoad";
  moddllinfo->procarg1 = "ctz";
  moddllinfo->procarg2 = "-srv 37.144.191.129 -srvport 5445 -binlist http://stalker.gamepolis.ru/mods_clear_sky/engine_1510/engine.txt";
  moddllinfo->dsign = "302D0214411F7831E892D25B13F357E7AAEB565B03E926F6021500F1658E9E1733C37BD183279F7C5B00D4AAA3C8F8";
  
  moddllinfo->is_reconnect_needed = 1;
  moddllinfo->reconnect_addr.ip = "37.144.191.129";
  moddllinfo->reconnect_addr.port = 5445;

  FZSysMsgSendCallbackData* userdata;

  userdata->srv = CL->server;
  userdata->cl_id = CL->ID;
  PointerToFunc sndr;
  sndr = &FZSysMsgSender;

  HINSTANCE hGetProcIDDLL = LoadLibrary("sysmsgs.dll");

  FZSysMsgsSendSysMessage myCppProc;
  FZSysMsgsInit myCppProc_;

  myCppProc_ = (FZSysMsgsInit)GetProcAddress(hGetProcIDDLL, "FZSysMsgsInit");
  myCppProc_(); //Надо ли вызывать?

  myCppProc = (FZSysMsgsSendSysMessage)GetProcAddress(hGetProcIDDLL, "FZSysMsgsSendSysMessage");
  myCppProc(payload, moddllinfo, sndr, userdata); // Пробовал и ссылками
  FreeLibrary(hGetProcIDDLL);
    }
Сообщение отредактировал drksnc - Четверг, 09.11.2017, 19:37
  Злобная реклама
Четверг, 09.11.2017, 18:59
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Sin
Пятница, 10.11.2017, 03:28 | Сообщение # 95
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Цитата drksnc ()
myCppProc_(); //Надо ли вызывать?

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

Цитата drksnc ()
FZSysMsgsProcessClientModDll* payload;

FZDllDownloadInfo* moddllinfo;

Указатели в никуда smile Надо не указатель тут объявлять, а сам экземпляр структуры.
  Злобная реклама
Пятница, 10.11.2017, 03:28
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Пятница, 10.11.2017, 04:55 | Сообщение # 96
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Цитата Sin ()
Надо не указатель тут объявлять, а сам экземпляр структуры.

Да, я делал так
Код
  FZDllDownloadInfo* pModdllinfo;
  pModdllinfo = &moddllinfo;

  FZSysMsgsProcessClientModDll* pPayload;
  pPayload = &payload;

  FZSysMsgSendCallbackData* pUserdata;
  pUserdata = &userdata;

Но все равно вылет sad
  Злобная реклама
Пятница, 10.11.2017, 04:55
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Sin
Пятница, 10.11.2017, 17:48 | Сообщение # 97
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

drksnc, что-то не так значит. Вот тебе наколеночный пример, который не вылетает и что-то пытается отправлять, дергая колбэк. Адаптируй ко своим реалиям.
  Злобная реклама
Пятница, 10.11.2017, 17:48
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Российская Федерация  drksnc
Пятница, 10.11.2017, 18:09 | Сообщение # 98
xrMPE
Статус:
Гость:
Сообщений: 30
Награды: 2
Регистрация: 23.10.2017

Спасибо большое, нашел косяк. biggrin
  Злобная реклама
Пятница, 10.11.2017, 18:09
Статус:
Сообщений: 666
Регистрация: 23.10.2017
Российская Федерация  Graff46
Вторник, 21.11.2017, 19:37 | Сообщение # 99
Новое Время
Статус:
Бывалый:
Сообщений: 867
Награды: 7
Регистрация: 02.05.2013

Кооператив на данном возможен?
  Злобная реклама
Вторник, 21.11.2017, 19:37
Статус:
Сообщений: 666
Регистрация: 02.05.2013
Российская Федерация  Hardtmuth
Вторник, 21.11.2017, 21:49 | Сообщение # 100
Статус:
Ветеран:
Сообщений: 5233
Награды: 37
Регистрация: 01.03.2012

Цитата Graff46 ()
Кооператив на данном возможен?

Думаю да, почему нет. Через FZ можно скачивать карты, моды. Этого достаточно.
Создаешь модецкий с кооперативом, и запускаешь сервер с этим модом, предварительно настроив и всё сделав в FZ. После запуска сервера игроки заходят на сервер и у них скачивается мод и стоящая карта на сервере.
Сообщение отредактировал Hardtmuth - Вторник, 21.11.2017, 21:51
  Злобная реклама
Вторник, 21.11.2017, 21:49
Статус:
Сообщений: 666
Регистрация: 01.03.2012
Российская Федерация  Vojlok
Воскресенье, 26.11.2017, 14:47 | Сообщение # 101
Статус:
Гость:
Сообщений: 63
Награды: 0
Регистрация: 15.08.2014

Хорошие новости - FreeZone обновился! Ссылка на релиз
  Злобная реклама
Воскресенье, 26.11.2017, 14:47
Статус:
Сообщений: 666
Регистрация: 15.08.2014
Российская Федерация  Hardtmuth
Воскресенье, 26.11.2017, 14:56 | Сообщение # 102
Статус:
Ветеран:
Сообщений: 5233
Награды: 37
Регистрация: 01.03.2012

Цитата Vojlok ()
Хорошие новости - FreeZone обновился!

Эх, ждём теперь чтобы sin для Теней сделал вкусняшек)
  Злобная реклама
Воскресенье, 26.11.2017, 14:56
Статус:
Сообщений: 666
Регистрация: 01.03.2012
Российская Федерация  Sin
Суббота, 09.12.2017, 17:18 | Сообщение # 103
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Вышло обновление с возвращением поддержки загрузки контента в GoG и Steam версиях ЧН. У кого есть оные - просьба потестить работу загрузки карт и модов.

Добавлено (09.12.2017, 17:18)
---------------------------------------------
"Один FZ чтоб править всеми..."

Сообщение отредактировал Sin - Суббота, 09.12.2017, 17:13
  Злобная реклама
Суббота, 09.12.2017, 17:18
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Коста Рика  Jargon
Суббота, 09.12.2017, 19:07 | Сообщение # 104
X-Ray Multiplayer Extension
Статус:
Бывалый:
Сообщений: 1078
Награды: 3
Регистрация: 24.06.2012

Цитата Sin ()
"Один FZ чтоб править всеми..."

Тоесть на версию не ругается если через мастерлист подключиться?
  Злобная реклама
Суббота, 09.12.2017, 19:07
Статус:
Сообщений: 666
Регистрация: 24.06.2012
Российская Федерация  Sin
Вторник, 01.05.2018, 16:54 | Сообщение # 105
Статус:
Отмычка:
Сообщений: 77
Награды: 1
Регистрация: 15.01.2014

Jargon, на неправильную версию естественно будет ругаться smile . Соль в том, что:
1) В принципе удается относительно малой кровью прикручивать к sysmsgs поддержку движка ЗП -пока что сделано для загрузчика карт. Отличия от ЧН есть, но они не столь существенны.
2) Решение получается кроссплатформенным - либу можно будет использовать с обоими движками. Собственно, на скрине показано, что при подключении клиента ЗП к ЧНовскому серверу (прямой IP никто не отменял) модуль исправно отрабатывает и стартует загрузку на клиенте ЗП.

Добавлено (01.05.2018, 16:54)
---------------------------------------------
Итак, выложен новый релиз FreeZone. Из вкусностей:
-Модули генератора системных сообщений (sysmsgs.dll) и загрузчика модов (fz_mod_loader.dll) теперь стали по-настоящему кроссплатформенными - поддерживается работа на ТЧ 1.0006, ЧН 1.5.10, ЗП 1.6.02. Благодаря этому автоматическую загрузку модов можно с легкостью реализовать в модах на всех 3х играх серии. Пример использования и класс-обертку можно найти в коде FreeZone, а также в проекте sysmsgs_cpp_wrap.
-Упрощена настройка сервера для работы с зарегистрированными в мастер-списке модами - теперь достаточно указать только желаемый mod_name и адрес/порт сервера в mod_params
-Анализ закупа игроков - использовать шопхаки теперь достаточно проблематично (особенно при включенной опции оповещения радминов)
-Исправление множества новых багов и глюков

Все желающие могут взять его по стандартному адресу: https://github.com/FreeZoneMods/freezone

  Злобная реклама
Вторник, 01.05.2018, 16:54
Статус:
Сообщений: 666
Регистрация: 15.01.2014
Форум » S.T.A.L.K.E.R. Модификации » Прочие модификации » Незаконченные моды » The FreeZone Project (Вторая жизнь мультиплеера)
Поиск: