avatar_spekinskii

Оффтрейд система - Как вырезать кусок из файлов Insomin'ы

Автор spekinskii, 2012 Янв. 12, 19:51

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlinereleaseоффтрейдinsominкод cpp

spekinskii

В общем имеется сырок офф трейда, может кому то пригодится.
.cpp
#include "StdAfx.h"
//------------------------------------------------------------------------------------------------------
CRITICAL_SECTION criti; // Cross-thread safety
OffTrade OfflineTrade; // Class Init
extern Insomina_gObj Inso_gObj[OBJ_MAX]; // Extern of my server gObjStruct, but u can use GOBJECTSTRUCT from your GS, i don't use bcoz no more place in it.
//------------------------------------------------------------------------------------------------------
OffTrade::OffTrade(void)
{
//-- CONSTRUCTOR --
}
//------------------------------------------------------------------------------------------------------
void OffTrade::InitOfflineTrade()
{
// Just Hook two functions.
// First: PShopClose
// Second: CloseClient
HookThis((DWORD)&CGPShopAnsClose_Ex,CGPShopAnsClose_Hook);
HookThis((DWORD)&CloseClient2Ex,CloseClient2_Hook);
cLog.ConsoleOutput("OffTrade::InitOfflineTrade();");
}
//------------------------------------------------------------------------------------------------------
OffTrade::~OffTrade(void)
{
//-- DESTRUCTOR ----
}
//------------------------------------------------------------------------------------------------------
void OffTrade::CreateOfflineStore(int aIndex)
{
// This function must be called from chat handler, like this:
/*
//-------------------------------------------------------------------------
char offlinetradecommand[]="/offline";
if (!memcmp(&aRecv[13],Config.SyntaxCmd.OffTrade,strlen(Config.SyntaxCmd.OffTrade)))
bResult = OffTrade(gObj,(char*)aRecv+13+strlen(Config.SyntaxCmd.OffTrade));
//-------------------------------------------------------------------------
*/
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
if(gObj->m_bPShopOpen == false) // Check if PStore is open.
{
Messages.outBlue(aIndex,"Please, at first open Your Personal Store");
return;
}
if(gObj->MapNumber != 0)
{
Messages.outBlue(aIndex,"Offline trade can be used only in Lorencia");
return;
}
Inso_gObj[aIndex].OfflineTrade=true;
CloseClient(aIndex);
}
//------------------------------------------------------------------------------------------------------
void CGPShopAnsClose_Ex(int aIndex, BYTE btResult)
{
// Function calling when Personal store is closing.
// Also it is calling when Personal store become empty.

CGPShopAnsClose(aIndex,btResult);

if(Inso_gObj[aIndex].OfflineTrade == true)
{
Inso_gObj[aIndex].OfflineTrade = false;
cLog.ConsoleOutput("PSHOp cLOSE");
gObjDel_Ex(aIndex);
}
}
//------------------------------------------------------------------------------------------------------
void CloseClient2Ex(_PER_SOCKET_CONTEXT_2 * lpPerSocketContext, int result)
{
// Very easy function hooking. Just disable auto log-off of Disconnected Characters ;)
int index = -1;
index = lpPerSocketContext->nIndex ;
//---
if ( index >= 8000 && index < 9000 )
{
if ( gObj[index].m_socket != INVALID_SOCKET )
{
if ( closesocket(gObj[index].m_socket) == -1 )
if ( WSAGetLastError() != WSAENOTSOCK )
return;
gObj[index].m_socket = INVALID_SOCKET;
}
gObjDel_Ex(index);
}
}//------------------------------------------------------------------------------------------------------

.h
#pragma once
class OffTrade
{
public:
OffTrade(void);
~OffTrade(void);
void CreateOfflineStore(int aIndex);
void InitOfflineTrade();
};extern OffTrade OfflineTrade;

#define HIDE_ERRORL10
#define MAX_EXSENDBUF_SIZE 7024
#define MAX_IO_BUFFER_SIZE        6000
#define MAX_IO_THREAD_HANDLES    16

struct _PER_IO_CONTEXT_2
{
WSAOVERLAPPED Overlapped; // 0
WSABUF wsabuf;
unsigned char Buffer[MAX_IO_BUFFER_SIZE]; // 1C
unsigned char BufferSecond[MAX_IO_BUFFER_SIZE]; // 178C
int nSecondOfs; // 2EFC
int nTotalBytes;    // 2F00
int nSentBytes; // 2F04
int IOOperation; // 2F08
int nWaitIO; // 2F0C
};
struct _PER_SOCKET_CONTEXT_2
{
SOCKET m_socket;    // 0
int nIndex;    // 4
_PER_IO_CONTEXT_2 IOContext[2];    // 8
int dwIOCount;    // 5E28
};
#define CGPShopAnsClose_Hook 0x004041C4
#define CGPShopAnsClose ((void(*)(int,BYTE))0x0044B2C0)
#define ResponErrorCloseClient ((void(*)(int,BYTE))0x0044B2C0)
#define ResponErrorCloseClient_Hook 0x00403E95

#define CloseClient2_Ex ((void(*)(_PER_SOCKET_CONTEXT*,int))0x004B3F70)
#define CloseClient2_Hook 0x004057D6

void CGPShopAnsClose_Ex(int aIndex, BYTE btResult);
void CloseClient2Ex(_PER_SOCKET_CONTEXT_2 * lpPerSocketContext, int result);

Может кому то пригодится

DarkSim

spekinskii
- вырезать кусок из файлов Insomin'ы, что бы рейтинг поднять - мужик  :lol:

spekinskii

DarkSim да нет, не для этого :huh:
Будь человеком, помоги.
Загляни в тему

Paqpka

ктонибудь может поставить помочь етот оффтраде в сервер?

spekinskii

поставить то не проблема.
У тебя сорцы сервера есть?

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

Eldar

В js надо фиксить.
Спойлер
sss
[свернуть]

c4nhsatcodong

1>d:\2b\gsplugin\gsplugin\offtrade.cpp(4): error C2146: syntax error : missing ';' before identifier 'OfflineTrade'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(4): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(4): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(5): error C2146: syntax error : missing ';' before identifier 'Inso_gObj'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(5): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(5): error C2065: 'OBJ_MAX' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(5): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(7): error C2825: 'OffTrade': must be a class or namespace when followed by '::'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(7): error C2143: syntax error : missing ';' before 'OffTrade'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(7): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(7): error C2086: 'int OffTrade' : redefinition
1>          d:\2b\gsplugin\gsplugin\offtrade.cpp(4) : see declaration of 'OffTrade'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(8): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(8): error C2063: 'OffTrade' : not a function
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(8): error C3755: 'OffTrade': a delegate may not be defined
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(12): error C2825: 'OffTrade': must be a class or namespace when followed by '::'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(12): error C2039: 'InitOfflineTrade' : is not a member of '`global namespace''
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(12): error C2146: syntax error : missing ';' before identifier 'InitOfflineTrade'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(12): error C2182: 'OffTrade' : illegal use of type 'void'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(12): error C2086: 'int OffTrade' : redefinition
1>          d:\2b\gsplugin\gsplugin\offtrade.cpp(4) : see declaration of 'OffTrade'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(13): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(17): error C2065: 'CGPShopAnsClose_Ex' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(17): error C2065: 'CGPShopAnsClose_Hook' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(17): error C3861: 'HookThis': identifier not found
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(18): error C2065: 'CloseClient2Ex' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(18): error C2065: 'CloseClient2_Hook' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(18): error C3861: 'HookThis': identifier not found
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(19): error C2065: 'cLog' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(19): error C2228: left of '.ConsoleOutput' must have class/struct/union
1>          type is ''unknown-type''
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(20): warning C4508: 'InitOfflineTrade' : function should return a value; 'void' return type assumed
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(22): warning C4091: '' : ignored on left of 'int' when no variable is declared
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(22): error C2143: syntax error : missing ';' before '::'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(22): error C2059: syntax error : '::'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(23): error C2143: syntax error : missing ';' before '{'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(23): error C2447: '{' : missing function header (old-style formal list?)
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(27): error C2825: 'OffTrade': must be a class or namespace when followed by '::'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(27): error C2143: syntax error : missing ';' before '::'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(27): error C2182: 'OffTrade' : illegal use of type 'void'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(27): error C2086: 'int OffTrade' : redefinition
1>          d:\2b\gsplugin\gsplugin\offtrade.cpp(4) : see declaration of 'OffTrade'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(28): error C2143: syntax error : missing ';' before '{'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(28): error C2447: '{' : missing function header (old-style formal list?)
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(57): error C3861: 'CGPShopAnsClose': identifier not found
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(59): error C2228: left of '.OfflineTrade' must have class/struct/union
1>          type is 'int'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(61): error C2228: left of '.OfflineTrade' must have class/struct/union
1>          type is 'int'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(62): error C2065: 'cLog' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(62): error C2228: left of '.ConsoleOutput' must have class/struct/union
1>          type is ''unknown-type''
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(63): error C3861: 'gObjDel_Ex': identifier not found
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(67): error C2065: '_PER_SOCKET_CONTEXT_2' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(67): error C2065: 'lpPerSocketContext' : undeclared identifier
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(67): error C2062: type 'int' unexpected
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(68): error C2143: syntax error : missing ';' before '{'
1>d:\2b\gsplugin\gsplugin\offtrade.cpp(68): error C2447: '{' : missing function header (old-style formal list?)

Похожие темы (5)