Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

4 Pages d'Inventaire


Messages recommandés

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

Salut à tous , je vais vous expliquer comment mettre 4 pages d'inventaire.

 

Tout d'abord, allez ici :  Server/common/ puis ouvrez length.h

 

Ensuite cherchez : 

INVENTORY_MAX_NUM		= 90,
et remplacez par :
INVENTORY_MAX_NUM		= 180,
 

Ensuite, dans le répertoire : game/src ouvrez char_item.cpp  et cherchez :

BYTE bPage = bCell / (INVENTORY_MAX_NUM / 2);
et remplacez cette ligne par :
BYTE bPage = bCell / (INVENTORY_MAX_NUM / 4);
 
Cherchez ensuite(toujours dans le char_item.cpp) :
if (p / (INVENTORY_MAX_NUM / 2) != bPage)
puis remplacez par : 
if (p / (INVENTORY_MAX_NUM / 4) != bPage)
 
Ensuite ouvrez exchange.cpp et cherchez :
static CGrid s_grid1(5, INVENTORY_MAX_NUM/5 / 2); // inven page 1
puis complétez comme ici : 
	static CGrid s_grid1(5, INVENTORY_MAX_NUM/5 / 4); // inven page 1
	static CGrid s_grid2(5, INVENTORY_MAX_NUM/5 / 4); // inven page 2
	static CGrid s_grid3(5, INVENTORY_MAX_NUM/5 / 4); // inven page 3
	static CGrid s_grid4(5, INVENTORY_MAX_NUM/5 / 4); // inven page 4

	s_grid1.Clear();
	s_grid2.Clear();
	s_grid3.Clear();
	s_grid4.Clear();
 
Ensuite, rajoutez en début de fichier ces lignes (en dessous des #include) :
/* 4 INVENTORY DEFINES */
#define INVEN_PAGES	4
#define INVEN_PAGE_SIZE	(INVENTORY_MAX_NUM / INVEN_PAGES)

 

Ensuite dans la fonction " bool CExchange::CheckSpace() " , remplacez les lignes ci-dessous :

	for (i = 0; i < INVEN_PAGE_SIZE; ++i)
	{
		if (!(item = victim->GetInventoryItem(i)))
			continue;

		s_grid1.Put(i, 1, item->GetSize());
	}
	for (i = INVEN_PAGE_SIZE; i < INVEN_PAGE_SIZE*2; ++i)
	{
		if (!(item = victim->GetInventoryItem(i)))
			continue;

		s_grid2.Put(i - INVEN_PAGE_SIZE, 1, item->GetSize());
	}
	for (i = INVEN_PAGE_SIZE*2; i < INVEN_PAGE_SIZE*3; ++i)
	{
		if (!(item = victim->GetInventoryItem(i)))
			continue;

		s_grid3.Put(i - INVEN_PAGE_SIZE*2, 1, item->GetSize());
	}
	for (i = INVEN_PAGE_SIZE*3; i < INVENTORY_MAX_NUM; ++i)
	{
		if (!(item = victim->GetInventoryItem(i)))
			continue;

		s_grid4.Put(i - INVEN_PAGE_SIZE*3, 1, item->GetSize());
	}
Ensuite, chercher : int iPos = s_grid1.FindBlank(1, item->GetSize());
vous devriez y voir ca :
			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;
				}
			}

modifier par

			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
				{
					iPos = s_grid3.FindBlank(1, item->GetSize());

					if (iPos >= 0)
					{
						s_grid3.Put(iPos, 1, item->GetSize());
					}
					else
					{
						iPos = s_grid4.FindBlank(1, item->GetSize());

						if (iPos >= 0)
						{
							s_grid4.Put(iPos, 1, item->GetSize());
						}
						else
						{
							return false;
						}
					}
				}
			}

 

 

 

PARTIE SERVEUR TERMINÉE

 

Passons maintenant Partie client.

Pour commencer , allez ici : Client/Userinterface et ouvrez GameType.h et cherchez :

const DWORD c_Inventory_Page_Count = 2;
et remplacez par :
const DWORD c_Inventory_Page_Count = 4;
 
Ouvrez ensuite inventorywindow.py et cherchez :
EQUIPMENT_START_INDEX = 90
que vous remplacez par :
EQUIPMENT_START_INDEX = 180
 
Ensuite, (eh oui, c'est toujours pas terminé !) ouvrez uiinventory.py et cherchez :
self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
que vous ajoutez en dessous :
self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))
 

ensuite cherchez :

self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
et ajoutez en dessous :
self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))
 
cherchez ensuite :
self.inventoryTab[0].Down()

rajoutez en dessous :

self.inventoryPageIndex = 0

 

Ensuite cherchez la fonction SetInventoryPage et remplacez par ça :

def SetInventoryPage(self, page):
   self.inventoryTab[self.inventoryPageIndex].SetUp()
   self.inventoryPageIndex = page
   self.inventoryTab[self.inventoryPageIndex].Down()
   self.RefreshBagSlotWindow()
 

 

PARTIE CLIENT TERMINÉE

 

Vous pouvez tout recompiler et la partie source est terminée.

Je vous partage mon inventorywindow.py qui se trouve dans locale_fr/ui :

import uiScriptLocale
import item
EQUIPMENT_START_INDEX = 180
window = {
"name" : "InventoryWindow",
## 600 - (width + i?¢´e¡Í¢¬i¨£¨öi©«¨ùe¢®©« e¢Ò¢æi?¡Æ e?i?¡Æe¢¬¡Æ 24 px)
"x" : SCREEN_WIDTH - 176,
"y" : SCREEN_HEIGHT - 37 - 565,
"style" : ("movable", "float",),
"width" : 176,
"height" : 585,
"children" :
(
	## Inventory, Equipment Slots
	{
		"name" : "board",
		"type" : "board",
		"style" : ("attach",),
		"x" : 0,
		"y" : 0,
		"width" : 176,
		"height" : 585,
		"children" :
		(
			## Title
			{
				"name" : "TitleBar",
				"type" : "titlebar",
				"style" : ("attach",),
				"x" : 8,
				"y" : 7,
				"width" : 161,
				"color" : "yellow",
				"children" :
				(
					{ "name":"TitleName", "type":"text", "x":77, "y":3, "text":uiScriptLocale.INVENTORY_TITLE, "text_horizontal_align":"center" },
				),
			},
			## Equipment Slot
			{
				"name" : "Equipment_Base",
				"type" : "image",
				"x" : 10,
				"y" : 33,
				"image" : "d:/ymir work/ui/equipment_bg_without_ring.tga",
				"children" :
				(
					{
						"name" : "EquipmentSlot",
						"type" : "slot",
						"x" : 3,
						"y" : 3,
						"width" : 150,
						"height" : 182,
						"slot" : (
									{"index":EQUIPMENT_START_INDEX+0, "x":39, "y":37, "width":32, "height":64},
									{"index":EQUIPMENT_START_INDEX+1, "x":39, "y":2, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+2, "x":39, "y":145, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+3, "x":75, "y":67, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+4, "x":3, "y":3, "width":32, "height":96},
									{"index":EQUIPMENT_START_INDEX+5, "x":114, "y":67, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+6, "x":114, "y":35, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+7, "x":2, "y":145, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+8, "x":75, "y":145, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+9, "x":114, "y":2, "width":32, "height":32},
									{"index":EQUIPMENT_START_INDEX+10, "x":75, "y":35, "width":32, "height":32},
									## i?? e¡Æ?i¡×¢æ1
									##{"index":item.EQUIPMENT_RING1, "x":2, "y":106, "width":32, "height":32},
									## i?? e¡Æ?i¡×¢æ2
									##{"index":item.EQUIPMENT_RING2, "x":75, "y":106, "width":32, "height":32},
									## i?? e©÷¡§i?¢¬
									{"index":item.EQUIPMENT_BELT, "x":39, "y":106, "width":32, "height":32},
								),
					},
					## Dragon Soul Button
					{
						"name" : "DSSButton",
						"type" : "button",
						"x" : 114,
						"y" : 107,
						"tooltip_text" : uiScriptLocale.TASKBAR_DRAGON_SOUL,
						"default_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_01.tga",
						"over_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_02.tga",
						"down_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_03.tga",
					},
					## MallButton
					{
						"name" : "MallButton",
						"type" : "button",
						"x" : 118,
						"y" : 148,
						"tooltip_text" : uiScriptLocale.MALL_TITLE,
						"default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga",
						"over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga",
						"down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga",
					},
					## CostumeButton
					{
						"name" : "CostumeButton",
						"type" : "button",
						"x" : 78,
						"y" : 5,
						"tooltip_text" : uiScriptLocale.COSTUME_TITLE,
						"default_image" : "d:/ymir work/ui/game/taskbar/costume_Button_01.tga",
						"over_image" : "d:/ymir work/ui/game/taskbar/costume_Button_02.tga",
						"down_image" : "d:/ymir work/ui/game/taskbar/costume_Button_03.tga",
					},					 
					{
						"name" : "Equipment_Tab_01",
						"type" : "radio_button",
						"x" : 86,
						"y" : 161,
						"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
						"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
						"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
						"children" :
						(
							{
								"name" : "Equipment_Tab_01_Print",
								"type" : "text",
								"x" : 0,
								"y" : 0,
								"all_align" : "center",
								"text" : "I",
							},
						),
					},
					{
						"name" : "Equipment_Tab_02",
						"type" : "radio_button",
						"x" : 86 + 32,
						"y" : 161,
						"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
						"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
						"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
						"children" :
						(
							{
								"name" : "Equipment_Tab_02_Print",
								"type" : "text",
								"x" : 0,
								"y" : 0,
								"all_align" : "center",
								"text" : "II",
							},
						),
					},
				),
			},
			{
				"name" : "Inventory_Tab_01",
				"type" : "radio_button",
				"x" : 10,
				"y" : 33 + 189,
				"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
				"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
				"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
				"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,
				"children" :
				(
					{
						"name" : "Inventory_Tab_01_Print",
						"type" : "text",
						"x" : 0,
						"y" : 0,
						"all_align" : "center",
						"text" : "I",
					},
				),
			},
			{
				"name" : "Inventory_Tab_02",
				"type" : "radio_button",
				"x" : 10 + 78,
				"y" : 33 + 189,
				"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
				"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
				"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
				"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,
				"children" :
				(
					{
						"name" : "Inventory_Tab_02_Print",
						"type" : "text",
						"x" : 0,
						"y" : 0,
						"all_align" : "center",
						"text" : "II",
					},
				),
			},
			{
				"name" : "Inventory_Tab_03",
				"type" : "radio_button",
				"x" : 10,
				"y" : 33 + 210,
				"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
				"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
				"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
				"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_3,
				"children" :
				(
					{
						"name" : "Inventory_Tab_03_Print",
						"type" : "text",
						"x" : 0,
						"y" : 0,
						"all_align" : "center",
						"text" : "III",
					},
				),
			},
			{
				"name" : "Inventory_Tab_04",
				"type" : "radio_button",
				"x" : 10 + 78,
				"y" : 33 + 210,
				"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
				"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
				"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
				"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_4,
				"children" :
				(
					{
						"name" : "Inventory_Tab_04_Print",
						"type" : "text",
						"x" : 0,
						"y" : 0,
						"all_align" : "center",
						"text" : "IV",
					},
				),
			},			 
			## Item Slot
			{
				"name" : "ItemSlot",
				"type" : "grid_table",
				"x" : 8,
				"y" : 264,
				"start_index" : 0,
				"x_count" : 5,
				"y_count" : 9,
				"x_step" : 32,
				"y_step" : 32,
				"image" : "d:/ymir work/ui/public/Slot_Base.sub"
			},
			## Print
			{
				"name":"Money_Slot",
				"type":"button",
				"x":8,
				"y":28,
				"horizontal_align":"center",
				"vertical_align":"bottom",
				"default_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
				"over_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
				"down_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
				"children" :
				(
					{
						"name":"Money_Icon",
						"type":"image",
						"x":-18,
						"y":2,
						"image":"d:/ymir work/ui/game/windows/money_icon.sub",
					},
					{
						"name" : "Money",
						"type" : "text",
						"x" : 3,
						"y" : 3,
						"horizontal_align" : "right",
						"text_horizontal_align" : "right",
						"text" : "123456789",
					},
				),
			},
		),
	},
),
}
 

Pour clore le tutoriel , allez dans locale_interface.txt et cherchez :

INVENTORY_PAGE_BUTTON_TOOLTIP_2	2e inventaire
et ajoutez en dessous :
INVENTORY_PAGE_BUTTON_TOOLTIP_3	3e inventaire
INVENTORY_PAGE_BUTTON_TOOLTIP_4	4e inventaire
 

Vous pouvez tout recompiler, repacker et regarder le résultat.

 

Voila, tutoriel terminé, bonne chance !

Source : M2Dev,

 

Corrigé par Kameyu, et merci à History, Galet et Calypso pour leur participation au débug.

  • Metin2 Dev 4
  • Good 5
  • Love 8

Memento mei.

Lien vers le commentaire
Partager sur d’autres sites

  • Funkiest

La raison de pourquoi je ne l'ai jamais fait, c'est tout simplement car les bugs apportés sont trop gros vis à vis des ajouts, et que les bugs sont assez compliqués (surtout longs) à corriger :

 

- Impossibilité d'améliorer les objets des pages 3 et 4

- Impossibilité d'utiliser les slots 255 - 256 des ceintures, à savoir les deux derniers

- Effets des potions automatiques manquants dans les pages 3 et 4

- Vérification de la place de l'inventaire tronquée durant l'échange

- Pages non reconnus par les quêtes (des fois)

 

Et quelques autres bugs dont je ne me souviens plus

 

Cependant, merci :)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

Salut a tous , je vais vous expliquez comment mettre 4 pages d'inventaires.

 

Tout d'abord , aller ici :  mainline_released/mainline_sg/Srcs/Server/common puis ouvrez length.h

      Ensuite chercher : 

 

 

 

      

 

 

       ou se trouve   mainline_released

Lien vers le commentaire
Partager sur d’autres sites

  • Funkiest

Salut a tous , je vais vous expliquez comment mettre 4 pages d'inventaires.

 

Tout d'abord , aller ici :  mainline_released/mainline_sg/Srcs/Server/common puis ouvrez length.h

      Ensuite chercher : 

 

 

 

      

 

 

       ou se trouve   mainline_released

Poste dans A/Q/S...

 

Dernière fois que je répond, c'est dans les sources, que tu dois télécharger et monter sur une vm, il y a des tutoriaux ici

Lien vers le commentaire
Partager sur d’autres sites

Salut a tous , je vais vous expliquez comment mettre 4 pages d'inventaires.

 

Tout d'abord , aller ici :  mainline_released/mainline_sg/Srcs/Server/common puis ouvrez length.h

      Ensuite chercher : 

 

 

 

      

 

 

       ou se trouve   mainline_released

Poste dans A/Q/S...

 

Dernière fois que je répond, c'est dans les sources, que tu dois télécharger et monter sur une vm, il y a des tutoriaux ici

Ok Galet

je vais chercher sur le forum

Lien vers le commentaire
Partager sur d’autres sites

  • 3 ans après...
  • 1 mois après...
  • 7 mois après...
  • 2 ans après...

Salut, je viens d'installer tout le systeme mais quand je lance mon client j'ai cette erreur qui apparait

networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unindent does not match any outer indentation level (uiInventory.py, line 313)

Voici à quoi ressemble mon uiinventory spacer.png

Merci d'avance pour votre aide 😅

  • Metin2 Dev 1
Lien vers le commentaire
Partager sur d’autres sites



  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

    7. 0

      comment extraire les fichiers locale.epk locale.eix sur le serveur officiel ?

    8. 2

      Funky-emu.net -> fr.metin2.dev

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.