1 mesaj
Membru Ucenic Membru Ucenic
  • Mesaje: 26
  • Reacții: 25
  • Mesaje utile: 0
  • Medalii

    *Descriere:

    Pe scurt: cand cumpai un item stackable dintr-un shop/npc (magazin general, samd) itemele nu se puneau automat pe stack-ul existent din inventar, ci crea un slot nou. Daca inventarul era plin, itemele dispareau sau cauza comportament nedefinit.


    Testat pe serverul propriu:
    • Cumparare normala din NPC shop → item in inventar, banii scazuti corect.
    • Item stackable cu slot existent → se adauga pe stack, fara slot nou creat.
    • Cumperi 10x licori dar ai deja 4990x in inventar (bCount = 0) → se completeaza la 5000x automat, banii scazuti corect.
    • Inventar plin + item non-stackable → mesaj eroare, banii nu se scad.
    • Inventar plin + item stackable cu stack posibil → se adauga pe stack existent.
    • Dragon Soul → apare in DS inventory corect, cu ItemLog si SendMoneyLog.
    • FlushDelayedSave apelat corect pentru toate cazurile.
    • Niciun item pierdut, niciun yang scazut fara sa primesti item.
    Testat pe Martysama 5.8 P23. Dacă folositi mainline, lasati un reply cu rezultatul + sugestii pentru imbunatatirea codului sau eventuale erori de cod.
    *Instructiuni:

    1. CommonDefines.h
    Adauga:
    Code:
    #define ENABLE_CHAMP_SHOP_AUTO_STACK
    2. shop.cpp
    Cauta:
    Code:
      	int iEmptyPos = ch->GetEmptyInventoryEx(item);
    	if (iEmptyPos < 0)
    	{
    		if (m_pkPC)
    		{
    			sys_log(1, "Shop::Buy at PC Shop : Inventory full : %s size %d", ch->GetName(), item->GetSize());
    			return SHOP_SUBHEADER_GC_INVENTORY_FULL;
    		}
    		else
    		{
    			sys_log(1, "Shop::Buy : Inventory full : %s size %d", ch->GetName(), item->GetSize());
    			M2_DESTROY_ITEM(item);
    			return SHOP_SUBHEADER_GC_INVENTORY_FULL;
    		}
    	}
    Inlocuieste cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Dupa tot blocul de mai sus adaugat, inainte de ch->PointChange(POINT_GOLD, -dwPrice, false);
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Adauga mai jos
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cauta blocul else final (NPC shop):
    Code:
    	else
    	{
    		item->AddToCharacter(ch, TItemPos(item->GetWindowInventoryEx(), iEmptyPos));
    		ITEM_MANAGER::instance().FlushDelayedSave(item);
    		LogManager::instance().ItemLog(ch, item, "BUY", item->GetName());
    Si inlocuieste l complet asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: alex_323390, Baidu [Spider], DAZZZZZZ, Dionisie Lupasco, unanonim99, zerefg și 4 vizitatori

    Discord ID copiat: