Jump to content

Metin2 - 4 Inventory Page


Recommended Posts

  • Bronze

M2 Download Center

This is the hidden content, please
( Internal )

Hi guys :D Someone wondered how to make 4 inventory page with source. I will share how to make 4 inventory page today :)

 

I hope you are like it ;)

 

First which you are use to source files open it. I will use to mainline_released(SG)

 

log in mainline_released/mainline_sg/Srcs/Server/common after open length.h after search this

INVENTORY_MAX_NUM		= 90,

Replace to 

INVENTORY_MAX_NUM		= 180,

Open char_item.cpp and search this

					BYTE bPage = bCell / (INVENTORY_MAX_NUM / 2);

Replace to 

					BYTE bPage = bCell / (INVENTORY_MAX_NUM / 4);

search this

					if (p / (INVENTORY_MAX_NUM / 2) != bPage)

Replace to

					if (p / (INVENTORY_MAX_NUM / 4) != bPage)

open exchange.cpp. Search this after add under this.

	static CGrid s_grid2(5, INVENTORY_MAX_NUM/5 / 2); // inven page 2

will be like this.

	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
	static CGrid s_grid3(5, INVENTORY_MAX_NUM/5 / 2); // inven page 3
	static CGrid s_grid4(5, INVENTORY_MAX_NUM/5 / 2); // inven page 4

	s_grid1.Clear();
	s_grid2.Clear();
	s_grid3.Clear();
	s_grid4.Clear();

and replace to your self.. 

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());
	}

	for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i)
	{
		if (!(item = victim->GetInventoryItem(i)))
			continue;

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

		s_grid4.Put(i - INVENTORY_MAX_NUM / 4, 1, item->GetSize());
	}

After client.. :D

 

Log in mainline_released/mainline_sg/Srcs/Client/Userinterface after open GameType.h after search this

const DWORD c_Inventory_Page_Count = 2;

Replace to

const DWORD c_Inventory_Page_Count = 4;

open inventorywindow.py and search this

EQUIPMENT_START_INDEX = 90

Replace to

EQUIPMENT_START_INDEX = 180

open uiinventory.py and search this after add under this

self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
			self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
			self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))

search this after add under this

self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
		self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
		self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))

Search SetInventoryPage function and replace with this.

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

Thanks for @Zardon,Deniec Cikiec comment.

i will share my inventorywindow.py

import uiScriptLocale
import item

EQUIPMENT_START_INDEX = 180

window = {
	"name" : "InventoryWindow",

	## 600 - (width + 오른쪽으로 부터 띄우기 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},
										## 새 반지1
										##{"index":item.EQUIPMENT_RING1, "x":2, "y":106, "width":32, "height":32},
										## 새 반지2
										##{"index":item.EQUIPMENT_RING2, "x":75, "y":106, "width":32, "height":32},
										## 새 벨트
										{"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_2,

					"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_2,

					"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",
						},
					),
				},

			),
		},
	),
}

open beltinventorywindow.py after search this

EQUIPMENT_START_INDEX = 90

replace to

EQUIPMENT_START_INDEX = 180

I think someone don't make part of client-side. I share binary file (original file) with your.

 

https://mega.co.nz/#!TxpUzL6Y!9vC4ip61k_El6Ew6POIF53_PApd29a4CFSqIMdzb4XQ

 

Kind Regards

HaveBeen

  • Metin2 Dev 82
  • kekw 4
  • Eyes 3
  • Not Good 3
  • Lmao 1
  • Good 40
  • muscle 1
  • Love 9
  • Love 131

Plain logic saves lives.

Link to comment
Share on other sites

thank u so much for this first part

but about the belt system who InyaProduction say..? can u make a fix on this kind of "releaseguide "?

Btw  super thanks to always ask me on your private message

but i would like to say 1 thing, the last one about that, than if it  work i promise to no more breaking balls to all of super nice people here ( about 4 slots... xd the rest again )

this is it:
My problem is that:

how does it mean , you nee to learn to compile c++ and source on freebsd"

it s like if  i m telling you  " yes u can go to the moon , you just need to compile the launch module of the space shuttle and that s all "
you will say " wtf dude , and how can i compile that, ok HaveBeen told me the part and what to write...but to make it work?"


even if u are smart, you can t understand how to compile and where to put the edit files...

i mean YOU know what write cos u have the guide of this person on this forum, but u will never understand how to do and how to put it on winscp
U know what i mean?  I still don t understand how to make it working.... HaveBeen and all other nice and smart people helping me so much  but
what i have to do after that:
open PuTTy  and write a command ? or just drag the souce of novaline into winscp in which directory? i m going to be mad


i never did that, maybe it s easy after all.... but, if i never did that, and people continue to tell me words like :" you need to compile the check the guide , etc etc"

i can t understand in that way, i just need 1 SINGLE exemple on how to put it on winscp...then i will stop to be an a**hole .

  • Metin2 Dev 1
Link to comment
Share on other sites

  • Bronze

Belt System last slots cant be used now ;) you have above 255 slots now 

 

Yep probably we have 255 slots at the moment but someone wanna use to belt system :)

 

Thanks for comment

 

Kind Regards

HaveBeen

 

thank u so much for this first part

but about the belt system who InyaProduction say..? can u make a fix on this kind of "releaseguide "?

Btw  super thanks to always ask me on your private message

but i would like to say 1 thing, the last one about that, than if it  work i promise to no more breaking balls to all of super nice people here ( about 4 slots... xd the rest again )

this is it:

My problem is that:

how does it mean , you nee to learn to compile c++ and source on freebsd"

it s like if  i m telling you  " yes u can go to the moon , you just need to compile the launch module of the space shuttle and that s all "

you will say " wtf dude , and how can i compile that, ok HaveBeen told me the part and what to write...but to make it work?"

even if u are smart, you can t understand how to compile and where to put the edit files...

i mean YOU know what write cos u have the guide of this person on this forum, but u will never understand how to do and how to put it on winscp

U know what i mean?  I still don t understand how to make it working.... HaveBeen and all other nice and smart people helping me so much  but

what i have to do after that:

open PuTTy  and write a command ? or just drag the souce of novaline into winscp in which directory? i m going to be mad

i never did that, maybe it s easy after all.... but, if i never did that, and people continue to tell me words like :" you need to compile the check the guide , etc etc"

i can t understand in that way, i just need 1 SINGLE exemple on how to put it on winscp...then i will stop to be an a**hole .

 

.InyaProduction say "If you are not use to belt system, you have 255 slots :)"

 

How i can compile game on freebsd, it's not hard, first you have to put source files in /usr and Extern folder (this is important for compile)

 

But you say "I don't know anything about compile" you should be look at topics already it's public for virtual machine. I hope you are understand me what i mean :)

 

Thanks for comment.

 

Kind Regards

HaveBeen

  • Metin2 Dev 1
  • Lmao 1
  • Love 4

Plain logic saves lives.

Link to comment
Share on other sites

The python part is:

 

uiinventory.py

 

find this:

self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))

and add down this:

self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))

after that find this:

self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))

and add down this:

self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))

find this:

self.inventoryTab[0].Down()

and add down this:

self.inventoryPageIndex = 0

now lets go to edit the SetInventoryPage function

 

replace the SetInventoryPage function with this:

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

file locale/xx/ui/inventorywindow.py:

 

change EQUIPMENT_START_INDEX = 90 to EQUIPMENT_START_INDEX = 180

 

after that replace the Inventory_Tab_01 and Inventory_Tab_02 with this:

This is the hidden content, please

  • Metin2 Dev 45
  • kekw 1
  • Eyes 4
  • Angry 1
  • Good 21
  • Love 3
  • Love 34
Link to comment
Share on other sites

I made it in an other way because in this method you can't see which page is selected.

self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))
self.inventoryTab[0].Down()

below this i wrote

self.inventoryPageIndex = 0

and i edited the SetInventoryPage like that

def SetInventoryPage(self, page):
	self.inventoryTab[self.inventoryPageIndex].SetUp()
	self.inventoryPageIndex = page
	self.inventoryTab[self.inventoryPageIndex].Down()
	self.RefreshBagSlotWindow()
  • Love 3
Link to comment
Share on other sites

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.