Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import uimg
- import player
- import mouseModule
- import net
- import app
- import snd
- import item
- import player
- import chat
- import grp
- import uiScriptLocaleMG
- import uiRefine
- import uiAttachMetin
- import uiPickMoney
- import uiCommon
- import uiPrivateShopBuilder # 개인상점 열동안 ItemMove 방지
- import localemg
- import uiOfflineShopBuilder
- import uiOfflineShop
- import constInfo
- import ime
- import wndMgr
- import shop
- import event
- ITEM_MALL_BUTTON_ENABLE = True
- ITEM_FLAG_APPLICABLE = 1 << 14
- class CostumeWindow(uimg.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
- uimg.ScriptWindow.__init__(self)
- self.isLoaded = 0
- self.wndInventory = wndInventory;
- self.__LoadWindow()
- def __del__(self):
- uimg.ScriptWindow.__del__(self)
- def Show(self):
- self.__LoadWindow()
- self.RefreshCostumeSlot()
- uimg.ScriptWindow.Show(self)
- def Close(self):
- self.Hide()
- def __LoadWindow(self):
- if self.isLoaded == 1:
- return
- self.isLoaded = 1
- try:
- pyScrLoader = uimg.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py")
- except:
- import exception
- exception.Abort("CostumeWindow.LoadWindow.LoadObject")
- try:
- wndEquip = self.GetChild("CostumeSlot")
- self.GetChild("TitleBar").SetCloseEvent(uimg.__mem_func__(self.Close))
- except:
- import exception
- exception.Abort("CostumeWindow.LoadWindow.BindObject")
- ## Equipment
- wndEquip.SetOverInItemEvent(uimg.__mem_func__(self.wndInventory.OverInItem))
- wndEquip.SetOverOutItemEvent(uimg.__mem_func__(self.wndInventory.OverOutItem))
- wndEquip.SetUnselectItemSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))
- wndEquip.SetUseSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))
- wndEquip.SetSelectEmptySlotEvent(uimg.__mem_func__(self.wndInventory.SelectEmptySlot))
- wndEquip.SetSelectItemSlotEvent(uimg.__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(uimg.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
- uimg.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):
- uimg.ScriptWindow.__del__(self)
- def Show(self, openBeltSlot = FALSE):
- self.__LoadWindow()
- self.RefreshSlot()
- uimg.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 localemg.IsARABIC() == 0:
- self.AdjustPositionAndSize()
- def CloseInventory(self):
- self.wndBeltInventoryLayer.Hide()
- self.expandBtn.Show()
- if localemg.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 = uimg.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(uimg.__mem_func__(self.OpenInventory))
- self.minBtn.SetEvent(uimg.__mem_func__(self.CloseInventory))
- if localemg.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(uimg.__mem_func__(self.wndInventory.OverInItem))
- wndBeltInventorySlot.SetOverOutItemEvent(uimg.__mem_func__(self.wndInventory.OverOutItem))
- wndBeltInventorySlot.SetUnselectItemSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))
- wndBeltInventorySlot.SetUseSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))
- wndBeltInventorySlot.SetSelectEmptySlotEvent(uimg.__mem_func__(self.wndInventory.SelectEmptySlot))
- wndBeltInventorySlot.SetSelectItemSlotEvent(uimg.__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(uimg.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_RING_SOCKET", "USE_PUT_INTO_BELT_SOCKET")
- liHighlightedItems = []
- questionDialog = None
- tooltipItem = None
- wndCostume = None
- wndBonowarka = None
- wndHandelscenter = None
- wndTombola = None
- wndMegaMounty = None
- dlgNewShop = None
- wndMegaPety = None
- wndDziecko = None
- wndBiolog = None
- wndBlokadaEQ = None
- wndRemoveItem = None
- wndBelt = None
- dlgPickMoney = None
- sellingSlotNumber = -1
- isLoaded = 0
- isOpenedCostumeWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 코스츔이 열려있었는지 여부-_-; 네이밍 ㅈㅅ
- isOpenedBeltWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
- def __init__(self):
- uimg.ScriptWindow.__init__(self)
- self.isOpenedBeltWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
- self.__LoadWindow()
- # Teleportacja
- import uiteleport
- self.teleport = uiteleport.TeleportWindow()
- import teleportacja
- self.Teleportacja = teleportacja.MapaTeleportacyjna()
- self.Teleportacja.Hide()
- # system osiągnięć
- import uiAchievements
- self.achievement = uiAchievements.AchievementWindow()
- # Bonowarka
- import switchbot
- self.wndBonowarka = switchbot.Bot()
- # Sklepy Offline
- import uiNewShop
- self.dlgNewShop = uiNewShop.ShopDialog()
- # Dom Aukcujny
- import handelscenter
- self.wndHandelscenter = handelscenter.Handelscenter()
- constInfo.HANDELSCENTER_STATE = self.wndHandelscenter
- # Tombola
- import tombola
- self.wndTombola = tombola.TombolaWindow()
- constInfo.TOMBOLA = self.wndTombola
- # Mega Wierzchowce
- import uimounty
- self.wndMegaMounty = uimounty.MountyDialog()
- # Mega Zwierz?tka
- import uipety
- self.wndMegaPety = uipety.PetyDialog()
- # Mega Dzieci
- import uidziecko
- self.wndDziecko = uidziecko.DzieckoDialog()
- # Biolog
- import uibiolog_new
- self.wndBiolog = uibiolog_new.Biolog()
- # Blokada EQ
- import uiblokada_eq
- self.wndBlokadaEQ = uiblokada_eq.BlokadaEQDialog()
- # Kosz
- import remove_item
- self.wndRemoveItem = remove_item.CubodeBasura()
- def __del__(self):
- uimg.ScriptWindow.__del__(self)
- def Show(self):
- self.__LoadWindow()
- uimg.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 = uimg.PythonScriptLoader()
- if ITEM_MALL_BUTTON_ENABLE:
- pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
- else:
- pyScrLoader.LoadScriptFile(self, uiScriptLocaleMG.LOCALE_UISCRIPT_PATH + "InventoryWindow.py")
- except:
- import exception
- exception.Abort("InventoryWindow.LoadWindow.LoadObject")
- try:
- wndItem = self.GetChild("ItemSlot")
- wndEquip = self.GetChild("EquipmentSlot")
- self.GetChild("board").SetCloseEvent(uimg.__mem_func__(self.Close))
- self.wndMoney = self.GetChild("Money")
- self.wndMoneySlot = self.GetChild("Money_Slot")
- self.mallButton = self.GetChild2("MallButton")
- self.System_Osiagniec = self.GetChild2("System_Osiagniec")
- self.Teleportacja = self.GetChild2("TeleportButtons")
- self.costumeButton = self.GetChild2("CostumeButton")
- self.Zmiana_EQ = self.GetChild2("Zmiana_EQ")
- self.DSSButton = self.GetChild2("DSSButton")
- self.Bon_Switch = self.GetChild2("Bon_Switch")
- #self.Mini_Sklep = self.GetChild2("Mini_Sklep")
- self.offlineShopButton = self.GetChild2("OfflineShopButton")
- self.Dom_Aukcyjny = self.GetChild2("Dom_Aukcyjny")
- self.Tombola_open = self.GetChild2("Tombola_open")
- self.Serwer_Mounty = self.GetChild2("Mount_Button")
- self.Serwer_Pety = self.GetChild2("Pet_Button")
- self.Serwer_Dziecko = self.GetChild2("Dziecko_Button")
- self.Biolog_Okno = self.GetChild2("Biolog_Okno")
- self.Serwer_Blokada_EQ = self.GetChild2("Serwer_Blokada_EQ")
- self.RemoveItem = self.GetChild2("RemoveItem")
- 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
- # self.GetChild("inventory_left").Show()
- # 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(uimg.__mem_func__(self.SelectEmptySlot))
- wndItem.SetSelectItemSlotEvent(uimg.__mem_func__(self.SelectItemSlot))
- wndItem.SetUnselectItemSlotEvent(uimg.__mem_func__(self.UseItemSlot))
- wndItem.SetUseSlotEvent(uimg.__mem_func__(self.UseItemSlot))
- wndItem.SetOverInItemEvent(uimg.__mem_func__(self.OverInItem))
- wndItem.SetOverOutItemEvent(uimg.__mem_func__(self.OverOutItem))
- ## Equipment
- wndEquip.SetSelectEmptySlotEvent(uimg.__mem_func__(self.SelectEmptySlot))
- wndEquip.SetSelectItemSlotEvent(uimg.__mem_func__(self.SelectItemSlot))
- wndEquip.SetUnselectItemSlotEvent(uimg.__mem_func__(self.UseItemSlot))
- wndEquip.SetUseSlotEvent(uimg.__mem_func__(self.UseItemSlot))
- wndEquip.SetOverInItemEvent(uimg.__mem_func__(self.OverInItem))
- wndEquip.SetOverOutItemEvent(uimg.__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(uimg.__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(uimg.__mem_func__(self.ClickMallButton))
- # System Osiagniec
- if self.System_Osiagniec:
- self.System_Osiagniec.SetEvent(uimg.__mem_func__(self.ClickSystem_Osiagniec))
- # Teleportacja
- if self.Teleportacja:
- self.Teleportacja.SetEvent(uimg.__mem_func__(self.__Teleportacja))
- # Costume Button
- if self.costumeButton:
- self.costumeButton.SetEvent(uimg.__mem_func__(self.ClickCostumeButton))
- # Zmiana EQ
- if self.Zmiana_EQ:
- self.Zmiana_EQ.SetEvent(uimg.__mem_func__(self.ClickZmiana_EQ))
- # Smocza Alchemia
- if self.DSSButton:
- self.DSSButton.SetEvent(uimg.__mem_func__(self.ClickDSSButton))
- # Bonowarka
- if self.Bon_Switch:
- self.Bon_Switch.SetEvent(uimg.__mem_func__(self.ClickBon_Switch))
- # Mini Sklep
- #if self.Mini_Sklep:
- # self.Mini_Sklep.SetEvent(uimg.__mem_func__(self.ClickMini_Sklep))
- # Offline Shop Button
- if (self.offlineShopButton):
- self.offlineShopButton.SetEvent(uimg.__mem_func__(self.ClickOfflineShopButton))
- # Dom Aukcyjny
- if self.Dom_Aukcyjny:
- self.Dom_Aukcyjny.SetEvent(uimg.__mem_func__(self.ClickDom_Aukcyjny))
- # Tombola
- if self.Tombola_open:
- self.Tombola_open.SetEvent(uimg.__mem_func__(self.ClickTombola_open))
- # Mega Wierzchowce
- if self.Serwer_Mounty:
- self.Serwer_Mounty.SetEvent(uimg.__mem_func__(self.__MegaMounty))
- # Mega Zwierz?tka
- if self.Serwer_Pety:
- self.Serwer_Pety.SetEvent(uimg.__mem_func__(self.__MegaPety))
- # Dzieci
- if self.Serwer_Dziecko:
- self.Serwer_Dziecko.SetEvent(uimg.__mem_func__(self.__Dziecko))
- # Badania Biologa
- if self.Biolog_Okno:
- self.Biolog_Okno.SetEvent(uimg.__mem_func__(self.ClickBiolog_Okno))
- # Blokada EQ
- if self.Serwer_Blokada_EQ:
- self.Serwer_Blokada_EQ.SetEvent(uimg.__mem_func__(self.ClickSerwer_Blokada_EQ))
- # Kosz
- if self.RemoveItem:
- self.RemoveItem.SetEvent(uimg.__mem_func__(self.ClickRemoveItem))
- 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.System_Osiagniec = None
- self.Teleportacja = None
- self.CostumeButton = None
- self.Zmiana_EQ = None
- self.DSSButton = None
- self.Bon_Switch = None
- #self.Mini_Sklep = None
- self.offlineShopButton = None
- self.Dom_Aukcyjny = None
- self.Tombola_open = None
- self.Serwer_Mounty = None
- self.Serwer_Pety = None
- self.Serwer_Dziecko = None
- self.Biolog_Okno = None
- self.Serwer_Blokada_EQ = None
- self.RemoveItem = 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.GetChild("inventory_left").Hide()
- self.Hide()
- 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()
- # Magazyn / ItemShop
- def ClickMallButton(self):
- print "click_mall_button"
- net.SendChatPacket("/click_mall")
- # System Osignsiagniec
- def ClickSystem_Osiagniec(self):
- if self.achievement:
- if self.achievement.IsShow():
- self.achievement.Hide()
- else:
- self.achievement.Open()
- #self.achievement.Open()
- # Teleportacja
- # def __Teleport_Open(self):
- # self.teleport.Open()
- # def Teleport(self, getString):
- # if getString.find("index") != -1:
- # self.teleport.UpdateIndex(int(getString.split("x")[1]))
- # else:
- # constInfo.SendString = str(self.teleport.SendToServer)
- # constInfo.CApiSetHide = 1
- def __Teleportacja(self):
- if FALSE == player.IsObserverMode():
- if FALSE == self.Teleportacja.IsShow():
- self.Teleportacja.Open()
- self.Teleportacja.SetTop()
- else:
- self.Teleportacja.Hide()
- # Kostiumy
- 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()
- # Zmiana EQ
- def ClickZmiana_EQ(self):
- self.interface.ToggleFastEquipWindow()
- # Smocza Alchemia
- def ClickDSSButton(self):
- print "click_dss_button"
- self.interface.ToggleDragonSoulWindow()
- # Bonowarka
- def ClickBon_Switch(self):
- if self.wndBonowarka:
- if self.wndBonowarka.IsShow():
- self.wndBonowarka.Hide()
- else:
- self.wndBonowarka.Show()
- # Mini Sklep
- # def ClickMini_Sklep(self):
- # if FALSE == player.IsObserverMode():
- # if FALSE == shop.IsOpen():
- # net.SendChatPacket("/mini_shop")
- # else:
- # self.interface.CloseShopDialog()
- # Offline Shop Button
- # def ClickOfflineShopButton(self):
- # print "click_offline_shop_button"
- # self.interface.ToggleOfflineShopAdminPanelWindow()
- def ClickOfflineShopButton(self):
- if FALSE == player.IsObserverMode():
- if FALSE == constInfo.NEW_SHOP.IsShow():
- constInfo.NEW_SHOP.Show()
- constInfo.NEW_SHOP.SetTop()
- else:
- constInfo.NEW_SHOP.Hide()
- # Dom Aukcyjny
- def ClickDom_Aukcyjny(self):
- if self.wndHandelscenter.IsShow():
- self.wndHandelscenter.Open()
- else :
- self.wndHandelscenter.Open()
- constInfo.HANDELSCENTER_CONFIG [ "CMD" ] = "open"
- event.QuestButtonClick(constInfo.HANDELSCENTER_CONFIG [ "index" ])
- # Tombola
- def ClickTombola_open(self):
- wndTombola = constInfo.TOMBOLA
- if FALSE == player.IsObserverMode():
- wndTombola.Open()
- # Mega Wierzchowce
- def __MegaMounty(self):
- if FALSE == player.IsObserverMode():
- if FALSE == self.wndMegaMounty.IsShow():
- self.wndMegaMounty.Show()
- self.wndMegaMounty.SetTop()
- else:
- self.wndMegaMounty.Hide()
- # Mega Zwierz?tka
- def __MegaPety(self):
- if FALSE == player.IsObserverMode():
- if FALSE == self.wndMegaPety.IsShow():
- self.wndMegaPety.Show()
- self.wndMegaPety.SetTop()
- else:
- self.wndMegaPety.Hide()
- # Dzieci
- def __Dziecko(self):
- if FALSE == player.IsObserverMode():
- if FALSE == self.wndDziecko.IsShow():
- self.wndDziecko.Show()
- self.wndDziecko.SetTop()
- else:
- self.wndDziecko.Hide()
- # Badania Biolgoa
- def ClickBiolog_Okno(self):
- #self.wndBiolog = constInfo.BIOLOG_NEW
- if FALSE == player.IsObserverMode():
- if FALSE == self.wndBiolog.IsShow():
- self.wndBiolog.Show()
- self.wndBiolog.SetTop()
- else:
- self.wndBiolog.Hide()
- # Blokada EQ
- def ClickSerwer_Blokada_EQ(self):
- if self.wndBlokadaEQ:
- if self.wndBlokadaEQ.IsShow():
- self.wndBlokadaEQ.Hide()
- else:
- self.wndBlokadaEQ.Show()
- # Kosz
- def ClickRemoveItem(self):
- if self.wndRemoveItem:
- if self.wndRemoveItem.IsShow():
- self.wndRemoveItem.Hide()
- else:
- self.wndRemoveItem.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()
- curMoney = player.GetCurrentGold()
- if curMoney <= 0:
- return
- self.dlgPickMoney.SetTitleName("|cffe6d0a2"+localemg.PICK_MONEY_TITLE)
- self.dlgPickMoney.SetAcceptEvent(uimg.__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
- def RefreshBagSlotWindow(self):
- is_activated = 0
- 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)
- if 0 == itemCount:
- self.wndItem.ClearSlot(i)
- continue
- elif 1 == itemCount:
- itemCount = 0
- itemVnum = getItemVNum(slotNumber)
- setItemVNum(i, itemVnum, itemCount)
- if itemVnum == 0 and slotNumber in self.liHighlightedItems:
- self.liHightlightedItems.remove(slotNumber)
- if constInfo.IS_AUTO_POTION(itemVnum):
- 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(i)
- 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(i)
- self.__RefreshHighlights()
- elif constInfo.IS_ACCE_ITEM(itemVnum, 1) == TRUE:
- metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
- isActivated = metinSocket[0]
- if isActivated == 1:
- player.SetAcceInfo(isActivated, i)
- self.wndItem.ActivateAcceSlot(i)
- else:
- self.wndItem.DeactivateAcceSlot(i)
- 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)
- for i in xrange(item.COSTUME_SLOT_COUNT):
- slotNumber = item.COSTUME_SLOT_START + i
- self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
- for i in xrange(player.NEW_EQUIPMENT_SLOT_MGAMES_C):
- slotNumber = player.NEW_EQUIPMENT_SLOT_MGAMES + 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()
- money = player.GetCurrentGold()
- self.wndMoney.SetText("|cffa07970"+localemg.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_OFFLINE_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_DROP_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()
- itemVnum = player.GetItemIndex(itemSlotIndex)
- item.SelectItem(itemVnum)
- itemType = item.GetItemType()
- itemSubType = item.GetItemSubType()
- nook = 0
- if itemType == 2 and itemSubType != 0:
- nook = 1
- if attachedItemVID == 25001 and itemType >= 1 and itemType <= 2 and nook != 1:
- count = 0
- Slots = [player.GetItemMetinSocket(itemSlotIndex, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
- for i in xrange(player.METIN_SOCKET_MAX_NUM):
- if Slots[i] > 20000:
- count += 1
- if count == 0:
- chat.AppendChat(chat.CHAT_TYPE_INFO, "Ten przedmiot nie posiada kamieni dusz!")
- mouseModule.mouseController.DeattachObject()
- return
- else:
- import uistonesdialog
- self.stones = uistonesdialog.StonesDialog()
- self.stones.SetData(itemSlotIndex)
- self.stones.Shows()
- mouseModule.mouseController.DeattachObject()
- return
- 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, localemg.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(localemg.PICK_ITEM_TITLE)
- self.dlgPickMoney.SetAcceptEvent(uimg.__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, localemg.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 UseTransportBox(self):
- self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
- self.OnCloseQuestionDialog()
- def UseProtein(self):
- self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
- self.OnCloseQuestionDialog()
- def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
- if srcItemSlotPos == dstItemSlotPos:
- return
- if srcItemVID >= 35301 and srcItemVID <= 35308 and player.GetItemIndex(dstItemSlotPos) == 35152:
- self.questionDialog = uiCommon.QuestionDialog()
- self.questionDialog.SetText("Vrei sa adaugi insotitorul in cutia de transport?")
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseTransportBox))
- self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
- self.questionDialog.Open()
- self.questionDialog.src = srcItemSlotPos
- self.questionDialog.dst = dstItemSlotPos
- if srcItemVID == 35151 and player.GetItemIndex(dstItemSlotPos) >= 35301 and player.GetItemIndex(dstItemSlotPos) <= 35308:
- self.questionDialog = uiCommon.QuestionDialog()
- self.questionDialog.SetText("Vrei sa hranesti insotitorul?")
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseProtein))
- self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
- self.questionDialog.Open()
- self.questionDialog.src = srcItemSlotPos
- self.questionDialog.dst = dstItemSlotPos
- if srcItemVID >= 36301 and srcItemVID <= 36304 and player.GetItemIndex(dstItemSlotPos) == 36152:
- self.questionDialog = uiCommon.QuestionDialog()
- self.questionDialog.SetText("Vrei sa adaugi insotitorul in cutia de transport?")
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseTransportBox))
- self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
- self.questionDialog.Open()
- self.questionDialog.src = srcItemSlotPos
- self.questionDialog.dst = dstItemSlotPos
- if srcItemVID == 36151 and player.GetItemIndex(dstItemSlotPos) >= 36301 and player.GetItemIndex(dstItemSlotPos) <= 36304:
- self.questionDialog = uiCommon.QuestionDialog()
- self.questionDialog.SetText("Vrei sa hranesti insotitorul?")
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseProtein))
- self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
- self.questionDialog.Open()
- self.questionDialog.src = srcItemSlotPos
- self.questionDialog.dst = dstItemSlotPos
- 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(localemg.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(localemg.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.SellItem))
- self.questionDialog.SetCancelEvent(uimg.__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, localemg.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, localemg.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, localemg.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, localemg.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
- elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.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 constInfo.IS_ACCE_ITEM_DETACH(scrollIndex) == TRUE:
- item.SelectItem(targetIndex)
- if item.GetItemSubType() == item.COSTUME_TYPE_ACCE:
- if self.GetAcceAttribute(targetSlotPos) == 0:
- return
- self.questionDialog = uiCommon.QuestionDialog()
- self.questionDialog.SetText(localemg.ACCE_DO_YOU_REMOVE_ATTR)
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.OnDetachMetinFromItem))
- self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
- self.questionDialog.Open()
- self.questionDialog.sourcePos = scrollSlotPos
- self.questionDialog.targetPos = targetSlotPos
- else:
- return
- else:
- if not player.CanDetach(scrollIndex, targetSlotPos):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
- return
- self.questionDialog = uiCommon.QuestionDialog()
- self.questionDialog.SetText(localemg.REFINE_DO_YOU_SEPARATE_METIN)
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.OnDetachMetinFromItem))
- self.questionDialog.SetCancelEvent(uimg.__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, localemg.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
- if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_NO_SOCKET(itemName))
- elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
- elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.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 overSlotPos in self.liHighlightedItems:
- self.liHighlightedItems.remove(overSlotPos)
- self.wndItem.DeactivateSlot(overSlotPos)
- 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 srcItemVNum >= 35301 and srcItemVNum <= 35308:
- return True
- if srcItemVNum == 35151:
- return True
- if srcItemVNum >= 36301 and srcItemVNum <= 36304:
- return True
- if srcItemVNum == 36151:
- return True
- 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 srcItemVNum >= 35301 and srcItemVNum <= 35308 and player.GetItemIndex(dstSlotPos) == 35152:
- return True
- if srcItemVNum == 35151 and player.GetItemIndex(dstSlotPos) >= 35301 and player.GetItemIndex(dstSlotPos) <= 35308:
- return True
- if srcItemVNum >= 36301 and srcItemVNum <= 36304 and player.GetItemIndex(dstSlotPos) == 36152:
- return True
- if srcItemVNum == 36151 and player.GetItemIndex(dstSlotPos) >= 36301 and player.GetItemIndex(dstSlotPos) <= 36304:
- return True
- 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(localemg.INVENTORY_REALLY_USE_ITEM)
- self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
- self.questionDialog.SetCancelEvent(uimg.__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, localemg.USE_ITEM_FAILURE_PRIVATE_SHOP)
- return
- if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
- return
- if (uiOfflineShop.IsEditingOfflineShop()):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
- return
- net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
- def __SendUseItemPacket(self, slotPos):
- # 개인상점 열고 있는 동안 아이템 사용 방지
- if uiPrivateShopBuilder.IsBuildingPrivateShop():
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_PRIVATE_SHOP)
- return
- if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
- return
- if (uiOfflineShop.IsEditingOfflineShop()):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
- return
- net.SendItemUsePacket(slotPos)
- def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
- # 개인상점 열고 있는 동안 아이템 사용 방지
- if uiPrivateShopBuilder.IsBuildingPrivateShop():
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
- return
- if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
- return
- if (uiOfflineShop.IsEditingOfflineShop()):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.MOVE_ITEM_FAILURE_OFFLINE_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()
- def GetAcceAttribute(self, srcSlotPos):
- result = 0
- attrSlot = []
- for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
- attrSlot.append(player.GetItemAttribute(srcSlotPos, i))
- if 0 != attrSlot:
- for c in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
- type = attrSlot[c][0]
- if type != 0:
- result = result + 1
- return result
- def HighlightSlot(self, slot):
- if not slot in self.liHighlightedItems:
- self.liHighlightedItems.append(slot)
- # chat.AppendChat(chat.CHAT_TYPE_INFO, "podswietlenie " + str(slot))
- def __RefreshHighlights(self):
- for i in xrange(player.INVENTORY_PAGE_SIZE):
- slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
- if slotNumber in self.liHighlightedItems:
- self.wndItem.ActivateSlot(i)
- # chat.AppendChat(chat.CHAT_TYPE_INFO, "refresgh " + str(i))
Add Comment
Please, Sign In to add comment