deadx2

Untitled

Aug 16th, 2017
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 52.04 KB | None | 0 0
  1. import uimg
  2. import player
  3. import mouseModule
  4. import net
  5. import app
  6. import snd
  7. import item
  8. import player
  9. import chat
  10. import grp
  11. import uiScriptLocaleMG
  12. import uiRefine
  13. import uiAttachMetin
  14. import uiPickMoney
  15. import uiCommon
  16. import uiPrivateShopBuilder # 개인상점 열동안 ItemMove 방지
  17. import localemg
  18. import uiOfflineShopBuilder
  19. import uiOfflineShop
  20. import constInfo
  21. import ime
  22. import wndMgr
  23. import shop
  24. import event
  25.  
  26. ITEM_MALL_BUTTON_ENABLE = True
  27.  
  28.  
  29.  
  30. ITEM_FLAG_APPLICABLE = 1 << 14
  31.  
  32. class CostumeWindow(uimg.ScriptWindow):
  33.  
  34.     def __init__(self, wndInventory):
  35.         import exception
  36.        
  37.         if not app.ENABLE_COSTUME_SYSTEM:          
  38.             exception.Abort("What do you do?")
  39.             return
  40.  
  41.         if not wndInventory:
  42.             exception.Abort("wndInventory parameter must be set to InventoryWindow")
  43.             return                     
  44.                  
  45.         uimg.ScriptWindow.__init__(self)
  46.  
  47.         self.isLoaded = 0
  48.         self.wndInventory = wndInventory;
  49.  
  50.         self.__LoadWindow()
  51.  
  52.     def __del__(self):
  53.         uimg.ScriptWindow.__del__(self)
  54.  
  55.     def Show(self):
  56.         self.__LoadWindow()
  57.         self.RefreshCostumeSlot()
  58.  
  59.         uimg.ScriptWindow.Show(self)
  60.  
  61.     def Close(self):
  62.         self.Hide()
  63.  
  64.     def __LoadWindow(self):
  65.         if self.isLoaded == 1:
  66.             return
  67.  
  68.         self.isLoaded = 1
  69.  
  70.         try:
  71.             pyScrLoader = uimg.PythonScriptLoader()
  72.             pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py")
  73.         except:
  74.             import exception
  75.             exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  76.  
  77.         try:
  78.             wndEquip = self.GetChild("CostumeSlot")
  79.             self.GetChild("TitleBar").SetCloseEvent(uimg.__mem_func__(self.Close))
  80.            
  81.         except:
  82.             import exception
  83.             exception.Abort("CostumeWindow.LoadWindow.BindObject")
  84.  
  85.         ## Equipment
  86.         wndEquip.SetOverInItemEvent(uimg.__mem_func__(self.wndInventory.OverInItem))
  87.         wndEquip.SetOverOutItemEvent(uimg.__mem_func__(self.wndInventory.OverOutItem))
  88.         wndEquip.SetUnselectItemSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))
  89.         wndEquip.SetUseSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))                     
  90.         wndEquip.SetSelectEmptySlotEvent(uimg.__mem_func__(self.wndInventory.SelectEmptySlot))
  91.         wndEquip.SetSelectItemSlotEvent(uimg.__mem_func__(self.wndInventory.SelectItemSlot))
  92.  
  93.         self.wndEquip = wndEquip
  94.  
  95.     def RefreshCostumeSlot(self):
  96.         getItemVNum=player.GetItemIndex
  97.        
  98.         for i in xrange(item.COSTUME_SLOT_COUNT):
  99.             slotNumber = item.COSTUME_SLOT_START + i
  100.             self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
  101.  
  102.         self.wndEquip.RefreshSlot()
  103.        
  104. class BeltInventoryWindow(uimg.ScriptWindow):
  105.  
  106.     def __init__(self, wndInventory):
  107.         import exception
  108.        
  109.         if not app.ENABLE_NEW_EQUIPMENT_SYSTEM:        
  110.             exception.Abort("What do you do?")
  111.             return
  112.  
  113.         if not wndInventory:
  114.             exception.Abort("wndInventory parameter must be set to InventoryWindow")
  115.             return                     
  116.                  
  117.         uimg.ScriptWindow.__init__(self)
  118.  
  119.         self.isLoaded = 0
  120.         self.wndInventory = wndInventory;
  121.        
  122.         self.wndBeltInventoryLayer = None
  123.         self.wndBeltInventorySlot = None
  124.         self.expandBtn = None
  125.         self.minBtn = None
  126.  
  127.         self.__LoadWindow()
  128.  
  129.     def __del__(self):
  130.         uimg.ScriptWindow.__del__(self)
  131.  
  132.     def Show(self, openBeltSlot = FALSE):
  133.         self.__LoadWindow()
  134.         self.RefreshSlot()
  135.  
  136.         uimg.ScriptWindow.Show(self)
  137.        
  138.         if openBeltSlot:
  139.             self.OpenInventory()
  140.         else:
  141.             self.CloseInventory()
  142.  
  143.     def Close(self):
  144.         self.Hide()
  145.  
  146.     def IsOpeningInventory(self):
  147.         return self.wndBeltInventoryLayer.IsShow()
  148.        
  149.     def OpenInventory(self):
  150.         self.wndBeltInventoryLayer.Show()
  151.         self.expandBtn.Hide()
  152.  
  153.         if localemg.IsARABIC() == 0:
  154.             self.AdjustPositionAndSize()
  155.                
  156.     def CloseInventory(self):
  157.         self.wndBeltInventoryLayer.Hide()
  158.         self.expandBtn.Show()
  159.        
  160.         if localemg.IsARABIC() == 0:
  161.             self.AdjustPositionAndSize()
  162.  
  163.     ## 현재 인벤토리 위치를 기준으로 BASE 위치를 계산, 리턴.. 숫자 하드코딩하기 정말 싫지만 방법이 없다..
  164.     def GetBasePosition(self):
  165.         x, y = self.wndInventory.GetGlobalPosition()
  166.         return x - 148, y + 241
  167.        
  168.     def AdjustPositionAndSize(self):
  169.         bx, by = self.GetBasePosition()
  170.        
  171.         if self.IsOpeningInventory():          
  172.             self.SetPosition(bx, by)
  173.             self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
  174.            
  175.         else:
  176.             self.SetPosition(bx + 138, by);
  177.             self.SetSize(10, self.GetHeight())
  178.  
  179.     def __LoadWindow(self):
  180.         if self.isLoaded == 1:
  181.             return
  182.  
  183.         self.isLoaded = 1
  184.  
  185.         try:
  186.             pyScrLoader = uimg.PythonScriptLoader()
  187.             pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py")
  188.         except:
  189.             import exception
  190.             exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  191.  
  192.         try:
  193.             self.ORIGINAL_WIDTH = self.GetWidth()
  194.             wndBeltInventorySlot = self.GetChild("BeltInventorySlot")
  195.             self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer")
  196.             self.expandBtn = self.GetChild("ExpandBtn")
  197.             self.minBtn = self.GetChild("MinimizeBtn")
  198.            
  199.             self.expandBtn.SetEvent(uimg.__mem_func__(self.OpenInventory))
  200.             self.minBtn.SetEvent(uimg.__mem_func__(self.CloseInventory))
  201.            
  202.             if localemg.IsARABIC() :
  203.                 self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15)
  204.                 self.wndBeltInventoryLayer.SetPosition(self.wndBeltInventoryLayer.GetWidth() - 5, 0)
  205.                 self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15)        
  206.    
  207.             for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  208.                 slotNumber = item.BELT_INVENTORY_SLOT_START + i                        
  209.                 wndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  210.                                                 "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  211.                                                 "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  212.                                                 "d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", FALSE, FALSE)                                 
  213.            
  214.         except:
  215.             import exception
  216.             exception.Abort("CostumeWindow.LoadWindow.BindObject")
  217.  
  218.         ## Equipment
  219.         wndBeltInventorySlot.SetOverInItemEvent(uimg.__mem_func__(self.wndInventory.OverInItem))
  220.         wndBeltInventorySlot.SetOverOutItemEvent(uimg.__mem_func__(self.wndInventory.OverOutItem))
  221.         wndBeltInventorySlot.SetUnselectItemSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))
  222.         wndBeltInventorySlot.SetUseSlotEvent(uimg.__mem_func__(self.wndInventory.UseItemSlot))                     
  223.         wndBeltInventorySlot.SetSelectEmptySlotEvent(uimg.__mem_func__(self.wndInventory.SelectEmptySlot))
  224.         wndBeltInventorySlot.SetSelectItemSlotEvent(uimg.__mem_func__(self.wndInventory.SelectItemSlot))
  225.  
  226.         self.wndBeltInventorySlot = wndBeltInventorySlot
  227.  
  228.     def RefreshSlot(self):
  229.         getItemVNum=player.GetItemIndex
  230.        
  231.         for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  232.             slotNumber = item.BELT_INVENTORY_SLOT_START + i
  233.             self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))
  234.             self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, TRUE)
  235.            
  236.             avail = "0"
  237.            
  238.             if player.IsAvailableBeltInventoryCell(slotNumber):
  239.                 self.wndBeltInventorySlot.EnableCoverButton(slotNumber)            
  240.             else:
  241.                 self.wndBeltInventorySlot.DisableCoverButton(slotNumber)               
  242.  
  243.         self.wndBeltInventorySlot.RefreshSlot()
  244.  
  245.        
  246. class InventoryWindow(uimg.ScriptWindow):
  247.  
  248.     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")
  249.  
  250.     liHighlightedItems = []
  251.     questionDialog = None
  252.     tooltipItem = None
  253.     wndCostume = None
  254.     wndBonowarka = None
  255.     wndHandelscenter = None
  256.     wndTombola = None
  257.     wndMegaMounty = None
  258.     dlgNewShop = None
  259.     wndMegaPety = None
  260.     wndDziecko = None
  261.     wndBiolog = None
  262.     wndBlokadaEQ = None
  263.     wndRemoveItem = None
  264.     wndBelt = None
  265.     dlgPickMoney = None
  266.    
  267.     sellingSlotNumber = -1
  268.     isLoaded = 0
  269.     isOpenedCostumeWindowWhenClosingInventory = 0       # 인벤토리 닫을 때 코스츔이 열려있었는지 여부-_-; 네이밍 ㅈㅅ
  270.     isOpenedBeltWindowWhenClosingInventory = 0      # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
  271.  
  272.     def __init__(self):
  273.         uimg.ScriptWindow.__init__(self)
  274.  
  275.         self.isOpenedBeltWindowWhenClosingInventory = 0     # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
  276.  
  277.         self.__LoadWindow()
  278.  
  279.         # Teleportacja
  280.         import uiteleport
  281.         self.teleport = uiteleport.TeleportWindow()
  282.         import teleportacja
  283.         self.Teleportacja = teleportacja.MapaTeleportacyjna()
  284.         self.Teleportacja.Hide()
  285.         # system osiągnięć
  286.         import uiAchievements
  287.         self.achievement = uiAchievements.AchievementWindow()
  288.         # Bonowarka
  289.         import switchbot
  290.         self.wndBonowarka = switchbot.Bot()
  291.         # Sklepy Offline
  292.         import uiNewShop
  293.         self.dlgNewShop = uiNewShop.ShopDialog()
  294.         # Dom Aukcujny
  295.         import handelscenter
  296.         self.wndHandelscenter = handelscenter.Handelscenter()
  297.         constInfo.HANDELSCENTER_STATE = self.wndHandelscenter
  298.         # Tombola
  299.         import tombola
  300.         self.wndTombola = tombola.TombolaWindow()
  301.         constInfo.TOMBOLA = self.wndTombola
  302.         # Mega Wierzchowce
  303.         import uimounty
  304.         self.wndMegaMounty = uimounty.MountyDialog()
  305.        
  306.         # Mega Zwierz?tka
  307.         import uipety
  308.         self.wndMegaPety = uipety.PetyDialog()
  309.        
  310.         # Mega Dzieci
  311.         import uidziecko
  312.         self.wndDziecko = uidziecko.DzieckoDialog()
  313.         # Biolog
  314.         import uibiolog_new
  315.         self.wndBiolog = uibiolog_new.Biolog()
  316.         # Blokada EQ
  317.         import uiblokada_eq
  318.         self.wndBlokadaEQ = uiblokada_eq.BlokadaEQDialog()
  319.         # Kosz
  320.         import remove_item
  321.         self.wndRemoveItem = remove_item.CubodeBasura()
  322.  
  323.     def __del__(self):
  324.         uimg.ScriptWindow.__del__(self)
  325.  
  326.     def Show(self):
  327.         self.__LoadWindow()
  328.  
  329.         uimg.ScriptWindow.Show(self)
  330.  
  331.         # 인벤토리를 닫을 때 코스츔이 열려있었다면 인벤토리를 열 때 코스츔도 같이 열도록 함.
  332.         if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
  333.             self.wndCostume.Show()
  334.  
  335.         # 인벤토리를 닫을 때 벨트 인벤토리가 열려있었다면 같이 열도록 함.
  336.         if self.wndBelt:
  337.             self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)
  338.  
  339.     def BindInterfaceClass(self, interface):
  340.         self.interface = interface
  341.        
  342.     def __LoadWindow(self):
  343.         if self.isLoaded == 1:
  344.             return
  345.  
  346.         self.isLoaded = 1
  347.  
  348.         try:
  349.             pyScrLoader = uimg.PythonScriptLoader()
  350.  
  351.             if ITEM_MALL_BUTTON_ENABLE:
  352.                 pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
  353.             else:
  354.                 pyScrLoader.LoadScriptFile(self, uiScriptLocaleMG.LOCALE_UISCRIPT_PATH + "InventoryWindow.py")
  355.         except:
  356.             import exception
  357.             exception.Abort("InventoryWindow.LoadWindow.LoadObject")
  358.  
  359.         try:
  360.             wndItem = self.GetChild("ItemSlot")
  361.             wndEquip = self.GetChild("EquipmentSlot")
  362.             self.GetChild("board").SetCloseEvent(uimg.__mem_func__(self.Close))
  363.             self.wndMoney = self.GetChild("Money")
  364.             self.wndMoneySlot = self.GetChild("Money_Slot")
  365.             self.mallButton = self.GetChild2("MallButton")
  366.             self.System_Osiagniec = self.GetChild2("System_Osiagniec")
  367.             self.Teleportacja = self.GetChild2("TeleportButtons")
  368.             self.costumeButton = self.GetChild2("CostumeButton")
  369.             self.Zmiana_EQ = self.GetChild2("Zmiana_EQ")
  370.             self.DSSButton = self.GetChild2("DSSButton")
  371.             self.Bon_Switch = self.GetChild2("Bon_Switch")
  372.             #self.Mini_Sklep = self.GetChild2("Mini_Sklep")
  373.             self.offlineShopButton = self.GetChild2("OfflineShopButton")
  374.             self.Dom_Aukcyjny = self.GetChild2("Dom_Aukcyjny")
  375.             self.Tombola_open = self.GetChild2("Tombola_open")
  376.             self.Serwer_Mounty = self.GetChild2("Mount_Button")
  377.             self.Serwer_Pety = self.GetChild2("Pet_Button")
  378.             self.Serwer_Dziecko = self.GetChild2("Dziecko_Button")
  379.             self.Biolog_Okno = self.GetChild2("Biolog_Okno")
  380.             self.Serwer_Blokada_EQ = self.GetChild2("Serwer_Blokada_EQ")
  381.             self.RemoveItem = self.GetChild2("RemoveItem")
  382.  
  383.  
  384.             self.inventoryTab = []
  385.             self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
  386.             self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
  387.             self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
  388.             self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))
  389.  
  390.             self.equipmentTab = []
  391.             self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
  392.             self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))
  393.  
  394.             if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:
  395.                 self.costumeButton.Hide()
  396.                 self.costumeButton.Destroy()
  397.                 self.costumeButton = 0
  398.  
  399.         #   self.GetChild("inventory_left").Show()
  400.  
  401.             # Belt Inventory Window
  402.             self.wndBelt = None
  403.            
  404.         #   if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  405.         #       self.wndBelt = BeltInventoryWindow(self)
  406.            
  407.         except:
  408.             import exception
  409.             exception.Abort("InventoryWindow.LoadWindow.BindObject")
  410.  
  411.         ## Item
  412.         wndItem.SetSelectEmptySlotEvent(uimg.__mem_func__(self.SelectEmptySlot))
  413.         wndItem.SetSelectItemSlotEvent(uimg.__mem_func__(self.SelectItemSlot))
  414.         wndItem.SetUnselectItemSlotEvent(uimg.__mem_func__(self.UseItemSlot))
  415.         wndItem.SetUseSlotEvent(uimg.__mem_func__(self.UseItemSlot))
  416.         wndItem.SetOverInItemEvent(uimg.__mem_func__(self.OverInItem))
  417.         wndItem.SetOverOutItemEvent(uimg.__mem_func__(self.OverOutItem))
  418.  
  419.         ## Equipment
  420.         wndEquip.SetSelectEmptySlotEvent(uimg.__mem_func__(self.SelectEmptySlot))
  421.         wndEquip.SetSelectItemSlotEvent(uimg.__mem_func__(self.SelectItemSlot))
  422.         wndEquip.SetUnselectItemSlotEvent(uimg.__mem_func__(self.UseItemSlot))
  423.         wndEquip.SetUseSlotEvent(uimg.__mem_func__(self.UseItemSlot))
  424.         wndEquip.SetOverInItemEvent(uimg.__mem_func__(self.OverInItem))
  425.         wndEquip.SetOverOutItemEvent(uimg.__mem_func__(self.OverOutItem))
  426.  
  427.         ## PickMoneyDialog
  428.         dlgPickMoney = uiPickMoney.PickMoneyDialog()
  429.         dlgPickMoney.LoadDialog()
  430.         dlgPickMoney.Hide()
  431.  
  432.         ## RefineDialog
  433.         self.refineDialog = uiRefine.RefineDialog()
  434.         self.refineDialog.Hide()
  435.  
  436.         ## AttachMetinDialog
  437.         self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
  438.         self.attachMetinDialog.Hide()
  439.  
  440.         ## MoneySlot
  441.         self.wndMoneySlot.SetEvent(uimg.__mem_func__(self.OpenPickMoneyDialog))
  442.  
  443.         self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
  444.         self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
  445.         self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
  446.         self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))
  447.         self.inventoryTab[0].Down()
  448.         self.inventoryPageIndex = 0
  449.  
  450.         self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg))
  451.         self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg))
  452.         self.equipmentTab[0].Down()
  453.         self.equipmentTab[0].Hide()
  454.         self.equipmentTab[1].Hide()
  455.  
  456.         self.wndItem = wndItem
  457.         self.wndEquip = wndEquip
  458.         self.dlgPickMoney = dlgPickMoney
  459.  
  460.         # MallButton
  461.         if self.mallButton:
  462.             self.mallButton.SetEvent(uimg.__mem_func__(self.ClickMallButton))
  463.  
  464.         # System Osiagniec
  465.         if self.System_Osiagniec:
  466.             self.System_Osiagniec.SetEvent(uimg.__mem_func__(self.ClickSystem_Osiagniec))
  467.  
  468.         # Teleportacja
  469.         if self.Teleportacja:
  470.             self.Teleportacja.SetEvent(uimg.__mem_func__(self.__Teleportacja))
  471.  
  472.         # Costume Button
  473.         if self.costumeButton:
  474.             self.costumeButton.SetEvent(uimg.__mem_func__(self.ClickCostumeButton))
  475.  
  476.         # Zmiana EQ
  477.         if self.Zmiana_EQ:
  478.             self.Zmiana_EQ.SetEvent(uimg.__mem_func__(self.ClickZmiana_EQ))
  479.  
  480.         # Smocza Alchemia
  481.         if self.DSSButton:
  482.             self.DSSButton.SetEvent(uimg.__mem_func__(self.ClickDSSButton))
  483.  
  484.         # Bonowarka
  485.         if self.Bon_Switch:
  486.             self.Bon_Switch.SetEvent(uimg.__mem_func__(self.ClickBon_Switch))
  487.  
  488.         # Mini Sklep
  489.         #if self.Mini_Sklep:
  490.         #   self.Mini_Sklep.SetEvent(uimg.__mem_func__(self.ClickMini_Sklep))
  491.  
  492.         # Offline Shop Button
  493.         if (self.offlineShopButton):
  494.             self.offlineShopButton.SetEvent(uimg.__mem_func__(self.ClickOfflineShopButton))
  495.  
  496.         # Dom Aukcyjny
  497.         if self.Dom_Aukcyjny:
  498.             self.Dom_Aukcyjny.SetEvent(uimg.__mem_func__(self.ClickDom_Aukcyjny))
  499.  
  500.         # Tombola
  501.         if self.Tombola_open:
  502.             self.Tombola_open.SetEvent(uimg.__mem_func__(self.ClickTombola_open))
  503.  
  504.         # Mega Wierzchowce
  505.         if self.Serwer_Mounty:
  506.             self.Serwer_Mounty.SetEvent(uimg.__mem_func__(self.__MegaMounty))
  507.  
  508.         # Mega Zwierz?tka
  509.         if self.Serwer_Pety:
  510.             self.Serwer_Pety.SetEvent(uimg.__mem_func__(self.__MegaPety))
  511.  
  512.         # Dzieci
  513.         if self.Serwer_Dziecko:
  514.             self.Serwer_Dziecko.SetEvent(uimg.__mem_func__(self.__Dziecko))
  515.  
  516.         # Badania Biologa
  517.         if self.Biolog_Okno:
  518.             self.Biolog_Okno.SetEvent(uimg.__mem_func__(self.ClickBiolog_Okno))
  519.  
  520.         # Blokada EQ
  521.         if self.Serwer_Blokada_EQ:
  522.             self.Serwer_Blokada_EQ.SetEvent(uimg.__mem_func__(self.ClickSerwer_Blokada_EQ))
  523.  
  524.         # Kosz
  525.         if self.RemoveItem:
  526.             self.RemoveItem.SetEvent(uimg.__mem_func__(self.ClickRemoveItem))
  527.  
  528.         self.wndCostume = None
  529.        
  530.         #####
  531.  
  532.         ## Refresh
  533.         self.SetInventoryPage(0)
  534.         self.SetEquipmentPage(0)
  535.         self.RefreshItemSlot()
  536.         self.RefreshStatus()
  537.  
  538.     def Destroy(self):
  539.         self.ClearDictionary()
  540.  
  541.         self.dlgPickMoney.Destroy()
  542.         self.dlgPickMoney = 0
  543.  
  544.         self.refineDialog.Destroy()
  545.         self.refineDialog = 0
  546.  
  547.         self.attachMetinDialog.Destroy()
  548.         self.attachMetinDialog = 0
  549.  
  550.         self.tooltipItem = None
  551.         self.wndItem = 0
  552.         self.wndEquip = 0
  553.         self.dlgPickMoney = 0
  554.         self.wndMoney = 0
  555.         self.wndMoneySlot = 0
  556.         self.questionDialog = None
  557.         self.mallButton = None
  558.         self.System_Osiagniec = None
  559.         self.Teleportacja = None
  560.         self.CostumeButton = None
  561.         self.Zmiana_EQ = None
  562.         self.DSSButton = None
  563.         self.Bon_Switch = None
  564.         #self.Mini_Sklep = None
  565.         self.offlineShopButton = None
  566.         self.Dom_Aukcyjny = None
  567.         self.Tombola_open = None
  568.         self.Serwer_Mounty = None
  569.         self.Serwer_Pety = None
  570.         self.Serwer_Dziecko = None
  571.         self.Biolog_Okno = None
  572.         self.Serwer_Blokada_EQ = None
  573.         self.RemoveItem = None
  574.         self.interface = None
  575.  
  576.         if self.wndCostume:
  577.             self.wndCostume.Destroy()
  578.             self.wndCostume = 0
  579.            
  580.         if self.wndBelt:
  581.             self.wndBelt.Destroy()
  582.             self.wndBelt = None
  583.            
  584.         self.inventoryTab = []
  585.         self.equipmentTab = []
  586.  
  587.     def Hide(self):
  588.         if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
  589.             self.OnCloseQuestionDialog()
  590.             return
  591.         if None != self.tooltipItem:
  592.             self.tooltipItem.HideToolTip()
  593.  
  594.         if self.wndCostume:
  595.             self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow()           # 인벤토리 창이 닫힐 때 코스츔이 열려 있었는가?
  596.             self.wndCostume.Close()
  597.  
  598.         if self.wndBelt:
  599.             self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory()     # 인벤토리 창이 닫힐 때 벨트 인벤토리도 열려 있었는가?
  600.             print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventory
  601.             self.wndBelt.Close()
  602.  
  603.         if self.dlgPickMoney:
  604.             self.dlgPickMoney.Close()
  605.  
  606.         wndMgr.Hide(self.hWnd)
  607.        
  608.    
  609.     def Close(self):
  610.     #   self.GetChild("inventory_left").Hide()
  611.         self.Hide()
  612.    
  613.     def SetInventoryPage(self, page):
  614.         self.inventoryTab[self.inventoryPageIndex].SetUp()
  615.         self.inventoryPageIndex = page
  616.         self.inventoryTab[self.inventoryPageIndex].Down()
  617.         self.RefreshBagSlotWindow()
  618.    
  619.  
  620.     def SetEquipmentPage(self, page):
  621.         self.equipmentPageIndex = page
  622.         self.equipmentTab[1-page].SetUp()
  623.         self.RefreshEquipSlotWindow()
  624.  
  625.     # Magazyn / ItemShop
  626.     def ClickMallButton(self):
  627.         print "click_mall_button"
  628.         net.SendChatPacket("/click_mall")
  629.  
  630.     # System Osignsiagniec
  631.     def ClickSystem_Osiagniec(self):
  632.         if self.achievement:
  633.             if self.achievement.IsShow():
  634.                 self.achievement.Hide()
  635.             else:
  636.                 self.achievement.Open()
  637.         #self.achievement.Open()
  638.  
  639.     # Teleportacja
  640. #   def __Teleport_Open(self):
  641. #       self.teleport.Open()
  642.            
  643. #   def Teleport(self, getString):
  644. #       if getString.find("index") != -1:
  645. #           self.teleport.UpdateIndex(int(getString.split("x")[1]))
  646. #       else:
  647. #           constInfo.SendString = str(self.teleport.SendToServer)
  648. #           constInfo.CApiSetHide = 1
  649.     def __Teleportacja(self):
  650.         if FALSE == player.IsObserverMode():
  651.             if FALSE == self.Teleportacja.IsShow():
  652.                 self.Teleportacja.Open()
  653.                 self.Teleportacja.SetTop()
  654.             else:
  655.                 self.Teleportacja.Hide()
  656.  
  657.     # Kostiumy
  658.     def ClickCostumeButton(self):
  659.         print "Click Costume Button"
  660.         if self.wndCostume:
  661.             if self.wndCostume.IsShow():
  662.                 self.wndCostume.Hide()
  663.             else:
  664.                 self.wndCostume.Show()
  665.         else:
  666.             self.wndCostume = CostumeWindow(self)
  667.             self.wndCostume.Show()
  668.  
  669.     # Zmiana EQ
  670.     def ClickZmiana_EQ(self):
  671.         self.interface.ToggleFastEquipWindow()
  672.  
  673.     # Smocza Alchemia
  674.     def ClickDSSButton(self):
  675.         print "click_dss_button"
  676.         self.interface.ToggleDragonSoulWindow()
  677.  
  678.     # Bonowarka
  679.     def ClickBon_Switch(self):
  680.         if self.wndBonowarka:
  681.             if self.wndBonowarka.IsShow():
  682.                 self.wndBonowarka.Hide()
  683.             else:
  684.                 self.wndBonowarka.Show()
  685.  
  686.     # Mini Sklep
  687. #   def ClickMini_Sklep(self):
  688. #       if FALSE == player.IsObserverMode():
  689. #           if FALSE == shop.IsOpen():
  690. #               net.SendChatPacket("/mini_shop")
  691. #           else:
  692. #               self.interface.CloseShopDialog()
  693.  
  694.     # Offline Shop Button
  695. #   def ClickOfflineShopButton(self):
  696. #       print "click_offline_shop_button"
  697. #       self.interface.ToggleOfflineShopAdminPanelWindow()
  698.     def ClickOfflineShopButton(self):
  699.         if FALSE == player.IsObserverMode():
  700.             if FALSE == constInfo.NEW_SHOP.IsShow():
  701.                 constInfo.NEW_SHOP.Show()
  702.                 constInfo.NEW_SHOP.SetTop()
  703.             else:
  704.                 constInfo.NEW_SHOP.Hide()
  705.  
  706.     # Dom Aukcyjny
  707.     def ClickDom_Aukcyjny(self):
  708.         if  self.wndHandelscenter.IsShow():
  709.             self.wndHandelscenter.Open()
  710.         else :
  711.             self.wndHandelscenter.Open()
  712.             constInfo.HANDELSCENTER_CONFIG [ "CMD" ]  =  "open"
  713.             event.QuestButtonClick(constInfo.HANDELSCENTER_CONFIG [ "index" ])
  714.  
  715.     # Tombola
  716.     def ClickTombola_open(self):
  717.         wndTombola = constInfo.TOMBOLA
  718.         if FALSE == player.IsObserverMode():
  719.             wndTombola.Open()
  720.  
  721.     # Mega Wierzchowce
  722.     def __MegaMounty(self):
  723.         if FALSE == player.IsObserverMode():
  724.             if FALSE == self.wndMegaMounty.IsShow():
  725.                 self.wndMegaMounty.Show()
  726.                 self.wndMegaMounty.SetTop()
  727.             else:
  728.                 self.wndMegaMounty.Hide()
  729.  
  730.     # Mega Zwierz?tka
  731.     def __MegaPety(self):
  732.         if FALSE == player.IsObserverMode():
  733.             if FALSE == self.wndMegaPety.IsShow():
  734.                 self.wndMegaPety.Show()
  735.                 self.wndMegaPety.SetTop()
  736.             else:
  737.                 self.wndMegaPety.Hide()
  738.  
  739.     # Dzieci
  740.     def __Dziecko(self):
  741.         if FALSE == player.IsObserverMode():
  742.             if FALSE == self.wndDziecko.IsShow():
  743.                 self.wndDziecko.Show()
  744.                 self.wndDziecko.SetTop()
  745.             else:
  746.                 self.wndDziecko.Hide()
  747.  
  748.     # Badania Biolgoa
  749.     def ClickBiolog_Okno(self):
  750.         #self.wndBiolog = constInfo.BIOLOG_NEW
  751.         if FALSE == player.IsObserverMode():
  752.             if FALSE == self.wndBiolog.IsShow():
  753.                 self.wndBiolog.Show()
  754.                 self.wndBiolog.SetTop()
  755.             else:
  756.                 self.wndBiolog.Hide()
  757.  
  758.     # Blokada EQ
  759.     def ClickSerwer_Blokada_EQ(self):
  760.         if self.wndBlokadaEQ:
  761.             if self.wndBlokadaEQ.IsShow():
  762.                 self.wndBlokadaEQ.Hide()
  763.             else:
  764.                 self.wndBlokadaEQ.Show()
  765.  
  766.     # Kosz
  767.     def ClickRemoveItem(self):
  768.         if self.wndRemoveItem:
  769.             if self.wndRemoveItem.IsShow():
  770.                 self.wndRemoveItem.Hide()
  771.             else:
  772.                 self.wndRemoveItem.Show()
  773.  
  774.     def OpenPickMoneyDialog(self):
  775.  
  776.         if mouseModule.mouseController.isAttached():
  777.  
  778.             attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  779.             if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():
  780.  
  781.                 if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
  782.                     net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  783.                     snd.PlaySound("sound/ui/money.wav")
  784.  
  785.             mouseModule.mouseController.DeattachObject()
  786.  
  787.         else:
  788.             #curMoney = player.GetElk()
  789.             curMoney = player.GetCurrentGold()
  790.  
  791.             if curMoney <= 0:
  792.                 return
  793.  
  794.             self.dlgPickMoney.SetTitleName("|cffe6d0a2"+localemg.PICK_MONEY_TITLE)
  795.             self.dlgPickMoney.SetAcceptEvent(uimg.__mem_func__(self.OnPickMoney))
  796.             self.dlgPickMoney.Open(curMoney)
  797.             self.dlgPickMoney.SetMax(7) # 인벤토리 990000 제한 버그 수정
  798.  
  799.     def OnPickMoney(self, money):
  800.         mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
  801.  
  802.     def OnPickItem(self, count):
  803.         itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
  804.         selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  805.         mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
  806.  
  807.     def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
  808.         if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)):
  809.             return local
  810.  
  811.         return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
  812.  
  813.     def RefreshBagSlotWindow(self):
  814.         is_activated = 0
  815.         getItemVNum=player.GetItemIndex
  816.         getItemCount=player.GetItemCount
  817.         setItemVNum=self.wndItem.SetItemSlot
  818.         for i in xrange(player.INVENTORY_PAGE_SIZE):
  819.             slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  820.             itemCount = getItemCount(slotNumber)
  821.             if 0 == itemCount:
  822.                 self.wndItem.ClearSlot(i)
  823.                 continue
  824.             elif 1 == itemCount:
  825.                 itemCount = 0
  826.            
  827.             itemVnum = getItemVNum(slotNumber)
  828.             setItemVNum(i, itemVnum, itemCount)
  829.             if itemVnum == 0 and slotNumber in self.liHighlightedItems:
  830.                 self.liHightlightedItems.remove(slotNumber)
  831.             if constInfo.IS_AUTO_POTION(itemVnum):
  832.                 metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  833.                 if slotNumber >= player.INVENTORY_PAGE_SIZE:
  834.                     slotNumber -= player.INVENTORY_PAGE_SIZE
  835.                
  836.                 isActivated = 0 != metinSocket[0]
  837.                 if isActivated:
  838.                     self.wndItem.ActivateSlot(i)
  839.                     potionType = 0;
  840.                     if constInfo.IS_AUTO_POTION_HP(itemVnum):
  841.                         potionType = player.AUTO_POTION_TYPE_HP
  842.                     elif constInfo.IS_AUTO_POTION_SP(itemVnum):
  843.                         potionType = player.AUTO_POTION_TYPE_SP                    
  844.                    
  845.                     usedAmount = int(metinSocket[1])
  846.                     totalAmount = int(metinSocket[2])                  
  847.                     player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
  848.                 else:
  849.                     self.wndItem.DeactivateSlot(i)
  850.                     self.__RefreshHighlights()
  851.             elif constInfo.IS_ACCE_ITEM(itemVnum, 1) == TRUE:
  852.                 metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  853.                 isActivated = metinSocket[0]
  854.                 if isActivated == 1:
  855.                     player.SetAcceInfo(isActivated, i)
  856.                     self.wndItem.ActivateAcceSlot(i)
  857.                 else:
  858.                     self.wndItem.DeactivateAcceSlot(i)
  859.        
  860.         self.wndItem.RefreshSlot()
  861.         if self.wndBelt:
  862.             self.wndBelt.RefreshSlot()
  863.  
  864.     def RefreshEquipSlotWindow(self):
  865.         getItemVNum=player.GetItemIndex
  866.         getItemCount=player.GetItemCount
  867.         setItemVNum=self.wndEquip.SetItemSlot
  868.         for i in xrange(player.EQUIPMENT_PAGE_COUNT):
  869.             slotNumber = player.EQUIPMENT_SLOT_START + i
  870.             itemCount = getItemCount(slotNumber)
  871.             if itemCount <= 1:
  872.                 itemCount = 0
  873.             setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  874.         for i in xrange(item.COSTUME_SLOT_COUNT):
  875.             slotNumber = item.COSTUME_SLOT_START + i
  876.             self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
  877.         for i in xrange(player.NEW_EQUIPMENT_SLOT_MGAMES_C):
  878.             slotNumber = player.NEW_EQUIPMENT_SLOT_MGAMES + i
  879.             itemCount = getItemCount(slotNumber)
  880.             if itemCount <= 1:
  881.                 itemCount = 0
  882.             setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  883.  
  884.         if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  885.             for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
  886.                 slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
  887.                 itemCount = getItemCount(slotNumber)
  888.                 if itemCount <= 1:
  889.                     itemCount = 0
  890.                 setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  891.                 print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)
  892.  
  893.  
  894.         self.wndEquip.RefreshSlot()
  895.        
  896.         if self.wndCostume:
  897.             self.wndCostume.RefreshCostumeSlot()
  898.  
  899.     def RefreshItemSlot(self):
  900.         self.RefreshBagSlotWindow()
  901.         self.RefreshEquipSlotWindow()
  902.  
  903.     def RefreshStatus(self):
  904.         #money = player.GetElk()
  905.         money = player.GetCurrentGold()
  906.         self.wndMoney.SetText("|cffa07970"+localemg.NumberToMoneyString(money))
  907.  
  908.     def SetItemToolTip(self, tooltipItem):
  909.         self.tooltipItem = tooltipItem
  910.  
  911.     def SellItem(self):
  912.         if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
  913.             if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
  914.                 ## 용혼석도 팔리게 하는 기능 추가하면서 인자 type 추가
  915.                 net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY)
  916.                 snd.PlaySound("sound/ui/money.wav")
  917.         self.OnCloseQuestionDialog()
  918.  
  919.     def OnDetachMetinFromItem(self):
  920.         if None == self.questionDialog:
  921.             return
  922.            
  923.         #net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)     
  924.         self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
  925.         self.OnCloseQuestionDialog()
  926.  
  927.     def OnCloseQuestionDialog(self):
  928.         if not self.questionDialog:
  929.             return
  930.        
  931.         self.questionDialog.Close()
  932.         self.questionDialog = None
  933.         constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
  934.  
  935.     ## Slot Event
  936.     def SelectEmptySlot(self, selectedSlotPos):
  937.         if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
  938.             return
  939.  
  940.         selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
  941.  
  942.         if mouseModule.mouseController.isAttached():
  943.  
  944.             attachedSlotType = mouseModule.mouseController.GetAttachedType()
  945.             attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  946.             attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
  947.             attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
  948.  
  949.             if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  950.                 itemCount = player.GetItemCount(attachedSlotPos)
  951.                 attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  952.                 self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
  953.  
  954.                 if item.IsRefineScroll(attachedItemIndex):
  955.                     self.wndItem.SetUseMode(False)
  956.  
  957.             elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
  958.                 mouseModule.mouseController.RunCallBack("INVENTORY")
  959.  
  960.             elif player.SLOT_TYPE_OFFLINE_SHOP == attachedSlotType:
  961.                 mouseModule.mouseController.RunCallBack("INVENTORY")
  962.  
  963.             elif player.SLOT_TYPE_SHOP == attachedSlotType:
  964.                 net.SendShopBuyPacket(attachedSlotPos)
  965.  
  966.             elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:
  967.  
  968.                 if player.ITEM_MONEY == attachedItemIndex:
  969.                     net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  970.                     snd.PlaySound("sound/ui/money.wav")
  971.  
  972.                 else:
  973.                     net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)
  974.  
  975.             elif player.SLOT_TYPE_MALL == attachedSlotType:
  976.                 net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
  977.  
  978.             mouseModule.mouseController.DeattachObject()
  979.  
  980.     def SelectItemSlot(self, itemSlotIndex):
  981.         if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
  982.             return
  983.  
  984.         itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)
  985.  
  986.         if mouseModule.mouseController.isAttached():
  987.             attachedSlotType = mouseModule.mouseController.GetAttachedType()
  988.             attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  989.             attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
  990.  
  991.             itemVnum = player.GetItemIndex(itemSlotIndex)
  992.             item.SelectItem(itemVnum)
  993.             itemType = item.GetItemType()
  994.             itemSubType = item.GetItemSubType()
  995.  
  996.             nook = 0
  997.             if itemType == 2 and itemSubType != 0:
  998.                 nook = 1
  999.             if attachedItemVID == 25001 and itemType >= 1 and itemType <= 2 and nook != 1:
  1000.                     count = 0
  1001.                     Slots = [player.GetItemMetinSocket(itemSlotIndex, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
  1002.                     for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1003.                         if Slots[i] > 20000:
  1004.                             count += 1
  1005.                     if count == 0:
  1006.                         chat.AppendChat(chat.CHAT_TYPE_INFO, "Ten przedmiot nie posiada kamieni dusz!")
  1007.                         mouseModule.mouseController.DeattachObject()
  1008.                         return
  1009.                     else:
  1010.                         import uistonesdialog
  1011.                         self.stones = uistonesdialog.StonesDialog()
  1012.                         self.stones.SetData(itemSlotIndex)
  1013.                         self.stones.Shows()
  1014.                         mouseModule.mouseController.DeattachObject()
  1015.                         return
  1016.  
  1017.             if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  1018.                 self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
  1019.  
  1020.             mouseModule.mouseController.DeattachObject()
  1021.  
  1022.         else:
  1023.  
  1024.             curCursorNum = app.GetCursor()
  1025.             if app.SELL == curCursorNum:
  1026.                 self.__SellItem(itemSlotIndex)
  1027.                
  1028.             elif app.BUY == curCursorNum:
  1029.                 chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.SHOP_BUY_INFO)
  1030.  
  1031.             elif app.IsPressed(app.DIK_LALT):
  1032.                 link = player.GetItemLink(itemSlotIndex)
  1033.                 ime.PasteString(link)
  1034.  
  1035.             elif app.IsPressed(app.DIK_LSHIFT):
  1036.                 itemCount = player.GetItemCount(itemSlotIndex)
  1037.                
  1038.                 if itemCount > 1:
  1039.                     self.dlgPickMoney.SetTitleName(localemg.PICK_ITEM_TITLE)
  1040.                     self.dlgPickMoney.SetAcceptEvent(uimg.__mem_func__(self.OnPickItem))
  1041.                     self.dlgPickMoney.Open(itemCount)
  1042.                     self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
  1043.                 #else:
  1044.                     #selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  1045.                     #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)
  1046.  
  1047.             elif app.IsPressed(app.DIK_LCONTROL):
  1048.                 itemIndex = player.GetItemIndex(itemSlotIndex)
  1049.  
  1050.                 if True == item.CanAddToQuickSlotItem(itemIndex):
  1051.                     player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
  1052.                 else:
  1053.                     chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.QUICKSLOT_REGISTER_DISABLE_ITEM)
  1054.  
  1055.             else:
  1056.                 selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  1057.                 itemCount = player.GetItemCount(itemSlotIndex)
  1058.                 mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
  1059.                
  1060.                 if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):             
  1061.                     self.wndItem.SetUseMode(True)
  1062.                 else:                  
  1063.                     self.wndItem.SetUseMode(False)
  1064.  
  1065.                 snd.PlaySound("sound/ui/pick.wav")
  1066.  
  1067.     def UseTransportBox(self):
  1068.         self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
  1069.         self.OnCloseQuestionDialog()
  1070.    
  1071.     def UseProtein(self):
  1072.         self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
  1073.         self.OnCloseQuestionDialog()
  1074.        
  1075.  
  1076.     def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
  1077.         if srcItemSlotPos == dstItemSlotPos:
  1078.             return
  1079.  
  1080.         if srcItemVID >= 35301 and srcItemVID <= 35308 and player.GetItemIndex(dstItemSlotPos) == 35152:
  1081.             self.questionDialog = uiCommon.QuestionDialog()
  1082.             self.questionDialog.SetText("Vrei sa adaugi insotitorul in cutia de transport?")
  1083.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseTransportBox))
  1084.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1085.             self.questionDialog.Open()
  1086.             self.questionDialog.src = srcItemSlotPos
  1087.             self.questionDialog.dst = dstItemSlotPos
  1088.            
  1089.         if srcItemVID == 35151 and player.GetItemIndex(dstItemSlotPos) >= 35301 and player.GetItemIndex(dstItemSlotPos) <= 35308:
  1090.             self.questionDialog = uiCommon.QuestionDialog()
  1091.             self.questionDialog.SetText("Vrei sa hranesti insotitorul?")
  1092.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseProtein))
  1093.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1094.             self.questionDialog.Open()
  1095.             self.questionDialog.src = srcItemSlotPos
  1096.             self.questionDialog.dst = dstItemSlotPos
  1097.  
  1098.         if srcItemVID >= 36301 and srcItemVID <= 36304 and player.GetItemIndex(dstItemSlotPos) == 36152:
  1099.             self.questionDialog = uiCommon.QuestionDialog()
  1100.             self.questionDialog.SetText("Vrei sa adaugi insotitorul in cutia de transport?")
  1101.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseTransportBox))
  1102.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1103.             self.questionDialog.Open()
  1104.             self.questionDialog.src = srcItemSlotPos
  1105.             self.questionDialog.dst = dstItemSlotPos
  1106.            
  1107.         if srcItemVID == 36151 and player.GetItemIndex(dstItemSlotPos) >= 36301 and player.GetItemIndex(dstItemSlotPos) <= 36304:
  1108.             self.questionDialog = uiCommon.QuestionDialog()
  1109.             self.questionDialog.SetText("Vrei sa hranesti insotitorul?")
  1110.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.UseProtein))
  1111.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1112.             self.questionDialog.Open()
  1113.             self.questionDialog.src = srcItemSlotPos
  1114.             self.questionDialog.dst = dstItemSlotPos
  1115.  
  1116.         elif item.IsRefineScroll(srcItemVID):
  1117.             self.RefineItem(srcItemSlotPos, dstItemSlotPos)
  1118.             self.wndItem.SetUseMode(False)
  1119.  
  1120.         elif item.IsMetin(srcItemVID):
  1121.             self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)
  1122.  
  1123.         elif item.IsDetachScroll(srcItemVID):
  1124.             self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)
  1125.  
  1126.         elif item.IsKey(srcItemVID):
  1127.             self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)         
  1128.  
  1129.         elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1130.             self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1131.  
  1132.         elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
  1133.             self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)         
  1134.  
  1135.         else:
  1136.             #snd.PlaySound("sound/ui/drop.wav")
  1137.  
  1138.             ## 이동시킨 곳이 장착 슬롯일 경우 아이템을 사용해서 장착 시킨다 - [levites]
  1139.             if player.IsEquipmentSlot(dstItemSlotPos):
  1140.  
  1141.                 ## 들고 있는 아이템이 장비일때만
  1142.                 if item.IsEquipmentVID(srcItemVID):
  1143.                     self.__UseItem(srcItemSlotPos)
  1144.  
  1145.             else:
  1146.                 self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
  1147.                 #net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)
  1148.  
  1149.     def __SellItem(self, itemSlotPos):
  1150.         if not player.IsEquipmentSlot(itemSlotPos):
  1151.             self.sellingSlotNumber = itemSlotPos
  1152.             itemIndex = player.GetItemIndex(itemSlotPos)
  1153.             itemCount = player.GetItemCount(itemSlotPos)
  1154.            
  1155.            
  1156.             self.sellingSlotitemIndex = itemIndex
  1157.             self.sellingSlotitemCount = itemCount
  1158.  
  1159.             item.SelectItem(itemIndex)
  1160.             ## 안티 플레그 검사 빠져서 추가
  1161.             ## 20140220
  1162.             if item.IsAntiFlag(item.ANTIFLAG_SELL):
  1163.                 popup = uiCommon.PopupDialog()
  1164.                 popup.SetText(localemg.SHOP_CANNOT_SELL_ITEM)
  1165.                 popup.SetAcceptEvent(self.__OnClosePopupDialog)
  1166.                 popup.Open()
  1167.                 self.popup = popup
  1168.                 return
  1169.  
  1170.             itemPrice = item.GetISellItemPrice()
  1171.  
  1172.             if item.Is1GoldItem():
  1173.                 itemPrice = itemCount / itemPrice / 5
  1174.             else:
  1175.                 itemPrice = itemPrice * itemCount / 5
  1176.  
  1177.             item.GetItemName(itemIndex)
  1178.             itemName = item.GetItemName()
  1179.  
  1180.             self.questionDialog = uiCommon.QuestionDialog()
  1181.             self.questionDialog.SetText(localemg.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
  1182.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.SellItem))
  1183.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1184.             self.questionDialog.Open()
  1185.             self.questionDialog.count = itemCount
  1186.        
  1187.             constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1188.  
  1189.     def __OnClosePopupDialog(self):
  1190.         self.pop = None
  1191.  
  1192.     def RefineItem(self, scrollSlotPos, targetSlotPos):
  1193.  
  1194.         scrollIndex = player.GetItemIndex(scrollSlotPos)
  1195.         targetIndex = player.GetItemIndex(targetSlotPos)
  1196.  
  1197.         if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
  1198.             return
  1199.  
  1200.         ###########################################################
  1201.         self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
  1202.         #net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
  1203.         return
  1204.         ###########################################################
  1205.  
  1206.         ###########################################################
  1207.         #net.SendRequestRefineInfoPacket(targetSlotPos)
  1208.         #return
  1209.         ###########################################################
  1210.  
  1211.         result = player.CanRefine(scrollIndex, targetSlotPos)
  1212.  
  1213.         if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
  1214.             #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1215.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_NO_MORE_SOCKET)
  1216.  
  1217.         elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
  1218.             #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1219.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_NEED_BETTER_SCROLL)
  1220.  
  1221.         elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
  1222.             #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1223.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_SOCKET_DISABLE_ITEM)
  1224.  
  1225.         elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
  1226.             #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1227.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
  1228.  
  1229.         elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
  1230.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_EQUIP_ITEM)
  1231.  
  1232.         if player.REFINE_OK != result:
  1233.             return
  1234.  
  1235.         self.refineDialog.Open(scrollSlotPos, targetSlotPos)
  1236.  
  1237.     def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
  1238.         scrollIndex = player.GetItemIndex(scrollSlotPos)
  1239.         targetIndex = player.GetItemIndex(targetSlotPos)
  1240.         if constInfo.IS_ACCE_ITEM_DETACH(scrollIndex) == TRUE:
  1241.             item.SelectItem(targetIndex)
  1242.             if item.GetItemSubType() == item.COSTUME_TYPE_ACCE:
  1243.                 if self.GetAcceAttribute(targetSlotPos) == 0:
  1244.                     return
  1245.                
  1246.                 self.questionDialog = uiCommon.QuestionDialog()
  1247.                 self.questionDialog.SetText(localemg.ACCE_DO_YOU_REMOVE_ATTR)
  1248.                 self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.OnDetachMetinFromItem))
  1249.                 self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1250.                 self.questionDialog.Open()
  1251.                 self.questionDialog.sourcePos = scrollSlotPos
  1252.                 self.questionDialog.targetPos = targetSlotPos
  1253.             else:
  1254.                 return
  1255.         else:
  1256.             if not player.CanDetach(scrollIndex, targetSlotPos):
  1257.                 chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
  1258.                 return
  1259.        
  1260.             self.questionDialog = uiCommon.QuestionDialog()
  1261.             self.questionDialog.SetText(localemg.REFINE_DO_YOU_SEPARATE_METIN)
  1262.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.OnDetachMetinFromItem))
  1263.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.OnCloseQuestionDialog))
  1264.             self.questionDialog.Open()
  1265.             self.questionDialog.sourcePos = scrollSlotPos
  1266.             self.questionDialog.targetPos = targetSlotPos
  1267.  
  1268.     def AttachMetinToItem(self, metinSlotPos, targetSlotPos):
  1269.         metinIndex = player.GetItemIndex(metinSlotPos)
  1270.         targetIndex = player.GetItemIndex(targetSlotPos)
  1271.  
  1272.         item.SelectItem(metinIndex)
  1273.         itemName = item.GetItemName()
  1274.  
  1275.         result = player.CanAttachMetin(metinIndex, targetSlotPos)
  1276.  
  1277.         if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
  1278.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
  1279.  
  1280.         if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
  1281.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_NO_SOCKET(itemName))
  1282.  
  1283.         elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
  1284.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
  1285.  
  1286.         elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
  1287.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.REFINE_FAILURE_EQUIP_ITEM)
  1288.  
  1289.         if player.ATTACH_METIN_OK != result:
  1290.             return
  1291.  
  1292.         self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
  1293.  
  1294.  
  1295.        
  1296.     def OverOutItem(self):
  1297.         self.wndItem.SetUsableItem(False)
  1298.         if None != self.tooltipItem:
  1299.             self.tooltipItem.HideToolTip()
  1300.  
  1301.     def OverInItem(self, overSlotPos):
  1302.         overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
  1303.         self.wndItem.SetUsableItem(False)
  1304.        
  1305.         if overSlotPos in self.liHighlightedItems:
  1306.             self.liHighlightedItems.remove(overSlotPos)
  1307.             self.wndItem.DeactivateSlot(overSlotPos)
  1308.        
  1309.         if mouseModule.mouseController.isAttached():
  1310.             attachedItemType = mouseModule.mouseController.GetAttachedType()
  1311.             if player.SLOT_TYPE_INVENTORY == attachedItemType:
  1312.                
  1313.                 attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1314.                 attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
  1315.                
  1316.                 if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):
  1317.                     self.wndItem.SetUsableItem(True)
  1318.                     self.ShowToolTip(overSlotPos)
  1319.                     return
  1320.        
  1321.         self.ShowToolTip(overSlotPos)
  1322.  
  1323.  
  1324.     def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
  1325.         "다른 아이템에 사용할 수 있는 아이템인가?"
  1326.         if srcItemVNum >= 35301 and srcItemVNum <= 35308:
  1327.             return True
  1328.        
  1329.         if srcItemVNum == 35151:
  1330.             return True
  1331.  
  1332.         if srcItemVNum >= 36301 and srcItemVNum <= 36304:
  1333.             return True
  1334.        
  1335.         if srcItemVNum == 36151:
  1336.             return True
  1337.  
  1338.         if item.IsRefineScroll(srcItemVNum):
  1339.             return True
  1340.         elif item.IsMetin(srcItemVNum):
  1341.             return True
  1342.         elif item.IsDetachScroll(srcItemVNum):
  1343.             return True
  1344.         elif item.IsKey(srcItemVNum):
  1345.             return True
  1346.         elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1347.             return True
  1348.         else:
  1349.             if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:
  1350.                 return True
  1351.            
  1352.         return False
  1353.  
  1354.     def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
  1355. #       "대상 아이템에 사용할 수 있는가?"
  1356.  
  1357.         if srcItemVNum >= 35301 and  srcItemVNum <= 35308 and player.GetItemIndex(dstSlotPos) == 35152:
  1358.             return True    
  1359.        
  1360.         if srcItemVNum == 35151 and player.GetItemIndex(dstSlotPos) >= 35301 and player.GetItemIndex(dstSlotPos) <= 35308
  1361.             return True
  1362.  
  1363.         if srcItemVNum >= 36301 and  srcItemVNum <= 36304 and player.GetItemIndex(dstSlotPos) == 36152:
  1364.             return True    
  1365.        
  1366.         if srcItemVNum == 36151 and player.GetItemIndex(dstSlotPos) >= 36301 and player.GetItemIndex(dstSlotPos) <= 36304
  1367.             return True
  1368.  
  1369.         if srcSlotPos == dstSlotPos:
  1370.             return False
  1371.  
  1372.         if item.IsRefineScroll(srcItemVNum):
  1373.             if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
  1374.                 return True
  1375.         elif item.IsMetin(srcItemVNum):
  1376.             if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
  1377.                 return True
  1378.         elif item.IsDetachScroll(srcItemVNum):
  1379.             if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):
  1380.                 return True
  1381.         elif item.IsKey(srcItemVNum):
  1382.             if player.CanUnlock(srcItemVNum, dstSlotPos):
  1383.                 return True
  1384.  
  1385.         elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1386.             return True
  1387.  
  1388.         else:
  1389.             useType=item.GetUseType(srcItemVNum)
  1390.  
  1391.             if "USE_CLEAN_SOCKET" == useType:
  1392.                 if self.__CanCleanBrokenMetinStone(dstSlotPos):
  1393.                     return True
  1394.             elif "USE_CHANGE_ATTRIBUTE" == useType:
  1395.                 if self.__CanChangeItemAttrList(dstSlotPos):
  1396.                     return True
  1397.             elif "USE_ADD_ATTRIBUTE" == useType:
  1398.                 if self.__CanAddItemAttr(dstSlotPos):
  1399.                     return True
  1400.             elif "USE_ADD_ATTRIBUTE2" == useType:
  1401.                 if self.__CanAddItemAttr(dstSlotPos):
  1402.                     return True
  1403.             elif "USE_ADD_ACCESSORY_SOCKET" == useType:
  1404.                 if self.__CanAddAccessorySocket(dstSlotPos):
  1405.                     return True
  1406.             elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType:                               
  1407.                 if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum):
  1408.                     return TRUE;
  1409.             elif "USE_PUT_INTO_BELT_SOCKET" == useType:                            
  1410.                 dstItemVNum = player.GetItemIndex(dstSlotPos)
  1411.                 print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum
  1412.  
  1413.                 item.SelectItem(dstItemVNum)
  1414.        
  1415.                 if item.ITEM_TYPE_BELT == item.GetItemType():
  1416.                     return True
  1417.  
  1418.         return False
  1419.  
  1420.     def __CanCleanBrokenMetinStone(self, dstSlotPos):
  1421.         dstItemVNum = player.GetItemIndex(dstSlotPos)
  1422.         if dstItemVNum == 0:
  1423.             return False
  1424.  
  1425.         item.SelectItem(dstItemVNum)
  1426.        
  1427.         if item.ITEM_TYPE_WEAPON != item.GetItemType():
  1428.             return False
  1429.  
  1430.         for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1431.             if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
  1432.                 return True
  1433.  
  1434.         return False
  1435.  
  1436.     def __CanChangeItemAttrList(self, dstSlotPos):
  1437.         dstItemVNum = player.GetItemIndex(dstSlotPos)
  1438.         if dstItemVNum == 0:
  1439.             return False
  1440.  
  1441.         item.SelectItem(dstItemVNum)
  1442.        
  1443.         if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):  
  1444.             return False
  1445.  
  1446.         for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1447.             if player.GetItemAttribute(dstSlotPos, i) != 0:
  1448.                 return True
  1449.  
  1450.         return False
  1451.  
  1452.     def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
  1453.         dstItemVNum = player.GetItemIndex(dstSlotPos)
  1454.         if dstItemVNum == 0:
  1455.             return False
  1456.  
  1457.         item.SelectItem(dstItemVNum)
  1458.  
  1459.         if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1460.             return False
  1461.  
  1462.         if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1463.             return False
  1464.  
  1465.         curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1466.         maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1467.  
  1468.         if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):
  1469.             return False
  1470.        
  1471.         if curCount>=maxCount:
  1472.             return False
  1473.  
  1474.         return True
  1475.  
  1476.     def __CanAddAccessorySocket(self, dstSlotPos):
  1477.         dstItemVNum = player.GetItemIndex(dstSlotPos)
  1478.         if dstItemVNum == 0:
  1479.             return False
  1480.  
  1481.         item.SelectItem(dstItemVNum)
  1482.  
  1483.         if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1484.             return False
  1485.  
  1486.         if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1487.             return False
  1488.  
  1489.         curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1490.         maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1491.        
  1492.         ACCESSORY_SOCKET_MAX_SIZE = 3
  1493.         if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
  1494.             return False
  1495.  
  1496.         return True
  1497.  
  1498.     def __CanAddItemAttr(self, dstSlotPos):
  1499.         dstItemVNum = player.GetItemIndex(dstSlotPos)
  1500.         if dstItemVNum == 0:
  1501.             return False
  1502.  
  1503.         item.SelectItem(dstItemVNum)
  1504.        
  1505.         if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):  
  1506.             return False
  1507.            
  1508.         attrCount = 0
  1509.         for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1510.             if player.GetItemAttribute(dstSlotPos, i) != 0:
  1511.                 attrCount += 1
  1512.  
  1513.         if attrCount<4:
  1514.             return True
  1515.                                
  1516.         return False
  1517.  
  1518.     def ShowToolTip(self, slotIndex):
  1519.         if None != self.tooltipItem:
  1520.             self.tooltipItem.SetInventoryItem(slotIndex)
  1521.  
  1522.     def OnTop(self):
  1523.         if None != self.tooltipItem:
  1524.             self.tooltipItem.SetTop()
  1525.  
  1526.     def OnPressEscapeKey(self):
  1527.         self.Close()
  1528.         return True
  1529.  
  1530.     def UseItemSlot(self, slotIndex):
  1531.         curCursorNum = app.GetCursor()
  1532.         if app.SELL == curCursorNum:
  1533.             return
  1534.  
  1535.         if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
  1536.             return
  1537.  
  1538.         slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
  1539.  
  1540.         if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1541.             if self.wndDragonSoulRefine.IsShow():
  1542.                 self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
  1543.                 return
  1544.  
  1545.         self.__UseItem(slotIndex)
  1546.         mouseModule.mouseController.DeattachObject()
  1547.         self.OverOutItem()
  1548.  
  1549.     def __UseItem(self, slotIndex):
  1550.         ItemVNum = player.GetItemIndex(slotIndex)
  1551.         item.SelectItem(ItemVNum)
  1552.         if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
  1553.             self.questionDialog = uiCommon.QuestionDialog()
  1554.             self.questionDialog.SetText(localemg.INVENTORY_REALLY_USE_ITEM)
  1555.             self.questionDialog.SetAcceptEvent(uimg.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
  1556.             self.questionDialog.SetCancelEvent(uimg.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
  1557.             self.questionDialog.Open()
  1558.             self.questionDialog.slotIndex = slotIndex
  1559.        
  1560.             constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1561.  
  1562.         else:
  1563.             self.__SendUseItemPacket(slotIndex)
  1564.             #net.SendItemUsePacket(slotIndex)  
  1565.  
  1566.     def __UseItemQuestionDialog_OnCancel(self):
  1567.         self.OnCloseQuestionDialog()
  1568.  
  1569.     def __UseItemQuestionDialog_OnAccept(self):
  1570.         self.__SendUseItemPacket(self.questionDialog.slotIndex)
  1571.         self.OnCloseQuestionDialog()       
  1572.  
  1573.     def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
  1574.         # 개인상점 열고 있는 동안 아이템 사용 방지
  1575.         if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1576.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1577.             return
  1578.        
  1579.         if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1580.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
  1581.             return
  1582.            
  1583.         if (uiOfflineShop.IsEditingOfflineShop()):
  1584.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
  1585.             return
  1586.  
  1587.         net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
  1588.  
  1589.     def __SendUseItemPacket(self, slotPos):
  1590.         # 개인상점 열고 있는 동안 아이템 사용 방지
  1591.         if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1592.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1593.             return
  1594.        
  1595.         if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1596.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
  1597.             return
  1598.            
  1599.         if (uiOfflineShop.IsEditingOfflineShop()):
  1600.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.USE_ITEM_FAILURE_OFFLINE_SHOP)
  1601.             return
  1602.  
  1603.         net.SendItemUsePacket(slotPos)
  1604.    
  1605.     def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
  1606.         # 개인상점 열고 있는 동안 아이템 사용 방지
  1607.         if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1608.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
  1609.             return
  1610.        
  1611.         if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
  1612.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
  1613.             return
  1614.            
  1615.         if (uiOfflineShop.IsEditingOfflineShop()):
  1616.             chat.AppendChat(chat.CHAT_TYPE_INFO, localemg.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
  1617.             return
  1618.  
  1619.         net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
  1620.    
  1621.     def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
  1622.         if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1623.             self.wndDragonSoulRefine = wndDragonSoulRefine
  1624.            
  1625.     def OnMoveWindow(self, x, y):
  1626. #       print "Inventory Global Pos : ", self.GetGlobalPosition()
  1627.         if self.wndBelt:
  1628. #           print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
  1629.             self.wndBelt.AdjustPositionAndSize()
  1630.  
  1631.     def GetAcceAttribute(self, srcSlotPos):
  1632.         result = 0
  1633.         attrSlot = []
  1634.         for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
  1635.             attrSlot.append(player.GetItemAttribute(srcSlotPos, i))
  1636.            
  1637.         if 0 != attrSlot:
  1638.             for c in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
  1639.                 type = attrSlot[c][0]
  1640.                 if type != 0:
  1641.                     result = result + 1
  1642.        
  1643.         return result
  1644.  
  1645.     def HighlightSlot(self, slot):
  1646.         if not slot in self.liHighlightedItems:
  1647.             self.liHighlightedItems.append(slot)
  1648.         #   chat.AppendChat(chat.CHAT_TYPE_INFO, "podswietlenie  " + str(slot))
  1649.    
  1650.     def __RefreshHighlights(self):
  1651.         for i in xrange(player.INVENTORY_PAGE_SIZE):
  1652.             slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  1653.             if slotNumber in self.liHighlightedItems:
  1654.                 self.wndItem.ActivateSlot(i)
  1655.             #   chat.AppendChat(chat.CHAT_TYPE_INFO, "refresgh  " + str(i))
Add Comment
Please, Sign In to add comment