Aveline™ 554 Posted April 14, 2014 Share Posted April 14, 2014 M2 Download Center This is the hidden content, please Sign In or Sign Up ( Internal ) Hi guys 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.. 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 87 4 3 3 1 41 1 9 140 Plain logic saves lives. Link to comment Share on other sites More sharing options...
Mehti 76 Posted April 14, 2014 Share Posted April 14, 2014 Cool. Thanks for share Link to comment Share on other sites More sharing options...
Former Staff .InyaProduction 1125 Posted April 14, 2014 Former Staff Share Posted April 14, 2014 Belt System last slots cant be used now you have above 255 slots now 3 Link to comment Share on other sites More sharing options...
boomber 2 Posted April 14, 2014 Share Posted April 14, 2014 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 winscpU 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 madi 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 . 1 Link to comment Share on other sites More sharing options...
Aveline™ 554 Posted April 14, 2014 Author Share Posted April 14, 2014 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 1 1 4 Plain logic saves lives. Link to comment Share on other sites More sharing options...
Risan 115 Posted April 14, 2014 Share Posted April 14, 2014 Nice, i test it this later.. But you most change Python code... 1 Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 751 Posted April 14, 2014 Honorable Member Share Posted April 14, 2014 The problem is that the slot is defined as BYTE and the limit of BYTE is 255. And if you have slots higher than 255 it doesn't work. Kind regards Chuck 1 Link to comment Share on other sites More sharing options...
Risan 115 Posted April 14, 2014 Share Posted April 14, 2014 Change The Packets.. its easy ^.. Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 751 Posted April 14, 2014 Honorable Member Share Posted April 14, 2014 I know but many others not, and it isn't only the packets functions too. Kind regards Chuck Link to comment Share on other sites More sharing options...
Premium .Avenue™ 783 Posted April 14, 2014 Premium Share Posted April 14, 2014 (edited) Ahm... Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal 2 Link to comment Share on other sites More sharing options...
Former Staff .InyaProduction 1125 Posted April 14, 2014 Former Staff Share Posted April 14, 2014 You have to make the python script for 4 pages xD 2 Link to comment Share on other sites More sharing options...
Premium .Avenue™ 783 Posted April 14, 2014 Premium Share Posted April 14, 2014 (edited) Edited August 18, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Luis092 3 Posted April 14, 2014 Share Posted April 14, 2014 (edited) file server that is modified? .Avenue™ PRETTY THE FILES OF YEHONA,THANKS XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal 2 Link to comment Share on other sites More sharing options...
Aveline™ 554 Posted April 14, 2014 Author Share Posted April 14, 2014 (edited) Kind Regards HaveBeen Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal 5 Plain logic saves lives. Link to comment Share on other sites More sharing options...
Denis 1474 Posted April 15, 2014 Share Posted April 15, 2014 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 Sign In or Sign Up 46 1 4 1 21 3 36 Link to comment Share on other sites More sharing options...
Zardon 4 Posted April 15, 2014 Share Posted April 15, 2014 (edited) I've done everything like you but I got one little problem Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Denis 1474 Posted April 15, 2014 Share Posted April 15, 2014 You have do something wrong in the game source. Link to comment Share on other sites More sharing options...
Former Staff .InyaProduction 1125 Posted April 15, 2014 Former Staff Share Posted April 15, 2014 No you have to edit the function for getting the next free slot. Its not just making higher slots. Not that easy Atm it will only make the right inventory ending at slots max num / 2 -> at the end of 2nd page Link to comment Share on other sites More sharing options...
Zardon 4 Posted April 15, 2014 Share Posted April 15, 2014 Now it works fine for me. Link to comment Share on other sites More sharing options...
Aveline™ 554 Posted April 15, 2014 Author Share Posted April 15, 2014 def SetInventoryPage(self, page): self.inventoryTab[self.inventoryPageIndex].SetUp() self.inventoryPageIndex = page self.RefreshBagSlotWindow() Thanks for comment. I will add your comment in my topic Kind Regards HaveBeen Plain logic saves lives. Link to comment Share on other sites More sharing options...
Zardon 4 Posted April 15, 2014 Share Posted April 15, 2014 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() 3 Link to comment Share on other sites More sharing options...
Dennis 167 Posted April 15, 2014 Share Posted April 15, 2014 when i have my inventory 1 and 2 full and would trade get i the massage that i no empty slots have but i have 5 inventorys Link to comment Share on other sites More sharing options...
★ j0ĸ3rнd ★ 3 Posted April 16, 2014 Share Posted April 16, 2014 Goob Job, this will help a lot of people! 1 Link to comment Share on other sites More sharing options...
Aveline™ 554 Posted April 16, 2014 Author Share Posted April 16, 2014 when i have my inventory 1 and 2 full and would trade get i the massage that i no empty slots have but i have 5 inventorys You are add something codes in exchange.cpp? Kind Regards HaveBeen Plain logic saves lives. Link to comment Share on other sites More sharing options...
ѕeмa™ 308 Posted April 16, 2014 Share Posted April 16, 2014 I try it and work perfectly 1 https://m2admin.net/ Link to comment Share on other sites More sharing options...
Recommended Posts