1 mesaj
Administrator Administrator
  • Mesaje: 3449
  • Reacții: 48380
  • Mesaje utile: 29
  • Status: Pe aici.. 🤠
  • Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    *Descriere:

    Mai jos vei afla cum sa implementezi 4 pagini inventare pe serverul tau de Metin2.

    Tutorial destinat pentru cei care au 2 pagini de inventar!

    Daca ai inceput pe un proiect nou, pe un serverfiles vanilla (clean de tot), vei vedea ca vine la pachet cu clasicele 2 inventare.

    Tutorialul va adauga 4 pagini, exact ca in pozele de mai jos. Daca vrei design ca pe Oficial (butoanele sa fie mai mici, unul dupa altul), trebuie sa sa faci modificari in python.

    Vei afla cum sa mai adaugi 2, astfel jucatorii tai se pot bucura de mai mult spatiu cu 4 pagini de inventar.

    FIX in caz ca aveti BUG la negot:
    In caz ca aveti probleme la negot dupa ce faceti tutorialul de mai jos, aveti aici un fix.:
    Code:
    In exchange.cpp
    
    Cautati:
    
    for (i = 0; i < INVENTORY_MAX_NUM / 4; ++i)
       {
          if (!(item = victim->GetInventoryItem(i)))
             continue;
    
          s_grid1.Put(i, 1, item->GetSize());
       }
       for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i)
       {
          if (!(item = victim->GetInventoryItem(i)))
             continue;
    
          s_grid2.Put(i - INVENTORY_MAX_NUM / 4, 1, item->GetSize());
       }
    
    Schimbati cu:
    
    	for (i = 0; i < INVENTORY_MAX_NUM / 4; ++i)
    	{
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		s_grid1.Put(i, 1, item->GetSize());
    	}
    	for (i = INVENTORY_MAX_NUM / 4; i < (INVENTORY_MAX_NUM / 4) * 2; ++i)
    	{
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		s_grid2.Put(i - INVENTORY_MAX_NUM / 4, 1, item->GetSize());
    	}
    	for (i = (INVENTORY_MAX_NUM / 4) * 2; i < (INVENTORY_MAX_NUM / 4) * 3; ++i)
    	{
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		s_grid3.Put(i - (INVENTORY_MAX_NUM / 4) * 2, 1, item->GetSize());
    	}
    	for (i = (INVENTORY_MAX_NUM / 4) * 3; i < (INVENTORY_MAX_NUM / 4) * 4; ++i)
    	{
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		s_grid4.Put(i -(INVENTORY_MAX_NUM / 4) * 3, 1, item->GetSize());
    	}
    
    Tot aici cautati:
    
    			int iPos = s_grid1.FindBlank(1, item->GetSize());
    
    			if (iPos >= 0)
    			{
    				s_grid1.Put(iPos, 1, item->GetSize());
    			}
    			else
    			{
    				iPos = s_grid2.FindBlank(1, item->GetSize());
    
    				if (iPos >= 0)
    				{
    					s_grid2.Put(iPos, 1, item->GetSize());
    				}
    				else
    				{
    					return false;
    				}
    			}
    		}
    	}
    
    	return true;
    }
    
    Inlocuiti tot cu:
    
    			int iPos = s_grid1.FindBlank(1, item->GetSize());
    			if (iPos >= 0) {
    				s_grid1.Put(iPos, 1, item->GetSize());
    				continue;
    			}
    
    			iPos = s_grid2.FindBlank(1, item->GetSize());
    			if (iPos >= 0) {
    				s_grid2.Put(iPos, 1, item->GetSize());
    				continue;
    			}
    
    			iPos = s_grid3.FindBlank(1, item->GetSize());
    			if (iPos >= 0) {
    				s_grid3.Put(iPos, 1, item->GetSize());
    				continue;
    			}
    
    			iPos = s_grid4.FindBlank(1, item->GetSize());
    			if (iPos >= 0) {
    				s_grid4.Put(iPos, 1, item->GetSize());
    				continue;
    			}
    
    			return false;  // No space left in inventory
    		}
    	}
    
    	return true;
    }


    *Poze / Video:
    [Tutorial] Adauga 4 pagini inventar Metin2 - Mesaj 1 - Imagine 2
    [Tutorial] Adauga 4 pagini inventar Metin2 - Mesaj 1 - Imagine 1
    *Link download / Code:

    Tutorial 4 Inventory Pages - FULL:

    Deschidem char_item.cpp si cautam:
    Code:
    BYTE bPage = bCell / (INVENTORY_MAX_NUM / 2);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    (e in 2 locuri, atentie!)

    Acum cautam:
    Code:
    if (p / (INVENTORY_MAX_NUM / 2) != bPage)
    (si asta tot in 2 parti)

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


    Deschidem exchange.cpp si cautam:
    Code:
    static CGrid s_grid1(5, INVENTORY_MAX_NUM/5 / 2); // inven page 1
    static CGrid s_grid2(5, INVENTORY_MAX_NUM/5 / 2); // inven page 2
    În loc de ele adăugați:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    	s_grid1.Clear();
    	s_grid2.Clear();
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    	for (i = 0; i < INVENTORY_MAX_NUM / 4; ++i)
    	{
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		s_grid1.Put(i, 1, item->GetSize());
    	}
    	for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i)
    	{
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		s_grid2.Put(i - INVENTORY_MAX_NUM / 4, 1, item->GetSize());
    	}
    Modificam asa / inlocuim:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mergem in /usr/src/your_source/Srcs/Server/common, deschidem lenght.h si cautam::
    Code:
    INVENTORY_MAX_NUM = 90;
    În loc de 90 treceți 180.

    Deschidem sursa binary si mergem in fisierul GameType.h. Aici cautam:
    Code:
    const DWORD c_Inventory_Page_Count = 2;
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Despachetam locale din pack si deschidem inventorywindow.py Inlocuiti tot fisierul / adaptati sa fie asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mergem in root si deschidem uiinventory.py, unde cautam:
    Code:
    self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
    Adaugam sub:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    		self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
    		self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
    		self.inventoryTab[0].Down()
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam func. SetInventoryPage si o inlocuim / adaptam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Acum, in locale_interface.txt adaugam:
    Code:
    INVENTORY_PAGE_BUTTON_TOOLTIP_1	1. Inventar
    INVENTORY_PAGE_BUTTON_TOOLTIP_2	2. Inventar
    INVENTORY_PAGE_BUTTON_TOOLTIP_3	3. Inventar
    INVENTORY_PAGE_BUTTON_TOOLTIP_4	4. Inventar

    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)
    • 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/jWxeDSf7HP

    Suntem peste 1700 membri! - Avem chat activ zilnic, support, cereri, resurse. :D :ymcowboy:




    See full signature

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    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

    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 “Tutoriale”

    Informații

    Utilizatori ce navighează pe acest forum: alex77, mihai8761, nowicanseeyou, WHAIT666 și 3 vizitatori

    Discord ID copiat: