Jump to content

Metin2 - 4 Inventory Page


Recommended Posts

  • 2 weeks later...
  • Former Staff

What's wrong?

 

uiInventory.py(line:313) __LoadWindow
ui.py(line:2708) GetChild
 
InventoryWindow.LoadWindow.BindObject - <type 'exceptions.KeyError'>:'Inventory_Tab_03'
 
1230 19:48:23718 :: ============================================================================================================
1230 19:48:23718 :: Abort!!!!
Link to comment
Share on other sites

  • Former Staff

 

What's wrong?

uiInventory.py(line:313) __LoadWindow
ui.py(line:2708) GetChild
 
InventoryWindow.LoadWindow.BindObject - <type 'exceptions.KeyError'>:'Inventory_Tab_03'
 
1230 19:48:23718 :: ============================================================================================================
1230 19:48:23718 :: Abort!!!!

 

open locale_interface.txt in your locale and add

Inventory_Tab_03 <TAB> inventory 3 or anything you want here
Inventory_Tab_04 <TAB> inventory 4 or anything you want here
Link to comment
Share on other sites

UxpJ1z1.jpg

 

How to fix?? item what open on me don`t see in up inventory

You need to change the numbers of the pages in the client binary too. Atleast for us it solved this problem.

Edited by Metin2 Dev
Core X - External 2 Internal

System Administrator @ Hungarian Government
System Administrator @ Vibestro
Freelancer Developer @ Various projects

Link to comment
Share on other sites

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

 

I did not add it on resolving issues or where the file on the base in the beautiful ...

 

 

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

16
INVENTORY_MAX_NUM       = 90,

Replace to 

6
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
Link to comment
Share on other sites

  • Premium

Change

 

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

 

to

 

[php]    def SetInventoryPage(self, page):
        self.inventoryPageIndex = page
        for i in xrange(4):
            if i != self.inventoryPageIndex:
                self.inventoryTab[i].SetUp()
                self.inventoryTab[self.inventoryPageIndex].Down()
        self.RefreshBagSlotWindow()

  • Love 1
Link to comment
Share on other sites

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

	s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i) // 45 to 180 (WRONG!)(You're putting items of third and fourth inventory in the second!)(Right: 45 to 90)
{
	if (!(item = victim->GetInventoryItem(i)))
		continue;

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

for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i) // 45 to 180 (WRONG!)(You're putting items of fourth inventory in the third!)(Right: 90 to 135)
{
	if (!(item = victim->GetInventoryItem(i)))
		continue;

	s_grid3.Put(i - INVENTORY_MAX_NUM / 4, 1, item->GetSize()); // (WRONG!)
}
for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i) // 45 to 180 (WRONG! You're putting items of second and third inventory in the fourth!)(Right: 135 to 180)
{
	if (!(item = victim->GetInventoryItem(i)))
		continue;

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

I think there is an error with exchange. (I've commented where're the issues.)

And there left some checks of free space (always in CExchange::CheckSpace()).

 

--- Update ---

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

This must be:

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

Link to comment
Share on other sites

  • Active Member

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

	s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i) // 45 to 180 (WRONG!)(You're putting items of third and fourth inventory in the second!)(Right: 45 to 90)
{
	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) // 45 to 180 (WRONG!)(You're putting items of fourth inventory in the third!)(Right: 90 to 135)
{
	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) // 45 to 180 (WRONG! You're putting items of second and third inventory in the fourth!)(Right: 135 to 180)
{
	if (!(item = victim->GetInventoryItem(i)))
		continue;

	s_grid4.Put(i - INVENTORY_MAX_NUM / 4, 1, item->GetSize());
}
I think there is an error with exchange. (I've commented where're the issues.)

And there left some checks of free space (always in CExchange::CheckSpace()).

Yes of course.
Link to comment
Share on other sites

  • Former Staff

 

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

	s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i) // 45 to 180 (WRONG!)(You're putting items of third and fourth inventory in the second!)(Right: 45 to 90)
{
	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) // 45 to 180 (WRONG!)(You're putting items of fourth inventory in the third!)(Right: 90 to 135)
{
	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) // 45 to 180 (WRONG! You're putting items of second and third inventory in the fourth!)(Right: 135 to 180)
{
	if (!(item = victim->GetInventoryItem(i)))
		continue;

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

I think there is an error with exchange

. (I've commented where're the issues.)

And there left some checks of free space (always in CExchange::CheckSpace()).

 

Yes of course.

 

this was already solved by Zonni

on the 9th and 11th pages of this topic

  • Love 1
Link to comment
Share on other sites

 

 

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

	s_grid1.Put(i, 1, item->GetSize());
}
for (i = INVENTORY_MAX_NUM / 4; i < INVENTORY_MAX_NUM; ++i) // 45 to 180 (WRONG!)(You're putting items of third and fourth inventory in the second!)(Right: 45 to 90)
{
	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) // 45 to 180 (WRONG!)(You're putting items of fourth inventory in the third!)(Right: 90 to 135)
{
	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) // 45 to 180 (WRONG! You're putting items of second and third inventory in the fourth!)(Right: 135 to 180)
{
	if (!(item = victim->GetInventoryItem(i)))
		continue;

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

I think there is an error with exchange

. (I've commented where're the issues.)

And there left some checks of free space (always in CExchange::CheckSpace()).

 

Yes of course.

 

this was already solved by Zonni

on the 9th and 11th pages of this topic

 

Sorry, i've not noticed it, i watched only the first post.

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
      {
       iPos = s_grid5.FindBlank(1, item->GetSize());
       if (iPos >= 0)
       {
        s_grid5.Put(iPos, 1, item->GetSize());
       }
       else
       {
        return false;
       }
      }
     }
    }
   }

Insted of this you can put the grids in array and after loop it. 

Link to comment
Share on other sites

  • 2 weeks later...

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.