Случайная подборка модов
Clear Sky Complete
4.1
S.T.A.L.K.E.R. F.M.
4.4
Lost Alpha
4.0
Под прикрытием смерти. Клондайк 2.0
4.0
Под прикрытием смерти
3.9
SRP mod
3.9
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: А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
Российская Федерация  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
Поиск: