Offtrade source code S1

Page 1 of 2 12 LastLast
Results 1 to 15 of 27
  1. #1
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Offtrade source code S1

    Hello ragezone,
    I would like to ask for a source code of the "Offtrade System" for season 1.

    Have a nice week,
    Amit.


  2. #2

    Re: Offtrade source code S1

    if u know how to code it to season 1 then here..

    offtrade.rar

    and add in a .cfg file to read through your GS
    Code:
    /------------------------------------------------------//
    //	           /OffTrade Command Configs		        //
    //------------------------------------------------------//
    [OffTrade]
    OffTradeEnabled				= 1
    OffTradeLevelReq			= 15
    OffTradeZen				= 1000

  3. #3
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    Quote Originally Posted by KarLi View Post
    if u know how to code it to season 1 then here..

    offtrade.rar

    and add in a .cfg file to read through your GS
    Code:
    /------------------------------------------------------//
    //	           /OffTrade Command Configs		        //
    //------------------------------------------------------//
    [OffTrade]
    OffTradeEnabled				= 1
    OffTradeLevelReq			= 15
    OffTradeZen				= 1000
    I know this source.. it's from IA Julia..
    I'm trying to recode it to S1, if someone has the source for season 1 it'll be great.

  4. #4
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    Up thread?

  5. #5
    LiveGuard Software Ltd Mecanik is offline
    MemberRank
    Jan 2012 Join Date
    404 Not FoundLocation
    343Posts

    Re: Offtrade source code S1

    There is no "Offtrade System" for season 1! You have to just change the packets, and edit your Protocol to suit your S1.

  6. #6
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    Quote Originally Posted by Mecanik View Post
    There is no "Offtrade System" for season 1! You have to just change the packets, and edit your Protocol to suit your S1.
    I know.. that's why I opened the thread.
    If there's someone who knows how to code it to season 1 contact me on PM.
    Thanks.

  7. #7
    LiveGuard Software Ltd Mecanik is offline
    MemberRank
    Jan 2012 Join Date
    404 Not FoundLocation
    343Posts

    Re: Offtrade source code S1

    Send me your S1 source, and I will make it for you these days... :)

  8. #8
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    Quote Originally Posted by Mecanik View Post
    Send me your S1 source, and I will make it for you these days... :)
    Sent on PM

  9. #9
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    Still needed..

  10. #10
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    up?...

  11. #11
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    up...

  12. #12
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    up.. still needed.

  13. #13
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    bump:)

  14. #14

    Re: Offtrade source code S1

    what about not from IA Julia source?

    example s3ep1 1.00.18 gs offtrade source:

    .cpp
    Code:
    #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
    Code:
    #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

    although posted by d@nger this one maybe is better

    .cpp
    Code:
    //================================================================================
    ==================
    // Offline Trade System
    //================================================================================
    ==================
    #include "OffTrade.h"
    #include "Protocol.h"
    #include "g_Console.h"
    #include <WinSock2.h>
    #include "USER.h"
    #include "Defines.h"
    #include "LogAdd.h"
    
    CRITICAL_SECTION criti;
    COFFTrade OFFTrade;
    OFFLINETRADE OfflineShop[OBJECT_MAX];
    int OffPrice = GetPrivateProfileInt("Common","CreateCost",250000,"..\\Data\\Custom\\OffTrade.cfg");
    int MapAllow = GetPrivateProfileInt("MapSystem","Enable",1,"..\\Data\\Custom\\OffTrade.cfg");
    int Map1 = GetPrivateProfileInt("MapSystem","Map1",0,"..\\Data\\Custom\\OffTrade.cfg");
    int Map2 = GetPrivateProfileInt("MapSystem","Map2",3,"..\\Data\\Custom\\OffTrade.cfg");
    int Map3 = GetPrivateProfileInt("MapSystem","Map3",2,"..\\Data\\Custom\\OffTrade.cfg");
    
    //==========================
    // Functions Hook
    //==========================
    void COFFTrade::Init()
    {
    HookThis((DWORD)&CloseClient2Hook,0x00405CA4);//finished
    HookThis((DWORD)&CGPShopAnsCloseHook,0x00404552);//finished
    HookThis((DWORD)&ResponErrorCloseClientHook,0x0040422D);
    HookThis((DWORD)&CloseClientHook,0x00407E82);//finished
    }
    
    //==========================
    // OffTrade Create
    //==========================
    void COFFTrade::CreateOfflineTrade(int aIndex)
    {
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    if(gObj->m_bPShopOpen == false)
    {
    MsgNormal(aIndex,"[SYSTEM] You need create Personal Store to use this command");
    return;
    }
    else 
    {
    if(MapAllow == 1)
    {
    if(gObj->MapNumber == Map1 || gObj->MapNumber == Map2 || gObj->MapNumber == Map3)
    {
    (gObj->Money -= OffPrice);
    GCMoneySend(gObj->m_Index, gObj->Money);
    OfflineShop[aIndex].IsOffTrade=1;
    //SQL.OffTradeOn(aIndex);
    CloseClient(aIndex);
    g_Console.ConsoleOutput(4,"[OFFTRADE][%s][%s] Open Offline Shop",gObj->AccountID,gObj->Name);
    LogAdder ("OFFTRADE","Open Offline Shop",aIndex);
    }
    MsgNormal(aIndex,"[SYSTEM] OffTrade work only special maps");
    return;
    }
    }
    if(MapAllow == 0)
    {
    (gObj->Money -= OffPrice);
    GCMoneySend(gObj->m_Index, gObj->Money);
    OfflineShop[aIndex].IsOffTrade=1;
    //SQL.OffTradeOn(aIndex);
    CloseClient(aIndex);
    g_Console.ConsoleOutput(4,"[OFFTRADE][%s][%s] Open Offline Shop",gObj->AccountID,gObj->Name);
    LogAdder ("OFFTRADE","Close Offline Shop",aIndex);
    //int TimeDelayCorrect = ( 60 - t.GetSecond() ) * 1000;
    //Sleep(TimeDelayCorrect);	
    }
    }
    
    //==========================
    // Shop Close
    //==========================
    void CGPShopAnsCloseHook(int aIndex, BYTE btResult)
    {
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    if(OfflineShop[aIndex].IsOffTrade)
    gObjDel(aIndex);
    
    OfflineShop[aIndex].IsOffTrade = 0;
    //SQL.OffTradeOff(aIndex);
    CGPShopAnsClose(aIndex,btResult);
    }
    
    //==========================
    // Client Close
    //==========================
    void CloseClientHook(int aIndex)
    {	
    if ( aIndex < 0 || aIndex > OBJECT_MAX-1 )
    {
    return;
    }
    
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    if ( gObj->Connected == PLAYER_EMPTY )
    {	
    return;
    }
    
    if(OfflineShop[aIndex].IsOffTrade != 0)
    {	
    gObj->CheckTick = GetTickCount();
    return; 
    }
    
    if(gObj->m_socket != INVALID_SOCKET)
    {
    closesocket(gObj->m_socket );
    gObj->m_socket = INVALID_SOCKET;
    //SQL.OffTradeOff(aIndex);
    }
    else
    {	
    }
    }
    
    //==========================
    // Error Checker
    //==========================
    void ResponErrorCloseClientHook(int aIndex)
    {	
    if ( aIndex < 0 || aIndex > OBJECT_MAX-1 )
    {	
    //g_Console.ConsoleOutput(1,"error-L1 : CloseClient index error");
    //return;
    }
    
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    if ( gObj->Connected == PLAYER_EMPTY )
    {
    return;
    }
    
    if(OfflineShop[aIndex].IsOffTrade != 0)
    {	
    gObj->CheckTick = GetTickCount();
    return; 
    }
    
    closesocket(gObj->m_socket);
    gObj->m_socket = INVALID_SOCKET;
    
    if ( gObj->m_socket == INVALID_SOCKET )
    {
    }
    
    if(gObj->m_socket != INVALID_SOCKET)
    //SQL.OffTradeOff(aIndex);
    gObjDel(aIndex);
    }
    
    //==========================
    // Client Close 2
    //==========================
    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)
    {	
    gObj->CheckTick = GetTickCount();
    return; 
    }
    
    if ( gObj->m_socket != INVALID_SOCKET )
    {
    if (closesocket(gObj->m_socket) == -1 )
    {
    if (WSAGetLastError() != WSAENOTSOCK)
    {
    return;
    }
    }
    
    gObj->m_socket = INVALID_SOCKET;
    }
    //SQL.OffTradeOff(index);
    gObjDel(index);
    }
    }
    .h
    Code:
    #include "StdAfx.h"
    
    class COFFTrade
    {
    public:
    void Init();
    void CreateOfflineTrade(int aIndex);
    }; extern COFFTrade OFFTrade;
    
    struct _PER_SOCKET_CONTEXT
    {
    char unk[4];
    int nIndex;	
    
    char Unk[0x5E2C];
    }; 
    
    void CGPShopAnsCloseHook(int aIndex, BYTE btResult); 
    void ResponErrorCloseClientHook(int aIndex); 
    void CloseClient2Hook(_PER_SOCKET_CONTEXT * lpPerSocketContext, int result); 
    void CloseClientHook(int aIndex);

    oh and im not sure if this protocls will help
    Zippyshare.com - offtradeprotocols.rar

  15. #15
    Proficient Member AmitNet is offline
    MemberRank
    Oct 2012 Join Date
    ILLocation
    156Posts

    Re: Offtrade source code S1

    Quote Originally Posted by KarLi View Post
    what about not from IA Julia source?

    example s3ep1 1.00.18 gs offtrade source:

    .cpp
    Code:
    #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
    Code:
    #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

    although posted by d@nger this one maybe is better

    .cpp
    Code:
    //================================================================================
    ==================
    // Offline Trade System
    //================================================================================
    ==================
    #include "OffTrade.h"
    #include "Protocol.h"
    #include "g_Console.h"
    #include <WinSock2.h>
    #include "USER.h"
    #include "Defines.h"
    #include "LogAdd.h"
    
    CRITICAL_SECTION criti;
    COFFTrade OFFTrade;
    OFFLINETRADE OfflineShop[OBJECT_MAX];
    int OffPrice = GetPrivateProfileInt("Common","CreateCost",250000,"..\\Data\\Custom\\OffTrade.cfg");
    int MapAllow = GetPrivateProfileInt("MapSystem","Enable",1,"..\\Data\\Custom\\OffTrade.cfg");
    int Map1 = GetPrivateProfileInt("MapSystem","Map1",0,"..\\Data\\Custom\\OffTrade.cfg");
    int Map2 = GetPrivateProfileInt("MapSystem","Map2",3,"..\\Data\\Custom\\OffTrade.cfg");
    int Map3 = GetPrivateProfileInt("MapSystem","Map3",2,"..\\Data\\Custom\\OffTrade.cfg");
    
    //==========================
    // Functions Hook
    //==========================
    void COFFTrade::Init()
    {
    HookThis((DWORD)&CloseClient2Hook,0x00405CA4);//finished
    HookThis((DWORD)&CGPShopAnsCloseHook,0x00404552);//finished
    HookThis((DWORD)&ResponErrorCloseClientHook,0x0040422D);
    HookThis((DWORD)&CloseClientHook,0x00407E82);//finished
    }
    
    //==========================
    // OffTrade Create
    //==========================
    void COFFTrade::CreateOfflineTrade(int aIndex)
    {
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    if(gObj->m_bPShopOpen == false)
    {
    MsgNormal(aIndex,"[SYSTEM] You need create Personal Store to use this command");
    return;
    }
    else 
    {
    if(MapAllow == 1)
    {
    if(gObj->MapNumber == Map1 || gObj->MapNumber == Map2 || gObj->MapNumber == Map3)
    {
    (gObj->Money -= OffPrice);
    GCMoneySend(gObj->m_Index, gObj->Money);
    OfflineShop[aIndex].IsOffTrade=1;
    //SQL.OffTradeOn(aIndex);
    CloseClient(aIndex);
    g_Console.ConsoleOutput(4,"[OFFTRADE][%s][%s] Open Offline Shop",gObj->AccountID,gObj->Name);
    LogAdder ("OFFTRADE","Open Offline Shop",aIndex);
    }
    MsgNormal(aIndex,"[SYSTEM] OffTrade work only special maps");
    return;
    }
    }
    if(MapAllow == 0)
    {
    (gObj->Money -= OffPrice);
    GCMoneySend(gObj->m_Index, gObj->Money);
    OfflineShop[aIndex].IsOffTrade=1;
    //SQL.OffTradeOn(aIndex);
    CloseClient(aIndex);
    g_Console.ConsoleOutput(4,"[OFFTRADE][%s][%s] Open Offline Shop",gObj->AccountID,gObj->Name);
    LogAdder ("OFFTRADE","Close Offline Shop",aIndex);
    //int TimeDelayCorrect = ( 60 - t.GetSecond() ) * 1000;
    //Sleep(TimeDelayCorrect);	
    }
    }
    
    //==========================
    // Shop Close
    //==========================
    void CGPShopAnsCloseHook(int aIndex, BYTE btResult)
    {
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    if(OfflineShop[aIndex].IsOffTrade)
    gObjDel(aIndex);
    
    OfflineShop[aIndex].IsOffTrade = 0;
    //SQL.OffTradeOff(aIndex);
    CGPShopAnsClose(aIndex,btResult);
    }
    
    //==========================
    // Client Close
    //==========================
    void CloseClientHook(int aIndex)
    {	
    if ( aIndex < 0 || aIndex > OBJECT_MAX-1 )
    {
    return;
    }
    
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    if ( gObj->Connected == PLAYER_EMPTY )
    {	
    return;
    }
    
    if(OfflineShop[aIndex].IsOffTrade != 0)
    {	
    gObj->CheckTick = GetTickCount();
    return; 
    }
    
    if(gObj->m_socket != INVALID_SOCKET)
    {
    closesocket(gObj->m_socket );
    gObj->m_socket = INVALID_SOCKET;
    //SQL.OffTradeOff(aIndex);
    }
    else
    {	
    }
    }
    
    //==========================
    // Error Checker
    //==========================
    void ResponErrorCloseClientHook(int aIndex)
    {	
    if ( aIndex < 0 || aIndex > OBJECT_MAX-1 )
    {	
    //g_Console.ConsoleOutput(1,"error-L1 : CloseClient index error");
    //return;
    }
    
    OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    if ( gObj->Connected == PLAYER_EMPTY )
    {
    return;
    }
    
    if(OfflineShop[aIndex].IsOffTrade != 0)
    {	
    gObj->CheckTick = GetTickCount();
    return; 
    }
    
    closesocket(gObj->m_socket);
    gObj->m_socket = INVALID_SOCKET;
    
    if ( gObj->m_socket == INVALID_SOCKET )
    {
    }
    
    if(gObj->m_socket != INVALID_SOCKET)
    //SQL.OffTradeOff(aIndex);
    gObjDel(aIndex);
    }
    
    //==========================
    // Client Close 2
    //==========================
    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)
    {	
    gObj->CheckTick = GetTickCount();
    return; 
    }
    
    if ( gObj->m_socket != INVALID_SOCKET )
    {
    if (closesocket(gObj->m_socket) == -1 )
    {
    if (WSAGetLastError() != WSAENOTSOCK)
    {
    return;
    }
    }
    
    gObj->m_socket = INVALID_SOCKET;
    }
    //SQL.OffTradeOff(index);
    gObjDel(index);
    }
    }
    .h
    Code:
    #include "StdAfx.h"
    
    class COFFTrade
    {
    public:
    void Init();
    void CreateOfflineTrade(int aIndex);
    }; extern COFFTrade OFFTrade;
    
    struct _PER_SOCKET_CONTEXT
    {
    char unk[4];
    int nIndex;	
    
    char Unk[0x5E2C];
    }; 
    
    void CGPShopAnsCloseHook(int aIndex, BYTE btResult); 
    void ResponErrorCloseClientHook(int aIndex); 
    void CloseClient2Hook(_PER_SOCKET_CONTEXT * lpPerSocketContext, int result); 
    void CloseClientHook(int aIndex);

    oh and im not sure if this protocls will help
    Zippyshare.com - offtradeprotocols.rar
    protocols are different.. that's why I need someone to help me with that..



Page 1 of 2 12 LastLast

Advertisement