Problema buy

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
minoiu16
Nivel 2

Nivel 2
Mesaje: 176
Membru din: 14 Noi 2018, 23:31
Server: Olimpus
Regat: Jinno
Aprecieri: 242  
Mulţumiri: 212  
Discord: Copiază ID
Medalii

*Problemă/Întrebare: Problema cand cumperi un item
Tipologie server(PvM / PvP): PVM
*Resursă folosită: -
*ServerFiles utilizat: 40k
*Syserr:
CPythonNetworkStream::RecvShopPacket: Unknown subheader
Poză: Nu am ce poza
*Detalii suplimentare: Ideea este in felul urmator : am un fms+0 la negustor care costa 5kk , eu am in inventar 500k si daca doresc sa il cumpar nu imi arata : "Nu ai yang destul" sau alta avertizare, dar primesc eroarea de mai sus ! Daca am 5kk , pot sa-l cumpar si nu mai primesc nici o eroare. Stie careva cum pot rezolva? Un tutorial de adaugare Nu ai yang destul? banuiesc ca lipseste din sursa client, ptr. ca primesc acea eroare legata de header in sysser ! Multumesc frumos
Avatar utilizator
Tropycal
Nivel 1

Nivel 1
Mesaje: 56
Membru din: 14 Aug 2020, 11:50
Regat: Chunjo
Aprecieri: 58  
Mulţumiri: 5  
Medalii

input_main, uita-te la subheadere la shop
Avatar utilizator
minoiu16
Nivel 2

Nivel 2
Mesaje: 176
Membru din: 14 Noi 2018, 23:31
Server: Olimpus
Regat: Jinno
Aprecieri: 242  
Mulţumiri: 212  
Discord: Copiază ID
Medalii

am aceasta functie
int CInputMain::Shop(LPCHARACTER ch, const char * data, size_t uiBytes)
{
TPacketCGShop * p = (TPacketCGShop *) data;

if (uiBytes < sizeof(TPacketCGShop))
return -1;

if (test_server)
sys_log(0, "CInputMain::Shop() ==> SubHeader %d", p->subheader);

const char * c_pData = data + sizeof(TPacketCGShop);
uiBytes -= sizeof(TPacketCGShop);

switch (p->subheader)
{
case SHOP_SUBHEADER_CG_END:
sys_log(1, "INPUT: %s SHOP: END", ch->GetName());
CShopManager::instance().StopShopping(ch);
return 0;

case SHOP_SUBHEADER_CG_BUY:
{
if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
return -1;

BYTE bPos = *(c_pData + 1);
sys_log(1, "INPUT: %s SHOP: BUY %d", ch->GetName(), bPos);
CShopManager::instance().Buy(ch, bPos);
return (sizeof(BYTE) + sizeof(BYTE));
}

case SHOP_SUBHEADER_CG_SELL:
{
if (uiBytes < sizeof(BYTE))
return -1;

BYTE pos = *c_pData;

sys_log(0, "INPUT: %s SHOP: SELL", ch->GetName());
CShopManager::instance().Sell(ch, pos);
return sizeof(BYTE);
}

case SHOP_SUBHEADER_CG_SELL2:
{
if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
return -1;

BYTE pos = *(c_pData++);
BYTE count = *(c_pData);

sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName());
CShopManager::instance().Sell(ch, pos, count);
return sizeof(BYTE) + sizeof(BYTE);
}

default:
sys_err("CInputMain::Shop : Unknown subheader %d : %s", p->subheader, ch->GetName());
break;
}

return 0;
}
Avatar utilizator
Vaynz
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 729
Membru din: 07 Iun 2018, 15:16
Server: -
Regat: Chunjo
Aprecieri: 153  
Mulţumiri: 3618  
Medalii

Cod: Selectaţi tot

int CInputMain::Shop(LPCHARACTER ch, const char * data, size_t uiBytes)
{
	TPacketCGShop * p = (TPacketCGShop *) data;

	if (uiBytes < sizeof(TPacketCGShop))
		return -1;

	if (test_server)
		sys_log(0, "CInputMain::Shop() ==> SubHeader %d", p->subheader);

	const char * c_pData = data + sizeof(TPacketCGShop);
	uiBytes -= sizeof(TPacketCGShop);

	switch (p->subheader)
	{
		case SHOP_SUBHEADER_CG_END:
			sys_log(1, "INPUT: %s SHOP: END", ch->GetName());
			CShopManager::instance().StopShopping(ch);
			return 0;

		case SHOP_SUBHEADER_CG_BUY:
			{
				if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
					return -1;

				BYTE bPos = *(c_pData + 1);
				sys_log(1, "INPUT: %s SHOP: BUY %d", ch->GetName(), bPos);
				CShopManager::instance().Buy(ch, bPos);
				return (sizeof(BYTE) + sizeof(BYTE));
			}

		case SHOP_SUBHEADER_CG_SELL:
			{
				if (uiBytes < sizeof(BYTE))
					return -1;

				BYTE pos = *c_pData;

				sys_log(0, "INPUT: %s SHOP: SELL", ch->GetName());
				CShopManager::instance().Sell(ch, pos);
				return sizeof(BYTE);
			}
		case SHOP_SUBHEADER_CG_SELL2:
			{
				if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
					return -1;

				BYTE pos = *(c_pData++);
				BYTE count = *(c_pData);

				sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName());
				CShopManager::instance().Sell(ch, pos, count);
				return sizeof(BYTE) + sizeof(BYTE);

		default:
			sys_err("CInputMain::Shop : Unknown subheader %d : %s", p->subheader, ch->GetName());
			break;
	}

	return 0;
}
Verifica cu asta
Avatar utilizator
Asky
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 1472
Membru din: 08 Oct 2014, 17:32
Regat: Chunjo
Aprecieri: 98  
Mulţumiri: 4811  
Discord: Copiază ID
 Contact:
Medalii

Arhivat! Subiect inactiv!
Imagine
Afișează semnătura
Închis

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 16 vizitatori