Lucrăm la îmbunătățirea site-ului! Este posibil ca unele module să nu funcționeze corect!
1 mesaj
Avatar utilizator
Administrator
  • Administrator

    Autor subiect

  • Mesaje: 2,607
  • Reacții: 29006
  • Mesaje utile: 17
  • Status: Pierd vremea ^.^
  • Server: Saga2 - Soon
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:
    Avatar utilizator
    Administrator

    Autor subiect

    Administrator
    *Descriere:

    Mai jos vei invata cum sa faci un obiect (bless/pergamente/cufere/etc.) sa fie stacabile.

    Adica, sa se suprapuna mai multe iteme si sa faca stack (Exemplu: Daca ai mai multe "Cufar Costum" in inventar, sa le poti pune unul peste altul)


    Daca serverul tau citeste .txt, atunci intra in item_proto.txt si cauta itemul pe care vrei sa-l faci stackabil. Exista iteme pentru care aceasta modificare functioneaza direct, dar, pentru iteme precum Bless-ul sau Pietrele, va trebui sa facem anumite ajustari din Sursa si din client.

    Exemplu pentru bless: Vnum 25040
    Code:
    25040	Bless	ITEM_USE	USE_TUNING	1	NONE	NONE	NONE	NONE	5000	5000	0	0	0	LIMIT_NONE	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	0	0	0	0	0	0	0	0	0
    Mergem la (coloana "G" in Excel) -> FLAG si aici modificam ce avem in ITEM_STACKABLE pentru itemul dorit.
    Code:
    25040	Bless	ITEM_USE	USE_TUNING	1	NONE	ITEM_STACKABLENONE	NONE	5000	5000	0	0	0	LIMIT_NONE	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	0	0	0	0	0	0	0	0	0
    Pentru servere care citesc SQL:
    Intra in Navicat, cauta itemul dorit in tabelul item_proto, si la coloana flag introdu valoarea 4 pentru a face itemul stackabil.


    Daca vrem sa stackam pietre, trebuie sa facem un mic FIX in sursa

    1. Deschidem common/service.h iar aici adaugam:
    #define ENABLE_STONES_STACKFIX

    2. Intram in char_item.cpp si cautam
    Code:
    bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly):
    
    	// END_OF_REFINE_COST
    
    	if (prob <= prt->prob)
    	{
    		LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_vnum, 1, 0, false);
    Mai jos gasim:
    Code:
    			pkNewItem->AddToCharacter(this, TItemPos(INVENTORY, bCell));
    			ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (REFINE SUCCESS)");
    Inlocuim cu:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.


    Cautam:
    Code:
    bool CHARACTER::DoRefineWithScroll(LPITEM item):
    
    	if (prob <= success_prob)
    	{
    		LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_vnum, 1, 0, false);
    Mai jos gasim:
    Code:
    			pkNewItem->AddToCharacter(this, TItemPos(INVENTORY, bCell));
    			ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (REFINE SUCCESS)"); 
    Inlocuim cu:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.


    Cautam:
    Code:
    	else if (!bDestroyWhenFail && result_fail_vnum)
    	{
    		
    		LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_fail_vnum, 1, 0, false);
    Mai jos gasim:
    Code:
    			pkNewItem->AddToCharacter(this, TItemPos(INVENTORY, bCell));
    			ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (REFINE FAIL)");
    Inlocuim cu:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.


    Cautam:
    Code:
    						ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (METIN)");
    Inlocuim cu:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.


    Cautam:
    Code:
    bool CHARACTER::DoRefineWithScroll(LPITEM item)
    {
    	if (!CanHandleItem(true))
    	{
    		ClearRefineMode();
    		return false;
    	}

    Adaugam sub:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.


    Cautam:
    Code:
    bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
    {
    	if (!CanHandleItem(true))
    	{
    		ClearRefineMode();
    		return false;
    	}
    Adaugam sub:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.


    Cautam:
    Code:
    bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly):
    Mai jos gasim:
    Code:
    	else
    	{
    		// Eșec! Toate obiectele dispar.
    		DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, item->GetVnum(), -cost);
    		NotifyRefineFail(this, item, IsRefineThroughGuild() ? "GUILD" : "POWER");
    		item->AttrLog();
    		ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (REFINE FAIL)");
    
    		//PointChange(POINT_GOLD, -cost);
    		PayRefineFee(cost);
    	}
    
    	return true;
    }
    Inlocuim cu:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.



    Deschidem uiinventory.py si cautam:
    Code:
    	def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
    si faci urmatoarele modificare: ce este sub
    Code:
    		if srcSlotPos == dstSlotPos:
    			return False  
    pana la
    Code:
     		elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
    			return True 
    stergi, si bagi asta:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.



    Cautam:
    Code:
    	def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
    		if srcItemSlotPos == dstItemSlotPos: 
                               return;
    si stergem tot ce este sub, pana la
    Code:
    else:
    			#snd.PlaySound("sound/ui/drop.wav") 
    iar dupa copiem astea:
    Conținut: Ascuns
    Motiv: Trebuie să reacționezi la mesaj pentru a vedea conținutul.

    Cum descarc de pe TeraBox?

    • 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)
    • Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele

    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
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/Kr9nUpWa4X

    Suntem aproape 1000 membri! - Avem chat activ zilnic, support, cereri, resurse.



    See full signature
    Tag-uri:

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț

    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

    Înregistrează-te și alătură-te comunității noastre

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


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

    Înregistrare

    Autentifică-te

    • Subiecte similare

      • de [HF]White » » în Tutoriale
        0
        Răspunsuri
        86
        Vizualizări
        de [HF]White
      • de [HF]White » » în Tutoriale
        0
        Răspunsuri
        71
        Vizualizări
        de [HF]White
      • de [HF]White » » în Îmbunătățiri
        1
        Răspunsuri
        161
        Vizualizări
        de kolenmg123
      • de [HF]White » » în Tutoriale
        0
        Răspunsuri
        692
        Vizualizări
        de [HF]White
      • de [HF]White » » în Tutoriale
        0
        Răspunsuri
        467
        Vizualizări
        de [HF]White

    Înapoi la “Tutoriale”

    Informații

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