seyonx66 4 Posted July 15, 2021 Share Posted July 15, 2021 (edited) Hi, i got this https://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/1846814-python-release-inventory-bonus-dialog.html. I added the ##BonusPageDialog into uiinventory.py and inventorywindow.py. But if i want to go to server, server drop after loading. EDIT: if i teleport to another city, it automatically drop. Down is syserr again. How to fix this, now i didnt know. Syserr: Quote 0716 00:18:09139 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x80000015, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0716 00:18:15365 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0716 00:19:55620 :: uiInventory.py(line:570) RefreshBonus ui.py(line:2704) GetChild InventoryWindow.RefreshBonus.BindObject - exceptions.KeyError:Schwert_vert_Value 0716 00:19:55621 :: ============================================================================================================ 0716 00:19:55621 :: Abort!!!! uiinventory.py: Quote import ui import player import mouseModule import net import app import snd import item import player import chat import grp import uiScriptLocale import uiRefine import uiAttachMetin import uiPickMoney import uiCommon import uiPrivateShopBuilder # ���λ��� ������ ItemMove ���� import localeInfo import constInfo import ime import wndMgr ITEM_MALL_BUTTON_ENABLE = TRUE ITEM_FLAG_APPLICABLE = 1 << 14 class CostumeWindow(ui.ScriptWindow): def __init__(self, wndInventory): import exception if not app.ENABLE_COSTUME_SYSTEM: exception.Abort("What do you do?") return if not wndInventory: exception.Abort("wndInventory parameter must be set to InventoryWindow") return ui.ScriptWindow.__init__(self) self.isLoaded = 0 self.wndInventory = wndInventory; self.__LoadWindow() def __del__(self): ui.ScriptWindow.__del__(self) def Show(self): self.__LoadWindow() self.RefreshCostumeSlot() ui.ScriptWindow.Show(self) def Close(self): self.Hide() def __LoadWindow(self): if self.isLoaded == 1: return self.isLoaded = 1 try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py") except: import exception exception.Abort("CostumeWindow.LoadWindow.LoadObject") try: wndEquip = self.GetChild("CostumeSlot") self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close)) except: import exception exception.Abort("CostumeWindow.LoadWindow.BindObject") ## Equipment wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem)) wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem)) wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot)) wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot)) wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot)) wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot)) self.wndEquip = wndEquip def RefreshCostumeSlot(self): getItemVNum=player.GetItemIndex for i in xrange(item.COSTUME_SLOT_COUNT): slotNumber = item.COSTUME_SLOT_START + i self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0) self.wndEquip.RefreshSlot() class BeltInventoryWindow(ui.ScriptWindow): def __init__(self, wndInventory): import exception if not app.ENABLE_NEW_EQUIPMENT_SYSTEM: exception.Abort("What do you do?") return if not wndInventory: exception.Abort("wndInventory parameter must be set to InventoryWindow") return ui.ScriptWindow.__init__(self) self.isLoaded = 0 self.wndInventory = wndInventory; self.wndBeltInventoryLayer = None self.wndBeltInventorySlot = None self.expandBtn = None self.minBtn = None self.__LoadWindow() def __del__(self): ui.ScriptWindow.__del__(self) def Show(self, openBeltSlot = FALSE): self.__LoadWindow() self.RefreshSlot() ui.ScriptWindow.Show(self) if openBeltSlot: self.OpenInventory() else: self.CloseInventory() def Close(self): self.Hide() def IsOpeningInventory(self): return self.wndBeltInventoryLayer.IsShow() def OpenInventory(self): self.wndBeltInventoryLayer.Show() self.expandBtn.Hide() if localeInfo.IsARABIC() == 0: self.AdjustPositionAndSize() def CloseInventory(self): self.wndBeltInventoryLayer.Hide() self.expandBtn.Show() if localeInfo.IsARABIC() == 0: self.AdjustPositionAndSize() ## ���� �κ��丮 ��ġ�� �������� BASE ��ġ�� ���, ����.. ���� �ϵ��ڵ��ϱ� ���� ������ ����� ����.. def GetBasePosition(self): x, y = self.wndInventory.GetGlobalPosition() return x - 148, y + 241 def AdjustPositionAndSize(self): bx, by = self.GetBasePosition() if self.IsOpeningInventory(): self.SetPosition(bx, by) self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight()) else: self.SetPosition(bx + 138, by); self.SetSize(10, self.GetHeight()) def __LoadWindow(self): if self.isLoaded == 1: return self.isLoaded = 1 try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py") except: import exception exception.Abort("CostumeWindow.LoadWindow.LoadObject") try: self.ORIGINAL_WIDTH = self.GetWidth() wndBeltInventorySlot = self.GetChild("BeltInventorySlot") self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer") self.expandBtn = self.GetChild("ExpandBtn") self.minBtn = self.GetChild("MinimizeBtn") self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory)) self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory)) if localeInfo.IsARABIC() : self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15) self.wndBeltInventoryLayer.SetPosition(self.wndBeltInventoryLayer.GetWidth() - 5, 0) self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15) for i in xrange(item.BELT_INVENTORY_SLOT_COUNT): slotNumber = item.BELT_INVENTORY_SLOT_START + i wndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\ "d:/ymir work/ui/game/quest/slot_button_01.sub",\ "d:/ymir work/ui/game/quest/slot_button_01.sub",\ "d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", FALSE, FALSE) except: import exception exception.Abort("CostumeWindow.LoadWindow.BindObject") ## Equipment wndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem)) wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem)) wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot)) wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot)) wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot)) wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot)) self.wndBeltInventorySlot = wndBeltInventorySlot def RefreshSlot(self): getItemVNum=player.GetItemIndex for i in xrange(item.BELT_INVENTORY_SLOT_COUNT): slotNumber = item.BELT_INVENTORY_SLOT_START + i self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber)) self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, TRUE) avail = "0" if player.IsAvailableBeltInventoryCell(slotNumber): self.wndBeltInventorySlot.EnableCoverButton(slotNumber) else: self.wndBeltInventorySlot.DisableCoverButton(slotNumber) self.wndBeltInventorySlot.RefreshSlot() class InventoryWindow(ui.ScriptWindow): USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET") questionDialog = None tooltipItem = None wndCostume = None wndBelt = None dlgPickMoney = None sellingSlotNumber = -1 isLoaded = 0 isOpenedCostumeWindowWhenClosingInventory = 0 # �κ��丮 ���� �� �ڽ����� �����־����� ����-_-; ���̹� ���� isOpenedBeltWindowWhenClosingInventory = 0 # �κ��丮 ���� �� ��Ʈ �κ��丮�� �����־����� ����-_-; ���̹� ���� def __init__(self): ui.ScriptWindow.__init__(self) self.isOpenedBeltWindowWhenClosingInventory = 0 # �κ��丮 ���� �� ��Ʈ �κ��丮�� �����־����� ����-_-; ���̹� ���� self.__LoadWindow() def __del__(self): ui.ScriptWindow.__del__(self) def Show(self): self.__LoadWindow() ui.ScriptWindow.Show(self) # �κ��丮�� ���� �� �ڽ����� �����־��ٸ� �κ��丮�� �� �� �ڽ����� ���� ������ ��. if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume: self.wndCostume.Show() # �κ��丮�� ���� �� ��Ʈ �κ��丮�� �����־��ٸ� ���� ������ ��. if self.wndBelt: self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory) def BindInterfaceClass(self, interface): self.interface = interface def __LoadWindow(self): if self.isLoaded == 1: return self.isLoaded = 1 try: pyScrLoader = ui.PythonScriptLoader() if ITEM_MALL_BUTTON_ENABLE: pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "InventoryWindow.py") else: pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py") except: import exception exception.Abort("InventoryWindow.LoadWindow.LoadObject") try: wndItem = self.GetChild("ItemSlot") wndEquip = self.GetChild("EquipmentSlot") self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close)) self.wndMoney = self.GetChild("Money") self.wndMoneySlot = self.GetChild("Money_Slot") self.mallButton = self.GetChild2("MallButton") ##BonusPageDialog self.GetChild("Schwert_vert_Value").SetText(str(player.GetStatus(69))) self.GetChild("Zweih�nder_vert_Value").SetText(str(player.GetStatus(70))) self.GetChild("Dolche_vert_Value").SetText(str(player.GetStatus(71))) self.GetChild("Bogen_vert_Value").SetText(str(player.GetStatus(74))) self.GetChild("Glocke_vert_Value").SetText(str(player.GetStatus(72))) self.GetChild("F�cher_vert_Value").SetText(str(player.GetStatus(73))) self.GetChild("Magie_vert_Value").SetText(str(player.GetStatus(77))) self.GetChild("Gift_vert_Value").SetText(str(player.GetStatus(81))) self.GetChild("Krieger_vert_Value").SetText(str(player.GetStatus(59))) self.GetChild("Ninja_vert_Value").SetText(str(player.GetStatus(60))) self.GetChild("Sura_vert_Value").SetText(str(player.GetStatus(61))) self.GetChild("Schamane_vert_Value").SetText(str(player.GetStatus(62))) self.GetChild("Krit_Value").SetText(str(player.GetStatus(40))) self.GetChild("DurchBohrenden_Value").SetText(str(player.GetStatus(41))) self.GetChild("DSS_Value").SetText(str(player.GetStatus(122))) self.GetChild("FKS_Value").SetText(str(player.GetStatus(121))) self.GetChild("Halbmenschen_Value").SetText(str(player.GetStatus(43))) self.GetChild("Untote_Value").SetText(str(player.GetStatus(47))) self.GetChild("Teufel_Value").SetText(str(player.GetStatus(48))) self.GetChild("Krieger_str_Value").SetText(str(player.GetStatus(54))) self.GetChild("Ninja_str_Value").SetText(str(player.GetStatus(55))) self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56))) self.GetChild("Schamane_str_Value").SetText(str(player.GetStatus(57))) ##BonusPageDialog self.DSSButton = self.GetChild2("DSSButton") self.costumeButton = self.GetChild2("CostumeButton") 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.equipmentTab = [] self.equipmentTab.append(self.GetChild("Equipment_Tab_01")) self.equipmentTab.append(self.GetChild("Equipment_Tab_02")) if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM: self.costumeButton.Hide() self.costumeButton.Destroy() self.costumeButton = 0 # Belt Inventory Window self.wndBelt = None if app.ENABLE_NEW_EQUIPMENT_SYSTEM: self.wndBelt = BeltInventoryWindow(self) except: import exception exception.Abort("InventoryWindow.LoadWindow.BindObject") ## Item wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot)) wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot)) wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem)) wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem)) ## Equipment wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot)) wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot)) wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem)) wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem)) ## PickMoneyDialog dlgPickMoney = uiPickMoney.PickMoneyDialog() dlgPickMoney.LoadDialog() dlgPickMoney.Hide() ## RefineDialog self.refineDialog = uiRefine.RefineDialog() self.refineDialog.Hide() ## AttachMetinDialog self.attachMetinDialog = uiAttachMetin.AttachMetinDialog() self.attachMetinDialog.Hide() ## MoneySlot self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog)) 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[0].Down() self.inventoryPageIndex = 0 self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg)) self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg)) self.equipmentTab[0].Down() self.equipmentTab[0].Hide() self.equipmentTab[1].Hide() self.wndItem = wndItem self.wndEquip = wndEquip self.dlgPickMoney = dlgPickMoney # MallButton if self.mallButton: self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton)) if self.DSSButton: #self.DSSButton.Hide() self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton)) # Costume Button if self.costumeButton: self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton)) self.wndCostume = None ##### ## Refresh self.SetInventoryPage(0) self.SetEquipmentPage(0) self.RefreshItemSlot() self.RefreshStatus() def Destroy(self): self.ClearDictionary() self.dlgPickMoney.Destroy() self.dlgPickMoney = 0 self.refineDialog.Destroy() self.refineDialog = 0 self.attachMetinDialog.Destroy() self.attachMetinDialog = 0 self.tooltipItem = None self.wndItem = 0 self.wndEquip = 0 self.dlgPickMoney = 0 self.wndMoney = 0 self.wndMoneySlot = 0 self.questionDialog = None self.mallButton = None self.DSSButton = None self.interface = None if self.wndCostume: self.wndCostume.Destroy() self.wndCostume = 0 if self.wndBelt: self.wndBelt.Destroy() self.wndBelt = None self.inventoryTab = [] self.equipmentTab = [] def Hide(self): if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS(): self.OnCloseQuestionDialog() return if None != self.tooltipItem: self.tooltipItem.HideToolTip() if self.wndCostume: self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # �κ��丮 â�� ���� �� �ڽ����� ���� �־��°�? self.wndCostume.Close() if self.wndBelt: self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory() # �κ��丮 â�� ���� �� ��Ʈ �κ��丮�� ���� �־��°�? print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventory self.wndBelt.Close() if self.dlgPickMoney: self.dlgPickMoney.Close() wndMgr.Hide(self.hWnd) def Close(self): self.Hide() # def SetInventoryPage(self, page): # self.inventoryTab[self.inventoryPageIndex].SetUp() # self.inventoryPageIndex = page # self.RefreshBagSlotWindow() def SetInventoryPage(self, page): self.inventoryTab[self.inventoryPageIndex].SetUp() self.inventoryPageIndex = page self.inventoryTab[self.inventoryPageIndex].Down() self.RefreshBagSlotWindow() def SetEquipmentPage(self, page): self.equipmentPageIndex = page self.equipmentTab[1-page].SetUp() self.RefreshEquipSlotWindow() def ClickMallButton(self): print "click_mall_button" net.SendChatPacket("/click_mall") # DSSButton def ClickDSSButton(self): print "click_dss_button" self.interface.ToggleDragonSoulWindow() def ClickCostumeButton(self): print "Click Costume Button" if self.wndCostume: if self.wndCostume.IsShow(): self.wndCostume.Hide() else: self.wndCostume.Show() else: self.wndCostume = CostumeWindow(self) self.wndCostume.Show() def OpenPickMoneyDialog(self): if mouseModule.mouseController.isAttached(): attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType(): if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex(): net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount()) snd.PlaySound("sound/ui/money.wav") mouseModule.mouseController.DeattachObject() else: curMoney = player.GetElk() if curMoney <= 0: return self.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE) self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney)) self.dlgPickMoney.Open(curMoney) self.dlgPickMoney.SetMax(7) # �κ��丮 990000 ���� ���� ���� def OnPickMoney(self, money): mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money) def OnPickItem(self, count): itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex selectedItemVNum = player.GetItemIndex(itemSlotIndex) mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count) def __InventoryLocalSlotPosToGlobalSlotPos(self, local): if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)): return local return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local ##BonusPageDialog def __LoadRefreshBonus(self): self.RefreshBonus() def RefreshBonus(self): try: self.GetChild("Schwert_vert_Value").SetText(str(player.GetStatus(69))) self.GetChild("Zweih�nder_vert_Value").SetText(str(player.GetStatus(70))) self.GetChild("Dolche_vert_Value").SetText(str(player.GetStatus(71))) self.GetChild("Bogen_vert_Value").SetText(str(player.GetStatus(74))) self.GetChild("Glocke_vert_Value").SetText(str(player.GetStatus(72))) self.GetChild("F�cher_vert_Value").SetText(str(player.GetStatus(73))) self.GetChild("Magie_vert_Value").SetText(str(player.GetStatus(77))) self.GetChild("Gift_vert_Value").SetText(str(player.GetStatus(81))) self.GetChild("Krieger_vert_Value").SetText(str(player.GetStatus(59))) self.GetChild("Ninja_vert_Value").SetText(str(player.GetStatus(60))) self.GetChild("Sura_vert_Value").SetText(str(player.GetStatus(61))) self.GetChild("Schamane_vert_Value").SetText(str(player.GetStatus(62))) self.GetChild("Krit_Value").SetText(str(player.GetStatus(40))) self.GetChild("DurchBohrenden_Value").SetText(str(player.GetStatus(41))) self.GetChild("DSS_Value").SetText(str(player.GetStatus(122))) self.GetChild("FKS_Value").SetText(str(player.GetStatus(121))) self.GetChild("Halbmenschen_Value").SetText(str(player.GetStatus(43))) self.GetChild("Untote_Value").SetText(str(player.GetStatus(47))) self.GetChild("Teufel_Value").SetText(str(player.GetStatus(48))) self.GetChild("Krieger_str_Value").SetText(str(player.GetStatus(54))) self.GetChild("Ninja_str_Value").SetText(str(player.GetStatus(55))) self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56))) self.GetChild("Schamane_str_Value").SetText(str(player.GetStatus(57))) except: import exception exception.Abort("InventoryWindow.RefreshBonus.BindObject") ##BonusPageDialog def RefreshBagSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndItem.SetItemSlot for i in xrange(player.INVENTORY_PAGE_SIZE): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) itemCount = getItemCount(slotNumber) # itemCount == 0�̸� ������ ����. if 0 == itemCount: self.wndItem.ClearSlot(i) continue elif 1 == itemCount: itemCount = 0 itemVnum = getItemVNum(slotNumber) setItemVNum(i, itemVnum, itemCount) ## �ڵ����� (HP: #72723 ~ #72726, SP: #72727 ~ #72730) Ư��ó�� - �������ε��� ���Կ� Ȱ��ȭ/��Ȱ��ȭ ǥ�ø� ���� �۾��� - [hyo] if constInfo.IS_AUTO_POTION(itemVnum): # metinSocket - [0] : Ȱ��ȭ ����, [1] : ����� ��, [2] : �ִ� �뷮 metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if slotNumber >= player.INVENTORY_PAGE_SIZE: slotNumber -= player.INVENTORY_PAGE_SIZE isActivated = 0 != metinSocket[0] if isActivated: self.wndItem.ActivateSlot(slotNumber) potionType = 0; if constInfo.IS_AUTO_POTION_HP(itemVnum): potionType = player.AUTO_POTION_TYPE_HP elif constInfo.IS_AUTO_POTION_SP(itemVnum): potionType = player.AUTO_POTION_TYPE_SP usedAmount = int(metinSocket[1]) totalAmount = int(metinSocket[2]) player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i)) else: self.wndItem.DeactivateSlot(slotNumber) self.wndItem.RefreshSlot() if self.wndBelt: self.wndBelt.RefreshSlot() def RefreshEquipSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndEquip.SetItemSlot for i in xrange(player.EQUIPMENT_PAGE_COUNT): slotNumber = player.EQUIPMENT_SLOT_START + i itemCount = getItemCount(slotNumber) if itemCount <= 1: itemCount = 0 setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount) if app.ENABLE_NEW_EQUIPMENT_SYSTEM: for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT): slotNumber = player.NEW_EQUIPMENT_SLOT_START + i itemCount = getItemCount(slotNumber) if itemCount <= 1: itemCount = 0 setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount) print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber) self.wndEquip.RefreshSlot() if self.wndCostume: self.wndCostume.RefreshCostumeSlot() def RefreshItemSlot(self): self.RefreshBagSlotWindow() self.RefreshEquipSlotWindow() def RefreshStatus(self): money = player.GetElk() self.wndMoney.SetText(localeInfo.NumberToMoneyString(money)) def SetItemToolTip(self, tooltipItem): self.tooltipItem = tooltipItem def SellItem(self): if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber): if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber): ## ��ȥ���� �ȸ��� �ϴ� ��� �߰��ϸ鼭 ���� type �߰� net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY) snd.PlaySound("sound/ui/money.wav") self.OnCloseQuestionDialog() def OnDetachMetinFromItem(self): if None == self.questionDialog: return #net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos) self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos) self.OnCloseQuestionDialog() def OnCloseQuestionDialog(self): if not self.questionDialog: return self.questionDialog.Close() self.questionDialog = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0) ## Slot Event def SelectEmptySlot(self, selectedSlotPos): if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1: return selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos) if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemCount = mouseModule.mouseController.GetAttachedItemCount() attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex() if player.SLOT_TYPE_INVENTORY == attachedSlotType: itemCount = player.GetItemCount(attachedSlotPos) attachedCount = mouseModule.mouseController.GetAttachedItemCount() self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount) if item.IsRefineScroll(attachedItemIndex): self.wndItem.SetUseMode(FALSE) elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType: mouseModule.mouseController.RunCallBack("INVENTORY") elif player.SLOT_TYPE_SHOP == attachedSlotType: net.SendShopBuyPacket(attachedSlotPos) elif player.SLOT_TYPE_SAFEBOX == attachedSlotType: if player.ITEM_MONEY == attachedItemIndex: net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount()) snd.PlaySound("sound/ui/money.wav") else: net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos) elif player.SLOT_TYPE_MALL == attachedSlotType: net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos) mouseModule.mouseController.DeattachObject() def SelectItemSlot(self, itemSlotIndex): if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1: return itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex) if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex() if player.SLOT_TYPE_INVENTORY == attachedSlotType: self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex) mouseModule.mouseController.DeattachObject() else: curCursorNum = app.GetCursor() if app.SELL == curCursorNum: self.__SellItem(itemSlotIndex) elif app.BUY == curCursorNum: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO) elif app.IsPressed(app.DIK_LALT): link = player.GetItemLink(itemSlotIndex) ime.PasteString(link) elif app.IsPressed(app.DIK_LSHIFT): itemCount = player.GetItemCount(itemSlotIndex) if itemCount > 1: self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE) self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem)) self.dlgPickMoney.Open(itemCount) self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex #else: #selectedItemVNum = player.GetItemIndex(itemSlotIndex) #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum) elif app.IsPressed(app.DIK_LCONTROL): itemIndex = player.GetItemIndex(itemSlotIndex) if TRUE == item.CanAddToQuickSlotItem(itemIndex): player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex) else: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM) else: selectedItemVNum = player.GetItemIndex(itemSlotIndex) itemCount = player.GetItemCount(itemSlotIndex) mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount) if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex): self.wndItem.SetUseMode(TRUE) else: self.wndItem.SetUseMode(FALSE) snd.PlaySound("sound/ui/pick.wav") def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos): if srcItemSlotPos == dstItemSlotPos: return elif item.IsRefineScroll(srcItemVID): self.RefineItem(srcItemSlotPos, dstItemSlotPos) self.wndItem.SetUseMode(FALSE) elif item.IsMetin(srcItemVID): self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos) elif item.IsDetachScroll(srcItemVID): self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos) elif item.IsKey(srcItemVID): self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos) elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos) elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE: self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos) else: #snd.PlaySound("sound/ui/drop.wav") ## �̵���Ų ���� ���� ������ ��� �������� ����ؼ� ���� ��Ų�� - [levites] if player.IsEquipmentSlot(dstItemSlotPos): ## ��� �ִ� �������� ����϶��� if item.IsEquipmentVID(srcItemVID): self.__UseItem(srcItemSlotPos) else: self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0) #net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0) def __SellItem(self, itemSlotPos): if not player.IsEquipmentSlot(itemSlotPos): self.sellingSlotNumber = itemSlotPos itemIndex = player.GetItemIndex(itemSlotPos) itemCount = player.GetItemCount(itemSlotPos) self.sellingSlotitemIndex = itemIndex self.sellingSlotitemCount = itemCount item.SelectItem(itemIndex) ## ��Ƽ �÷��� �˻� ������ �߰� ## 20140220 if item.IsAntiFlag(item.ANTIFLAG_SELL): popup = uiCommon.PopupDialog() popup.SetText(localeInfo.SHOP_CANNOT_SELL_ITEM) popup.SetAcceptEvent(self.__OnClosePopupDialog) popup.Open() self.popup = popup return itemPrice = item.GetISellItemPrice() if item.Is1GoldItem(): itemPrice = itemCount / itemPrice / 5 else: itemPrice = itemPrice * itemCount / 5 item.GetItemName(itemIndex) itemName = item.GetItemName() self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice)) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() self.questionDialog.count = itemCount constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1) def __OnClosePopupDialog(self): self.pop = None def RefineItem(self, scrollSlotPos, targetSlotPos): scrollIndex = player.GetItemIndex(scrollSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos): return ########################################################### self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos) #net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos) return ########################################################### ########################################################### #net.SendRequestRefineInfoPacket(targetSlotPos) #return ########################################################### result = player.CanRefine(scrollIndex, targetSlotPos) if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET) elif player.REFINE_NEED_MORE_GOOD_SCROLL == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL) elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM) elif player.REFINE_NOT_NEXT_GRADE_ITEM == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM) elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM) if player.REFINE_OK != result: return self.refineDialog.Open(scrollSlotPos, targetSlotPos) def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos): scrollIndex = player.GetItemIndex(scrollSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) if not player.CanDetach(scrollIndex, targetSlotPos): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM) return self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() self.questionDialog.sourcePos = scrollSlotPos self.questionDialog.targetPos = targetSlotPos def AttachMetinToItem(self, metinSlotPos, targetSlotPos): metinIndex = player.GetItemIndex(metinSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) item.SelectItem(metinIndex) itemName = item.GetItemName() result = player.CanAttachMetin(metinIndex, targetSlotPos) if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName)) if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName)) elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName)) elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM) if player.ATTACH_METIN_OK != result: return self.attachMetinDialog.Open(metinSlotPos, targetSlotPos) def OverOutItem(self): self.wndItem.SetUsableItem(FALSE) if None != self.tooltipItem: self.tooltipItem.HideToolTip() def OverInItem(self, overSlotPos): overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos) self.wndItem.SetUsableItem(FALSE) if mouseModule.mouseController.isAttached(): attachedItemType = mouseModule.mouseController.GetAttachedType() if player.SLOT_TYPE_INVENTORY == attachedItemType: attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex() if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos): self.wndItem.SetUsableItem(TRUE) self.ShowToolTip(overSlotPos) return self.ShowToolTip(overSlotPos) def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos): "�ٸ� �����ۿ� ����� �� �ִ� �������ΰ�?" if item.IsRefineScroll(srcItemVNum): return TRUE elif item.IsMetin(srcItemVNum): return TRUE elif item.IsDetachScroll(srcItemVNum): return TRUE elif item.IsKey(srcItemVNum): return TRUE elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: return TRUE else: if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE: return TRUE return FALSE def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos): "��� �����ۿ� ����� �� �ִ°�?" if srcSlotPos == dstSlotPos: return FALSE if item.IsRefineScroll(srcItemVNum): if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos): return TRUE elif item.IsMetin(srcItemVNum): if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos): return TRUE elif item.IsDetachScroll(srcItemVNum): if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos): return TRUE elif item.IsKey(srcItemVNum): if player.CanUnlock(srcItemVNum, dstSlotPos): return TRUE elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: return TRUE else: useType=item.GetUseType(srcItemVNum) if "USE_CLEAN_SOCKET" == useType: if self.__CanCleanBrokenMetinStone(dstSlotPos): return TRUE elif "USE_CHANGE_ATTRIBUTE" == useType: if self.__CanChangeItemAttrList(dstSlotPos): return TRUE elif "USE_ADD_ATTRIBUTE" == useType: if self.__CanAddItemAttr(dstSlotPos): return TRUE elif "USE_ADD_ATTRIBUTE2" == useType: if self.__CanAddItemAttr(dstSlotPos): return TRUE elif "USE_ADD_ACCESSORY_SOCKET" == useType: if self.__CanAddAccessorySocket(dstSlotPos): return TRUE elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType: if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum): return TRUE; elif "USE_PUT_INTO_BELT_SOCKET" == useType: dstItemVNum = player.GetItemIndex(dstSlotPos) print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum item.SelectItem(dstItemVNum) if item.ITEM_TYPE_BELT == item.GetItemType(): return TRUE return FALSE def __CanCleanBrokenMetinStone(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if item.ITEM_TYPE_WEAPON != item.GetItemType(): return FALSE for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE: return TRUE return FALSE def __CanChangeItemAttrList(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR): return FALSE for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemAttribute(dstSlotPos, i) != 0: return TRUE return FALSE def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if item.GetItemType() != item.ITEM_TYPE_ARMOR: return FALSE if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): return FALSE curCount = player.GetItemMetinSocket(dstSlotPos, 0) maxCount = player.GetItemMetinSocket(dstSlotPos, 1) if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()): return FALSE if curCount>=maxCount: return FALSE return TRUE def __CanAddAccessorySocket(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if item.GetItemType() != item.ITEM_TYPE_ARMOR: return FALSE if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): return FALSE curCount = player.GetItemMetinSocket(dstSlotPos, 0) maxCount = player.GetItemMetinSocket(dstSlotPos, 1) ACCESSORY_SOCKET_MAX_SIZE = 3 if maxCount >= ACCESSORY_SOCKET_MAX_SIZE: return FALSE return TRUE def __CanAddItemAttr(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR): return FALSE attrCount = 0 for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemAttribute(dstSlotPos, i) != 0: attrCount += 1 if attrCount<4: return TRUE return FALSE def ShowToolTip(self, slotIndex): if None != self.tooltipItem: self.tooltipItem.SetInventoryItem(slotIndex) def OnTop(self): if None != self.tooltipItem: self.tooltipItem.SetTop() def OnPressEscapeKey(self): self.Close() return TRUE def UseItemSlot(self, slotIndex): curCursorNum = app.GetCursor() if app.SELL == curCursorNum: return if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS(): return slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex) if app.ENABLE_DRAGON_SOUL_SYSTEM: if self.wndDragonSoulRefine.IsShow(): self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1) return self.__UseItem(slotIndex) mouseModule.mouseController.DeattachObject() self.OverOutItem() def __UseItem(self, slotIndex): ItemVNum = player.GetItemIndex(slotIndex) item.SelectItem(ItemVNum) if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE): self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel)) self.questionDialog.Open() self.questionDialog.slotIndex = slotIndex constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1) else: self.__SendUseItemPacket(slotIndex) #net.SendItemUsePacket(slotIndex) def __UseItemQuestionDialog_OnCancel(self): self.OnCloseQuestionDialog() def __UseItemQuestionDialog_OnAccept(self): self.__SendUseItemPacket(self.questionDialog.slotIndex) self.OnCloseQuestionDialog() def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos): # ���λ��� ���� �ִ� ���� ������ ��� ���� if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos) def __SendUseItemPacket(self, slotPos): # ���λ��� ���� �ִ� ���� ������ ��� ���� if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemUsePacket(slotPos) def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount): # ���λ��� ���� �ִ� ���� ������ ��� ���� if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount) def SetDragonSoulRefineWindow(self, wndDragonSoulRefine): if app.ENABLE_DRAGON_SOUL_SYSTEM: self.wndDragonSoulRefine = wndDragonSoulRefine def OnMoveWindow(self, x, y): # print "Inventory Global Pos : ", self.GetGlobalPosition() if self.wndBelt: # print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition() self.wndBelt.AdjustPositionAndSize() ##BonusPageDialog def OnUpdate(self): if self.isLoaded == 1: self.__LoadRefreshBonus() ##BonusPageDialog inventorywindow.py: Quote import uiScriptLocale import item EQUIPMENT_START_INDEX = 180 window = { "name" : "InventoryWindow", ## 600 - (width + ????? ?? ??? 24 px) "x" : SCREEN_WIDTH - 176, "y" : SCREEN_HEIGHT - 55 - 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", }, ), }, ), }, ##BonusPageDialog { "name" : "Bonus_Page", "type" : "window", "x" : 166, "y" : 34, "width" : 124, "height" : 565-24, "children" : ( { "name" : "BonusBase1", "type" : "horizontalbar", "x" : 4, "y" : 0, "width" : 120, "children" : ( { "name" : "bonus_text_1", "type" : "text", "x" : 0, "y" : 0, "all_align" : "center", "text" : "Defensive", }, ), }, { "name" : "Schwert_verteidigung", "type" : "text", "x" : 5, "y" : 1*18, "text" : "Schwert:" }, { "name" : "Schwert_vert", "type" : "window", "x" : 72, "y" : 1*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Schwert_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Schwert_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Zweih�nder_verteidigung", "type" : "text", "x" : 5, "y" : 2*18, "text" : "Zweih�nder:" }, { "name" : "Zweih�nder_vert", "type" : "window", "x" : 72, "y" : 2*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Zweih�nder_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Zweih�nder_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Dolche_verteidigung", "type" : "text", "x" : 5, "y" : 3*18, "text" : "Dolche:" }, { "name" : "Dolche_vert", "type" : "window", "x" : 72, "y" : 3*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Dolche_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Dolche_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Bogen_verteidigung", "type" : "text", "x" : 5, "y" : 4*18, "text" : "Bogen:" }, { "name" : "Bogen_vert", "type" : "window", "x" : 72, "y" : 4*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Bogen_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Bogen_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Glocke_verteidigung", "type" : "text", "x" : 5, "y" : 5*18, "text" : "Glocke:" }, { "name" : "Glocke_vert", "type" : "window", "x" : 72, "y" : 5*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Glocke_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Glocke_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "F�cher_verteidigung", "type" : "text", "x" : 5, "y" : 6*18, "text" : "F�cher:" }, { "name" : "F�cher_vert", "type" : "window", "x" : 72, "y" : 6*18, "width" : 53, "height" : 19, "children" : ( { "name" : "F�cher_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "F�cher_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Magie_verteidigung", "type" : "text", "x" : 5, "y" : 7*18, "text" : "Magie:" }, { "name" : "Magie_vert", "type" : "window", "x" : 72, "y" : 7*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Magie_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Magie_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Gift_verteidigung", "type" : "text", "x" : 5, "y" : 8*18, "text" : "Pioson:" }, { "name" : "Gift_vert", "type" : "window", "x" : 72, "y" : 8*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Gift_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Gift_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Krieger_verteidigung", "type" : "text", "x" : 5, "y" : 9*18, "text" : "Krieger:" }, { "name" : "Krieger_vert", "type" : "window", "x" : 72, "y" : 9*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Krieger_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Krieger_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Ninja_verteidigung", "type" : "text", "x" : 5, "y" : 10*18, "text" : "Ninja:" }, { "name" : "Ninja_vert", "type" : "window", "x" : 72, "y" : 10*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Ninja_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Ninja_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Sura_verteidigung", "type" : "text", "x" : 5, "y" : 11*18, "text" : "Sura:" }, { "name" : "Sura_vert", "type" : "window", "x" : 72, "y" : 11*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Sura_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Sura_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Schamane_verteidigung", "type" : "text", "x" : 5, "y" : 12*18, "text" : "Schamane:" }, { "name" : "Schamane_vert", "type" : "window", "x" : 72, "y" : 12*18, "width" : 53, "height" : 19, "children" : ( { "name" : "Schamane_vert_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Schamane_vert_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "BonusBase2", "type" : "horizontalbar", "x" : 4, "y" : 235, "width" : 120, "children" : ( { "name" : "bonus_text_1", "type" : "text", "x" : 0, "y" : 0, "all_align" : "center", "text" : "Attacker", }, ), }, { "name" : "Critical_treffer", "type" : "text", "x" : 5, "y" : 235+(1*18), "text" : "Kritical:" }, { "name" : "Krit", "type" : "window", "x" : 72, "y" : 235+(1*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Krit_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Krit_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "DurchBohrenden_treffer", "type" : "text", "x" : 5, "y" : 235+(2*18), "text" : "DB:" }, { "name" : "DurchBohrenden", "type" : "window", "x" : 72, "y" : 235+(2*18), "width" : 53, "height" : 19, "children" : ( { "name" : "DurchBohrenden_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "DurchBohrenden_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "DSS_", "type" : "text", "x" : 5, "y" : 235+(3*18), "text" : "DSS:" }, { "name" : "DSS", "type" : "window", "x" : 72, "y" : 235+(3*18), "width" : 53, "height" : 19, "children" : ( { "name" : "DSS_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "DSS_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "FKS_", "type" : "text", "x" : 5, "y" : 235+(4*18), "text" : "FKS:" }, { "name" : "FKS", "type" : "window", "x" : 72, "y" : 235+(4*18), "width" : 53, "height" : 19, "children" : ( { "name" : "FKS_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "FKS_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Halbmenschen_gegen", "type" : "text", "x" : 5, "y" : 235+(5*18), "text" : "Halbmenschen:" }, { "name" : "Halbmenschen", "type" : "window", "x" : 72, "y" : 235+(5*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Halbmenschen_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Halbmenschen_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Untote_gegen", "type" : "text", "x" : 5, "y" : 235+(6*18), "text" : "Untote:" }, { "name" : "Untote", "type" : "window", "x" : 72, "y" : 235+(6*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Untote_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Untote_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Teufel_gegen", "type" : "text", "x" : 5, "y" : 235+(7*18), "text" : "Devil:" }, { "name" : "Teufel", "type" : "window", "x" : 72, "y" : 235+(7*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Teufel_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Teufel_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Krieger_gegen", "type" : "text", "x" : 5, "y" : 235+(8*18), "text" : "Krieger:" }, { "name" : "Krieger_str", "type" : "window", "x" : 72, "y" : 235+(8*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Krieger_str_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Krieger_str_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Ninja_gegen", "type" : "text", "x" : 5, "y" : 235+(9*18), "text" : "Ninja:" }, { "name" : "Ninja_str", "type" : "window", "x" : 72, "y" : 235+(9*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Ninja_str_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Ninja_str_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Sura_gegen", "type" : "text", "x" : 5, "y" : 235+(10*18), "text" : "Sura:" }, { "name" : "Ninja_str", "type" : "window", "x" : 72, "y" : 235+(10*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Sura_str_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Sura_str_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "Schamane_gegen", "type" : "text", "x" : 5, "y" : 235+(11*18), "text" : "Schamane:" }, { "name" : "Schamane_str", "type" : "window", "x" : 72, "y" : 235+(11*18), "width" : 53, "height" : 19, "children" : ( { "name" : "Schamane_str_Slot", "type" : "image", "x" : 0, "y" : 0, "image" : MIDDLE_VALUE_FILE }, { "name" : "Schamane_str_Value", "type" : "text", "x" : 26, "y" : 3, "text" : "999", "r" : 1.0, "g" : 1.0, "b" : 1.0, "a" : 1.0, "text_horizontal_align":"center" }, ), }, { "name" : "CopyRight", "type" : "horizontalbar", "x" : 4, "y" : 470, "width" : 120, "children" : ( { "name" : "(C)", "type" : "text", "x" : 0, "y" : 0, "all_align" : "center", "text" : "� P3NG3R", "r" : 1.0, "g" : 0.0, "b" : 0.0, "a" : 1.0, }, ), }, ), }, ##InventoryTabs { "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", }, ), }, ), }, ), } Thanks for every advice, which i got from you. oh, so nothing, i got it. Edited July 15, 2021 by seyonx66 Link to comment Share on other sites More sharing options...
Contributor TMP4 10992 Posted July 15, 2021 Contributor Share Posted July 15, 2021 Link to comment Share on other sites More sharing options...
seyonx66 4 Posted July 15, 2021 Author Share Posted July 15, 2021 6 minutes ago, TMP4 said: yeah, i got it, i just didnt saw it, but now it is ready. But i have question about diacritic. Im from czechia, and i have some shits in the name and not diacritics. Do u know how can i fix it? Link to comment Share on other sites More sharing options...
Contributor TMP4 10992 Posted July 15, 2021 Contributor Share Posted July 15, 2021 Try it with the correct encoding on the file. I'm hungarian and I usually use Ansi encoding because of the Áúűóő... You can use Notepad++ to change encoding. Link to comment Share on other sites More sharing options...
seyonx66 4 Posted July 21, 2021 Author Share Posted July 21, 2021 #up Link to comment Share on other sites More sharing options...
Contributor TMP4 10992 Posted July 21, 2021 Contributor Share Posted July 21, 2021 15 minutes ago, seyonx66 said: #up Change both uiinventory.py and inventorywindow.py to the correct character encoding, or upload them and i'll do it. Link to comment Share on other sites More sharing options...
seyonx66 4 Posted July 21, 2021 Author Share Posted July 21, 2021 24 minutes ago, TMP4 said: Change both uiinventory.py and inventorywindow.py to the correct character encoding, or upload them and i'll do it. This is the hidden content, please Sign In or Sign Up here it is 1 1 Link to comment Share on other sites More sharing options...
Contributor TMP4 10992 Posted July 21, 2021 Contributor Share Posted July 21, 2021 1 hour ago, seyonx66 said: This is the hidden content, please Sign In or Sign Up here it is This is the hidden content, please Sign In or Sign Up Tell me if it works. 2 Link to comment Share on other sites More sharing options...
seyonx66 4 Posted July 21, 2021 Author Share Posted July 21, 2021 15 minutes ago, TMP4 said: This is the hidden content, please Sign In or Sign Up Tell me if it works. Quote uiInventory.py(line:566) RefreshBonus ui.py(line:2704) GetChild InventoryWindow.RefreshBonus.BindObject - exceptions.KeyError:Sword_def_Value 0721 19:04:47445 :: ============================================================================================================ 0721 19:04:47445 :: Abort!!!! Here is syserr. Still not working. Link to comment Share on other sites More sharing options...
Contributor TMP4 10992 Posted July 21, 2021 Contributor Share Posted July 21, 2021 Didn't you say your problem was czech diacritic? Or did it worked before? Link to comment Share on other sites More sharing options...
seyonx66 4 Posted July 21, 2021 Author Share Posted July 21, 2021 1 minute ago, TMP4 said: Didn't you say your problem was czech diacritic? Or did it worked before? Diacritics u fixed right now, but now i gotta this error Maybe the error was always, but now i need to teleport, and i got this error Link to comment Share on other sites More sharing options...
Contributor TMP4 10992 Posted July 21, 2021 Contributor Share Posted July 21, 2021 3 minutes ago, seyonx66 said: Diacritics u fixed right now, but now i gotta this error Maybe the error was always, but now i need to teleport, and i got this error Look for: self.RefreshStatus() and add below: self.RefreshBonus() Link to comment Share on other sites More sharing options...
seyonx66 4 Posted July 21, 2021 Author Share Posted July 21, 2021 2 minutes ago, TMP4 said: Look for: self.RefreshStatus() and add below: self.RefreshBonus() i found it in a uiinventory.py, below it writed it, and still same error. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now