You are not logged in.
Pages: 1
Здравствуйте все.
Команда русских разработчиков во главе с WNeZRoS разрабатывает мультиплеер для GTA IV,и не помешала бы помощь listener'a и Seemann'a т.к. вы работаете с внутренностями гта намного дольше нас всех=)
[center]FOUR-MP
Russian GTA IV Multiplayer[/center]FOUR-MP v0.03
В новой версии добавлено:
Синхронизация прыжков
Синхронизация приседаний
Чат (с русским у него плохо, очень чувствительные буквы (shift работает но плохо))
Список игроков на экране (Now at screen)ищутся люди способные перевести сервер под Widows в сервер под linux
Скоро будет v0.1b
Скриптовой язык SQUIRREL
Поддержка чатом русского языка есть
Поддержки версии 1C нет (может будет) (поверх 1С 1.0.3.1 становится 1.0.4.0)
Сейчас в мп использован GTA IV C++ Script Hook ,но нужен собственный чтобы его можно было редактировать и была поддержка всех версий,вы принимали участие в разработке GTA IV C++ Script Hook может поможете нам сделать хук для мп?=)
Офф сайт разработки: four-mp.com
Last edited by 009 (16-07-2009 16:24)
Offline
@009 - Уф-ф-ф... Все гораздо проще.
В игре есть штатный механизм синхронизации. Очень большой, очень подробный и очень сложный. (~10-15% от всего игрового кода). Если хочется сделать собственный мультиплеер - гораздо проще заюзать его, заменив только сетевую часть.
Более того, все, что не касается match-making, ranking и прочих масштабных вещей - обертки вокруг самых обычных сокетов. Я специально оставлял в исходниках xliveless комментарии к этим функциям.
Так что, все упирается в написание маленькой dll (можно, как стартовую точку взять тот же xliveless - он public domain), которая будет заниматься перенаправкой соответствующих вызовов в winsock, плюс какая-то минимальная логика для организации матчей.
Offline
Включется синхронизация автоматически, как только выставляется флаг, что началась сетевая игра.
После этого, любое действие в игре (включая погоду, радиостанции, время и т.д.) начинает синхронизироваться на всех участников игры.
@WNeZRoS - match-making - подбор участников игры (по рейтингу, friend/non-friend, бан читеров и т.д.)
Offline
Включется синхронизация автоматически, как только выставляется флаг, что началась сетевая игра.
После этого, любое действие в игре (включая погоду, радиостанции, время и т.д.) начинает синхронизироваться на всех участников игры.@WNeZRoS - match-making - подбор участников игры (по рейтингу, friend/non-friend, бан читеров и т.д.)
начинает синхронизироваться но стандартными методами игры,да?и нам получается надо будет перенаправить данные на наш сетевой двиг,верно,или нет?=)
P.S.
extern "C" SOCKET __stdcall xlive_3 (int af, int type, int protocol) { // XSocketCreate trace ("xlive_3: XCreateSocket (%d, %d, %d)\n", af, type, protocol); return INVALID_SOCKET; } extern "C" int __stdcall xlive_4 (SOCKET s) { // XSocketClose trace ("xlive_4: XSockeClose)\n"); return 0; } extern "C" int __stdcall xlive_5 (SOCKET s, int how) { // XSocketShutdown trace ("xlive_5: XSocketShutdown\n"); return 0; } extern "C" int __stdcall xlive_6 (SOCKET s, long cmd, long * argp) { // XSocketIOCTLSocket trace ("xlive_6: XSocketIOCTLSocket\n"); return 0; } extern "C" int __stdcall xlive_7 (SOCKET s, DWORD, DWORD, DWORD, DWORD) { // XSocketSetSockOpt trace ("xlive_7: XSocketSetSockOpt\n"); return 0; } extern "C" int __stdcall xlive_9 (SOCKET s, sockaddr_in * name, int * namelen) { // XSocketGetSockName trace ("xlive_9: XSocketGetSockName\n"); if (namelen && name && *namelen == sizeof (sockaddr_in)) memset (name, 0, sizeof (sockaddr_in)); return 0; } extern "C" SOCKET __stdcall xlive_11 (SOCKET s, sockaddr_in * addr, int * addrlen) {// XSocketBind trace ("xlive_11: XSocketBind\n"); return INVALID_SOCKET; } extern "C" int __stdcall xlive_12 (SOCKET s, sockaddr_in * addr, int * addrlen) {// XSocketConnect trace ("xlive_12: XSocketConnect\n"); return 0; } extern "C" int __stdcall xlive_13 (SOCKET s, int backlog) { // XSocketListen trace ("xlive_13: XSocketListen\n"); return 0; } extern "C" SOCKET __stdcall xlive_14 (SOCKET s, sockaddr_in * addr, int * addrlen) { // XSocketAccept trace ("xlive_14: XSocketAccept\n"); return INVALID_SOCKET; } extern "C" int __stdcall xlive_15 (int n, void *, void *, void *, void *) { // XSocketSelect trace ("xlive_15: XSocketSelect\n"); return 0; } extern "C" int __stdcall xlive_18 (SOCKET s, char * buf, int len, int flags) { // XSocketRecv return 0; } extern "C" int __stdcall xlive_20 (SOCKET s, char * buf, int len, int flags, sockaddr_in * from, int fromlen) { // XSocketRecvFrom return 0; } extern "C" int __stdcall xlive_22 (SOCKET s, char * buf, int len, int flags) { // XSocketSend return 0; } extern "C" int __stdcall xlive_24 (SOCKET s, char * buf, int len, int flags, sockaddr_in * to, int tolen) { // XSocketSendTo return 0; } extern "C" int __stdcall xlive_26 (char *) { // XSocketInet_Addr trace ("xlive_26: XSocketInet_Addr\n"); return 0; }
это для использования сокетов игрового сетевого движка?
Last edited by 009 (16-07-2009 18:12)
Offline
Pages: 1