Frohe Weihnachten liebe Kinder.
Da mich ein Freund gebeten hatte ihm aus den "Metin2Nirvana Server Files 2016" die Inventar 'Seitenbar' auszubauen und inklusive Tutorial ihm schicken soll, dachte ich mir das können sicher noch welche von euch gebrauchen.
Kurz und knapp hier ein kleines Tutorial wie man das ganze einbaut. Kurze Info noch vorab: Der Code wurde von mir nur angepasst - es liegen keinerlei Rechte bei mir. Das ganze wurde an den Kori Files ausgetestet.
Öffne die 'uiinventory.py' aus der 'root'
Suche def SetInventoryPage(self, page):
und ersetze die komplette Funktion durch
Suche def SetInventoryPage(self, page):
und füge unter die Funktion
- def InvPage(self):
- self.SetInventoryPage(1)
- self.page1next.SetUp()
- self.page1back.Down()
- self.page1back.Hide()
- self.page1next.Hide()
- self.page2back.Show()
- self.page2next.Show()
- self.titleName.SetText("Inventarseite 2")
- self.firstpage.Hide()
- self.secondpage.Show()
- def InvPage02(self):
- self.SetInventoryPage(2)
- self.page2back.SetUp()
- self.page2back.Hide()
- self.page2next.SetUp()
- self.page2next.Hide()
- self.page3back.Show()
- self.page3next.Show()
- self.titleName.SetText("Inventarseite 3")
- self.secondpage.Hide()
- self.thirdpage.Show()
- def InvPage02back(self):
- self.SetInventoryPage(0)
- self.page1back.Down()
- self.page1back.Show()
- self.page1next.Show()
- self.page2back.SetUp()
- self.page2back.Hide()
- self.page2next.Hide()
- self.titleName.SetText("Inventarseite 1")
- self.firstpage.Show()
- self.secondpage.Hide()
- def InvPage03back(self):
- self.SetInventoryPage(1)
- self.page2back.Show()
- self.page3back.SetUp()
- self.page2next.Show()
- self.page3back.Hide()
- self.page3next.Hide()
- self.titleName.SetText("Inventarseite 2")
- self.secondpage.Show()
- self.thirdpage.Hide()
- def InvPage03(self):
- self.SetInventoryPage(3)
- self.page3back.SetUp()
- self.page3back.Hide()
- self.page3next.SetUp()
- self.page3next.Hide()
- self.page4back.Show()
- self.page4next.Show()
- self.titleName.SetText("Inventarseite 4")
- self.thirdpage.Hide()
- self.fourthpage.Show()
- def InvPage04back(self):
- self.SetInventoryPage(2)
- self.page3back.Show()
- self.page4back.SetUp()
- self.page3next.Show()
- self.page4back.Hide()
- self.page4next.Hide()
- self.titleName.SetText("Inventarseite 3")
- self.thirdpage.Show()
- self.fourthpage.Hide()
- def InvPage04(self):
- self.SetInventoryPage(4)
- self.page4back.SetUp()
- self.page4back.Hide()
- self.page4next.SetUp()
- self.page4next.Hide()
- self.page5back.Show()
- self.page5next.Show()
- self.page5next.Down()
- self.titleName.SetText("Inventarseite 5")
- self.fourthpage.Hide()
- self.fifthpage.Show()
- def InvPage05back(self):
- self.SetInventoryPage(3)
- self.page4back.Show()
- self.page5back.SetUp()
- self.page4next.Show()
- self.page5back.Hide()
- self.page5next.Hide()
- self.titleName.SetText("Inventarseite 4")
- self.fourthpage.Show()
- self.fifthpage.Hide()
Suche self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
- Ersetze das:
- self.inventoryTab = []
- self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
- self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
- self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
- self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))
- self.inventoryTab.append(self.GetChild("Inventory_Tab_05"))
- Durch das:
- self.page1back=self.GetChild2("Page1back")
- self.page1back.Down()
- if self.titleName.GetText=="Inventarseite 1":
- self.page1back.Down()
- self.page1next=self.GetChild("Page1next")
- self.page1next.SetEvent(ui.__mem_func__(self.InvPage))
- self.page2back=self.GetChild2("Page2back")
- self.page2next=self.GetChild2("Page2next")
- self.page2next.SetEvent(ui.__mem_func__(self.InvPage02))
- self.page2back.SetEvent(ui.__mem_func__(self.InvPage02back))
- self.page3back=self.GetChild("page3backx")
- self.page3next=self.GetChild("page3nextx")
- self.page3back.SetEvent(ui.__mem_func__(self.InvPage03back))
- self.page3next.SetEvent(ui.__mem_func__(self.InvPage03))
- self.page4back=self.GetChild("page4backx")
- self.page4next=self.GetChild("page4nextx")
- self.page4back.SetEvent(ui.__mem_func__(self.InvPage04back))
- self.page4next.SetEvent(ui.__mem_func__(self.InvPage04))
- self.page5back=self.GetChild("page5backx")
- self.page5next=self.GetChild("page5nextx")
- self.page5back.SetEvent(ui.__mem_func__(self.InvPage05back))
- if self.titleName.GetText()=="Inventarseite 5":
- self.page5next.Down()
- self.page2back.Hide()
- self.page2next.Hide()
- self.page3back.Hide()
- self.page3next.Hide()
- self.page4back.Hide()
- self.page4next.Hide()
- self.page5back.Hide()
- self.page5next.Hide()
- self.firstpage=self.GetChild2("page_1")
- self.secondpage=self.GetChild2("page_2")
- self.thirdpage=self.GetChild2("page_3")
- self.fourthpage=self.GetChild2("page_4")
- self.fifthpage=self.GetChild2("page_5")
- self.secondpage.Hide()
- self.thirdpage.Hide()
- self.fourthpage.Hide()
- self.fifthpage.Hide()
Suche self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
und lösche alles bis self.inventoryTab[0].Down()
- Bei Kori ist es:
- self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
- 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))
- self.inventoryTab[4].SetEvent(lambda arg=4: self.SetInventoryPage(arg))
- self.inventoryTab[0].Down()
Suche wndItem = self.GetChild("ItemSlot")
und füge oben drüber GetObject = self.GetChild
Suche self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
und füge unten drunter self.titleName = GetObject("TitleName")
Öffne die 'inventorywindow.py' aus der 'locale_'
Suche Inventory_Tab_01 und ersetze alle Inventory_Tab_0x mit folgender Funktion
- {
- 'name':'Page1back',
- 'type':'radio_button',
- "x" : 10,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Back',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'Page1next',
- 'type':'radio_button',
- "x" : 10 + 114,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Next',
- 'tooltip_text':'Inventarseite 2',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'Page2back',
- 'type':'radio_button',
- "x" : 10,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Back',
- 'tooltip_text':'Inventarseite 1',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'Page2next',
- 'type':'radio_button',
- "x" : 10 + 114,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Next',
- 'tooltip_text':'Inventarseite 3',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page3backx',
- 'type':'radio_button',
- "x" : 10,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Back',
- 'tooltip_text':'Inventarseite 2',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page3nextx',
- 'type':'radio_button',
- "x" : 10 + 114,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Next',
- 'tooltip_text':'Inventarseite 4',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page4backx',
- 'type':'radio_button',
- "x" : 10,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Back',
- 'tooltip_text':'Inventarseite 3',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page4nextx',
- 'type':'radio_button',
- "x" : 10 + 114,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Next',
- 'tooltip_text':'Inventarseite 5',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page5backx',
- 'type':'radio_button',
- "x" : 10,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Back',
- 'tooltip_text':'Inventarseite 4',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page5nextx',
- 'type':'radio_button',
- "x" : 10 + 114,
- "y" : 33 + 191,
- 'width':61,
- 'height':21,
- 'text':'Next',
- 'default_image':'d:/ymir work/ui/public/small_button_01.sub',
- 'over_image':'d:/ymir work/ui/public/small_button_02.sub',
- 'down_image':'d:/ymir work/ui/public/small_button_03.sub',
- },
- {
- 'name':'page_slot',
- 'type':'image',
- "x" : 10 + 47,
- "y" : 33 + 191,
- 'image':'d:/ymir work/ui/public/Parameter_Slot_02.sub',
- 'children':
- (
- {
- 'name':'page_1',
- 'type':'text',
- "x" : 30,
- "y" : 2,
- 'text':'I',
- 'text_horizontal_align':'center'
- },
- {
- 'name':'page_2',
- 'type':'text',
- "x" : 30,
- "y" : 2,
- 'text':'II',
- 'text_horizontal_align':'center'
- },
- {
- 'name':'page_3',
- 'type':'text',
- "x" : 30,
- "y" : 2,
- 'text':'III',
- 'text_horizontal_align':'center'
- },
- {
- 'name':'page_4',
- 'type':'text',
- "x" : 30,
- "y" : 2,
- 'text':'IV',
- 'text_horizontal_align':'center'
- },
- {
- 'name':'page_5',
- 'type':'text',
- "x" : 30,
- "y" : 2,
- 'text':'V',
- 'text_horizontal_align':'center'
- },
- ),
- },
Dieser Schritt ist nicht notwendig - er dient lediglich zur Anpassung des 'ersten Öffnen' des Inventares. (damit die Seitenanzahl auf 1 steht - mir ist bewusst das es auch anders geht, es war nur die schnellste Lösung.)
Suche "name" : "TitleBar",
Und ersetze die komplette Funktion durch
Wer die Seitenanzahl im Titel des Inventares nicht haben möchte, macht jetzt bitte folgende Schritte
Suche self.titleName.SetText (sind genau 8x)
und schreibe ein schlichtes # davor, um es auszukommentieren.
Beispiel:
Hier noch 2 Screens - das ganze erklärt sich eigentlich von selbst. (Du hast die Möglichkeit zwischen den Seiten hin und her zu switchen.)
Bitte melden Sie sich an, um dieses Bild zu sehen.
Bitte melden Sie sich an, um dieses Bild zu sehen.
Das war's auch schon. Einen Tipp noch für die Newbies: Copy + Paste wird euch in den meisten Fällen nicht weit bringen. Lest euch durch was da steht, nicht das ihr unnötig etwas kaputt macht und wenn es zu kompliziert ist dann lasst es euch machen.
Have fun.
Savitar. (Gerne auch in Skype adden wenn Fragen da sind.)
Im Anhang befindet sich das ganze Tutorial nochmal zum Herunterladen.