Helo, how can i enable /offtrade in my server? its like when you /offftrade your character is online even if you already log-out?
Printable View
Helo, how can i enable /offtrade in my server? its like when you /offftrade your character is online even if you already log-out?
Bump!
you must code it into your GS.
yes i know, i want to know how? or is there already a release for it
im in your situacion ..
I found this Sources in google.. but is of a GS 1.00.18 , and I need to GS 1.00.90 , I Seeing how i can adapt.. (Sorry bad english)
.cpp:
Quote:
#include "OfflineTrade.h"
#include "GameServer.h"
#include "Utilits.h"
#include "ConsoleNew.h"
#include "Log.h"
#include <WinSock2.h>
CRITICAL_SECTION criti;
COFFTrade OFFTrade;
OFFLINETRADE OfflineShop[OBJECT_MAX];
OFFLINETRADELOGIN OfflineLogin[OBJECT_MAX];
void COFFTrade::Init()
{
cLog.ConsoleOutput(WHITE,"[FAVORITE] (OFFTrade) System is Loaded");
}
void COFFTrade::CreateOfflineTrade(int aIndex)
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
if(gObj->m_bPShopOpen == false)
{
Messages.outNormal(aIndex,"Сперва откройте свой Personal Store!");
return;
}
OfflineShop[aIndex].IsOffTrade=1;
CloseClient(aIndex);
}
void CGPShopAnsCloseHook(int aIndex, BYTE btResult)
{
if(OfflineShop[aIndex].IsOffTrade)
gObjDel(aIndex);
CGPShopAnsClose(aIndex,btResult);
}
void CloseClientHook(int aIndex)
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
if ( aIndex < 0 || aIndex > OBJECT_MAX-1 )
return;
if(OfflineShop[aIndex].IsOffTrade != 0)
return;
if ( gObj->Connected == PLAYER_EMPTY )
return;
if ( gObj->m_socket != INVALID_SOCKET )
{
closesocket(gObj->m_socket );
gObj->m_socket = INVALID_SOCKET;
}
}
void ResponErrorCloseClientHook(int aIndex)
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*) OBJECT_POINTER(aIndex);
if ( aIndex < 0 || aIndex > OBJECT_MAX-1 )
return;
if(OfflineShop[aIndex].IsOffTrade == 1)
return;
if (gObj->Connected == PLAYER_EMPTY )
return;
closesocket(gObj->m_socket);
gObj->m_socket = INVALID_SOCKET;
gObjDel(aIndex);
}
void CloseClient2Hook(_PER_SOCKET_CONTEXT * lpPerSocketContext, int result)
{
int index = -1;
index = lpPerSocketContext->nIndex ;
if ( index >= OBJECT_MIN && index < OBJECT_MAX )
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*) OBJECT_POINTER(index);
if(OfflineShop[index].IsOffTrade != 0)
return;
if ( gObj->m_socket != INVALID_SOCKET )
{
if (closesocket(gObj->m_socket) == -1 )
{
if ( WSAGetLastError() != WSAENOTSOCK )
return;
}
gObj->m_socket = INVALID_SOCKET;
}
gObjDel(index);
}
}
.H
Credits:Quote:
#include "StdAfx.h"
#include "User.h"
class COFFTrade
{
public:
void Init();
void CreateOfflineTrade(int aIndex);
}; extern COFFTrade OFFTrade;
struct _PER_SOCKET_CONTEXT
{
char unk[4]; //
int nIndex; // 4
char Unk[0x5E28];
// _PER_IO_CONTEXT IOContext[2]; // 8
// int dwIOCount; // 5E28
};
struct OFFLINETRADE{
int IsOffTrade;
}; extern OFFLINETRADE OfflineShop[OBJECT_MAX];
struct OFFLINETRADELOGIN{
int aIndex;
LPBYTE aRecv;
}; extern OFFLINETRADELOGIN OfflineLogin[OBJECT_MAX];
void CGPShopAnsCloseHook(int aIndex, BYTE btResult); //00441070 - 0x00404174
void ResponErrorCloseClientHook(int aIndex); //0048CC50 - 0x00403CF1
void CloseClient2Hook(_PER_SOCKET_CONTEXT * lpPerSocketContext, int result); //0048CAB0 - 0x004054F7
void CloseClientHook(int aIndex); //0048CB60 - 0x401046
- LeGrand.
- SmallHabbit.
PD: If you can make something send me a PM!