#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);
}
}