Problema offtrade

Results 1 to 3 of 3
  1. #1
    Apprentice caron22 is offline
    MemberRank
    May 2012 Join Date
    24Posts

    Problema offtrade

    Hi I have a problem when programming the offtrade.
    While achieve already set up to make it online with personal online store when I give another user can not see what the pj sells.
    If I schedule this surely someone gave this error, I hope you give me a hand wherever it may come the subject. Use the base of Julia but I'm working on a 99.60T.
    thank you very much

    The error I get is this:
    16:02:55 [PShop] [Account] [Character] PShop Item Buy Request Failed: Seller is Closing (6400)

    1.0.80 sources in this error is the following:

    Code: [Select]

    if (lpObj-> CloseCount> = 0)
    {
    LogAddTD ( "[PShop] [% s] [% s] PShop Item Buy Request Failed: Seller is Closing (% d)" gObj [aSourceIndex] .AccountID, gObj [aSourceIndex] .Name, MAKE_NUMBERW (lpMsg-> NumberH, lpMsg-> NumberL));
    CGPShopAnsBuyItem (aSourceIndex, -1, 0.2);
    return;
    }


    If I put the following in my source lpObj-> CloseCount = -1 I open the shop staff but I can not buy the items.

    Thank you

    ----------------------------------------------------------
    Hola gente tengo un problema al programar el offtrade.
    Si bien ya logre configurar para que quede online con el personal store online cuando le doy con otro usuario no puedo ver el lo que el pj vende.
    Si alguien programo esto seguramente le dio este error, espero que me den una mano de por donde puede venir el tema. Uso la base de Julia pero estoy trabajando en una 99.60T.
    Desde ya muchas gracias

    El error que me sale es este:
    16:02:55 [PShop] [Cuenta][Personaje] PShop Item Buy Request Failed : Seller is Closing (6400)

    En las sources 1.0.80 este error es por lo siguiente:

    Código: [Seleccionar]

    if ( lpObj->CloseCount >= 0 )
    {
    LogAddTD("[PShop] [%s][%s] PShop Item Buy Request Failed : Seller is Closing (%d)",gObj[aSourceIndex].AccountID, gObj[aSourceIndex].Name, MAKE_NUMBERW(lpMsg->NumberH, lpMsg->NumberL) );
    CGPShopAnsBuyItem(aSourceIndex, -1, 0,2);
    return;
    }


    Ahora bien si pongo lo sigueinte en mi source lpObj->CloseCount = -1 Puedo abrir la tienda personal pero no puedo comprar el items.

    Gracias de ante mano.


  2. #2
    Don't be afraid to ask! RevolGaming is offline
    MemberRank
    Jun 2012 Join Date
    1,458Posts

    Re: Problema offtrade

    We need to see the code before CloseCount to find out what can be the problem.

    Please add some pictures about the source, about the game, about the GS screen when you do this.

  3. #3
    Apprentice caron22 is offline
    MemberRank
    May 2012 Join Date
    24Posts

    Re: Problema offtrade

    I'm using code:


    Code:
    static unsigned char bBuxCode[3] = { 0xFC, 0xCF, 0xAB };	// Xox Key for some interesting things :)
    
    #define PLAYER_EMPTY		0
    #define MAX_ACCOUNT_LEN	10
    #define MAX_GUILD_LEN	8
    
    
    void BuxConvert(char* buf, int size)
    {
    	for (int n = 0; n < size; n++)
    	{
    		buf[n] ^= bBuxCode[n % 3];		// Nice trick from WebZen
    	}
    }
    
    
    
    
    CRITICAL_SECTION criti;
    OffTrade OfflineTrade;
    
    OffTrade::OffTrade(void)
    {
    	//-- CONSTRUCTOR --
    }
    void CloseClientHook(int aIndex)
    {
    
    
    	if (aIndex < 0 || aIndex > OBJECT_MAX - 1)
    		return;
    
    	if (Player[aIndex].OfflineTrade != 0)
    		return;
    
    	if (gObj[aIndex].Connected == PLAYER_EMPTY)
    		return;
    
    	if (gObj[aIndex].m_socket != INVALID_SOCKET)
    	{
    		closesocket(gObj[aIndex].m_socket);
    		gObj[aIndex].m_socket = INVALID_SOCKET;
    	}
    }
    
    void OffTrade::InitOfflineTrade()
    {
    	func.HookThis((DWORD)&CloseClient2Ex, 0x00401CA8); // 101% 
    	func.HookThis((DWORD)&CGPShopAnsClose_Ex, 0x00403DE1); // 101%
    	func.HookThis((DWORD)&ResponErrorCloseClientEx, 0x00403ACB); //101%
    	func.HookThis((DWORD)&CloseClientHook, 0x00401032); // 101% 
    
    }
    
    OffTrade::~OffTrade(void)
    {
    	//-- DESTRUCTOR ----
    }
    
    void ResponErrorCloseClientEx(int Index)
    {
    	if (Index < 0 || Index > OBJECT_MAX - 1)
    	{
    		func.StringSendAll("TEST01", 0);
    
    		return;
    	}
    
    	//OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(Index);
    
    	if (gObj[Index].m_bPShopOpen == 1)
    	{
    		//	gObj[Index].CloseCount = -1;
    		//gObj[Index].CloseType = -1;
    		
    		return;
    	}
    
    	if (Player[Index].OfflineTrade == true)
    	{
    		func.StringSendAll("TEST02", 0);
    		return;
    	}
    	Player[Index].OfflineTrade = true;
    	func.StringSendAll("TEST03", 0);
    	ResponErrorCloseClient(Index);
    }
    
    
    void OffTrade::CreateOfflineStore(int aIndex)
    {
    	//OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    	Player[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 (Player[aIndex].OfflineTrade == true)
    	{
    		Player[aIndex].OfflineTrade = false;
    		gObjDel_Ex(aIndex);
    
    		//OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(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 >= OBJECT_MIN && index < OBJECT_MAX)
    	{
    
    		if (gObj->m_socket != INVALID_SOCKET)
    		{
    			if (closesocket(gObj->m_socket) == -1)
    				if (WSAGetLastError() != WSAENOTSOCK)
    					return;
    			gObj->m_socket = INVALID_SOCKET;
    		}
    		gObjDel_Ex(index);
    	}
    }
    
    short gObjDel_Ex(int aIndex)
    {
    	//OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    	if (Player[aIndex].OfflineTrade == true)
    	{
    		return 1;
    	}
    
    	if (aIndex < OBJECT_MIN || Player[aIndex].CloseSetCheck == true)
    	{
    		return gObjDel1(aIndex);
    	}
    
    	return gObjDel1(aIndex);
    
    
    }



Advertisement