Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2023
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 87.46 KB | None | 0 0
  1. if __USE_DYNAMIC_MODULE__:
  2. import pyapi
  3.  
  4. app = __import__(pyapi.GetModuleName("app"))
  5. player = __import__(pyapi.GetModuleName("player"))
  6. net = __import__(pyapi.GetModuleName("net"))
  7.  
  8. import ui
  9. import mouseModule
  10. import snd
  11. import item
  12. import chat
  13. import grp
  14. import uiScriptLocale
  15. import uiRefine
  16. import uiAttachMetin
  17. import uiPickMoney
  18. import uiCommon
  19. import uiToolTip
  20. import uiPrivateShopBuilder
  21. import localeInfo
  22. import constInfo
  23. import ime
  24. import wndMgr
  25. import exchange
  26.  
  27. if app.ENABLE_RENEWAL_OFFLINESHOP:
  28. import uiOfflineShopBuilder
  29. import shop
  30.  
  31. if app.ENABLE_QUICK_SELL_ITEM:
  32. import shop
  33.  
  34. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  35. import acce
  36.  
  37. ITEM_FLAG_APPLICABLE = 1 << 14
  38.  
  39. class InventoryWindowPotions(ui.ScriptWindow):
  40. def __init__(self, wndInventory):
  41. import exception
  42. if not wndInventory:
  43. exception.Abort("wndInventory parameter must be set to InventoryWindow")
  44. return
  45.  
  46. ui.ScriptWindow.__init__(self)
  47.  
  48. self.isLoaded = 0
  49. self.wndInventory = wndInventory;
  50.  
  51. self.UseInventoryPotions = None
  52.  
  53. self.__LoadWindow()
  54.  
  55. def __del__(self):
  56. ui.ScriptWindow.__del__(self)
  57.  
  58. def Show(self):
  59. self.__LoadWindow()
  60. self.RefreshSlot()
  61.  
  62. ui.ScriptWindow.Show(self)
  63.  
  64. def Close(self):
  65. self.Hide()
  66.  
  67. def __LoadWindow(self):
  68. if self.isLoaded == 1:
  69. return
  70.  
  71. self.isLoaded = 1
  72.  
  73. try:
  74. pyScrLoader = ui.PythonScriptLoader()
  75. pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindowPotions.py")
  76. except:
  77. import exception
  78. exception.Abort("InventoryWindowPotions.LoadWindow.LoadObject")
  79.  
  80. try:
  81. wndEquip = self.GetChild("GridTable")
  82. self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
  83. self.UseInventoryPotions = self.GetChild("UseInventoryPotions")
  84.  
  85. except:
  86. import exception
  87. exception.Abort("InventoryWindowPotions.LoadWindow.BindObject")
  88.  
  89. self.UseInventoryPotions.SetEvent(self.ActivateAll)
  90.  
  91. wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
  92. wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
  93. wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  94. wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  95. wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
  96. wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
  97. self.wndEquip = wndEquip
  98.  
  99. def RefreshSlot(self):
  100. getItemVNum = player.GetItemIndex
  101. getItemCount = player.GetItemCount
  102. setItemVNum = self.wndEquip.SetItemSlot
  103.  
  104. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  105. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  106.  
  107. itemCount = getItemCount(slotNumber)
  108. if itemCount <= 1:
  109. itemCount = 0
  110.  
  111. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  112.  
  113. self.wndEquip.RefreshSlot()
  114.  
  115. def ActivateAll(self):
  116. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  117. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  118. net.SendItemUsePacket(slotNumber)
  119.  
  120. def OnPressEscapeKey(self):
  121. self.Close()
  122. return TRUE
  123.  
  124. class InventoryWindow(ui.ScriptWindow):
  125.  
  126. # SIDEBAR_TELEPORT = 0
  127. # SIDEBAR_SPECIAL_DEP = 1
  128. # SIDEBAR_OFFLINE_SHOP = 2
  129. # SIDEBAR_SWITCHBOT = 3
  130. # SIDEBAR_POTIONS = 4
  131. # SIDEBAR_WIKIPEDIA = 5
  132.  
  133. # SIDEBAR_BTN_ICONS = {
  134. # SIDEBAR_TELEPORT : "d:/ymir work/ui/game/inventory/teleport_1.tga",
  135. # SIDEBAR_SPECIAL_DEP : "d:/ymir work/ui/game/inventory/special_1.tga",
  136. # SIDEBAR_OFFLINE_SHOP : "d:/ymir work/ui/game/inventory/off_shop_1.tga",
  137. # SIDEBAR_SWITCHBOT : "d:/ymir work/ui/game/inventory/switchbot_1.tga",
  138. # SIDEBAR_POTIONS : "d:/ymir work/ui/game/inventory/potions_1.tga",
  139. # SIDEBAR_WIKIPEDIA : "d:/ymir work/ui/game/inventory/wiki_1.tga",
  140. # }
  141.  
  142. # SIDEBAR_BTN_ICONS_OVER = {
  143. # SIDEBAR_TELEPORT : "d:/ymir work/ui/game/inventory/teleport_2.tga",
  144. # SIDEBAR_SPECIAL_DEP : "d:/ymir work/ui/game/inventory/special_2.tga",
  145. # SIDEBAR_OFFLINE_SHOP : "d:/ymir work/ui/game/inventory/off_shop_2.tga",
  146. # SIDEBAR_SWITCHBOT : "d:/ymir work/ui/game/inventory/switchbot_2.tga",
  147. # SIDEBAR_POTIONS : "d:/ymir work/ui/game/inventory/potions_2.tga",
  148. # SIDEBAR_WIKIPEDIA : "d:/ymir work/ui/game/inventory/wiki_2.tga",
  149. # }
  150.  
  151. # SIDEBAR_BTN_ICONS_DOWN = {
  152. # SIDEBAR_TELEPORT : "d:/ymir work/ui/game/inventory/teleport_3.tga",
  153. # SIDEBAR_SPECIAL_DEP : "d:/ymir work/ui/game/inventory/special_3.tga",
  154. # SIDEBAR_OFFLINE_SHOP : "d:/ymir work/ui/game/inventory/off_shop_3.tga",
  155. # SIDEBAR_SWITCHBOT : "d:/ymir work/ui/game/inventory/switchbot_3.tga",
  156. # SIDEBAR_POTIONS : "d:/ymir work/ui/game/inventory/potions_3.tga",
  157. # SIDEBAR_WIKIPEDIA : "d:/ymir work/ui/game/inventory/wiki_3.tga",
  158. # }
  159.  
  160. # SIDEBAR_BTN_MAX_NUM = 6
  161.  
  162. USE_TYPE_TUPLE = (
  163. "USE_CLEAN_SOCKET",
  164. "USE_CHANGE_ATTRIBUTE",
  165. "USE_ADD_ATTRIBUTE",
  166. "USE_ADD_ATTRIBUTE2",
  167. "USE_ADD_ACCESSORY_SOCKET",
  168. "USE_PUT_INTO_ACCESSORY_SOCKET",
  169. "USE_PUT_INTO_BELT_SOCKET",
  170. "USE_PUT_INTO_RING_SOCKET"
  171. )
  172.  
  173. if app.ENABLE_BONUS_COSTUME_SYSTEM:
  174. USE_TYPE_TUPLE += ("USE_CHANGE_COSTUME_ATTR", "USE_RESET_COSTUME_ATTR")
  175.  
  176. if app.ENABLE_AURA_COSTUME_SYSTEM:
  177. USE_TYPE_TUPLE += ("USE_PUT_INTO_AURA_SOCKET",)
  178.  
  179. questionDialog = None
  180. tooltipItem = None
  181. dlgPickMoney = None
  182. wndPotions = None
  183. interface = None
  184.  
  185. if app.ENABLE_GROWTH_PET_SYSTEM:
  186. petHatchingWindow = None
  187. petFeedWindow = None
  188. petNameChangeWindow = None
  189.  
  190. sellingSlotNumber = -1
  191. isLoaded = 0
  192.  
  193. equip_info = [
  194. [item.EQUIPMENT_BODY, 39, 37, 32, 64, "Armor"],
  195. [item.EQUIPMENT_HEAD, 39, 2, 32, 32, "Head"],
  196. [item.EQUIPMENT_SHOES, 39, 145, 32, 32, "Shoes"],
  197. [item.EQUIPMENT_WRIST, 75, 67, 32, 32, "Wrist"],
  198. [item.EQUIPMENT_WEAPON, 3, 3, 32, 96, "Weapon"],
  199. [item.EQUIPMENT_NECK, 114, 67, 32, 32, "Necklace"],
  200. [item.EQUIPMENT_EAR, 114, 35, 32, 32, "Earrings"],
  201. [item.EQUIPMENT_UNIQUE1, 2, 145, 32, 32, "Unique"],
  202. [item.EQUIPMENT_UNIQUE2, 75, 145, 32, 32, "Unique"],
  203. [item.EQUIPMENT_ARROW, 114, 2, 32, 32, "Arrow"],
  204. [item.EQUIPMENT_SHIELD, 75, 35, 32, 32, "Shield"],
  205. [item.EQUIPMENT_BELT, 39, 106, 32, 32, "Belt"],
  206. ]
  207.  
  208. costume_info = [
  209. [item.COSTUME_SLOT_HAIR, 56, 28, 32, 32, "Hairstyle"],
  210. [item.COSTUME_SLOT_BODY, 56, 74, 32, 64, "Costume"],
  211. [item.COSTUME_SLOT_ACCE, 107, 9, 32, 32, "Acce"],
  212. [item.COSTUME_SLOT_WEAPON, 8, 13, 32, 96, "Weapon"],
  213. [item.COSTUME_SLOT_MOUNT, 107, 53, 32, 32, "Mount Skin"],
  214. [item.COSTUME_SLOT_PET, 106, 95, 32, 32, "Pet Skin"],
  215. [item.COSTUME_SLOT_AURA, 106, 137, 32, 32, "Aura"],
  216. ]
  217.  
  218. rings_info = [
  219. [item.EQUIPMENT_RING1, 9, 45, 32, 32, "Ring 1"],
  220. [item.EQUIPMENT_RING2, 59, 45, 32, 32, "Ring 2"],
  221. [item.EQUIPMENT_PENDANT, 109, 45, 32, 32, "Pendant"],
  222. [item.EQUIPMENT_MOUNT, 9, 103, 32, 32, "Mount"],
  223. [item.EQUIPMENT_PET, 59, 103, 32, 32, "Pet"],
  224. [item.EQUIPMENT_TITLE, 109, 103, 32, 32, "Title"],
  225. ]
  226.  
  227. def __init__(self):
  228. self.wndExpandedMoneyBar = None
  229.  
  230. ui.ScriptWindow.__init__(self)
  231.  
  232. self.inventoryPageIndex = 0
  233. self.equipmentPageIndex = 0
  234.  
  235. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  236. self.visibleButtonList = []
  237.  
  238. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  239. self.wndAcceCombine = None
  240. self.wndAcceAbsorption = None
  241.  
  242. # self.sidebarButtons = []
  243.  
  244. # self.__BuildSidebar()
  245.  
  246. self.__LoadWindow()
  247.  
  248. def __del__(self):
  249. ui.ScriptWindow.__del__(self)
  250. self.wndExpandedMoneyBar = None
  251.  
  252. def Show(self):
  253. self.__LoadWindow()
  254.  
  255. ui.ScriptWindow.Show(self)
  256.  
  257. if self.wndExpandedMoneyBar:
  258. self.wndExpandedMoneyBar.Open()
  259.  
  260. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  261. self.RefreshVisibleCostume()
  262.  
  263. # self.__ShowSidebar()
  264.  
  265. def BindInterfaceClass(self, interface):
  266. self.interface = interface
  267.  
  268. def __LoadWindow(self):
  269. if self.isLoaded == 1:
  270. return
  271.  
  272. self.isLoaded = 1
  273.  
  274. try:
  275. pyScrLoader = ui.PythonScriptLoader()
  276. pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
  277. except:
  278. import exception
  279. exception.Abort("InventoryWindow.LoadWindow.LoadObject")
  280.  
  281. try:
  282. wndItem = self.GetChild("ItemSlot")
  283. wndBase = self.GetChild("Equipment_Base")
  284. self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
  285.  
  286. if app.ENABLE_SORT_INVENTORY:
  287. self.sortInventory = self.GetChild2("SortInventoryButton")
  288.  
  289. self.shopButton = self.GetChild2("ShopButton")
  290. self.switchbotButton = self.GetChild2("SwitchbotButton")
  291. self.specialStorageButton = self.GetChild2("SpecialStorageButton")
  292.  
  293. self.inventoryTab = []
  294. for i in xrange(player.INVENTORY_PAGE_COUNT):
  295. self.inventoryTab.append(self.GetChild("Inventory_Tab_%02d" % (i+1)))
  296.  
  297. self.equipmentTab = []
  298. for i in xrange(3):
  299. self.equipmentTab.append(self.GetChild("Equipment_Tab_%02d" % (i+1)))
  300.  
  301. self.equipmentTabText = []
  302. for i in xrange(3):
  303. self.equipmentTabText.append(self.GetChild("Equipment_Tab_%02d_Print" % (i+1)))
  304.  
  305. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  306. self.visibleButtonList.append(self.GetChild("CostumeBodyButton"))
  307. self.visibleButtonList.append(self.GetChild("CostumeHairButton"))
  308.  
  309. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  310. self.visibleButtonList.append(self.GetChild("CostumeAcceButton"))
  311.  
  312. if app.ENABLE_WEAPON_COSTUME_SYSTEM:
  313. self.visibleButtonList.append(self.GetChild("CostumeWeaponButton"))
  314.  
  315. if app.ENABLE_AURA_COSTUME_SYSTEM:
  316. self.visibleButtonList.append(self.GetChild("CostumeAuraButton"))
  317.  
  318. if app.ENABLE_PICKUP_ITEM_EFFECT:
  319. self.listHighlightedSlot = []
  320.  
  321. if app.ENABLE_GROWTH_PET_SYSTEM:
  322. self.PetItemQuestionDlg = uiCommon.QuestionDialog("thin")
  323. self.PetItemQuestionDlg.Close()
  324.  
  325. self.PetSkillDelDlg = uiCommon.QuestionDialog2()
  326. self.PetSkillDelDlg.Close()
  327. self.PetSkillAllDelBookIndex = -1
  328.  
  329. self.dlgQuestion = uiCommon.QuestionDialog2()
  330. self.dlgQuestion.Close()
  331.  
  332. except:
  333. import exception
  334. exception.Abort("InventoryWindow.LoadWindow.BindObject")
  335.  
  336. wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  337. wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  338. wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  339. wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  340. wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  341. wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  342.  
  343. wndEquip = ui.SlotWindow()
  344. wndEquip.SetParent(wndBase)
  345. wndEquip.SetPosition(3, 3)
  346. wndEquip.SetSize(150, 182)
  347.  
  348. for j in xrange(len(self.equip_info)):
  349. wndEquip.AppendSlot(self.equip_info[j][0], self.equip_info[j][1], self.equip_info[j][2], self.equip_info[j][3], self.equip_info[j][4])
  350.  
  351. wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  352. wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  353. wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  354. wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  355. wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  356. wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  357. wndEquip.Show()
  358. self.wndEquip = wndEquip
  359.  
  360. wndCostume = ui.SlotWindow()
  361. wndCostume.SetParent(wndBase)
  362. wndCostume.SetPosition(3, 3)
  363. wndCostume.SetSize(150, 182)
  364.  
  365. for j in xrange(len(self.costume_info)):
  366. wndCostume.AppendSlot(self.costume_info[j][0], self.costume_info[j][1], self.costume_info[j][2], self.costume_info[j][3], self.costume_info[j][4])
  367.  
  368. wndCostume.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  369. wndCostume.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  370. wndCostume.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  371. wndCostume.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  372. wndCostume.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  373. wndCostume.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  374. wndCostume.Show()
  375. self.wndCostume = wndCostume
  376.  
  377. wndRings = ui.SlotWindow()
  378. wndRings.SetParent(wndBase)
  379. wndRings.SetPosition(3, 3)
  380. wndRings.SetSize(150, 182)
  381.  
  382. for j in xrange(len(self.rings_info)):
  383. wndRings.AppendSlot(self.rings_info[j][0], self.rings_info[j][1], self.rings_info[j][2], self.rings_info[j][3], self.rings_info[j][4])
  384.  
  385. wndRings.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  386. wndRings.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  387. wndRings.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  388. wndRings.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  389. wndRings.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  390. wndRings.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  391. wndRings.Show()
  392. self.wndRings = wndRings
  393.  
  394. dlgPickMoney = uiPickMoney.PickMoneyDialog()
  395. dlgPickMoney.LoadDialog()
  396. dlgPickMoney.Hide()
  397.  
  398. if app.ENABLE_SORT_INVENTORY:
  399. if self.sortInventory:
  400. self.sortInventory.SetEvent(ui.__mem_func__(self.ClickSortInventory))
  401.  
  402. self.refineDialog = uiRefine.RefineDialog()
  403. self.refineDialog.Hide()
  404.  
  405. self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
  406. self.attachMetinDialog.Hide()
  407.  
  408. for i in xrange(player.INVENTORY_PAGE_COUNT):
  409. self.inventoryTab[i].SetEvent(lambda arg=i: self.SetInventoryPage(arg))
  410. self.inventoryTab[0].Down()
  411.  
  412. for i in xrange(3):
  413. self.equipmentTab[i].SetEvent(lambda arg=i: self.SetEquipmentPage(arg))
  414. self.equipmentTab[0].Down()
  415.  
  416. self.wndItem = wndItem
  417. self.wndBase = wndBase
  418. self.dlgPickMoney = dlgPickMoney
  419.  
  420. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  421. self.visibleButtonList[0].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 1, 0)
  422. self.visibleButtonList[1].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 2, 0)
  423.  
  424. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  425. self.visibleButtonList[2].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 3, 0)
  426.  
  427. if app.ENABLE_WEAPON_COSTUME_SYSTEM:
  428. self.visibleButtonList[3].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 4, 0)
  429.  
  430. if app.ENABLE_AURA_COSTUME_SYSTEM:
  431. self.visibleButtonList[4].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 5, 0)
  432.  
  433. self.visibleButtonList[0].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 1, 1)
  434. self.visibleButtonList[1].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 2, 1)
  435.  
  436. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  437. self.visibleButtonList[2].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 3, 1)
  438.  
  439. if app.ENABLE_WEAPON_COSTUME_SYSTEM:
  440. self.visibleButtonList[3].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 4, 1)
  441.  
  442. if app.ENABLE_AURA_COSTUME_SYSTEM:
  443. self.visibleButtonList[4].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 5, 1)
  444.  
  445. if self.switchbotButton:
  446. self.switchbotButton.SetEvent(ui.__mem_func__(self.OpenSwitchbot))
  447.  
  448. if self.specialStorageButton:
  449. self.specialStorageButton.SetEvent(ui.__mem_func__(self.OpenSpecialStorage))
  450.  
  451.  
  452. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  453. self.listAttachedAcces = []
  454.  
  455. if app.ENABLE_INVENTORY_EXPANSION_SYSTEM:
  456. self.lock, self.lock2, u, e = {}, {}, 0, 0
  457. for i in xrange(18):
  458. self.lock[i] = ui.Button()
  459. self.lock[i].SetParent(self.wndItem)
  460. if i >= 9:
  461. self.lock[i].SetPosition(0, 0+e)
  462. e+=32
  463. else:
  464. self.lock[i].SetPosition(0, 0+u)
  465. self.lock[i].SetUpVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_close.sub")
  466. self.lock[i].SetOverVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_close.sub")
  467. self.lock[i].SetDownVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_close.sub")
  468. self.lock[i].SetEvent(lambda x=i: self.ClickUnlockInventory(x))
  469. self.lock[i].Hide()
  470.  
  471. u+=32
  472.  
  473. # self.switchbotButton.SetShowToolTipEvent(ui.__mem_func__(self.OverInToolTipButton), "Switchbot")
  474. # self.switchbotButton.SetHideToolTipEvent(ui.__mem_func__(self.OverOutToolTipButton))
  475. # self.DSSButton.SetShowToolTipEvent(ui.__mem_func__(self.OverInToolTipButton), "Alchemy")
  476. # self.DSSButton.SetHideToolTipEvent(ui.__mem_func__(self.OverOutToolTipButton))
  477. # self.shopButton.SetShowToolTipEvent(ui.__mem_func__(self.OverInToolTipButton), "Offline Shop")
  478. # self.shopButton.SetHideToolTipEvent(ui.__mem_func__(self.OverOutToolTipButton))
  479. # self.specialStorageButton.SetShowToolTipEvent(ui.__mem_func__(self.OverInToolTipButton), "Special Storage")
  480. # self.specialStorageButton.SetHideToolTipEvent(ui.__mem_func__(self.OverOutToolTipButton))
  481.  
  482. self.SetInventoryPage(0)
  483. self.SetEquipmentPage(0)
  484. self.RefreshItemSlot()
  485. self.RefreshStatus()
  486.  
  487. def Destroy(self):
  488. self.ClearDictionary()
  489.  
  490. self.dlgPickMoney.Destroy()
  491. self.dlgPickMoney = 0
  492.  
  493. self.refineDialog.Destroy()
  494. self.refineDialog = 0
  495.  
  496. self.attachMetinDialog.Destroy()
  497. self.attachMetinDialog = 0
  498.  
  499. self.tooltipItem = None
  500. self.wndItem = 0
  501. self.wndEquip = None
  502. self.wndCostume = None
  503. self.wndRings = None
  504.  
  505. self.dlgPickMoney = 0
  506. self.wndMoneySlot = 0
  507. self.questionDialog = None
  508. self.interface = None
  509.  
  510. self.wndExpandedMoneyBar = None
  511.  
  512. if self.wndPotions:
  513. self.wndPotions.Destroy()
  514. self.wndPotions = 0
  515.  
  516. if app.ENABLE_SORT_INVENTORY:
  517. self.sortInventory = None
  518.  
  519. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  520. self.visibleButtonList = []
  521.  
  522. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  523. self.wndAcceCombine = None
  524. self.wndAcceAbsorption = None
  525.  
  526. if app.ENABLE_GROWTH_PET_SYSTEM:
  527. if self.petHatchingWindow:
  528. self.petHatchingWindow = None
  529.  
  530. if self.petFeedWindow:
  531. self.petFeedWindow = None
  532.  
  533. if self.petNameChangeWindow:
  534. self.petNameChangeWindow = None
  535.  
  536. # self.__HideSidebar()
  537.  
  538. self.inventoryTab = []
  539. self.equipmentTab = []
  540. self.equipmentTabText = []
  541.  
  542. def Hide(self):
  543. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
  544. self.OnCloseQuestionDialog()
  545. return
  546.  
  547. if None != self.tooltipItem:
  548. self.tooltipItem.HideToolTip()
  549.  
  550. if self.dlgPickMoney:
  551. self.dlgPickMoney.Close()
  552.  
  553. if self.wndExpandedMoneyBar:
  554. self.wndExpandedMoneyBar.Close()
  555.  
  556. try:
  557. self.__HideSidebar()
  558. except:
  559. pass
  560.  
  561. wndMgr.Hide(self.hWnd)
  562.  
  563. def Close(self):
  564. self.Hide()
  565.  
  566. def SetExpandedMoneyBar(self, wndBar):
  567. self.wndExpandedMoneyBar = wndBar
  568. if self.wndExpandedMoneyBar:
  569. self.wndMoney = self.wndExpandedMoneyBar.GetMoney()
  570. self.wndMoneySlot = self.wndExpandedMoneyBar.GetMoneySlot()
  571.  
  572. def SetInventoryPage(self, page):
  573. self.inventoryTab[self.inventoryPageIndex].SetUp()
  574. self.inventoryPageIndex = page
  575. self.inventoryTab[self.inventoryPageIndex].Down()
  576. self.RefreshBagSlotWindow()
  577.  
  578. def OnRunMouseWheel(self, nLen):
  579. if nLen > 0:
  580. if self.inventoryPageIndex < 3:
  581. self.SetInventoryPage(self.inventoryPageIndex + 1)
  582. else:
  583. if self.inventoryPageIndex > 0:
  584. self.SetInventoryPage(self.inventoryPageIndex - 1)
  585.  
  586. def SetEquipmentPage(self, page):
  587. self.equipmentTab[self.equipmentPageIndex].SetUp()
  588. self.equipmentPageIndex = page
  589. self.equipmentTab[self.equipmentPageIndex].Down()
  590.  
  591. for i in xrange(3):
  592. if page == i:
  593. self.equipmentTabText[i].SetPackedFontColor(0xffffffff)
  594. else:
  595. self.equipmentTabText[i].SetPackedFontColor(0xff919291)
  596.  
  597. self.wndEquip.Hide()
  598. self.wndCostume.Hide()
  599. self.wndRings.Hide()
  600.  
  601. if page == 1:
  602. self.wndCostume.Show()
  603. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  604. for item in self.visibleButtonList:
  605. item.Show()
  606. elif page == 2:
  607. self.wndRings.Show()
  608. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  609. for item in self.visibleButtonList:
  610. item.Hide()
  611. else:
  612. self.wndEquip.Show()
  613. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  614. for item in self.visibleButtonList:
  615. item.Hide()
  616.  
  617.  
  618. self.wndBase.LoadImage("d:/ymir work/ui/game/inventory/%s.jpg" % (page+1))
  619. self.RefreshEquipSlotWindow()
  620.  
  621. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  622. def RefreshVisibleCostume(self):
  623. body = constInfo.HIDDEN_BODY_COSTUME
  624. hair = constInfo.HIDDEN_HAIR_COSTUME
  625.  
  626. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  627. acce = constInfo.HIDDEN_ACCE_COSTUME
  628.  
  629. if app.ENABLE_WEAPON_COSTUME_SYSTEM:
  630. weapon = constInfo.HIDDEN_WEAPON_COSTUME
  631.  
  632. if app.ENABLE_AURA_COSTUME_SYSTEM:
  633. aura = constInfo.HIDDEN_AURA_COSTUME
  634.  
  635. if body == 1:
  636. self.visibleButtonList[0].Down()
  637. else:
  638. self.visibleButtonList[0].SetUp()
  639.  
  640. if hair == 1:
  641. self.visibleButtonList[1].Down()
  642. else:
  643. self.visibleButtonList[1].SetUp()
  644.  
  645. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  646. if acce == 1:
  647. self.visibleButtonList[2].Down()
  648. else:
  649. self.visibleButtonList[2].SetUp()
  650.  
  651. if app.ENABLE_WEAPON_COSTUME_SYSTEM:
  652. if weapon == 1:
  653. self.visibleButtonList[3].Down()
  654. else:
  655. self.visibleButtonList[3].SetUp()
  656.  
  657. if app.ENABLE_AURA_COSTUME_SYSTEM:
  658. if aura == 1:
  659. self.visibleButtonList[4].Down()
  660. else:
  661. self.visibleButtonList[4].SetUp()
  662.  
  663. def VisibleCostume(self, part, hidden):
  664. if not player.CanInteract():
  665. elementID = {1 : 0, 2 : 1, 3 : 2, 4 : 3, 5 : 4}[part]
  666. self.visibleButtonList[elementID].SetUp() if hidden == 1 else self.visibleButtonList[elementID].Down()
  667. return
  668.  
  669. net.SendChatPacket("/hide_costume %d %d" % (part, hidden))
  670.  
  671. def OpenSwitchbot(self):
  672. if self.interface:
  673. self.interface.ToggleSwitchbotWindow()
  674.  
  675. # def DSSButtonon(self):
  676. # self.interface.ToggleDragonSoulWindow()
  677.  
  678. # if app.ENABLE_RENEWAL_OFFLINESHOP:
  679. # def MakeOfflineShopMessage(self):
  680. # if self.dlgShopMessage == None:
  681. # self.dlgShopMessage = ui.MessageWindow()
  682.  
  683. # def AddOfflineShopMessage(self, itemVnum, itemCount, itemPrice):
  684. # itemVnum, itemCount, itemPrice = (int(itemVnum), int(itemCount), int(itemPrice))
  685. # self.MakeOfflineShopMessage()
  686. # item.SelectItem(itemVnum)
  687.  
  688. # if itemCount > 1:
  689. # self.dlgShopMessage.AddMessage(localeInfo.OFFLINESHOP_ITEM_SOLD_MESSAGE_WITH_COUNT % (itemCount, item.GetItemName(), localeInfo.NumberToMoneyString(itemPrice)), 5)
  690. # else:
  691. # self.dlgShopMessage.AddMessage(localeInfo.OFFLINESHOP_ITEM_SOLD_MESSAGE % (item.GetItemName(), localeInfo.NumberToMoneyString(itemPrice)), 5)
  692.  
  693. # def OpenOfflineShopDialog(self, vid, isOwner):
  694. # self.wndInventory.Show()
  695. # self.wndInventory.SetTop()
  696.  
  697. # if isOwner:
  698. # self.OpenOfflineShopPanel()
  699. # else:
  700. # if self.dlgOfflineShop == None:
  701. # self.MakeOfflineShop()
  702.  
  703. # if self.dlgOfflineShop:
  704. # self.dlgOfflineShop.Open(vid)
  705. # self.dlgOfflineShop.SetCenterPosition()
  706. # self.dlgOfflineShop.SetTop()
  707.  
  708. # def OpenOfflineShopPanel(self):
  709. # if self.dlgOfflineShopPanel == None:
  710. # self.MakeOfflineShopPanel()
  711.  
  712. # self.dlgOfflineShopPanel.Open()
  713. # self.dlgOfflineShopPanel.SetTop()
  714. # self.dlgOfflineShopPanel.SetCenterPosition()
  715.  
  716. # def OpenOfflineShopBuilder(self):
  717. # if self.offlineShopBuilder == None:
  718. # self.MakeOfflineShopBuilder()
  719.  
  720. # self.offlineShopBuilder.Open(".....")
  721. # self.offlineShopBuilder.SetTop()
  722.  
  723. # def DisappearOfflineShop(self, vid):
  724. # uiOfflineShopBuilder.HideADBoardWithKey(vid)
  725.  
  726. # def AppearOfflineShop(self, vid, text):
  727. # type = 0
  728. # if text[0].isdigit():
  729. # type = int(text[0])
  730. # text = text[1:]
  731. # if uiOfflineShopBuilder.ShowADBoardWithKey(vid) == FALSE:
  732. # board = uiOfflineShopBuilder.OfflineShopAdvertisementBoard(type)
  733. # board.Open(vid, text)
  734. # else:
  735. # uiOfflineShopBuilder.UpdateADText(vid, type, text)
  736.  
  737. # def MakeOfflineShopBuilder(self):
  738. # self.offlineShopBuilder = uiOfflineShopBuilder.OfflineShopBuilder()
  739. # self.offlineShopBuilder.BindInterfaceClass(self)
  740. # self.offlineShopBuilder.Hide()
  741.  
  742. # def MakeOfflineShop(self):
  743. # self.dlgOfflineShop = uiOfflineShop.OfflineShopDialog()
  744. # self.dlgOfflineShop.BindInterfaceClass(self)
  745. # self.dlgOfflineShop.LoadDialog()
  746. # self.dlgOfflineShop.Hide()
  747.  
  748. # def MakeOfflineShopPanel(self):
  749. # self.dlgOfflineShopPanel = uiOfflineShop.OfflineMyShop()
  750. # self.dlgOfflineShopPanel.BindInterfaceClass(self)
  751. # self.dlgOfflineShopPanel.LoadWindow()
  752.  
  753. # def AppendLogOfflineShopPanel(self, name, date, itemvnum, itemcount, price):
  754. # if self.dlgOfflineShopPanel == None:
  755. # self.MakeOfflineShopPanel()
  756.  
  757. # self.dlgOfflineShopPanel.AppendLog(name, date, itemvnum, itemcount, price)
  758.  
  759. # def AppendLogOfflineShopPanelFirst(self, name, date, itemvnum, itemcount, price):
  760. # if self.dlgOfflineShopPanel == None:
  761. # self.MakeOfflineShopPanel()
  762.  
  763. # self.dlgOfflineShopPanel.AppendLogFirst(name, date, itemvnum, itemcount, price)
  764.  
  765. # def ToggleOfflineShopWindow(self):
  766. # if self.dlgOfflineShopPanel:
  767. # if self.dlgOfflineShopPanel.IsShow():
  768. # self.dlgOfflineShopPanel.CloseReal()
  769. # return
  770.  
  771. # if self.offlineShopBuilder:
  772. # if self.offlineShopBuilder.IsShow():
  773. # self.offlineShopBuilder.CloseReal()
  774. # return
  775.  
  776. # net.SendOfflineShopButton()
  777.  
  778. def OpenSpecialStorage(self):
  779. self.interface.OpenSpecialInventoryWindow()
  780.  
  781. if app.ENABLE_SORT_INVENTORY:
  782. def ClickSortInventory(self):
  783. self.__ClickStartButton()
  784.  
  785. def __ClickStartButton(self):
  786. startQuestionDialog = uiCommon.QuestionDialog2()
  787. startQuestionDialog.SetText1(uiScriptLocale.SORT_INVENTORY_TEXT1)
  788. startQuestionDialog.SetText2(uiScriptLocale.SORT_INVENTORY_TEXT2)
  789. startQuestionDialog.SetAcceptEvent(ui.__mem_func__(self.__StartAccept))
  790. startQuestionDialog.SetCancelEvent(ui.__mem_func__(self.__StartCancel))
  791. startQuestionDialog.Open()
  792. self.startQuestionDialog = startQuestionDialog
  793.  
  794. def __StartAccept(self):
  795. net.SendChatPacket("/click_sort_items")
  796. self.__StartCancel()
  797.  
  798. def __StartCancel(self):
  799. self.startQuestionDialog.Close()
  800.  
  801. if app.ENABLE_INVENTORY_EXPANSION_SYSTEM:
  802. def ClickUnlockInventory(self, index):
  803. if index > constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]:
  804. pass
  805. else:
  806. if constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)] <= 18:
  807. self.questionDialog = uiCommon.QuestionDialog("thin")
  808. self.questionDialog.SetCenterPosition()
  809. self.questionDialog.SetText(uiScriptLocale.INVENTORY_UNLOCK % int((constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]*2)+2))
  810. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OpenInventory))
  811. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.NoOpenInventory))
  812. self.questionDialog.Open()
  813.  
  814. def OpenInventory(self):
  815. if constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)] <= 18:
  816. net.SendChatPacket("/unlock_inventory %d" % (0))
  817.  
  818. self.questionDialog.Close()
  819.  
  820. def NoOpenInventory(self):
  821. self.questionDialog.Close()
  822.  
  823. def OpenPickMoneyDialog(self):
  824.  
  825. if mouseModule.mouseController.isAttached():
  826.  
  827. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  828. if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():
  829.  
  830. if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
  831. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  832. snd.PlaySound("sound/ui/money.wav")
  833.  
  834. mouseModule.mouseController.DeattachObject()
  835.  
  836. else:
  837. curMoney = player.GetElk()
  838.  
  839. if curMoney <= 0:
  840. return
  841.  
  842. self.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE)
  843. self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
  844. self.dlgPickMoney.Open(curMoney)
  845. self.dlgPickMoney.SetMax(9)
  846.  
  847. def OnPickMoney(self, money):
  848. mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
  849.  
  850. def OnPickItem(self, count):
  851. itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
  852. selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  853. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
  854.  
  855. def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
  856. if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)):
  857. return local
  858.  
  859. if app.ENABLE_SPECIAL_INVENTORY:
  860. if player.IsSkillBookInventorySlot(local) or player.IsUpgradeItemsInventorySlot(local) or\
  861. player.IsStoneInventorySlot(local) or player.IsGiftBoxInventorySlot(local) or\
  862. player.IsChangersInventorySlot(local):
  863. return local
  864.  
  865. return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
  866.  
  867. def GetInventoryPageIndex(self):
  868. return self.inventoryPageIndex
  869.  
  870. def RefreshBagSlotWindow(self):
  871. getItemVNum = player.GetItemIndex
  872. getItemCount = player.GetItemCount
  873. setItemVNum = self.wndItem.SetItemSlot
  874.  
  875. if app.ENABLE_SLOT_MARKING_SYSTEM:
  876. if self.interface:
  877. onTopWindow = self.interface.GetOnTopWindow()
  878.  
  879. for i in xrange(player.INVENTORY_PAGE_SIZE):
  880. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  881. self.wndItem.SetRealSlotNumber(i, slotNumber)
  882. itemCount = getItemCount(slotNumber)
  883.  
  884. if 0 == itemCount:
  885. self.wndItem.ClearSlot(i)
  886. continue
  887. elif 1 == itemCount:
  888. itemCount = 0
  889.  
  890. itemVnum = getItemVNum(slotNumber)
  891. setItemVNum(i, itemVnum, itemCount)
  892.  
  893. if constInfo.IS_AUTO_POTION(itemVnum):
  894. metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  895.  
  896. if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
  897. slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
  898.  
  899. isActivated = 0 != metinSocket[0]
  900.  
  901. if isActivated:
  902. if constInfo.IS_AUTO_POTION_HP(itemVnum):
  903. self.wndItem.ActivateSlot(slotNumber, wndMgr.COLOR_TYPE_RED)
  904. elif constInfo.IS_AUTO_POTION_SP(itemVnum):
  905. self.wndItem.ActivateSlot(slotNumber, wndMgr.COLOR_TYPE_BLUE)
  906.  
  907. potionType = 0;
  908. if constInfo.IS_AUTO_POTION_HP(itemVnum):
  909. potionType = player.AUTO_POTION_TYPE_HP
  910. elif constInfo.IS_AUTO_POTION_SP(itemVnum):
  911. potionType = player.AUTO_POTION_TYPE_SP
  912.  
  913. usedAmount = int(metinSocket[1])
  914. totalAmount = int(metinSocket[2])
  915. player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
  916.  
  917. else:
  918. self.wndItem.DeactivateSlot(slotNumber)
  919.  
  920. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  921. slotNumberChecked = 0
  922. if not constInfo.IS_AUTO_POTION(itemVnum):
  923. self.wndItem.DeactivateSlot(i)
  924.  
  925. for j in xrange(acce.WINDOW_MAX_MATERIALS):
  926. (isHere, iCell) = acce.GetAttachedItem(j)
  927. if isHere:
  928. if iCell == slotNumber:
  929. self.wndItem.ActivateSlot(i, wndMgr.COLOR_TYPE_GREEN)
  930. if not slotNumber in self.listAttachedAcces:
  931. self.listAttachedAcces.append(slotNumber)
  932.  
  933. slotNumberChecked = 1
  934. else:
  935. if slotNumber in self.listAttachedAcces and not slotNumberChecked:
  936. self.wndItem.DeactivateSlot(i)
  937. self.listAttachedAcces.remove(slotNumber)
  938.  
  939. if app.ENABLE_RENEWAL_AFFECT:
  940. if constInfo.IS_AFFECT_PLUS(itemVnum):
  941. metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  942. isActivated = 0 != metinSocket[1]
  943.  
  944. if isActivated:
  945. self.wndItem.ActivateSlot(i, wndMgr.COLOR_TYPE_SKY)
  946. else:
  947. self.wndItem.DeactivateSlot(i)
  948.  
  949. if app.ENABLE_SLOT_MARKING_SYSTEM:
  950. if itemVnum and self.interface and onTopWindow:
  951. if self.interface.MarkUnusableInvenSlotOnTopWnd(onTopWindow, slotNumber):
  952. if itemVnum == 50200 and uiPrivateShopBuilder.IsBuildingPrivateShop():
  953. self.wndItem.SetCantMouseEventSlot(i)
  954. else:
  955. self.wndItem.SetUnusableSlotOnTopWnd(i)
  956. else:
  957. self.wndItem.SetUsableSlotOnTopWnd(i)
  958. else:
  959. self.wndItem.SetUsableSlotOnTopWnd(i)
  960.  
  961. if app.ENABLE_GROWTH_PET_SYSTEM:
  962. if constInfo.IS_GROWTH_PET_ITEM(itemVnum):
  963. self.__ActivePetHighlightSlot(slotNumber)
  964. self.__SetCoolTimePetItemSlot(slotNumber, itemVnum)
  965.  
  966. if app.ENABLE_PICKUP_ITEM_EFFECT:
  967. self.__HighlightSlot_Refresh()
  968.  
  969. self.wndItem.RefreshSlot()
  970.  
  971. if self.wndPotions:
  972. self.wndPotions.RefreshSlot()
  973.  
  974. def RefreshEquipSlotWindow(self):
  975. getItemVNum = player.GetItemIndex
  976. getItemCount = player.GetItemCount
  977. setItemVNum = self.wndEquip.SetItemSlot
  978. setItemVNum2 = self.wndCostume.SetItemSlot
  979. setItemVNum3 = self.wndRings.SetItemSlot
  980.  
  981. for i in xrange(player.EQUIPMENT_PAGE_COUNT):
  982. slotNumber = player.EQUIPMENT_SLOT_START + i
  983. itemCount = getItemCount(slotNumber)
  984.  
  985. if itemCount <= 1:
  986. itemCount = 0
  987.  
  988. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  989.  
  990. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  991. for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
  992. slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
  993. itemCount = getItemCount(slotNumber)
  994.  
  995. if itemCount <= 1:
  996. itemCount = 0
  997.  
  998. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  999. setItemVNum2(slotNumber, getItemVNum(slotNumber), itemCount)
  1000. setItemVNum3(slotNumber, getItemVNum(slotNumber), itemCount)
  1001.  
  1002. for i in xrange(item.COSTUME_SLOT_COUNT):
  1003. slotNumber = item.COSTUME_SLOT_START + i
  1004.  
  1005. setItemVNum2(slotNumber, getItemVNum(slotNumber), 0)
  1006. setItemVNum3(slotNumber, getItemVNum(slotNumber), 0)
  1007.  
  1008. self.wndEquip.RefreshSlot()
  1009. self.wndCostume.RefreshSlot()
  1010. self.wndRings.RefreshSlot()
  1011.  
  1012. def RefreshItemSlot(self):
  1013. self.RefreshEquipSlotWindow()
  1014. self.RefreshBagSlotWindow()
  1015.  
  1016. def RefreshStatus(self):
  1017. if self.wndExpandedMoneyBar:
  1018. self.wndExpandedMoneyBar.RefreshStatus()
  1019.  
  1020. if app.ENABLE_INVENTORY_EXPANSION_SYSTEM:
  1021. def OnUpdate(self):
  1022. if constInfo.Inventory_Locked["Active"]:
  1023. if constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)] >= 18:
  1024. for i in xrange(18):
  1025. self.lock[i].Hide()
  1026. else:
  1027. if self.inventoryPageIndex >= 2:
  1028. self.lock[constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]].SetUpVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_open.sub")
  1029. self.lock[constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]].SetOverVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_open.sub")
  1030. self.lock[constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]].SetDownVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_open.sub")
  1031.  
  1032. for i in xrange(9):
  1033. self.lock[i].Show()
  1034. if constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)] > i:
  1035. self.lock[i].Hide()
  1036. else:
  1037. for i in xrange(9):
  1038. self.lock[i].Hide()
  1039.  
  1040. if self.inventoryPageIndex == 3:
  1041. self.lock[constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]].SetUpVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_open.sub")
  1042. self.lock[constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]].SetOverVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_open.sub")
  1043. self.lock[constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)]].SetDownVisual("d:/ymir work/ui/game/windows/ex_inven_cover_button_open.sub")
  1044.  
  1045. for i in xrange(9, 18):
  1046. self.lock[i].Show()
  1047. if constInfo.Inventory_Locked["Keys_Can_Unlock_%d" % (0)] > i:
  1048. self.lock[i].Hide()
  1049. else:
  1050. for i in xrange(9, 18):
  1051. self.lock[i].Hide()
  1052.  
  1053. def SetItemToolTip(self, tooltipItem):
  1054. self.tooltipItem = tooltipItem
  1055.  
  1056. def SellItem(self):
  1057. if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
  1058. if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
  1059. net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY)
  1060. snd.PlaySound("sound/ui/money.wav")
  1061. self.OnCloseQuestionDialog()
  1062.  
  1063. def OnDetachMetinFromItem(self):
  1064. if None == self.questionDialog:
  1065. return
  1066.  
  1067. self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
  1068. self.OnCloseQuestionDialog()
  1069.  
  1070. def OnCloseQuestionDialog(self):
  1071. if not self.questionDialog:
  1072. return
  1073.  
  1074. self.questionDialog.Close()
  1075. self.questionDialog = None
  1076. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
  1077.  
  1078. ## Slot Event
  1079. def SelectEmptySlot(self, selectedSlotPos):
  1080. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
  1081. return
  1082.  
  1083. if app.ENABLE_AURA_COSTUME_SYSTEM:
  1084. if player.IsAuraRefineWindowOpen():
  1085. return
  1086.  
  1087. selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
  1088.  
  1089. if mouseModule.mouseController.isAttached():
  1090. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  1091. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1092. attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
  1093. attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
  1094.  
  1095. if app.ENABLE_SPECIAL_INVENTORY:
  1096. if player.SLOT_TYPE_INVENTORY == attachedSlotType or\
  1097. player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedSlotType or\
  1098. player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedSlotType or\
  1099. player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
  1100. player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedSlotType or\
  1101. player.SLOT_TYPE_CHANGERS_INVENTORY == attachedSlotType:
  1102.  
  1103. itemCount = player.GetItemCount(attachedSlotPos)
  1104. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  1105.  
  1106. self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
  1107.  
  1108. if item.IsRefineScroll(attachedItemIndex):
  1109. self.wndItem.SetUseMode(FALSE)
  1110.  
  1111. elif app.ENABLE_RENEWAL_SWITCHBOT and player.SLOT_TYPE_SWITCHBOT == attachedSlotType:
  1112. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  1113. net.SendItemMovePacket(player.SWITCHBOT, attachedSlotPos, player.INVENTORY, selectedSlotPos, attachedCount)
  1114.  
  1115. elif app.ENABLE_AURA_COSTUME_SYSTEM and player.SLOT_TYPE_AURA == attachedSlotType:
  1116. net.SendAuraRefineCheckOut(attachedSlotPos, player.GetAuraRefineWindowType())
  1117.  
  1118. elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
  1119. mouseModule.mouseController.RunCallBack("INVENTORY")
  1120.  
  1121. elif player.SLOT_TYPE_SHOP == attachedSlotType:
  1122. net.SendShopBuyPacket(attachedSlotPos)
  1123.  
  1124. elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:
  1125. if player.ITEM_MONEY == attachedItemIndex:
  1126. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  1127. snd.PlaySound("sound/ui/money.wav")
  1128.  
  1129. else:
  1130. net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)
  1131.  
  1132. elif player.SLOT_TYPE_MALL == attachedSlotType:
  1133. net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
  1134. else:
  1135. if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  1136. itemCount = player.GetItemCount(attachedSlotPos)
  1137. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  1138. self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
  1139.  
  1140. if item.IsRefineScroll(attachedItemIndex):
  1141. self.wndItem.SetUseMode(FALSE)
  1142.  
  1143. elif app.ENABLE_RENEWAL_SWITCHBOT and player.SLOT_TYPE_SWITCHBOT == attachedSlotType:
  1144. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  1145. net.SendItemMovePacket(player.SWITCHBOT, attachedSlotPos, player.INVENTORY, selectedSlotPos, attachedCount)
  1146.  
  1147. elif app.ENABLE_AURA_COSTUME_SYSTEM and player.SLOT_TYPE_AURA == attachedSlotType:
  1148. net.SendAuraRefineCheckOut(attachedSlotPos, player.GetAuraRefineWindowType())
  1149.  
  1150. elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
  1151. mouseModule.mouseController.RunCallBack("INVENTORY")
  1152.  
  1153. elif player.SLOT_TYPE_SHOP == attachedSlotType:
  1154. net.SendShopBuyPacket(attachedSlotPos)
  1155.  
  1156. elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:
  1157.  
  1158. if player.ITEM_MONEY == attachedItemIndex:
  1159. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  1160. snd.PlaySound("sound/ui/money.wav")
  1161.  
  1162. else:
  1163. net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)
  1164.  
  1165. elif player.SLOT_TYPE_MALL == attachedSlotType:
  1166. net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
  1167.  
  1168. mouseModule.mouseController.DeattachObject()
  1169.  
  1170. def SelectItemSlot(self, itemSlotIndex):
  1171. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
  1172. return
  1173.  
  1174. itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)
  1175.  
  1176. if mouseModule.mouseController.isAttached():
  1177. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  1178. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1179. attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
  1180.  
  1181. if app.ENABLE_SPECIAL_INVENTORY:
  1182. if player.SLOT_TYPE_INVENTORY == attachedSlotType or\
  1183. player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedSlotType or\
  1184. player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedSlotType or\
  1185. player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
  1186. player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedSlotType or\
  1187. player.SLOT_TYPE_CHANGERS_INVENTORY == attachedSlotType:
  1188.  
  1189. self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
  1190. else:
  1191. if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  1192. self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
  1193.  
  1194. mouseModule.mouseController.DeattachObject()
  1195. else:
  1196. curCursorNum = app.GetCursor()
  1197. if app.SELL == curCursorNum:
  1198. self.__SellItem(itemSlotIndex)
  1199. elif app.BUY == curCursorNum:
  1200. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)
  1201. elif app.IsPressed(app.DIK_LALT):
  1202. link = player.GetItemLink(itemSlotIndex)
  1203. ime.PasteString(link)
  1204. elif app.IsPressed(app.DIK_LSHIFT):
  1205. itemCount = player.GetItemCount(itemSlotIndex)
  1206. if itemCount > 1:
  1207. self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
  1208. self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
  1209. self.dlgPickMoney.Open(itemCount)
  1210. self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
  1211. elif app.IsPressed(app.DIK_LCONTROL):
  1212. itemIndex = player.GetItemIndex(itemSlotIndex)
  1213.  
  1214. if TRUE == item.CanAddToQuickSlotItem(itemIndex):
  1215. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
  1216. else:
  1217. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)
  1218. else:
  1219. selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  1220. itemCount = player.GetItemCount(itemSlotIndex)
  1221. if app.ENABLE_RENEWAL_AFFECT:
  1222. if self.__CanAttachThisItem(selectedItemVNum, itemSlotIndex):
  1223. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
  1224. elif app.ENABLE_GROWTH_PET_SYSTEM:
  1225. if self.__CanAttachGrowthPetItem(selectedItemVNum, itemSlotIndex):
  1226. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
  1227. else:
  1228. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
  1229.  
  1230. if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
  1231. self.wndItem.SetUseMode(TRUE)
  1232. else:
  1233. self.wndItem.SetUseMode(FALSE)
  1234.  
  1235. snd.PlaySound("sound/ui/pick.wav")
  1236.  
  1237. def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
  1238. if srcItemSlotPos == dstItemSlotPos:
  1239. return
  1240.  
  1241. if app.ENABLE_AURA_COSTUME_SYSTEM and player.IsAuraRefineWindowOpen():
  1242. return
  1243.  
  1244. if item.IsRefineScroll(srcItemVID):
  1245. self.RefineItem(srcItemSlotPos, dstItemSlotPos)
  1246. self.wndItem.SetUseMode(FALSE)
  1247.  
  1248. elif item.IsMetin(srcItemVID) and not item.IsMetin(player.GetItemIndex(dstItemSlotPos)):
  1249. self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)
  1250.  
  1251. elif item.IsDetachScroll(srcItemVID):
  1252. self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)
  1253.  
  1254. elif item.IsKey(srcItemVID):
  1255. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1256.  
  1257. elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1258. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1259.  
  1260. elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
  1261. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1262.  
  1263. elif app.ENABLE_EXTEND_TIME_COSTUME_SYSTEM and player.GetItemIndex(srcItemSlotPos) >= 84014 and player.GetItemIndex(srcItemSlotPos) <= 84016:
  1264. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1265.  
  1266. else:
  1267. if app.ENABLE_GROWTH_PET_SYSTEM:
  1268. if self.__IsPetItem(srcItemVID):
  1269. if self.__SendUsePetItemToItemPacket(srcItemVID, srcItemSlotPos, dstItemSlotPos):
  1270. return
  1271.  
  1272. if player.IsEquipmentSlot(dstItemSlotPos):
  1273. if item.IsEquipmentVID(srcItemVID):
  1274. self.__UseItem(srcItemSlotPos)
  1275. else:
  1276. self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
  1277.  
  1278. def __SellItem(self, itemSlotPos):
  1279. if not player.IsEquipmentSlot(itemSlotPos):
  1280. self.sellingSlotNumber = itemSlotPos
  1281. itemIndex = player.GetItemIndex(itemSlotPos)
  1282. itemCount = player.GetItemCount(itemSlotPos)
  1283.  
  1284. self.sellingSlotitemIndex = itemIndex
  1285. self.sellingSlotitemCount = itemCount
  1286.  
  1287. item.SelectItem(itemIndex)
  1288.  
  1289. if item.IsAntiFlag(item.ANTIFLAG_SELL):
  1290. popup = uiCommon.PopupDialog()
  1291. popup.SetText(localeInfo.SHOP_CANNOT_SELL_ITEM)
  1292. popup.SetAcceptEvent(self.__OnClosePopupDialog)
  1293. popup.Open()
  1294. self.popup = popup
  1295. return
  1296.  
  1297. itemPrice = item.GetISellItemPrice()
  1298.  
  1299. if item.Is1GoldItem():
  1300. itemPrice = itemCount / itemPrice / 5
  1301. else:
  1302. itemPrice = itemPrice * itemCount / 5
  1303.  
  1304. item.GetItemName(itemIndex)
  1305. itemName = item.GetItemName()
  1306.  
  1307. self.questionDialog = uiCommon.QuestionDialog("thin")
  1308. self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
  1309. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
  1310. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  1311. self.questionDialog.Open()
  1312. self.questionDialog.count = itemCount
  1313.  
  1314. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1315.  
  1316. def __OnClosePopupDialog(self):
  1317. self.pop = None
  1318.  
  1319. def RefineItem(self, scrollSlotPos, targetSlotPos):
  1320. scrollIndex = player.GetItemIndex(scrollSlotPos)
  1321. targetIndex = player.GetItemIndex(targetSlotPos)
  1322.  
  1323. if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
  1324. return
  1325.  
  1326. if app.ENABLE_AUTO_REFINE:
  1327. constInfo.AUTO_REFINE_TYPE = 1
  1328. constInfo.AUTO_REFINE_DATA["ITEM"][0] = scrollSlotPos
  1329. constInfo.AUTO_REFINE_DATA["ITEM"][1] = targetSlotPos
  1330.  
  1331. self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
  1332. return
  1333.  
  1334. result = player.CanRefine(scrollIndex, targetSlotPos)
  1335.  
  1336. if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
  1337. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET)
  1338.  
  1339. elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
  1340. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)
  1341.  
  1342. elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
  1343. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)
  1344.  
  1345. elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
  1346. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
  1347.  
  1348. elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
  1349. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
  1350.  
  1351. if player.REFINE_OK != result:
  1352. return
  1353.  
  1354. self.refineDialog.Open(scrollSlotPos, targetSlotPos)
  1355.  
  1356. def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
  1357. scrollIndex = player.GetItemIndex(scrollSlotPos)
  1358. targetIndex = player.GetItemIndex(targetSlotPos)
  1359.  
  1360. if not player.CanDetach(scrollIndex, targetSlotPos):
  1361. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  1362. item.SelectItem(scrollIndex)
  1363. if item.GetValue(0) == acce.CLEAN_ATTR_VALUE0:
  1364. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ACCE_FAILURE_CLEAN)
  1365. else:
  1366. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
  1367. else:
  1368. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
  1369. return
  1370.  
  1371. self.questionDialog = uiCommon.QuestionDialog("thin")
  1372. self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)
  1373. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  1374. item.SelectItem(targetIndex)
  1375. if item.GetItemType() == item.ITEM_TYPE_COSTUME and item.GetItemSubType() == item.COSTUME_TYPE_ACCE:
  1376. item.SelectItem(scrollIndex)
  1377. if item.GetValue(0) == acce.CLEAN_ATTR_VALUE0:
  1378. self.questionDialog.SetText(localeInfo.ACCE_DO_YOU_CLEAN)
  1379. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem))
  1380. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  1381. self.questionDialog.Open()
  1382. self.questionDialog.sourcePos = scrollSlotPos
  1383. self.questionDialog.targetPos = targetSlotPos
  1384.  
  1385. def AttachMetinToItem(self, metinSlotPos, targetSlotPos):
  1386. metinIndex = player.GetItemIndex(metinSlotPos)
  1387. targetIndex = player.GetItemIndex(targetSlotPos)
  1388.  
  1389. item.SelectItem(metinIndex)
  1390. itemName = item.GetItemName()
  1391.  
  1392. result = player.CanAttachMetin(metinIndex, targetSlotPos)
  1393.  
  1394. if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
  1395. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
  1396.  
  1397. if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
  1398. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))
  1399.  
  1400. elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
  1401. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
  1402.  
  1403. elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
  1404. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
  1405.  
  1406. if player.ATTACH_METIN_OK != result:
  1407. return
  1408.  
  1409. self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
  1410.  
  1411. def OverOutItem(self):
  1412. self.wndItem.SetUsableItem(FALSE)
  1413. if None != self.tooltipItem:
  1414. self.tooltipItem.HideToolTip()
  1415.  
  1416. def OverInItem(self, overSlotPos):
  1417. overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
  1418. self.wndItem.SetUsableItem(FALSE)
  1419.  
  1420. if app.ENABLE_PICKUP_ITEM_EFFECT:
  1421. self.DelHighlightSlot(overSlotPos)
  1422.  
  1423. if mouseModule.mouseController.isAttached():
  1424. attachedItemType = mouseModule.mouseController.GetAttachedType()
  1425.  
  1426. if app.ENABLE_SPECIAL_INVENTORY:
  1427. if player.SLOT_TYPE_INVENTORY == attachedItemType or\
  1428. player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedItemType or\
  1429. player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedItemType or\
  1430. player.SLOT_TYPE_STONE_INVENTORY == attachedItemType or\
  1431. player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedItemType or\
  1432. player.SLOT_TYPE_CHANGERS_INVENTORY == attachedItemType:
  1433.  
  1434. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1435. attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
  1436.  
  1437. if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):
  1438. self.wndItem.SetUsableItem(TRUE)
  1439. self.wndItem.SetUseMode(TRUE)
  1440. self.ShowToolTip(overSlotPos)
  1441. return
  1442. else:
  1443. if player.SLOT_TYPE_INVENTORY == attachedItemType:
  1444.  
  1445. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1446. attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
  1447.  
  1448. if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):
  1449. self.wndItem.SetUsableItem(TRUE)
  1450. self.wndItem.SetUseMode(TRUE)
  1451. self.ShowToolTip(overSlotPos)
  1452. return
  1453.  
  1454. self.ShowToolTip(overSlotPos)
  1455.  
  1456. def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
  1457. if item.IsRefineScroll(srcItemVNum):
  1458. return TRUE
  1459. elif item.IsMetin(srcItemVNum):
  1460. return TRUE
  1461. elif item.IsDetachScroll(srcItemVNum):
  1462. return TRUE
  1463. elif item.IsKey(srcItemVNum):
  1464. return TRUE
  1465. elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1466. return TRUE
  1467. elif app.ENABLE_EXTEND_TIME_COSTUME_SYSTEM and player.GetItemIndex(srcSlotPos) >= 84014 and player.GetItemIndex(srcSlotPos) <= 84016:
  1468. return TRUE
  1469. else:
  1470. if app.ENABLE_GROWTH_PET_SYSTEM:
  1471. if self.__IsUsablePetItem(srcItemVNum):
  1472. return TRUE
  1473.  
  1474. if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:
  1475. return TRUE
  1476.  
  1477. return FALSE
  1478.  
  1479. def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
  1480. if srcSlotPos == dstSlotPos and not item.IsMetin(srcItemVNum):
  1481. return FALSE
  1482.  
  1483. elif item.IsRefineScroll(srcItemVNum):
  1484. if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
  1485. return TRUE
  1486. elif item.IsMetin(srcItemVNum):
  1487. if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos) or (item.IsMetin(player.GetItemIndex(dstSlotPos)) and player.GetItemIndex(dstSlotPos) == srcItemVNum):
  1488. return TRUE
  1489. elif item.IsDetachScroll(srcItemVNum):
  1490. if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):
  1491. return TRUE
  1492. elif item.IsKey(srcItemVNum):
  1493. if player.CanUnlock(srcItemVNum, dstSlotPos):
  1494. return TRUE
  1495. elif app.ENABLE_EXTEND_TIME_COSTUME_SYSTEM and player.GetItemIndex(srcSlotPos) >= 84014 and player.GetItemIndex(srcSlotPos) <= 84016:
  1496. item.SelectItem(player.GetItemIndex(dstSlotPos))
  1497. if item.GetItemType() == item.ITEM_TYPE_COSTUME:
  1498. return TRUE
  1499. elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1500. return TRUE
  1501. else:
  1502. if app.ENABLE_GROWTH_PET_SYSTEM:
  1503. if self.__CanUseSrcPetItemToDstPetItem(srcItemVNum, srcSlotPos, dstSlotPos):
  1504. return TRUE
  1505.  
  1506. useType = item.GetUseType(srcItemVNum)
  1507.  
  1508. if "USE_CLEAN_SOCKET" == useType:
  1509. if self.__CanCleanBrokenMetinStone(dstSlotPos):
  1510. return TRUE
  1511. elif "USE_CHANGE_ATTRIBUTE" == useType:
  1512. if self.__CanChangeItemAttrList(dstSlotPos):
  1513. return TRUE
  1514. elif "USE_ADD_ATTRIBUTE" == useType:
  1515. if self.__CanAddItemAttr(dstSlotPos):
  1516. return TRUE
  1517. elif "USE_ADD_ATTRIBUTE2" == useType:
  1518. if self.__CanAddItemAttr(dstSlotPos):
  1519. return TRUE
  1520. elif "USE_ADD_ACCESSORY_SOCKET" == useType:
  1521. if self.__CanAddAccessorySocket(dstSlotPos):
  1522. return TRUE
  1523. elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType:
  1524. if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum):
  1525. return TRUE;
  1526. elif "USE_PUT_INTO_BELT_SOCKET" == useType:
  1527. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1528. item.SelectItem(dstItemVNum)
  1529. if item.ITEM_TYPE_ARMOR == item.GetItemType() and item.ARMOR_BELT == item.GetItemSubType():
  1530. return TRUE
  1531. elif "USE_CHANGE_COSTUME_ATTR" == useType and app.ENABLE_BONUS_COSTUME_SYSTEM:
  1532. if self.__CanChangeCostumeAttrList(dstSlotPos):
  1533. return TRUE;
  1534. elif "USE_RESET_COSTUME_ATTR" == useType and app.ENABLE_BONUS_COSTUME_SYSTEM:
  1535. if self.__CanResetCostumeAttr(dstSlotPos):
  1536. return TRUE;
  1537. elif "USE_PUT_INTO_AURA_SOCKET" == useType and app.ENABLE_AURA_COSTUME_SYSTEM:
  1538. dstItemVnum = player.GetItemIndex(dstSlotPos)
  1539. item.SelectItem(dstItemVnum)
  1540.  
  1541. if item.ITEM_TYPE_COSTUME == item.GetItemType() and item.COSTUME_TYPE_AURA == item.GetItemSubType():
  1542. if player.GetItemMetinSocket(dstSlotPos, player.ITEM_SOCKET_AURA_BOOST) == 0:
  1543. return TRUE
  1544.  
  1545. return FALSE
  1546.  
  1547. def __CanCleanBrokenMetinStone(self, dstSlotPos):
  1548. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1549. if dstItemVNum == 0:
  1550. return FALSE
  1551.  
  1552. item.SelectItem(dstItemVNum)
  1553.  
  1554. if item.ITEM_TYPE_WEAPON != item.GetItemType():
  1555. return FALSE
  1556.  
  1557. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1558. if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
  1559. return TRUE
  1560.  
  1561. return FALSE
  1562.  
  1563. def __CanChangeItemAttrList(self, dstSlotPos):
  1564. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1565. if dstItemVNum == 0:
  1566. return FALSE
  1567.  
  1568. item.SelectItem(dstItemVNum)
  1569.  
  1570. if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
  1571. return FALSE
  1572.  
  1573. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1574. if player.GetItemAttribute(dstSlotPos, i) != 0:
  1575. return TRUE
  1576.  
  1577. return FALSE
  1578.  
  1579. def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
  1580. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1581. if dstItemVNum == 0:
  1582. return FALSE
  1583.  
  1584. item.SelectItem(dstItemVNum)
  1585.  
  1586. if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1587. return FALSE
  1588.  
  1589. if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1590. return FALSE
  1591.  
  1592. curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1593. maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1594.  
  1595. if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):
  1596. return FALSE
  1597.  
  1598. if curCount>=maxCount:
  1599. return FALSE
  1600.  
  1601. return TRUE
  1602.  
  1603. def __CanAddAccessorySocket(self, dstSlotPos):
  1604. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1605. if dstItemVNum == 0:
  1606. return FALSE
  1607.  
  1608. item.SelectItem(dstItemVNum)
  1609.  
  1610. if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1611. return FALSE
  1612.  
  1613. if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1614. return FALSE
  1615.  
  1616. curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1617. maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1618.  
  1619. ACCESSORY_SOCKET_MAX_SIZE = 3
  1620. if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
  1621. return FALSE
  1622.  
  1623. return TRUE
  1624.  
  1625. def __CanAddItemAttr(self, dstSlotPos):
  1626. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1627. if dstItemVNum == 0:
  1628. return FALSE
  1629.  
  1630. item.SelectItem(dstItemVNum)
  1631.  
  1632. if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
  1633. return FALSE
  1634.  
  1635. attrCount = 0
  1636. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1637. if player.GetItemAttribute(dstSlotPos, i) != 0:
  1638. attrCount += 1
  1639.  
  1640. if attrCount<4:
  1641. return TRUE
  1642.  
  1643. return FALSE
  1644.  
  1645. def ShowToolTip(self, slotIndex):
  1646. if None != self.tooltipItem:
  1647. self.tooltipItem.SetInventoryItem(slotIndex)
  1648.  
  1649. def OnTop(self):
  1650. if None != self.tooltipItem:
  1651. self.tooltipItem.SetTop()
  1652.  
  1653. # for btn in self.sidebarButtons:
  1654. # btn.SetTop()
  1655.  
  1656. def OnPressEscapeKey(self):
  1657. self.Close()
  1658. return TRUE
  1659.  
  1660. def UseItemSlot(self, slotIndex):
  1661. curCursorNum = app.GetCursor()
  1662. if app.SELL == curCursorNum:
  1663. return
  1664.  
  1665. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
  1666. return
  1667.  
  1668. slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
  1669.  
  1670. if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1671. if self.wndDragonSoulRefine.IsShow():
  1672. self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
  1673. return
  1674.  
  1675. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  1676. if self.isShowAcceWindow():
  1677. acce.Add(player.INVENTORY, slotIndex, 255)
  1678. return
  1679.  
  1680. if exchange.isTrading() and (app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL)):
  1681. item.SelectItem(player.GetItemIndex(slotIndex))
  1682. emptyExchangeSlots = self.GetExchangeEmptyItemPos(item.GetItemSize()[1])
  1683. if emptyExchangeSlots == -1:
  1684. return
  1685.  
  1686. if item.IsAntiFlag(item.ANTIFLAG_GIVE):
  1687. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
  1688. return
  1689.  
  1690. net.SendExchangeItemAddPacket(player.SLOT_TYPE_INVENTORY, slotIndex, emptyExchangeSlots[0])
  1691. else:
  1692. self.__UseItem(slotIndex)
  1693. mouseModule.mouseController.DeattachObject()
  1694. self.OverOutItem()
  1695.  
  1696. def GetExchangeEmptyItemPos(self, itemHeight):
  1697. inventorySize = exchange.EXCHANGE_ITEM_MAX_NUM
  1698. inventoryWidth = 4
  1699. GetBlockedSlots = lambda slot, size: [slot+(round*inventoryWidth) for round in xrange(size)]
  1700. blockedSlots = [element for sublist in [GetBlockedSlots(slot, item.GetItemSize(item.SelectItem(exchange.GetItemVnumFromSelf(slot)))[1]) for slot in xrange(inventorySize) if exchange.GetItemVnumFromSelf(slot) != 0] for element in sublist]
  1701. freeSlots = [slot for slot in xrange(inventorySize) if not slot in blockedSlots and not TRUE in [e in blockedSlots for e in [slot+(round*inventoryWidth) for round in xrange(itemHeight)]]]
  1702. return [freeSlots, -1][len(freeSlots) == 0]
  1703.  
  1704. def __GetCurrentItemGrid(self):
  1705. itemGrid = [[FALSE for slot in xrange(player.INVENTORY_PAGE_SIZE)] for page in xrange(player.INVENTORY_PAGE_COUNT)]
  1706.  
  1707. for page in xrange(player.INVENTORY_PAGE_COUNT):
  1708. for slot in xrange(player.INVENTORY_PAGE_SIZE):
  1709. itemVnum = player.GetItemIndex(slot + page * player.INVENTORY_PAGE_SIZE)
  1710. if itemVnum <> 0:
  1711. (w, h) = item.GetItemSize(item.SelectItem(itemVnum))
  1712. for i in xrange(h):
  1713. itemGrid[page][slot + i * 5] = TRUE
  1714.  
  1715. return itemGrid
  1716.  
  1717. def __FindEmptyCellForSize(self, itemGrid, size):
  1718. for page in xrange(player.INVENTORY_PAGE_COUNT):
  1719. for slot in xrange(player.INVENTORY_PAGE_SIZE):
  1720. if itemGrid[page][slot] == FALSE:
  1721. possible = TRUE
  1722. for i in xrange(size):
  1723. p = slot + (i * 5)
  1724.  
  1725. try:
  1726. if itemGrid[page][p] == TRUE:
  1727. possible = FALSE
  1728. break
  1729. except IndexError:
  1730. possible = FALSE
  1731. break
  1732.  
  1733. if possible:
  1734. return slot + page * player.INVENTORY_PAGE_SIZE
  1735.  
  1736. return -1
  1737.  
  1738. def AttachItemFromSafebox(self, slotIndex, itemIndex):
  1739. itemGrid = self.__GetCurrentItemGrid()
  1740.  
  1741. if item.GetItemType(item.SelectItem(itemIndex)) == item.ITEM_TYPE_DS:
  1742. return
  1743.  
  1744. emptySlotIndex = self.__FindEmptyCellForSize(itemGrid, item.GetItemSize()[1])
  1745. if emptySlotIndex <> -1:
  1746. net.SendSafeboxCheckoutPacket(slotIndex, player.INVENTORY, emptySlotIndex)
  1747.  
  1748. return TRUE
  1749.  
  1750. def __UseItem(self, slotIndex):
  1751. ItemVNum = player.GetItemIndex(slotIndex)
  1752. item.SelectItem(ItemVNum)
  1753.  
  1754. if self.interface and (app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL)) and self.interface.AttachInvenItemToOtherWindowSlot(player.INVENTORY, slotIndex):
  1755. return
  1756.  
  1757. if app.ENABLE_QUICK_SELL_ITEM:
  1758. if app.IsPressed(app.DIK_LCONTROL) and self.IsSellItems(slotIndex):
  1759. if not shop.IsPrivateShop():
  1760. self.__SendSellItemPacket(slotIndex)
  1761. return
  1762.  
  1763. if app.ENABLE_AURA_COSTUME_SYSTEM:
  1764. if player.IsAuraRefineWindowOpen():
  1765. self.__UseItemAura(slotIndex)
  1766. return
  1767.  
  1768. if app.ENABLE_GROWTH_PET_SYSTEM:
  1769. itemType = item.GetItemType()
  1770.  
  1771. if self.interface.wndPetInfoWindow.AttachItemToPetWindow(player.INVENTORY, slotIndex):
  1772. return
  1773.  
  1774. if self.PetSkillDelDlg and self.PetSkillDelDlg.IsShow():
  1775. self.__PetSkillDeleteQuestionDialogCancel()
  1776.  
  1777. if item.ITEM_TYPE_GROWTH_PET == itemType:
  1778. self.__UseItemPet(slotIndex)
  1779. return
  1780.  
  1781. if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
  1782. self.questionDialog = uiCommon.QuestionDialog("thin")
  1783. self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)
  1784. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
  1785. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
  1786. self.questionDialog.Open()
  1787. self.questionDialog.slotIndex = slotIndex
  1788. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1789.  
  1790. elif item.GetItemType() == item.ITEM_TYPE_GIFTBOX and app.ENABLE_VIEW_CHEST_DROP:
  1791. if self.interface:
  1792. if self.interface.dlgChestDrop:
  1793. if not self.interface.dlgChestDrop.IsShow():
  1794. self.interface.dlgChestDrop.Open(slotIndex)
  1795. net.SendChestDropInfo(slotIndex)
  1796.  
  1797. else:
  1798. self.__SendUseItemPacket(slotIndex)
  1799.  
  1800. def __UseItemQuestionDialog_OnCancel(self):
  1801. self.OnCloseQuestionDialog()
  1802.  
  1803. def __UseItemQuestionDialog_OnAccept(self):
  1804. self.__SendUseItemPacket(self.questionDialog.slotIndex)
  1805. self.OnCloseQuestionDialog()
  1806.  
  1807. def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
  1808.  
  1809. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1810. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1811. return
  1812.  
  1813. net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
  1814.  
  1815. def __SendUseItemPacket(self, slotPos):
  1816.  
  1817. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1818. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1819. return
  1820.  
  1821. net.SendItemUsePacket(slotPos)
  1822.  
  1823. def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
  1824.  
  1825. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1826. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
  1827. return
  1828.  
  1829. net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
  1830.  
  1831. def OnMoveWindow(self, x, y):
  1832. self.__UpdateSidebarPosition()
  1833.  
  1834. if app.ENABLE_QUICK_SELL_ITEM:
  1835. def IsSellItems(self, slotIndex):
  1836. itemVnum = player.GetItemIndex(slotIndex)
  1837. item.SelectItem(itemVnum)
  1838. itemPrice = item.GetISellItemPrice()
  1839.  
  1840. if itemPrice > 1:
  1841. return TRUE
  1842.  
  1843. return FALSE
  1844.  
  1845. def __SendSellItemPacket(self, itemVNum):
  1846. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1847. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1848. return
  1849.  
  1850. net.SendItemSellPacket(itemVNum)
  1851.  
  1852. if app.ENABLE_ACCE_COSTUME_SYSTEM:
  1853. def SetAcceWindow(self, wndAcceCombine, wndAcceAbsorption):
  1854. self.wndAcceCombine = wndAcceCombine
  1855. self.wndAcceAbsorption = wndAcceAbsorption
  1856.  
  1857. def isShowAcceWindow(self):
  1858. if self.wndAcceCombine:
  1859. if self.wndAcceCombine.IsShow():
  1860. return 1
  1861. if self.wndAcceAbsorption:
  1862. if self.wndAcceAbsorption.IsShow():
  1863. return 1
  1864. return 0
  1865.  
  1866. if app.ENABLE_PICKUP_ITEM_EFFECT:
  1867. def __HighlightSlot_Refresh(self):
  1868. for i in xrange(self.wndItem.GetSlotCount()):
  1869. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  1870. if slotNumber in self.listHighlightedSlot:
  1871. self.wndItem.ActivateSlot(i, wndMgr.COLOR_TYPE_ORANGE)
  1872.  
  1873. def __HighlightSlot_Clear(self):
  1874. for i in xrange(self.wndItem.GetSlotCount()):
  1875. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  1876. if slotNumber in self.listHighlightedSlot:
  1877. self.wndItem.DeactivateSlot(i)
  1878. self.listHighlightedSlot.remove(slotNumber)
  1879.  
  1880. def HighlightSlot(self, slot):
  1881. if slot>player.INVENTORY_PAGE_SIZE*player.INVENTORY_PAGE_COUNT:
  1882. return
  1883.  
  1884. if not slot in self.listHighlightedSlot:
  1885. self.listHighlightedSlot.append (slot)
  1886.  
  1887. def DelHighlightSlot(self, inventorylocalslot):
  1888. if inventorylocalslot in self.listHighlightedSlot:
  1889. if inventorylocalslot >= player.INVENTORY_PAGE_SIZE:
  1890. self.wndItem.DeactivateSlot(inventorylocalslot - (self.inventoryPageIndex * player.INVENTORY_PAGE_SIZE) )
  1891. else:
  1892. self.wndItem.DeactivateSlot(inventorylocalslot)
  1893.  
  1894. self.listHighlightedSlot.remove(inventorylocalslot)
  1895.  
  1896. if app.ENABLE_BONUS_COSTUME_SYSTEM:
  1897. def __CanChangeCostumeAttrList(self, dstSlotPos):
  1898. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1899. if dstItemVNum == 0:
  1900. return FALSE
  1901.  
  1902. item.SelectItem(dstItemVNum)
  1903.  
  1904. if item.ITEM_TYPE_COSTUME != item.GetItemType() and not item.GetItemSubType() in (item.COSTUME_TYPE_BODY, item.COSTUME_TYPE_HAIR, item.COSTUME_TYPE_WEAPON):
  1905. return FALSE
  1906.  
  1907. for i in xrange(player.COSTUME_ATTRIBUTE_MAX_NUM):
  1908. if player.GetItemAttribute(dstSlotPos, i)[0] != 0:
  1909. return TRUE
  1910.  
  1911. return FALSE
  1912.  
  1913. def __CanResetCostumeAttr(self, dstSlotPos):
  1914. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1915. if dstItemVNum == 0:
  1916. return FALSE
  1917.  
  1918. item.SelectItem(dstItemVNum)
  1919. if item.ITEM_TYPE_COSTUME != item.GetItemType() and not item.GetItemSubType() in (item.COSTUME_TYPE_BODY, item.COSTUME_TYPE_HAIR, item.COSTUME_TYPE_WEAPON):
  1920. return FALSE
  1921.  
  1922. return TRUE
  1923.  
  1924. if app.ENABLE_RENEWAL_AFFECT:
  1925. def __CanAttachThisItem(self, itemVNum, itemSlotIndex):
  1926. if constInfo.IS_AFFECT_PLUS(itemVNum):
  1927. isActivated = player.GetItemMetinSocket(itemSlotIndex, 1)
  1928. if isActivated == 1:
  1929. return FALSE
  1930. return TRUE
  1931.  
  1932. # def TogglePotionsWindow(self):
  1933. # if self.wndPotions:
  1934. # if self.wndPotions.IsShow():
  1935. # self.wndPotions.Hide()
  1936. # else:
  1937. # self.wndPotions.Show()
  1938. # else:
  1939. # self.wndPotions = InventoryWindowPotions(self)
  1940. # self.wndPotions.Show()
  1941.  
  1942. # def SAFE_SetSidebarButtonEvent(self, btnIdx, event):
  1943. # btn = self.sidebarButtons[btnIdx]
  1944. # btn.SAFE_SetEvent(event)
  1945.  
  1946. # def __HideSidebar(self):
  1947. # for btn in self.sidebarButtons:
  1948. # btn.Hide()
  1949.  
  1950. # def __ShowSidebar(self):
  1951. # for btn in self.sidebarButtons:
  1952. # btn.Show()
  1953.  
  1954. # self.__UpdateSidebarPosition()
  1955.  
  1956. # def __BuildSidebar(self):
  1957. # for i in xrange(self.SIDEBAR_BTN_MAX_NUM):
  1958. # btn = ui.Button()
  1959. # btn.AddFlag("float")
  1960. # btn.SetUpVisual(self.SIDEBAR_BTN_ICONS[i])
  1961. # btn.SetOverVisual(self.SIDEBAR_BTN_ICONS_OVER[i])
  1962. # btn.SetDownVisual(self.SIDEBAR_BTN_ICONS_DOWN[i])
  1963.  
  1964. # btn.icon = ui.ImageBox()
  1965. # btn.icon.SetParent(btn)
  1966. # btn.icon.AddFlag("not_pick")
  1967. # btn.icon.SetWindowHorizontalAlignCenter()
  1968. # btn.icon.SetWindowVerticalAlignCenter()
  1969. # btn.icon.SetPosition(2 if self.SIDEBAR_TELEPORT == i else 1, 0)
  1970. # btn.icon.Show()
  1971.  
  1972. # btn.Hide()
  1973. # self.sidebarButtons.append(btn)
  1974.  
  1975. # self.__UpdateSidebarPosition()
  1976.  
  1977. # def __UpdateSidebarPosition(self):
  1978. # invX, invY = self.GetGlobalPosition()
  1979. # y = invY + 275
  1980.  
  1981. # for i in xrange(self.SIDEBAR_BTN_MAX_NUM):
  1982. # btn = self.sidebarButtons[i]
  1983.  
  1984. # x = invX - btn.GetWidth() + 30
  1985. # btn.SetPosition(x, y)
  1986.  
  1987. # y += btn.GetHeight() + 5
  1988.  
  1989. def IsDlgQuestionShow(self):
  1990. if self.dlgQuestion.IsShow():
  1991. return TRUE
  1992. else:
  1993. return FALSE
  1994.  
  1995. def CancelDlgQuestion(self):
  1996. self.__Cancel()
  1997.  
  1998. if app.ENABLE_AURA_COSTUME_SYSTEM:
  1999. def __UseItemAuraQuestionDialog_OnAccept(self):
  2000. self.questionDialog.Close()
  2001. net.SendAuraRefineCheckIn(*(self.questionDialog.srcItem + self.questionDialog.dstItem + (player.GetAuraRefineWindowType(),)))
  2002.  
  2003. self.questionDialog.srcItem = (0, 0)
  2004. self.questionDialog.dstItem = (0, 0)
  2005.  
  2006. def __UseItemAuraQuestionDialog_Close(self):
  2007. self.questionDialog.Close()
  2008.  
  2009. self.questionDialog.srcItem = (0, 0)
  2010. self.questionDialog.dstItem = (0, 0)
  2011.  
  2012. def __UseItemAura(self, slotIndex):
  2013. AuraSlot = player.FineMoveAuraItemSlot()
  2014. UsingAuraSlot = player.FindActivatedAuraSlot(player.INVENTORY, slotIndex)
  2015.  
  2016. AuraVnum = player.GetItemIndex(slotIndex)
  2017. item.SelectItem(AuraVnum)
  2018.  
  2019. if player.GetAuraCurrentItemSlotCount() >= player.AURA_SLOT_MAX <= UsingAuraSlot:
  2020. return
  2021.  
  2022. if player.IsEquipmentSlot(slotIndex):
  2023. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_EQUIPITEM)
  2024. return
  2025.  
  2026. if player.GetAuraRefineWindowType() == player.AURA_WINDOW_TYPE_ABSORB:
  2027. isAbsorbItem = FALSE
  2028. if item.GetItemType() == item.ITEM_TYPE_COSTUME:
  2029. if item.GetItemSubType() == item.COSTUME_TYPE_AURA:
  2030. if player.GetItemMetinSocket(slotIndex, player.ITEM_SOCKET_AURA_DRAIN_ITEM_VNUM) == 0:
  2031. if UsingAuraSlot == player.AURA_SLOT_MAX:
  2032. if AuraSlot != player.AURA_SLOT_MAIN:
  2033. return
  2034. net.SendAuraRefineCheckIn(player.INVENTORY, slotIndex, player.AURA_REFINE, AuraSlot, player.GetAuraRefineWindowType())
  2035. else:
  2036. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_ABSORBITEM)
  2037. return
  2038. else:
  2039. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_ABSORBITEM)
  2040. return
  2041.  
  2042. elif item.GetItemType() == item.ITEM_TYPE_ARMOR:
  2043. if item.GetItemSubType() in [item.ARMOR_SHIELD, item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR]:
  2044. if player.FindUsingAuraSlot(player.AURA_SLOT_MAIN) == player.NPOS():
  2045. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_REGISTER_AURAITEM)
  2046. return
  2047.  
  2048. isAbsorbItem = TRUE
  2049. else:
  2050. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_ABSORBITEM)
  2051. return
  2052. else:
  2053. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_ABSORBITEM)
  2054. return
  2055.  
  2056. if isAbsorbItem:
  2057. if UsingAuraSlot == player.AURA_SLOT_MAX:
  2058. if AuraSlot != player.AURA_SLOT_SUB:
  2059. if player.FindUsingAuraSlot(player.AURA_SLOT_SUB) == player.NPOS():
  2060. AuraSlot = player.AURA_SLOT_SUB
  2061. else:
  2062. return
  2063.  
  2064. self.questionDialog = uiCommon.QuestionDialog("thin")
  2065. self.questionDialog.SetText(localeInfo.AURA_NOTICE_DEL_ABSORDITEM)
  2066. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemAuraQuestionDialog_OnAccept))
  2067. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemAuraQuestionDialog_Close))
  2068. self.questionDialog.srcItem = (player.INVENTORY, slotIndex)
  2069. self.questionDialog.dstItem = (player.AURA_REFINE, AuraSlot)
  2070. self.questionDialog.Open()
  2071.  
  2072. elif player.GetAuraRefineWindowType() == player.AURA_WINDOW_TYPE_GROWTH:
  2073. if UsingAuraSlot == player.AURA_SLOT_MAX:
  2074. if AuraSlot == player.AURA_SLOT_MAIN:
  2075. if item.GetItemType() == item.ITEM_TYPE_COSTUME:
  2076. if item.GetItemSubType() == item.COSTUME_TYPE_AURA:
  2077. socketLevelValue = player.GetItemMetinSocket(slotIndex, player.ITEM_SOCKET_AURA_CURRENT_LEVEL)
  2078. curLevel = (socketLevelValue / 100000) - 1000
  2079. curExp = socketLevelValue % 100000;
  2080. if curLevel >= player.AURA_MAX_LEVEL:
  2081. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_MAX_LEVEL)
  2082. return
  2083.  
  2084. if curExp >= player.GetAuraRefineInfo(curLevel, player.AURA_REFINE_INFO_NEED_EXP):
  2085. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_GROWTHITEM)
  2086. return
  2087.  
  2088. net.SendAuraRefineCheckIn(player.INVENTORY, slotIndex, player.AURA_REFINE, AuraSlot, player.GetAuraRefineWindowType())
  2089. else:
  2090. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_AURAITEM)
  2091. return
  2092. else:
  2093. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_AURAITEM)
  2094. return
  2095.  
  2096. elif AuraSlot == player.AURA_SLOT_SUB:
  2097. if player.FindUsingAuraSlot(player.AURA_SLOT_MAIN) != player.NPOS():
  2098. if item.GetItemType() == item.ITEM_TYPE_RESOURCE:
  2099. if item.GetItemSubType() == item.RESOURCE_AURA:
  2100. if UsingAuraSlot == player.AURA_SLOT_MAX:
  2101. if AuraSlot != player.AURA_SLOT_SUB:
  2102. return
  2103.  
  2104. net.SendAuraRefineCheckIn(player.INVENTORY, slotIndex, player.AURA_REFINE, AuraSlot, player.GetAuraRefineWindowType())
  2105. else:
  2106. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_AURARESOURCE)
  2107. return
  2108. else:
  2109. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_AURARESOURCE)
  2110. return
  2111. else:
  2112. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_REGISTER_AURAITEM)
  2113. return
  2114.  
  2115. elif player.GetAuraRefineWindowType() == player.AURA_WINDOW_TYPE_EVOLVE:
  2116. if UsingAuraSlot == player.AURA_SLOT_MAX:
  2117. if AuraSlot == player.AURA_SLOT_MAIN:
  2118. if item.GetItemType() == item.ITEM_TYPE_COSTUME:
  2119. if item.GetItemSubType() == item.COSTUME_TYPE_AURA:
  2120. socketLevelValue = player.GetItemMetinSocket(slotIndex, player.ITEM_SOCKET_AURA_CURRENT_LEVEL)
  2121. curLevel = (socketLevelValue / 100000) - 1000
  2122. curExp = socketLevelValue % 100000;
  2123. if curLevel >= player.AURA_MAX_LEVEL:
  2124. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_MAX_LEVEL)
  2125. return
  2126.  
  2127. if curLevel != player.GetAuraRefineInfo(curLevel, player.AURA_REFINE_INFO_LEVEL_MAX) or curExp < player.GetAuraRefineInfo(curLevel, player.AURA_REFINE_INFO_NEED_EXP):
  2128. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_EVOLUTION_ITEM)
  2129. return
  2130.  
  2131. if player.FindUsingAuraSlot(AuraSlot) != player.NPOS():
  2132. return
  2133.  
  2134. net.SendAuraRefineCheckIn(player.INVENTORY, slotIndex, player.AURA_REFINE, AuraSlot, player.GetAuraRefineWindowType())
  2135. else:
  2136. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_AURAITEM)
  2137. return
  2138. else:
  2139. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_AURAITEM)
  2140. return
  2141.  
  2142. elif AuraSlot == player.AURA_SLOT_SUB:
  2143. Cell = player.FindUsingAuraSlot(player.AURA_SLOT_MAIN)
  2144. if Cell == player.NPOS():
  2145. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_POSSIBLE_REGISTER_AURAITEM)
  2146. return
  2147.  
  2148. socketLevelValue = player.GetItemMetinSocket(*(Cell + (player.ITEM_SOCKET_AURA_CURRENT_LEVEL,)))
  2149. curLevel = (socketLevelValue / 100000) - 1000
  2150. curExp = socketLevelValue % 100000;
  2151.  
  2152. if curLevel >= player.AURA_MAX_LEVEL:
  2153. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_MAX_LEVEL)
  2154. return
  2155.  
  2156. if curExp < player.GetAuraRefineInfo(curLevel, player.AURA_REFINE_INFO_NEED_EXP):
  2157. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_EVOLUTION_ITEM)
  2158. return
  2159.  
  2160. if AuraVnum != player.GetAuraRefineInfo(curLevel, player.AURA_REFINE_INFO_MATERIAL_VNUM):
  2161. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_EVOLUTION_ITEM)
  2162. return
  2163.  
  2164. if player.GetItemCount(slotIndex) < player.GetAuraRefineInfo(curLevel, player.AURA_REFINE_INFO_MATERIAL_COUNT):
  2165. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.AURA_IMPOSSIBLE_EVOLUTION_ITEMCOUNT)
  2166. return
  2167.  
  2168. if UsingAuraSlot == player.AURA_SLOT_MAX:
  2169. if AuraSlot != player.AURA_SLOT_MAX:
  2170. if player.FindUsingAuraSlot(AuraSlot) != player.NPOS():
  2171. return
  2172.  
  2173. net.SendAuraRefineCheckIn(player.INVENTORY, slotIndex, player.AURA_REFINE, AuraSlot, player.GetAuraRefineWindowType())
  2174.  
  2175. if app.ENABLE_GROWTH_PET_SYSTEM:
  2176. def __UseItemPet(self, slotIndex):
  2177. itemSubType = item.GetItemSubType()
  2178. if item.PET_EGG == itemSubType:
  2179. self.petHatchingWindow.HatchingWindowOpen(player.INVENTORY, slotIndex)
  2180.  
  2181. elif item.PET_UPBRINGING == itemSubType:
  2182. if self.__CanUseGrowthPet(slotIndex):
  2183. self.__SendUseItemPacket(slotIndex)
  2184.  
  2185. elif item.PET_BAG == itemSubType:
  2186. if self.__CanUsePetBagItem(slotIndex):
  2187. if self.questionDialog:
  2188. self.questionDialog.Close()
  2189.  
  2190. self.questionDialog = uiCommon.QuestionDialog("thin")
  2191. self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_PET_BAG_TAKE_OUT)
  2192. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
  2193. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
  2194. self.questionDialog.slotIndex = slotIndex
  2195. self.questionDialog.Open()
  2196.  
  2197. if item.PET_SKILL_ALL_DEL_BOOK == itemSubType:
  2198. pet_id = player.GetActivePetItemId()
  2199. if 0 == pet_id:
  2200. return
  2201. (skill_count, pet_skill1, pet_skill_level1, pet_skill_cool1, pet_skill2, pet_skill_level2, pet_skill_cool2, pet_skill3, pet_skill_level3, pet_skill_cool3) = player.GetPetSkill(pet_id)
  2202. if 0 == pet_skill1 and 0 == pet_skill2 and 0 == pet_skill3:
  2203. popup = uiCommon.PopupDialog()
  2204. popup.SetText(localeInfo.PET_EMPTY_SKILL_SLOT_USE_ITEM)
  2205. popup.SetAcceptEvent(self.__OnClosePopupDialog)
  2206. popup.Open()
  2207. self.pop = popup
  2208. return
  2209.  
  2210. self.PetSkillAllDelBookIndex = slotIndex
  2211. self.SetCantMouseEventSlot( self.PetSkillAllDelBookIndex )
  2212.  
  2213. self.PetSkillDelDlg.SetAcceptEvent(ui.__mem_func__(self.__PetSkillDeleteQuestionDialogAccept))
  2214. self.PetSkillDelDlg.SetCancelEvent(ui.__mem_func__(self.__PetSkillDeleteQuestionDialogCancel))
  2215.  
  2216. self.PetSkillDelDlg.SetText1(localeInfo.PET_SKILL_DELETE_QUESTION_DLG_MSG1)
  2217. self.PetSkillDelDlg.SetText2(localeInfo.PET_SKILL_DELETE_QUESTION_DLG_MSG2)
  2218. (w,h) = self.PetSkillDelDlg.GetTextSize1()
  2219. self.PetSkillDelDlg.SetWidth(w+100)
  2220. self.PetSkillDelDlg.Open()
  2221.  
  2222. def __OnClosePopupDialog(self):
  2223. self.pop = None
  2224.  
  2225. def __ActivePetHighlightSlot(self, slotNumber):
  2226. active_id = player.GetActivePetItemId()
  2227.  
  2228. if active_id == player.GetItemMetinSocket(player.INVENTORY, slotNumber, 2):
  2229.  
  2230. if slotNumber >= player.INVENTORY_PAGE_SIZE:
  2231. slotNumber -= (self.inventoryPageIndex * player.INVENTORY_PAGE_SIZE)
  2232.  
  2233. self.wndItem.ActivateSlot(slotNumber, wndMgr.COLOR_TYPE_WHITE)
  2234. else:
  2235. if slotNumber >= player.INVENTORY_PAGE_SIZE:
  2236. slotNumber -= (self.inventoryPageIndex * player.INVENTORY_PAGE_SIZE)
  2237.  
  2238. self.wndItem.DeactivateSlot(slotNumber)
  2239.  
  2240. def __SetCoolTimePetItemSlot(self, slotNumber, itemVnum):
  2241.  
  2242. item.SelectItem(itemVnum)
  2243. itemSubType = item.GetItemSubType()
  2244.  
  2245. if itemSubType not in [item.PET_UPBRINGING, item.PET_BAG]:
  2246. return
  2247.  
  2248. if itemSubType == item.PET_BAG:
  2249. id = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 2)
  2250. if id == 0:
  2251. return
  2252.  
  2253. (limitType, limitValue) = item.GetLimit(0)
  2254.  
  2255. if itemSubType == item.PET_UPBRINGING:
  2256. limitValue = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 1)
  2257.  
  2258. if limitType in [item.LIMIT_REAL_TIME, item.LIMIT_REAL_TIME_START_FIRST_USE]:
  2259.  
  2260. sock_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0)
  2261.  
  2262. remain_time = max(0, sock_time - app.GetGlobalTimeStamp())
  2263.  
  2264. if slotNumber >= player.INVENTORY_PAGE_SIZE:
  2265. slotNumber -= (self.inventoryPageIndex * player.INVENTORY_PAGE_SIZE)
  2266.  
  2267. self.wndItem.SetSlotCoolTimeInverse(slotNumber, limitValue, limitValue - remain_time)
  2268.  
  2269. def __IsPetItem(self, srcItemVID):
  2270. item.SelectItem(srcItemVID)
  2271.  
  2272. if item.GetItemType() == item.ITEM_TYPE_GROWTH_PET:
  2273. return TRUE
  2274.  
  2275. return FALSE
  2276.  
  2277. def __SendUsePetItemToItemPacket(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
  2278. if self.__CanUseSrcPetItemToDstPetItem(srcItemVID, srcItemSlotPos, dstItemSlotPos):
  2279. srcItemVnum = player.GetItemIndex(srcItemSlotPos)
  2280. item.SelectItem( srcItemVnum )
  2281. srcItemType = item.GetItemType()
  2282. srcItemSubType = item.GetItemSubType()
  2283.  
  2284. if item.ITEM_TYPE_GROWTH_PET == srcItemType:
  2285. if srcItemSubType in [item.PET_FEEDSTUFF, item.PET_BAG]:
  2286. self.__OpenPetItemQuestionDialog(srcItemSlotPos, dstItemSlotPos)
  2287. elif item.PET_NAME_CHANGE == srcItemSubType:
  2288. self.__UseItemPetNameChange(srcItemSlotPos, dstItemSlotPos)
  2289. return TRUE
  2290.  
  2291. return FALSE
  2292.  
  2293. def __UseItemPetNameChange(self, srcSlotPos, dstSlotPos):
  2294. if self.petNameChangeWindow:
  2295. self.petNameChangeWindow.NameChangeWindowOpen(srcSlotPos, dstSlotPos)
  2296.  
  2297. def __IsUsablePetItem(self, srcItemVNum):
  2298. item.SelectItem(srcItemVNum)
  2299. srcItemType = item.GetItemType()
  2300. srcItemSubType = item.GetItemSubType()
  2301.  
  2302. if srcItemType != item.ITEM_TYPE_GROWTH_PET:
  2303. return FALSE
  2304.  
  2305. if srcItemSubType not in [item.PET_UPBRINGING, item.PET_FEEDSTUFF, item.PET_BAG, item.PET_NAME_CHANGE]:
  2306. return FALSE
  2307.  
  2308. return TRUE
  2309.  
  2310. def __CanUseSrcPetItemToDstPetItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
  2311. item.SelectItem(srcItemVNum)
  2312. srcItemType = item.GetItemType()
  2313. srcItemSubType = item.GetItemSubType()
  2314.  
  2315. if srcItemType != item.ITEM_TYPE_GROWTH_PET:
  2316. return FALSE
  2317.  
  2318. if srcItemSubType == item.PET_FEEDSTUFF:
  2319. detIndex = player.GetItemIndex(dstSlotPos)
  2320. item.SelectItem(detIndex)
  2321.  
  2322. dstItemType = item.GetItemType()
  2323. dstItemSubType = item.GetItemSubType()
  2324.  
  2325. if dstItemType != item.ITEM_TYPE_GROWTH_PET:
  2326. return FALSE
  2327.  
  2328. if dstItemSubType not in [item.PET_UPBRINGING]:
  2329. return FALSE
  2330.  
  2331. if dstItemSubType == item.PET_BAG:
  2332. incaseTime = player.GetItemMetinSocket(dstSlotPos, 1)
  2333. if incaseTime == 0:
  2334. return FALSE
  2335.  
  2336. elif srcItemSubType == item.PET_BAG:
  2337. detIndex = player.GetItemIndex(dstSlotPos)
  2338. item.SelectItem(detIndex)
  2339.  
  2340. dstItemType = item.GetItemType()
  2341. dstItemSubType = item.GetItemSubType()
  2342.  
  2343. if dstItemType != item.ITEM_TYPE_GROWTH_PET:
  2344. return FALSE
  2345.  
  2346. if dstItemSubType not in [item.PET_UPBRINGING, item.PET_BAG]:
  2347. return FALSE
  2348.  
  2349. lifeTime = player.GetItemMetinSocket(dstSlotPos, 0)
  2350.  
  2351. if dstItemSubType == item.PET_UPBRINGING:
  2352. if lifeTime < app.GetGlobalTimeStamp():
  2353. return FALSE
  2354.  
  2355. srcIncase = player.GetItemMetinSocket(srcSlotPos, 1)
  2356. if srcIncase != 0:
  2357. return FALSE
  2358.  
  2359. elif dstItemSubType == item.PET_BAG:
  2360. if lifeTime > app.GetGlobalTimeStamp():
  2361. return FALSE
  2362.  
  2363. srcIncase = player.GetItemMetinSocket(srcSlotPos, 1)
  2364. if srcIncase != 0:
  2365. return FALSE
  2366.  
  2367. destIncase = player.GetItemMetinSocket(dstSlotPos, 1)
  2368. if destIncase == 0:
  2369. return FALSE
  2370.  
  2371. elif srcItemSubType == item.PET_NAME_CHANGE:
  2372. detIndex = player.GetItemIndex(dstSlotPos)
  2373. item.SelectItem(detIndex)
  2374.  
  2375. dstItemType = item.GetItemType()
  2376. dstItemSubType = item.GetItemSubType()
  2377.  
  2378. if dstItemType != item.ITEM_TYPE_GROWTH_PET:
  2379. return FALSE
  2380.  
  2381. if dstItemSubType not in [item.PET_UPBRINGING]:
  2382. return FALSE
  2383.  
  2384. else:
  2385. return FALSE
  2386.  
  2387. return TRUE
  2388.  
  2389. def __CanUseGrowthPet(self, slotIndex):
  2390. if not player.GetItemMetinSocket(player.INVENTORY, slotIndex, 2):
  2391. return FALSE
  2392.  
  2393. (limitType, limitValue) = item.GetLimit(0)
  2394. remain_time = 999
  2395. if item.LIMIT_REAL_TIME == limitType:
  2396. sock_time = player.GetItemMetinSocket(player.INVENTORY, slotIndex, 0)
  2397. if app.GetGlobalTimeStamp() > sock_time:
  2398. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.PET_CAN_NOT_SUMMON_BECAUSE_LIFE_TIME_END)
  2399. return FALSE
  2400.  
  2401. return TRUE
  2402.  
  2403. def __CanUsePetBagItem(self, slotIndex):
  2404. if not player.GetItemMetinSocket(player.INVENTORY, slotIndex, 2):
  2405. return FALSE
  2406.  
  2407. (limitType, limitValue) = item.GetLimit(0)
  2408. remain_time = 999
  2409. if item.LIMIT_REAL_TIME_START_FIRST_USE == limitType:
  2410. sock_time = player.GetItemMetinSocket(player.INVENTORY, slotIndex, 0)
  2411. use_cnt = player.GetItemMetinSocket(player.INVENTORY, slotIndex, 1)
  2412.  
  2413. if use_cnt:
  2414. if app.GetGlobalTimeStamp() > sock_time:
  2415. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.PET_CAN_NOT_USE_BAG)
  2416. return FALSE;
  2417.  
  2418. return TRUE
  2419.  
  2420. def __CanAttachGrowthPetItem(self, itemVNum, itemSlotIndex):
  2421. activePetId = player.GetActivePetItemId()
  2422. if activePetId == 0:
  2423. return TRUE
  2424.  
  2425. item.SelectItem(itemVNum)
  2426. itemType = item.GetItemType()
  2427. itemSubType = item.GetItemSubType()
  2428.  
  2429. if item.ITEM_TYPE_GROWTH_PET == itemType and itemSubType == item.PET_UPBRINGING:
  2430. petId = player.GetItemMetinSocket(itemSlotIndex, 2)
  2431. if petId == activePetId:
  2432. return FALSE
  2433.  
  2434. return TRUE
  2435.  
  2436. def SetPetHatchingWindow(self, window):
  2437. self.petHatchingWindow = window
  2438.  
  2439. def SetPetNameChangeWindow(self, window):
  2440. self.petNameChangeWindow = window
  2441.  
  2442. def SetPetFeedWindow(self, window):
  2443. self.petFeedWindow = window
  2444.  
  2445. def ItemMoveFeedWindow(self, slotWindow, slotIndex):
  2446. if not self.petFeedWindow:
  2447. return
  2448.  
  2449. self.petFeedWindow.ItemMoveFeedWindow(slotWindow, slotIndex)
  2450.  
  2451. def __OpenPetBagQuestionDialog(self, srcItemSlotPos, dstItemSlotPos):
  2452. if self.interface.IsShowDlgQuestionWindow():
  2453. self.interface.CloseDlgQuestionWindow()
  2454.  
  2455. def __OpenPetItemQuestionDialog(self, srcItemPos, dstItemPos):
  2456. if self.interface.IsShowDlgQuestionWindow():
  2457. self.interface.CloseDlgQuestionWindow()
  2458.  
  2459. getItemVNum = player.GetItemIndex
  2460. self.srcItemPos = srcItemPos
  2461. self.dstItemPos = dstItemPos
  2462.  
  2463. srcItemVnum = getItemVNum(srcItemPos)
  2464. dstItemVnum = getItemVNum(dstItemPos)
  2465.  
  2466. item.SelectItem(srcItemVnum)
  2467. src_item_name = item.GetItemName(srcItemVnum)
  2468. srcItemType = item.GetItemType()
  2469. srcItemSubType = item.GetItemSubType()
  2470.  
  2471. item.SelectItem(dstItemVnum)
  2472. dst_item_name = item.GetItemName(getItemVNum(dstItemPos))
  2473.  
  2474. self.PetItemQuestionDlg.SetAcceptEvent(ui.__mem_func__(self.__PetItemAccept))
  2475. self.PetItemQuestionDlg.SetCancelEvent(ui.__mem_func__(self.__PetItemCancel))
  2476.  
  2477. if item.ITEM_TYPE_GROWTH_PET == srcItemType:
  2478. if item.PET_FEEDSTUFF == srcItemSubType:
  2479. self.PetItemQuestionDlg.SetText(localeInfo.INVENTORY_REALLY_USE_PET_FEEDSTUFF_ITEM % (src_item_name, dst_item_name))
  2480. self.PetItemQuestionDlg.Open()
  2481.  
  2482. elif item.PET_BAG == srcItemSubType:
  2483. self.PetItemQuestionDlg.SetText(localeInfo.INVENTORY_REALLY_USE_PET_BAG_ITEM)
  2484. self.PetItemQuestionDlg.Open()
  2485.  
  2486. def __PetItemAccept(self):
  2487. self.PetItemQuestionDlg.Close()
  2488. self.__SendUseItemToItemPacket(self.srcItemPos, self.dstItemPos)
  2489. self.srcItemPos = (0, 0)
  2490. self.dstItemPos = (0, 0)
  2491. self.srcItemWindow = None
  2492. self.dstItemWindow = None
  2493.  
  2494. def __PetItemCancel(self):
  2495. self.srcItemPos = (0, 0)
  2496. self.dstItemPos = (0, 0)
  2497. self.PetItemQuestionDlg.Close()
  2498.  
  2499. def __PetSkillDeleteQuestionDialogAccept(self):
  2500. net.SendPetDeleteAllSkill(self.PetSkillAllDelBookIndex)
  2501. self.__PetSkillDeleteQuestionDialogCancel()
  2502.  
  2503. def __PetSkillDeleteQuestionDialogCancel(self):
  2504. self.PetSkillDelDlg.Close()
  2505. self.SetCanMouseEventSlot(self.PetSkillAllDelBookIndex)
  2506. self.PetSkillAllDelBookIndex = -1
  2507.  
  2508. def SetCanMouseEventSlot(self, inven_slot_index):
  2509. if inven_slot_index >= player.INVENTORY_PAGE_SIZE:
  2510. page = self.GetInventoryPageIndex()
  2511. inven_slot_index -= (page * player.INVENTORY_PAGE_SIZE)
  2512. self.wndItem.SetCanMouseEventSlot(inven_slot_index)
  2513.  
  2514. def SetCantMouseEventSlot(self, inven_slot_index):
  2515. if inven_slot_index >= player.INVENTORY_PAGE_SIZE:
  2516. page = self.GetInventoryPageIndex()
  2517. inven_slot_index -= (page * player.INVENTORY_PAGE_SIZE)
  2518. self.wndItem.SetCantMouseEventSlot(inven_slot_index)
  2519.  
  2520. def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
  2521. if app.ENABLE_DRAGON_SOUL_SYSTEM:
  2522. self.wndDragonSoulRefine = wndDragonSoulRefine
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement