Bug retragere yang offline shop great

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Închis
Avatar utilizator
Valentine
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 06 Feb 2019, 16:20
Aprecieri: 73  
Mulţumiri: 0
Medalii

*Problemă/Întrebare: Dupa cum spune si titlul, am o problema cu retragerea yang-ului din offline shop great.
Tipologie server(PvM / PvP):
*Resursă folosită: *Link exclusiv J4M*
*ServerFiles utilizat:
*Syserr: Gol
Poză:
*Detalii suplimentare: Am limita scoasa adica long long, dar e setata la 1.000.000.000.000.
Problema e in felul urmator, daca am in inventar 1.000.000.000.000, care e setat ca fiind suma maxima de yang pe server, cand dau retragere yang, bani pur si simplu dispar, chestia asta se intampla indiferent ca dau retragere direct din shop sau din gift, unde merge yang-ul in caz ca, inchid shop-ul.
Cu functia de mai jos, pe partea de gift am reusit intr-o oarecare masura sa rezolv, dar nu complet, nu imi mai retrage yang-ul, dar in schimb imi apare in chat si mesajul "nu poti retrage yang-ul!" dar si "GIFT_ADD_SUCCESS"...

Functia originala:
{
#ifndef FULL_YANG
long long nTotalMoney = ch->GetGold()+count;

if (GOLD_MAX <= nTotalMoney)
{
sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", ch->GetPlayerID(), ch->GetName());
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20?? łE?≫ ??°uC??ⓒ ≫oAˇ?≫ ?­?o°ˇ ??˝?´?´?"));
return true;
}
#endif
#ifdef FULL_YANG_OWN
ch->ChangeGold(count);
#else
ch->PointChange(POINT_GOLD, count, false);
#endif

Functia modificata de mine:
{
#ifndef FULL_YANG
long long nTotalMoney = ch->GetGold()+count;

if (GOLD_MAX <= nTotalMoney)
{
sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", ch->GetPlayerID(), ch->GetName());
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20?? łE?≫ ??°uC??ⓒ ≫oAˇ?≫ ?­?o°ˇ ??˝?´?´?"));
return true;
}
#endif
#ifdef FULL_YANG_OWN
ch->ChangeGold(count);
#else
if ((ch->GetGold() + count) <= GOLD_MAX-1)
{
ch->PointChange(POINT_GOLD, count, false);
}
else
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("nu poti retrage yang-ul!"));
continue;
}
#endif

}
Avatar utilizator
Valentine
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 06 Feb 2019, 16:20
Aprecieri: 73  
Mulţumiri: 0
Medalii

Nimeni nimic?
Avatar utilizator
[Mafia83]
Membru Club

Membru Club
Mesaje: 777
Membru din: 24 Feb 2016, 20:32
Server: Metin2KGB
Regat: Jinno
Aprecieri: 279  
Mulţumiri: 2287  
Discord: Copiază ID
 Contact:
Medalii

Cea mai simplă variantă ar fi să descarci acest sv: sau oricare alt svf care are limita de yang scoasă gen colossus și compari fișierele tale pentru shop offline și limit_yang cu cele din resurse, îți ia maxim 30-40 min dacă folosești
In cazul acesta ai putea să-ți mai rezolvi din problemele cu shop offline și limită yang, cel de pe mega release este destul de bine fixat.
Avatar utilizator
Valentine
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 06 Feb 2019, 16:20
Aprecieri: 73  
Mulţumiri: 0
Medalii

Pai nici ala nu are bugul acesta fixat, am incrcat sa caut in mai multe svf, toate-s la fel...
Avatar utilizator
AndyOpris
Nivel 4

Nivel 4
Mesaje: 500
Membru din: 09 Iun 2015, 15:12
Server: -
Regat: Jinno
Aprecieri: 1  
Mulţumiri: 226  
Medalii

Pune return in loc de continue.
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("nu poti retrage yang-ul!"));
return;
Dar mai bine in functia originala pune asta:

Sub:
long long nTotalMoney = ch->GetGold()+count;
Pune asta:
	if (nTotalMoney > GOLD_MAX-1)
	{
		sys_err("[OVERFLOW_GOLD] Prea mult yang (GOLD_MAX) id %u name %s suma totala: %lld", ch->GetPlayerID(), ch->GetName(), nTotalMoney);
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Nu poti retrage yangul, ai prea mult in inventar."));
		return;
	}
Si poti sterge:
	if (GOLD_MAX <= nTotalMoney)
	{
		sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", ch->GetPlayerID(), ch->GetName());
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20?? łE?≫ ??°uC??ⓒ ≫oAˇ?≫ ?­?o°ˇ ??˝?´?´?"));
		return true;
	}
Pentru acest mesaj, AndyOpris for the post:
Valentine
Avatar utilizator
Valentine
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 06 Feb 2019, 16:20
Aprecieri: 73  
Mulţumiri: 0
Medalii

AndyOpris scrie: ↑27 Ian 2021, 00:48 Pune return in loc de continue.
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("nu poti retrage yang-ul!"));
return;
Dar mai bine in functia originala pune asta:

Sub:
long long nTotalMoney = ch->GetGold()+count;
Pune asta:
	if (nTotalMoney > GOLD_MAX-1)
	{
		sys_err("[OVERFLOW_GOLD] Prea mult yang (GOLD_MAX) id %u name %s suma totala: %lld", ch->GetPlayerID(), ch->GetName(), nTotalMoney);
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Nu poti retrage yangul, ai prea mult in inventar."));
		return;
	}
Si poti sterge:
	if (GOLD_MAX <= nTotalMoney)
	{
		sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", ch->GetPlayerID(), ch->GetName());
		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20?? łE?≫ ??°uC??ⓒ ≫oAˇ?≫ ?­?o°ˇ ??˝?´?´?"));
		return true;
	}
Merge cu return in loc de continue, dar numai la retragerea din shop, la gift da eroare la compilare, dar ii dau eu cumva de cap, sa traiesti 100 de ani, ms mult, puteti da t/c.
Avatar utilizator
sanjibro
Utilizator interzis !

Utilizator interzis !
Mesaje: 93
Membru din: 10 Ian 2021, 02:16
Regat: Jinno
Aprecieri: 1  
Mulţumiri: 14  
Discord: Copiază ID
Medalii

Problema rezolvata

[ Postat de pe Android ] Imagine
Imagine
Afișează semnătura
Închis
Răspunsuri
1
Vizualizări
34
Răspunsuri
8
Vizualizări
440

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

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