MrP0wers

uiinventory.py

Oct 7th, 2025
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 59.07 KB | None | 0 0
  1. import ui
  2. import player
  3. import mouseModule
  4. import net
  5. import app
  6. import snd
  7. import item
  8. import player
  9. import chat
  10. import grp
  11. import uiScriptLocale
  12. import uiRefine
  13. import uiAttachMetin
  14. import uiPickMoney
  15. import uiCommon
  16. import uiPrivateShopBuilder
  17. import uiToolTip
  18. import localeInfo
  19. import constInfo
  20. import uicalendar
  21. import uibonusuri
  22. import ime
  23. import wndMgr
  24.  
  25. if app.ENABLE_SORT_INVEN:
  26. import uiToolTip
  27.  
  28. if app.EXCHANGE_CHECKIN_UPDATE:
  29. import exchange
  30.  
  31. from uiToolTip import ItemToolTip, ToolTip
  32.  
  33. ITEM_MALL_BUTTON_ENABLE = True
  34.  
  35. ITEM_FLAG_APPLICABLE = 1 << 14
  36.  
  37. class CostumeWindow(ui.ScriptWindow):
  38.  
  39. def __init__(self, wndInventory):
  40. import exception
  41.  
  42. if not app.ENABLE_COSTUME_SYSTEM:
  43. exception.Abort("What do you do?")
  44. return
  45.  
  46. if not wndInventory:
  47. exception.Abort("wndInventory parameter must be set to InventoryWindow")
  48. return
  49.  
  50. ui.ScriptWindow.__init__(self)
  51.  
  52. self.isLoaded = 0
  53. self.wndInventory = wndInventory;
  54.  
  55. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  56. self.elemets_world = {}
  57.  
  58. self.__LoadWindow()
  59.  
  60. def __del__(self):
  61. ui.ScriptWindow.__del__(self)
  62.  
  63. def Show(self):
  64. self.__LoadWindow()
  65. self.RefreshCostumeSlot()
  66.  
  67. ui.ScriptWindow.Show(self)
  68.  
  69. def Close(self):
  70. self.Hide()
  71.  
  72. def __LoadWindow(self):
  73. if self.isLoaded == 1:
  74. return
  75.  
  76. self.isLoaded = 1
  77.  
  78. try:
  79. pyScrLoader = ui.PythonScriptLoader()
  80. pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py")
  81.  
  82. except:
  83. import exception
  84. exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  85.  
  86. try:
  87. wndEquip = self.GetChild("CostumeSlot")
  88. self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
  89.  
  90. except:
  91. import exception
  92. exception.Abort("CostumeWindow.LoadWindow.BindObject")
  93.  
  94. wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
  95. wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
  96. wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  97. wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  98. wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
  99. wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
  100.  
  101. self.wndEquip = wndEquip
  102.  
  103. def RefreshCostumeSlot(self):
  104. getItemVNum=player.GetItemIndex
  105.  
  106. for i in xrange(item.COSTUME_SLOT_COUNT):
  107. slotNumber = item.COSTUME_SLOT_START + i
  108. self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
  109.  
  110. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  111. self.elemets_hide = self.wndInventory.get_costume_hide_list()
  112. self.Buttonshidecostume()
  113. self.costume_hide_load()
  114.  
  115. self.wndEquip.RefreshSlot()
  116.  
  117. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  118. def OnUpdate(self):
  119. for i in xrange(item.COSTUME_SLOT_COUNT):
  120. slotNumber = item.COSTUME_SLOT_START + i
  121.  
  122. if constInfo.InventoryLocked():
  123. self.wndEquip.SetLock(True, slotNumber)
  124. else:
  125. self.wndEquip.SetLock(False, slotNumber)
  126.  
  127. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  128. def Buttonshidecostume(self):
  129. self.elemets_world["position"] = [
  130. [48,68],
  131. [48,14],
  132. [0,14]
  133.  
  134. ]
  135.  
  136. for i in xrange(self.GetSlotCount()):
  137. self.elemets_world["hide_button_%d"%i] = ui.Button()
  138. self.elemets_world["hide_button_%d"%i].SetParent(self)
  139. self.elemets_world["hide_button_%d"%i].SetPosition(self.elemets_world["position"][i][0]+12,self.elemets_world["position"][i][1]+37)
  140. self.elemets_world["hide_button_%d"%i].SetUpVisual("modulo/hidecostume/button_show_0.tga")
  141. self.elemets_world["hide_button_%d"%i].SetOverVisual("modulo/hidecostume/button_show_1.tga")
  142. self.elemets_world["hide_button_%d"%i].SetDownVisual("modulo/hidecostume/button_show_0.tga")
  143. self.elemets_world["hide_button_%d"%i].SetEvent(self.FuncHide,i)
  144. self.elemets_world["hide_button_%d"%i].Hide()
  145.  
  146. def FuncHide(self,index):
  147. import chat
  148. net.SendChatPacket("/costume_hide %d" %index)
  149.  
  150. def costume_hide_load(self):
  151. for i in xrange(self.GetSlotCount()):
  152. if len(self.elemets_hide) > 0:
  153. self.elemets_world["hide_button_%d"%self.elemets_hide[i][0]].SetUpVisual("modulo/hidecostume/button_%s_0.tga"%self.ButtonInfoHide(self.elemets_hide[i][1]))
  154. self.elemets_world["hide_button_%d"%self.elemets_hide[i][0]].SetOverVisual("modulo/hidecostume/button_%s_1.tga"%self.ButtonInfoHide(self.elemets_hide[i][1]))
  155. self.elemets_world["hide_button_%d"%self.elemets_hide[i][0]].SetDownVisual("modulo/hidecostume/button_%s_0.tga"%self.ButtonInfoHide(self.elemets_hide[i][1]))
  156. self.elemets_world["hide_button_%d"%i].Show()
  157.  
  158. def ButtonInfoHide(self,index):
  159. if index == 0:
  160. return "show"
  161.  
  162. return "hide"
  163.  
  164. def GetSlotCount(self):
  165. slot_total = 2
  166.  
  167. if app.ENABLE_HIDE_COSTUME_SYSTEM_ACCE:
  168. slot_total += 1
  169.  
  170. if app.ENABLE_HIDE_COSTUME_SYSTEM_WEAPON_COSTUME:
  171. slot_total += 1
  172.  
  173. return slot_total
  174.  
  175. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  176. class BeltInventoryWindow(ui.ScriptWindow):
  177.  
  178. def __init__(self, wndInventory):
  179. import exception
  180.  
  181. if not app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  182. exception.Abort("What do you do?")
  183. return
  184.  
  185. if not wndInventory:
  186. exception.Abort("wndInventory parameter must be set to InventoryWindow")
  187. return
  188.  
  189. ui.ScriptWindow.__init__(self)
  190.  
  191. self.isLoaded = 0
  192. self.wndInventory = wndInventory;
  193.  
  194. self.wndBeltInventoryLayer = None
  195. self.wndBeltInventorySlot = None
  196. self.expandBtn = None
  197. self.minBtn = None
  198.  
  199. self.__LoadWindow()
  200.  
  201. def __del__(self):
  202. ui.ScriptWindow.__del__(self)
  203.  
  204. def Show(self, openBeltSlot = False):
  205. self.__LoadWindow()
  206. self.RefreshSlot()
  207.  
  208. ui.ScriptWindow.Show(self)
  209.  
  210. if openBeltSlot:
  211. self.OpenInventory()
  212. else:
  213. self.CloseInventory()
  214.  
  215. def Close(self):
  216. self.Hide()
  217.  
  218. def IsOpeningInventory(self):
  219. return self.wndBeltInventoryLayer.IsShow()
  220.  
  221. def OpenInventory(self):
  222. self.wndBeltInventoryLayer.Show()
  223. self.expandBtn.Hide()
  224.  
  225. self.AdjustPositionAndSize()
  226.  
  227. def CloseInventory(self):
  228. self.wndBeltInventoryLayer.Hide()
  229. self.expandBtn.Show()
  230.  
  231. self.AdjustPositionAndSize()
  232.  
  233. def GetBasePosition(self):
  234. x, y = self.wndInventory.GetGlobalPosition()
  235.  
  236. return x - 148, y + 241
  237.  
  238. def AdjustPositionAndSize(self):
  239. bx, by = self.GetBasePosition()
  240.  
  241. if self.IsOpeningInventory():
  242. self.SetPosition(bx, by)
  243. self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
  244.  
  245. else:
  246. self.SetPosition(bx + 138, by);
  247. self.SetSize(10, self.GetHeight())
  248.  
  249. def __LoadWindow(self):
  250. if self.isLoaded == 1:
  251. return
  252.  
  253. self.isLoaded = 1
  254.  
  255. try:
  256. pyScrLoader = ui.PythonScriptLoader()
  257. pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py")
  258.  
  259. except:
  260. import exception
  261. exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  262.  
  263. try:
  264. self.ORIGINAL_WIDTH = self.GetWidth()
  265. wndBeltInventorySlot = self.GetChild("BeltInventorySlot")
  266. self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer")
  267. self.expandBtn = self.GetChild("ExpandBtn")
  268. self.minBtn = self.GetChild("MinimizeBtn")
  269.  
  270. self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
  271. self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
  272.  
  273. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  274. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  275. wndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  276. "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  277. "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  278. "d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", False, False)
  279.  
  280. except:
  281. import exception
  282. exception.Abort("CostumeWindow.LoadWindow.BindObject")
  283.  
  284. wndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
  285. wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
  286. wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  287. wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  288. wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
  289. wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
  290.  
  291. self.wndBeltInventorySlot = wndBeltInventorySlot
  292.  
  293. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  294. def OnUpdate(self):
  295. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  296. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  297.  
  298. if constInfo.InventoryLocked():
  299. self.wndBeltInventorySlot.SetLock(True, slotNumber)
  300. else:
  301. self.wndBeltInventorySlot.SetLock(False, slotNumber)
  302.  
  303. def RefreshSlot(self):
  304. getItemVNum=player.GetItemIndex
  305.  
  306. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  307. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  308. self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))
  309. self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)
  310.  
  311. avail = "0"
  312.  
  313. if player.IsAvailableBeltInventoryCell(slotNumber):
  314. self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
  315. else:
  316. self.wndBeltInventorySlot.DisableCoverButton(slotNumber)
  317.  
  318. self.wndBeltInventorySlot.RefreshSlot()
  319.  
  320. class SideBarInventoryWindow(ui.ScriptWindow):
  321.  
  322. BUTTON_TOOLTIP2 = {
  323. "wndTeleport" : "Teleport",
  324. "wndSwitchBot" : "Switchbot",
  325. "Bonusuri" : "Bonusuri",
  326. "Calendar" : "Calendar",
  327. "wndSafebox" : "Depozit",
  328. "wndAlign" : "Align",
  329. }
  330.  
  331. def __init__(self, wndInventory):
  332. import exception
  333.  
  334. if not wndInventory:
  335. exception.Abort("wndInventory parameter must be set to InventoryWindow")
  336. return
  337.  
  338. ui.ScriptWindow.__init__(self)
  339.  
  340. self.isLoaded = 0
  341. self.wndInventory = wndInventory
  342.  
  343. self.toolTip2 = None
  344. self.buttonToolTipDict2 = None
  345.  
  346. self.__LoadWindow()
  347.  
  348. def __del__(self):
  349. ui.ScriptWindow.__del__(self)
  350.  
  351. def Show(self):
  352. self.__LoadWindow()
  353.  
  354. ui.ScriptWindow.Show(self)
  355.  
  356. def Close(self):
  357. self.Hide()
  358.  
  359. def bind_interface(self, interface):
  360. self.interface = interface
  361.  
  362. def __LoadWindow(self):
  363. if self.isLoaded == 1:
  364. return
  365.  
  366. self.isLoaded = 1
  367.  
  368. try:
  369. pyScrLoader = ui.PythonScriptLoader()
  370. pyScrLoader.LoadScriptFile(self, "UIscript/inventory_sidebar.py")
  371.  
  372. if app.ENABLE_SWITCHBOT:
  373. self.wndSwitchBot = self.GetChild2("Switchbot")
  374.  
  375. if app.__BL_TELEPORT__:
  376. self.wndTeleport= self.GetChild2("Teleport")
  377.  
  378. self.Bonusuri= self.GetChild2("Bonusuri")
  379. self.Calendar= self.GetChild2("Calendar")
  380. self.wndSafebox = self.GetChild2("Depozit")
  381. self.wndAlign = self.GetChild2("Align")
  382.  
  383. except:
  384. import exception
  385. exception.Abort("SidebarWindow.LoadWindow.LoadObject")
  386.  
  387. ## BonusPage
  388. self.BonusPage = uibonusuri.BonusBoardDialog()
  389. self.BonusPage.Hide()
  390.  
  391. self.AdjustPosition()
  392.  
  393. #Switchbot
  394. if app.ENABLE_SWITCHBOT:
  395. if self.wndSwitchBot:
  396. self.wndSwitchBot.SetEvent(ui.__mem_func__(self.Click_Switchbot))
  397.  
  398. #Teleport
  399. if app.__BL_TELEPORT__:
  400. if self.wndTeleport:
  401. self.wndTeleport.SetEvent(ui.__mem_func__(self.Click_Teleport))
  402.  
  403. #Bonusuri
  404. if self.Bonusuri:
  405. self.Bonusuri.SetEvent(ui.__mem_func__(self.Click_Bonusuri))
  406.  
  407. #Calendar
  408. if self.Calendar:
  409. self.Calendar.SetEvent(ui.__mem_func__(self.Click_Calendar))
  410.  
  411. #Depozit
  412. if self.wndSafebox:
  413. self.wndSafebox.SetEvent(ui.__mem_func__(self.Click_Depozit))
  414.  
  415. #Grade
  416. if self.wndAlign:
  417. self.wndAlign.SetEvent(ui.__mem_func__(self.Click_Align))
  418.  
  419. ##COSTUME BUTTONS TOOLTIP
  420. self.toolTip2 = uiToolTip.ToolTip()
  421.  
  422. self.buttonToolTipDict2 = {
  423.  
  424. "wndTeleport" : self.GetChild2("Teleport"),
  425. "wndSwitchBot" : self.GetChild2("Switchbot"),
  426. "Bonusuri" : self.GetChild2("Bonusuri"),
  427. "Calendar" : self.GetChild2("Calendar"),
  428. "wndSafebox" : self.GetChild2("Depozit"),
  429. "wndAlign" : self.GetChild2("Align"),
  430. }
  431.  
  432. for (buttonToolTipKey, buttonToolTip) in self.buttonToolTipDict2.items():
  433. buttonToolTip.ShowToolTip = lambda arg=buttonToolTipKey: self.__OverInButton2(arg)
  434. buttonToolTip.HideToolTip = lambda arg=buttonToolTipKey: self.__OverOutButton2()
  435.  
  436. def GetBasePosition(self):
  437. x, y = self.wndInventory.GetGlobalPosition()
  438. return x, y
  439.  
  440. def AdjustPosition(self):
  441. bx, by = self.GetBasePosition()
  442. self.SetPosition(bx - 40, by + 3)
  443.  
  444. if app.ENABLE_SWITCHBOT:
  445. def Click_Switchbot(self):
  446. self.interface.ToggleSwitchbotWindow()
  447.  
  448. if app.__BL_TELEPORT__:
  449. def Click_Teleport(self):
  450. self.interface.OpenTeleportWindow()
  451.  
  452. def Click_Bonusuri(self):
  453. self.BonusPage.OpenWindow()
  454. snd.PlaySound('sound/ui/pick.wav')
  455.  
  456. def Click_Calendar(self):
  457. self.Calendar = uicalendar.Dialog1()
  458. self.Calendar.OpenWindow()
  459.  
  460. def Click_Depozit(self):
  461. self.interface.ToggleSelectSafeboxInfoWindow()
  462.  
  463. def Click_Align(self):
  464. import uialignment
  465. self.uialignment = uialignment.AlignmentWindow()
  466. self.uialignment.Show()
  467.  
  468. def __OverInButton2(self, stat):
  469. self.__ShowToolTip2(self.BUTTON_TOOLTIP2[stat])
  470.  
  471. def __OverOutButton2(self):
  472. self.__HideToolTip2()
  473.  
  474. def __ShowToolTip2(self, statDesc):
  475. arglen = len(str(statDesc))
  476. self.toolTip2.SetThinBoardSize(8 * arglen)
  477. self.toolTip2.ClearToolTip()
  478. self.toolTip2.AppendTextLine(statDesc)
  479. self.toolTip2.Show()
  480.  
  481. def __HideToolTip2(self):
  482. self.toolTip2.Hide()
  483.  
  484. class InventoryWindow(ui.ScriptWindow):
  485.  
  486. BUTTON_TOOLTIP = {
  487. "MALL" : "Depozite",
  488. "COSTUME" : "Costume",
  489. "PAGE_1" : "1. Inventar",
  490. "PAGE_2" : "2. Inventar",
  491. "PAGE_3" : "3. Inventar",
  492. "PAGE_4" : "4. Inventar",
  493. "PAGE_5" : "5. Inventar",
  494. "PAGE_6" : "6. Inventar",
  495. "PAGE_7" : "7. Inventar",
  496. "PAGE_8" : "8. Inventar",
  497. "PAGE_9" : "9. Inventar",
  498. "PAGE_10" : "10. Inventar",
  499. "PAGE_11" : "11. Inventar",
  500. "PAGE_12" : "12. Inventar",
  501. }
  502.  
  503. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  504. USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET")
  505. else:
  506. USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET", "USE_PUT_INTO_RING_SOCKET")
  507.  
  508. questionDialog = None
  509. tooltipItem = None
  510. wndCostume = None
  511.  
  512.  
  513. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  514. wndBelt = None
  515.  
  516. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  517. Inventory_Board = None
  518. InventoryLockBtn = []
  519.  
  520. dlgPickMoney = None
  521. wndSideBar = None
  522.  
  523. sellingSlotNumber = -1
  524. isLoaded = 0
  525. isOpenedCostumeWindowWhenClosingInventory = 0
  526.  
  527. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  528. isOpenedBeltWindowWhenClosingInventory = 0
  529.  
  530. def __init__(self):
  531.  
  532. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  533. self.wndExpandedMoneyBar = None
  534. self.wndGem = None
  535.  
  536. ui.ScriptWindow.__init__(self)
  537. self.OpenBoniSwitcherEvent = lambda : None
  538.  
  539. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  540. self.elemets_hide = []
  541.  
  542. if app.ENABLE_COINS_SYSTEM:
  543. self.coins = 0
  544. self.jd = 0
  545. self.euro = 0
  546.  
  547. self.toolTip = None
  548. self.buttonToolTipDict = None
  549.  
  550. self.__LoadWindow()
  551.  
  552. if self.HasCostumeItemInInventory():
  553. self.costumeButton.Show()
  554. else:
  555. self.costumeButton.Hide()
  556.  
  557. def __del__(self):
  558. ui.ScriptWindow.__del__(self)
  559.  
  560. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  561. self.wndExpandedMoneyBar = None
  562.  
  563. def Show(self):
  564. self.__LoadWindow()
  565.  
  566. ui.ScriptWindow.Show(self)
  567.  
  568. if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
  569. self.wndCostume.Show()
  570.  
  571. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  572. if self.wndExpandedMoneyBar:
  573. self.wndExpandedMoneyBar.Show()
  574.  
  575. if self.wndSideBar:
  576. self.wndSideBar.Show()
  577.  
  578. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  579. if self.wndBelt:
  580. self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)
  581.  
  582. def BindInterfaceClass(self, interface):
  583. self.interface = interface
  584. self.wndSideBar.bind_interface(interface)
  585.  
  586. def __LoadWindow(self):
  587. if self.isLoaded == 1:
  588. return
  589.  
  590. self.isLoaded = 1
  591.  
  592. try:
  593. pyScrLoader = ui.PythonScriptLoader()
  594. pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
  595.  
  596. except:
  597. import exception
  598. exception.Abort("InventoryWindow.LoadWindow.LoadObject")
  599.  
  600. try:
  601. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  602. self.Inventory_Board = self.GetChild("board")
  603.  
  604. self.InventoryLockBtn.append(self.GetChild("InventoryLockBtn"))
  605. self.InventoryLockBtn.append(self.GetChild("InventoryUnlockBtn"))
  606.  
  607. for i in xrange(2):
  608. self.InventoryLockBtn[i].SetEvent(ui.__mem_func__(self.InventoryChange))
  609.  
  610. self.GetChild("InventoryLockBtn").SetEvent(ui.__mem_func__(self.InventoryChange))
  611. self.GetChild("InventoryUnlockBtn").SetEvent(ui.__mem_func__(self.InventoryChange))
  612.  
  613. wndItem = self.GetChild("ItemSlot")
  614. wndEquip = self.GetChild("EquipmentSlot")
  615.  
  616. self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
  617.  
  618. self.wndMoney = self.GetChild("Money")
  619. self.wndMoneySlot = self.GetChild("Money_Slot")
  620. self.mallButton = self.GetChild2("MallButton")
  621. self.DSSButton = self.GetChild2("DSSButton")
  622. self.costumeButton = self.GetChild2("CostumeButton")
  623.  
  624. if app.ENABLE_COINS_SYSTEM:
  625. self.wndCoins = self.GetChild("Coins")
  626. self.wndCoinsSlot = self.GetChild("Coins_Slot")
  627. self.wndJD = self.GetChild("JD")
  628. self.wndJDSlot = self.GetChild("JD_Slot")
  629. self.wndEuro = self.GetChild("Euro")
  630. self.wndEuroSlot = self.GetChild("Euro_Slot")
  631.  
  632. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  633. if app.ENABLE_COINS_SYSTEM:
  634. self.wndCoinsIcon = self.GetChild("Coins_Icon")
  635. self.wndCoinsIcon.Hide()
  636. self.wndCoinsSlot.Hide()
  637.  
  638. self.wndJDIcon = self.GetChild("JD_Icon")
  639. self.wndJDIcon.Hide()
  640. self.wndJDSlot.Hide()
  641.  
  642. self.wndEuroIcon = self.GetChild("Euro_Icon")
  643. self.wndEuroIcon.Hide()
  644. self.wndEuroSlot.Hide()
  645.  
  646. self.inventoryTab = []
  647. self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
  648. self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
  649. self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
  650. self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))
  651. self.inventoryTab.append(self.GetChild("Inventory_Tab_05"))
  652. self.inventoryTab.append(self.GetChild("Inventory_Tab_06"))
  653. self.inventoryTab.append(self.GetChild("Inventory_Tab_07"))
  654. self.inventoryTab.append(self.GetChild("Inventory_Tab_08"))
  655. self.inventoryTab.append(self.GetChild("Inventory_Tab_09"))
  656. self.inventoryTab.append(self.GetChild("Inventory_Tab_10"))
  657. self.inventoryTab.append(self.GetChild("Inventory_Tab_11"))
  658. self.inventoryTab.append(self.GetChild("Inventory_Tab_12"))
  659.  
  660. self.equipmentTab = []
  661. self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
  662. self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))
  663.  
  664. if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:
  665. self.costumeButton.Hide()
  666. self.costumeButton.Destroy()
  667. self.costumeButton = 0
  668.  
  669. if app.ENABLE_SORT_INVEN:
  670. self.yenilebutton = self.GetChild2("YenileButton")
  671. self.yenilebutton.SetEvent(ui.__mem_func__(self.ClickYenileButton))
  672. self.tooltipI = uiToolTip.ToolTip()
  673. self.tooltipI.Hide()
  674. self.tooltipInfo = [self.tooltipI]*4
  675. self.InformationText = [localeInfo.YENILE_BUTTON_TITLE,
  676. localeInfo.YENILE_BUTTON,
  677. localeInfo.YENILE_BUTTON2,
  678. localeInfo.YENILE_BUTTON3
  679. ]
  680.  
  681. for i in xrange(len(self.tooltipInfo)):
  682. self.tooltipInfo[i].SetFollow(True)
  683. self.tooltipInfo[i].AlignHorizonalCenter()
  684.  
  685. if i == 0:
  686. self.tooltipInfo[i].AppendTextLine(self.InformationText[i], 0xffffff00)
  687. else:
  688. self.tooltipInfo[i].AppendTextLine(self.InformationText[i])
  689.  
  690. self.tooltipInfo[i].Hide()
  691.  
  692. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  693. self.wndBelt = None
  694. self.wndBelt = BeltInventoryWindow(self)
  695.  
  696. self.wndSideBar = SideBarInventoryWindow(self)
  697.  
  698. except:
  699. import exception
  700. exception.Abort("InventoryWindow.LoadWindow.BindObject")
  701.  
  702. ## Item
  703. wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  704. wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  705. wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  706. wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  707. wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  708. wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  709.  
  710. ## Equipment
  711. wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  712. wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  713. wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  714. wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  715. wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  716. wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  717.  
  718. ## PickMoneyDialog
  719. dlgPickMoney = uiPickMoney.PickMoneyDialog()
  720. dlgPickMoney.LoadDialog()
  721. dlgPickMoney.Hide()
  722.  
  723. ## RefineDialog
  724. self.refineDialog = uiRefine.RefineDialog()
  725. self.refineDialog.Hide()
  726.  
  727. ## AttachMetinDialog
  728. self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
  729. self.attachMetinDialog.Hide()
  730.  
  731. ## MoneySlot
  732. self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
  733.  
  734. self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
  735. self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
  736. self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
  737. self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))
  738. self.inventoryTab[4].SetEvent(lambda arg=4: self.SetInventoryPage(arg))
  739. self.inventoryTab[5].SetEvent(lambda arg=5: self.SetInventoryPage(arg))
  740. self.inventoryTab[6].SetEvent(lambda arg=6: self.SetInventoryPage(arg))
  741. self.inventoryTab[7].SetEvent(lambda arg=7: self.SetInventoryPage(arg))
  742. self.inventoryTab[8].SetEvent(lambda arg=8: self.SetInventoryPage(arg))
  743. self.inventoryTab[9].SetEvent(lambda arg=9: self.SetInventoryPage(arg))
  744. self.inventoryTab[10].SetEvent(lambda arg=10: self.SetInventoryPage(arg))
  745. self.inventoryTab[11].SetEvent(lambda arg=11: self.SetInventoryPage(arg))
  746. self.inventoryTab[0].Down()
  747.  
  748. self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg))
  749. self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg))
  750. self.equipmentTab[0].Down()
  751. self.equipmentTab[0].Hide()
  752. self.equipmentTab[1].Hide()
  753.  
  754. self.wndItem = wndItem
  755. self.wndEquip = wndEquip
  756. self.dlgPickMoney = dlgPickMoney
  757.  
  758. self.pannelWindow = ui.BoardWithTitleBar()
  759. self.pannelWindow.SetSize(190, 120)
  760. self.pannelWindow.SetCenterPosition()
  761. self.pannelWindow.AddFlag('float')
  762. self.pannelWindow.AddFlag('movable')
  763. self.pannelWindow.SetTitleName("Management Depozit")
  764.  
  765. self.pannelWindow2 = ui.ThinBoard()
  766. self.pannelWindow2.SetParent(self.pannelWindow)
  767. self.pannelWindow2.SetPosition(10,32)
  768. self.pannelWindow2.SetSize(190-20, 120-44)
  769.  
  770. self.pannelWindow3 = ui.BoardDepozit()
  771. self.pannelWindow3.SetParent(self.pannelWindow)
  772. self.pannelWindow3.SetPosition(18,40)
  773. self.pannelWindow3.SetSize(190-36, 120-60)
  774.  
  775. self.mallWindow = ui.Button()
  776. self.mallWindow.SetEvent(self.OpenIs)
  777. self.mallWindow.SetParent(self.pannelWindow3)
  778. self.mallWindow.SetPosition(2, 2)
  779. self.mallWindow.SetUpVisual("d:/ymir work/ui/game/custom_inventory/button_01.tga")
  780. self.mallWindow.SetOverVisual("d:/ymir work/ui/game/custom_inventory/button_02.tga")
  781. self.mallWindow.SetDownVisual("d:/ymir work/ui/game/custom_inventory/button_03.tga")
  782. self.mallWindow.SetText("Depozit Item-Shop")
  783.  
  784. self.safeboxWindow = ui.Button()
  785. self.safeboxWindow.SetEvent(self._normal_mall)
  786. self.safeboxWindow.SetParent(self.pannelWindow3)
  787. self.safeboxWindow.SetPosition(2, 2+30)
  788. self.safeboxWindow.SetUpVisual("d:/ymir work/ui/game/custom_inventory/button_01.tga")
  789. self.safeboxWindow.SetOverVisual("d:/ymir work/ui/game/custom_inventory/button_02.tga")
  790. self.safeboxWindow.SetDownVisual("d:/ymir work/ui/game/custom_inventory/button_03.tga")
  791. self.safeboxWindow.SetText("Depozit Obiecte")
  792.  
  793. if self.mallButton:
  794. self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))
  795.  
  796. if self.DSSButton:
  797. self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
  798.  
  799. if self.costumeButton:
  800. self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))
  801.  
  802. self.toolTip = uiToolTip.ToolTip()
  803.  
  804. self.buttonToolTipDict = {
  805. "MALL" : self.GetChild("MallButton"),
  806. "COSTUME" : self.GetChild("CostumeButton"),
  807. "PAGE_1" : self.GetChild("Inventory_Tab_01"),
  808. "PAGE_2" : self.GetChild("Inventory_Tab_02"),
  809. "PAGE_3" : self.GetChild("Inventory_Tab_03"),
  810. "PAGE_4" : self.GetChild("Inventory_Tab_04"),
  811. "PAGE_5" : self.GetChild("Inventory_Tab_05"),
  812. "PAGE_6" : self.GetChild("Inventory_Tab_06"),
  813. "PAGE_7" : self.GetChild("Inventory_Tab_07"),
  814. "PAGE_8" : self.GetChild("Inventory_Tab_08"),
  815. "PAGE_9" : self.GetChild("Inventory_Tab_09"),
  816. "PAGE_10" : self.GetChild("Inventory_Tab_10"),
  817. "PAGE_11" : self.GetChild("Inventory_Tab_11"),
  818. "PAGE_12" : self.GetChild("Inventory_Tab_12"),
  819. }
  820.  
  821. for (buttonToolTipKey, buttonToolTip) in self.buttonToolTipDict.items():
  822. buttonToolTip.ShowToolTip = lambda arg=buttonToolTipKey: self.__OverInButton(arg)
  823. buttonToolTip.HideToolTip = lambda arg=buttonToolTipKey: self.__OverOutButton()
  824.  
  825. self.wndCostume = None
  826.  
  827. if app.ENABLE_HIGHLIGHT_SYSTEM:
  828. self.listHighlightedSlot = []
  829.  
  830. self.SetInventoryPage(0)
  831. self.SetEquipmentPage(0)
  832. self.RefreshItemSlot()
  833. self.RefreshStatus()
  834.  
  835. def Destroy(self):
  836. self.ClearDictionary()
  837.  
  838. self.dlgPickMoney.Destroy()
  839. self.dlgPickMoney = 0
  840.  
  841. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  842. self.Inventory_Board = 0
  843.  
  844. self.refineDialog.Destroy()
  845. self.refineDialog = 0
  846.  
  847. self.attachMetinDialog.Destroy()
  848. self.attachMetinDialog = 0
  849.  
  850. self.tooltipItem = None
  851. self.wndItem = 0
  852. self.wndEquip = 0
  853. self.dlgPickMoney = 0
  854. self.wndMoney = 0
  855. self.wndMoneySlot = 0
  856. self.questionDialog = None
  857. self.mallButton = None
  858. self.DSSButton = None
  859. self.interface = None
  860.  
  861. if app.ENABLE_COINS_SYSTEM:
  862. self.coins = 0
  863. self.wndCoins = None
  864. self.wndCoinsIcon = None
  865. self.wndCoinsSlot = None
  866. self.jd = 0
  867. self.wndJD = None
  868. self.wndJDIcon = None
  869. self.wndJDSlot = None
  870. self.euro = 0
  871. self.wndEuro = None
  872. self.wndEuroIcon = None
  873. self.wndEuroSlot = None
  874.  
  875. if self.wndCostume:
  876. self.wndCostume.Destroy()
  877. self.wndCostume = 0
  878.  
  879. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  880. if self.wndBelt:
  881. self.wndBelt.Destroy()
  882. self.wndBelt = None
  883.  
  884. if self.wndSideBar:
  885. self.wndSideBar.Destroy()
  886. self.wndSideBar = None
  887.  
  888. self.inventoryTab = []
  889. self.equipmentTab = []
  890.  
  891. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  892. self.wndExpandedMoneyBar = None
  893.  
  894. def Hide(self):
  895. if None != self.tooltipItem:
  896. self.tooltipItem.HideToolTip()
  897.  
  898. if self.wndCostume:
  899. self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow()
  900. self.wndCostume.Close()
  901.  
  902. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  903. if self.wndBelt:
  904. self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory()
  905. print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventory
  906. self.wndBelt.Close()
  907.  
  908. if self.dlgPickMoney:
  909. self.dlgPickMoney.Close()
  910.  
  911. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  912. if self.wndExpandedMoneyBar:
  913. self.wndExpandedMoneyBar.Close()
  914.  
  915. if self.wndSideBar:
  916. self.wndSideBar.Close()
  917.  
  918. self.OnCloseQuestionDialog()
  919.  
  920. wndMgr.Hide(self.hWnd)
  921.  
  922. def Close(self):
  923. self.Hide()
  924.  
  925. if constInfo.ENABLE_EXPANDED_MONEY_TASKBAR:
  926. def SetExpandedMoneyBar(self, wndBar):
  927. self.wndExpandedMoneyBar = wndBar
  928. if self.wndExpandedMoneyBar:
  929. if app.ENABLE_COINS_SYSTEM:
  930. self.wndCoinsSlot = self.wndExpandedMoneyBar.GetCoinsSlot()
  931. self.wndCoins = self.wndExpandedMoneyBar.GetCoins()
  932.  
  933. self.wndJDSlot = self.wndExpandedMoneyBar.GetJDSlot()
  934. self.wndJD = self.wndExpandedMoneyBar.GetJD()
  935.  
  936. self.wndEuroSlot = self.wndExpandedMoneyBar.GetEuroSlot()
  937. self.wndEuro = self.wndExpandedMoneyBar.GetEuro()
  938.  
  939. if app.ENABLE_SORT_INVEN:
  940. def ClickYenileButton(self):
  941. if app.IsPressed(app.DIK_LALT):
  942. net.SortInven(2)
  943.  
  944. elif app.IsPressed(app.DIK_LCONTROL):
  945. net.SortInven(3)
  946.  
  947. else:
  948. net.SortInven(1)
  949.  
  950. if app.ENABLE_HIGHLIGHT_SYSTEM:
  951. def HighlightSlot(self, slot):
  952. if not slot in self.listHighlightedSlot:
  953. self.listHighlightedSlot.append(slot)
  954.  
  955. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  956. def InventoryChange(self):
  957. net.SendChatPacket("/inventory_password")
  958.  
  959. def SetEquipmentPage(self, page):
  960. self.equipmentPageIndex = page
  961. self.equipmentTab[1-page].SetUp()
  962. self.RefreshEquipSlotWindow()
  963.  
  964. def SetInventoryPage(self, page):
  965. self.inventoryPageIndex = page
  966. self.inventoryTab[0].SetUp()
  967. self.inventoryTab[1].SetUp()
  968. self.inventoryTab[2].SetUp()
  969. self.inventoryTab[3].SetUp()
  970. self.inventoryTab[4].SetUp()
  971. self.inventoryTab[5].SetUp()
  972. self.inventoryTab[6].SetUp()
  973. self.inventoryTab[7].SetUp()
  974. self.inventoryTab[8].SetUp()
  975. self.inventoryTab[9].SetUp()
  976. self.inventoryTab[10].SetUp()
  977. self.inventoryTab[11].SetUp()
  978.  
  979. if len(self.inventoryTab) >=page:
  980. self.inventoryTab[page].Down()
  981.  
  982. self.RefreshBagSlotWindow()
  983.  
  984. def HasCostumeItemInInventory(self):
  985. for i in range(player.INVENTORY_PAGE_SIZE * player.INVENTORY_PAGE_COUNT):
  986. vnum = player.GetItemIndex(i)
  987.  
  988. if vnum != 0:
  989. item.SelectItem(vnum)
  990.  
  991. if item.GetItemType() == item.ITEM_TYPE_COSTUME:
  992. return True
  993.  
  994. return False
  995.  
  996. if app.EXCHANGE_CHECKIN_UPDATE:
  997. def SetExchangeWindow(self, wndExchange):
  998. self.wndExchange = wndExchange
  999.  
  1000. def SetDiceWindow(self, wndDice):
  1001. self.wndDice = wndDice
  1002.  
  1003. def ClickMallButton(self):
  1004. if FALSE == self.pannelWindow.IsShow():
  1005. self.pannelWindow.Show()
  1006. self.pannelWindow2.Show()
  1007. self.pannelWindow3.Show()
  1008. self.mallWindow.Show()
  1009. self.safeboxWindow.Show()
  1010. else:
  1011. self.pannelWindow.Hide()
  1012. self.pannelWindow2.Hide()
  1013. self.pannelWindow3.Hide()
  1014. self.mallWindow.Hide()
  1015. self.safeboxWindow.Hide()
  1016.  
  1017. def OpenIs(self):
  1018. self.mallWindow.Hide()
  1019. self.pannelWindow.Hide()
  1020. self.pannelWindow2.Hide()
  1021. self.pannelWindow3.Hide()
  1022. self.safeboxWindow.Hide()
  1023.  
  1024. net.SendChatPacket("/click_mall")
  1025.  
  1026. def _normal_mall(self):
  1027. self.mallWindow.Hide()
  1028. self.safeboxWindow.Hide()
  1029. self.pannelWindow.Hide()
  1030. self.pannelWindow2.Hide()
  1031. self.pannelWindow3.Hide()
  1032.  
  1033. net.SendChatPacket("/click_safebox")
  1034.  
  1035. def ClickDSSButton(self):
  1036. print "click_dss_button"
  1037. self.interface.ToggleDragonSoulWindow()
  1038.  
  1039. def ClickCostumeButton(self):
  1040. print "Click Costume Button"
  1041.  
  1042. if self.wndCostume:
  1043. if self.wndCostume.IsShow():
  1044. self.wndCostume.Hide()
  1045. else:
  1046. self.wndCostume.Show()
  1047.  
  1048. else:
  1049. self.wndCostume = CostumeWindow(self)
  1050. self.wndCostume.Show()
  1051.  
  1052. def OpenPickMoneyDialog(self):
  1053.  
  1054. if mouseModule.mouseController.isAttached():
  1055.  
  1056. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1057. if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():
  1058.  
  1059. if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
  1060. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  1061. snd.PlaySound("sound/ui/money.wav")
  1062.  
  1063. mouseModule.mouseController.DeattachObject()
  1064.  
  1065. else:
  1066. curMoney = player.GetElk()
  1067.  
  1068. if curMoney <= 0:
  1069. return
  1070.  
  1071. self.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE)
  1072. self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
  1073. self.dlgPickMoney.Open(curMoney)
  1074. self.dlgPickMoney.SetMax(7)
  1075.  
  1076. def OnPickMoney(self, money):
  1077. mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
  1078.  
  1079. def OnPickItem(self, count):
  1080. itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
  1081. selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  1082. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
  1083.  
  1084. def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
  1085. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  1086. if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or player.IsBeltInventorySlot(local):
  1087. return local
  1088. else:
  1089. if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local):
  1090. return local
  1091.  
  1092. return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
  1093.  
  1094. def RefreshBagSlotWindow(self):
  1095. getItemVNum=player.GetItemIndex
  1096. getItemCount=player.GetItemCount
  1097. setItemVNum=self.wndItem.SetItemSlot
  1098.  
  1099. for i in xrange(player.INVENTORY_PAGE_SIZE):
  1100. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  1101.  
  1102. itemCount = getItemCount(slotNumber)
  1103. if 0 == itemCount:
  1104. self.wndItem.ClearSlot(i)
  1105. continue
  1106.  
  1107. elif 1 == itemCount:
  1108. itemCount = 0
  1109.  
  1110. itemVnum = getItemVNum(slotNumber)
  1111. setItemVNum(i, itemVnum, itemCount)
  1112.  
  1113. if constInfo.IS_AUTO_POTION(itemVnum):
  1114. metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  1115.  
  1116. if slotNumber >= player.INVENTORY_PAGE_SIZE:
  1117. slotNumber -= player.INVENTORY_PAGE_SIZE
  1118.  
  1119. isActivated = 0 != metinSocket[0]
  1120.  
  1121. if isActivated:
  1122. self.wndItem.ActivateSlot(slotNumber)
  1123. potionType = 0;
  1124.  
  1125. if constInfo.IS_AUTO_POTION_HP(itemVnum):
  1126. potionType = player.AUTO_POTION_TYPE_HP
  1127.  
  1128. elif constInfo.IS_AUTO_POTION_SP(itemVnum):
  1129. potionType = player.AUTO_POTION_TYPE_SP
  1130.  
  1131. usedAmount = int(metinSocket[1])
  1132. totalAmount = int(metinSocket[2])
  1133. player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
  1134.  
  1135. else:
  1136. self.wndItem.DeactivateSlot(slotNumber)
  1137.  
  1138. elif app.ENABLE_HIGHLIGHT_SYSTEM:
  1139. if slotNumber in self.listHighlightedSlot:
  1140. self.wndItem.ActivateSlot(slotNumber)
  1141.  
  1142. self.wndItem.RefreshSlot()
  1143.  
  1144. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  1145. if self.wndBelt:
  1146. self.wndBelt.RefreshSlot()
  1147.  
  1148. def RefreshEquipSlotWindow(self):
  1149. getItemVNum=player.GetItemIndex
  1150. getItemCount=player.GetItemCount
  1151. setItemVNum=self.wndEquip.SetItemSlot
  1152.  
  1153. for i in xrange(player.EQUIPMENT_PAGE_COUNT):
  1154. slotNumber = player.EQUIPMENT_SLOT_START + i
  1155. itemCount = getItemCount(slotNumber)
  1156.  
  1157. if itemCount <= 1:
  1158. itemCount = 0
  1159.  
  1160. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  1161.  
  1162. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  1163. for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
  1164. slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
  1165. itemCount = getItemCount(slotNumber)
  1166.  
  1167. if itemCount <= 1:
  1168. itemCount = 0
  1169.  
  1170. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  1171.  
  1172. print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)
  1173.  
  1174. self.wndEquip.RefreshSlot()
  1175.  
  1176. if self.wndCostume:
  1177. self.wndCostume.RefreshCostumeSlot()
  1178.  
  1179. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  1180. def costume_hide_clear(self):
  1181. self.elemets_hide = []
  1182.  
  1183. def costume_hide_list(self,slot,index):
  1184. self.elemets_hide.append([int(slot),int(index)])
  1185.  
  1186. def costume_hide_load(self):
  1187. if self.wndCostume:
  1188. self.wndCostume.costume_hide_load()
  1189.  
  1190. def get_costume_hide_list(self):
  1191. return self.elemets_hide
  1192.  
  1193. def RefreshItemSlot(self):
  1194. self.RefreshBagSlotWindow()
  1195. self.RefreshEquipSlotWindow()
  1196.  
  1197. if self.costumeButton:
  1198. if self.HasCostumeItemInInventory():
  1199. self.costumeButton.Show()
  1200. else:
  1201. self.costumeButton.Hide()
  1202.  
  1203. def RefreshStatus(self):
  1204. money = player.GetElk()
  1205. self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
  1206.  
  1207. if app.ENABLE_COINS_SYSTEM:
  1208. self.wndCoins.SetText('|cfff7bd48'+localeInfo.NumberToCoinsString(self.coins))
  1209. self.wndJD.SetText('|cfff7bd48'+localeInfo.NumberToCoinsString(self.jd, False, True))
  1210. self.wndEuro.SetText('|cff00ff00'+localeInfo.NumberToEuroString(self.euro))
  1211.  
  1212. def SetItemToolTip(self, tooltipItem):
  1213. self.tooltipItem = tooltipItem
  1214.  
  1215. def SellItem(self):
  1216. if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
  1217. if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
  1218. net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count)
  1219. snd.PlaySound("sound/ui/money.wav")
  1220.  
  1221. self.OnCloseQuestionDialog()
  1222.  
  1223. def OnDetachMetinFromItem(self):
  1224. if None == self.questionDialog:
  1225. return
  1226.  
  1227. #net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
  1228. self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
  1229. self.OnCloseQuestionDialog()
  1230.  
  1231. def OnCloseQuestionDialog(self):
  1232. if self.questionDialog:
  1233. self.questionDialog.Close()
  1234.  
  1235. self.questionDialog = None
  1236.  
  1237. def SelectEmptySlot(self, selectedSlotPos):
  1238. if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
  1239. return
  1240.  
  1241. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1242. if constInfo.InventoryLocked():
  1243. return
  1244.  
  1245. selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
  1246.  
  1247. if mouseModule.mouseController.isAttached():
  1248.  
  1249. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  1250. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1251. attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
  1252. attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
  1253.  
  1254. if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  1255. itemCount = player.GetItemCount(attachedSlotPos)
  1256. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  1257. self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
  1258.  
  1259. elif app.ENABLE_SWITCHBOT and player.SLOT_TYPE_SWITCHBOT == attachedSlotType:
  1260. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  1261. net.SendItemMovePacket(player.SWITCHBOT, attachedSlotPos, player.INVENTORY, selectedSlotPos, attachedCount)
  1262.  
  1263. if item.IsRefineScroll(attachedItemIndex):
  1264. self.wndItem.SetUseMode(False)
  1265.  
  1266. elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
  1267. mouseModule.mouseController.RunCallBack("INVENTORY")
  1268.  
  1269. elif player.SLOT_TYPE_SHOP == attachedSlotType:
  1270. net.SendShopBuyPacket(attachedSlotPos)
  1271.  
  1272. elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:
  1273.  
  1274. if player.ITEM_MONEY == attachedItemIndex:
  1275. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  1276. snd.PlaySound("sound/ui/money.wav")
  1277.  
  1278. else:
  1279. net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)
  1280.  
  1281. elif player.SLOT_TYPE_MALL == attachedSlotType:
  1282. net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
  1283.  
  1284. mouseModule.mouseController.DeattachObject()
  1285.  
  1286. def SelectItemSlot(self, itemSlotIndex):
  1287. if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
  1288. return
  1289.  
  1290. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1291. if constInfo.InventoryLocked():
  1292. return
  1293.  
  1294. itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)
  1295.  
  1296. if mouseModule.mouseController.isAttached():
  1297. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  1298. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1299. attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
  1300.  
  1301. if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  1302. self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
  1303.  
  1304. mouseModule.mouseController.DeattachObject()
  1305.  
  1306. else:
  1307.  
  1308. curCursorNum = app.GetCursor()
  1309. if app.SELL == curCursorNum:
  1310. self.__SellItem(itemSlotIndex)
  1311.  
  1312. elif app.BUY == curCursorNum:
  1313. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)
  1314.  
  1315. elif app.IsPressed(app.DIK_LALT):
  1316. link = player.GetItemLink(itemSlotIndex)
  1317. ime.PasteString(link)
  1318.  
  1319. elif app.IsPressed(app.DIK_LSHIFT):
  1320. itemCount = player.GetItemCount(itemSlotIndex)
  1321.  
  1322. if itemCount > 1:
  1323. self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
  1324. self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
  1325. self.dlgPickMoney.Open(itemCount)
  1326. self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
  1327.  
  1328. #else:
  1329. #selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  1330. #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)
  1331.  
  1332. elif app.IsPressed(app.DIK_LCONTROL):
  1333. itemIndex = player.GetItemIndex(itemSlotIndex)
  1334.  
  1335. if True == item.CanAddToQuickSlotItem(itemIndex):
  1336. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
  1337. else:
  1338. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)
  1339.  
  1340. else:
  1341. selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  1342. itemCount = player.GetItemCount(itemSlotIndex)
  1343. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
  1344.  
  1345. if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
  1346. self.wndItem.SetUseMode(True)
  1347. else:
  1348. self.wndItem.SetUseMode(False)
  1349.  
  1350. snd.PlaySound("sound/ui/pick.wav")
  1351.  
  1352. def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
  1353. if srcItemSlotPos == dstItemSlotPos:
  1354. return
  1355.  
  1356. if item.IsRefineScroll(srcItemVID):
  1357. self.RefineItem(srcItemSlotPos, dstItemSlotPos)
  1358. self.wndItem.SetUseMode(False)
  1359.  
  1360. elif item.IsMetin(srcItemVID):
  1361. self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)
  1362.  
  1363. elif item.IsDetachScroll(srcItemVID):
  1364. self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)
  1365.  
  1366. elif item.IsKey(srcItemVID):
  1367. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1368.  
  1369. elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1370. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1371.  
  1372. elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
  1373. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  1374.  
  1375. else:
  1376. #snd.PlaySound("sound/ui/drop.wav")
  1377.  
  1378. if player.IsEquipmentSlot(dstItemSlotPos):
  1379.  
  1380. if item.IsEquipmentVID(srcItemVID):
  1381. self.__UseItem(srcItemSlotPos)
  1382.  
  1383. else:
  1384. self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
  1385. #net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)
  1386.  
  1387. def __SellItem(self, itemSlotPos):
  1388. if not player.IsEquipmentSlot(itemSlotPos):
  1389. self.sellingSlotNumber = itemSlotPos
  1390. itemIndex = player.GetItemIndex(itemSlotPos)
  1391. itemCount = player.GetItemCount(itemSlotPos)
  1392.  
  1393.  
  1394. self.sellingSlotitemIndex = itemIndex
  1395. self.sellingSlotitemCount = itemCount
  1396.  
  1397. item.SelectItem(itemIndex)
  1398. itemPrice = item.GetISellItemPrice()
  1399.  
  1400. if item.Is1GoldItem():
  1401. itemPrice = itemCount / itemPrice / 5
  1402. else:
  1403. itemPrice = itemPrice * itemCount / 5
  1404.  
  1405. item.GetItemName(itemIndex)
  1406. itemName = item.GetItemName()
  1407.  
  1408. self.questionDialog = uiCommon.QuestionDialog()
  1409. self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
  1410. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
  1411. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  1412. self.questionDialog.Open()
  1413. self.questionDialog.count = itemCount
  1414.  
  1415. def RefineItem(self, scrollSlotPos, targetSlotPos):
  1416.  
  1417. scrollIndex = player.GetItemIndex(scrollSlotPos)
  1418. targetIndex = player.GetItemIndex(targetSlotPos)
  1419.  
  1420. if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
  1421. return
  1422.  
  1423. if app.ENABLE_REFINE_RENEWAL:
  1424. constInfo.AUTO_REFINE_TYPE = 1
  1425. constInfo.AUTO_REFINE_DATA["ITEM"][0] = scrollSlotPos
  1426. constInfo.AUTO_REFINE_DATA["ITEM"][1] = targetSlotPos
  1427.  
  1428. self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
  1429. #net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
  1430. return
  1431.  
  1432. #net.SendRequestRefineInfoPacket(targetSlotPos)
  1433. #return
  1434.  
  1435. result = player.CanRefine(scrollIndex, targetSlotPos)
  1436.  
  1437. if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
  1438. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1439. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET)
  1440.  
  1441. elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
  1442. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1443. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)
  1444.  
  1445. elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
  1446. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1447. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)
  1448.  
  1449. elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
  1450. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1451. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
  1452.  
  1453. elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
  1454. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
  1455.  
  1456. if player.REFINE_OK != result:
  1457. return
  1458.  
  1459. self.refineDialog.Open(scrollSlotPos, targetSlotPos)
  1460.  
  1461. def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
  1462. scrollIndex = player.GetItemIndex(scrollSlotPos)
  1463. targetIndex = player.GetItemIndex(targetSlotPos)
  1464.  
  1465. if not player.CanDetach(scrollIndex, targetSlotPos):
  1466. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
  1467. return
  1468.  
  1469. self.questionDialog = uiCommon.QuestionDialog()
  1470. self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)
  1471. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem))
  1472. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  1473. self.questionDialog.Open()
  1474. self.questionDialog.sourcePos = scrollSlotPos
  1475. self.questionDialog.targetPos = targetSlotPos
  1476.  
  1477. def AttachMetinToItem(self, metinSlotPos, targetSlotPos):
  1478. metinIndex = player.GetItemIndex(metinSlotPos)
  1479. targetIndex = player.GetItemIndex(targetSlotPos)
  1480.  
  1481. item.SelectItem(metinIndex)
  1482. itemName = item.GetItemName()
  1483.  
  1484. result = player.CanAttachMetin(metinIndex, targetSlotPos)
  1485.  
  1486. if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
  1487. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
  1488.  
  1489. if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
  1490. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))
  1491.  
  1492. elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
  1493. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
  1494.  
  1495. elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
  1496. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
  1497.  
  1498. if player.ATTACH_METIN_OK != result:
  1499. return
  1500.  
  1501. self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
  1502.  
  1503.  
  1504.  
  1505. def OverOutItem(self):
  1506. self.wndItem.SetUsableItem(False)
  1507.  
  1508. if None != self.tooltipItem:
  1509. self.tooltipItem.HideToolTip()
  1510.  
  1511. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1512. if constInfo.InventoryLocked():
  1513. return
  1514.  
  1515. def OverInItem(self, overSlotPos):
  1516. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1517. if constInfo.InventoryLocked():
  1518. return
  1519.  
  1520. if app.ENABLE_HIGHLIGHT_SYSTEM:
  1521. stat = 0
  1522. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
  1523. itemVnum = player.GetItemIndex(slotNumber)
  1524.  
  1525. if constInfo.IS_AUTO_POTION(itemVnum):
  1526. metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  1527.  
  1528. if slotNumber >= player.INVENTORY_PAGE_SIZE:
  1529. slotNumber -= player.INVENTORY_PAGE_SIZE
  1530.  
  1531. isActivated = 0 != metinSocket[0]
  1532.  
  1533. if isActivated:
  1534. stat = 1
  1535.  
  1536. if not stat:
  1537. self.wndItem.DeactivateSlot(overSlotPos)
  1538. try:
  1539. self.listHighlightedSlot.remove(slotNumber)
  1540.  
  1541. except:
  1542. pass
  1543.  
  1544. overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
  1545. self.wndItem.SetUsableItem(False)
  1546.  
  1547. if mouseModule.mouseController.isAttached():
  1548. attachedItemType = mouseModule.mouseController.GetAttachedType()
  1549. if player.SLOT_TYPE_INVENTORY == attachedItemType:
  1550.  
  1551. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1552. attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
  1553.  
  1554. if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):
  1555. self.wndItem.SetUsableItem(True)
  1556. self.ShowToolTip(overSlotPos)
  1557.  
  1558. return
  1559.  
  1560. self.ShowToolTip(overSlotPos)
  1561.  
  1562.  
  1563. def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
  1564. "다른 아이템에 사용할 수 있는 아이템인가?"
  1565.  
  1566. if item.IsRefineScroll(srcItemVNum):
  1567. return True
  1568.  
  1569. elif item.IsMetin(srcItemVNum):
  1570. return True
  1571.  
  1572. elif item.IsDetachScroll(srcItemVNum):
  1573. return True
  1574.  
  1575. elif item.IsKey(srcItemVNum):
  1576. return True
  1577.  
  1578. elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1579. return True
  1580.  
  1581. else:
  1582. if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:
  1583. return True
  1584.  
  1585. return False
  1586.  
  1587. def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
  1588. "대상 아이템에 사용할 수 있는가?"
  1589.  
  1590. if srcSlotPos == dstSlotPos:
  1591. return False
  1592.  
  1593. if item.IsRefineScroll(srcItemVNum):
  1594. if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
  1595. return True
  1596.  
  1597. elif item.IsMetin(srcItemVNum):
  1598. if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
  1599. return True
  1600.  
  1601. elif item.IsDetachScroll(srcItemVNum):
  1602. if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):
  1603. return True
  1604.  
  1605. elif item.IsKey(srcItemVNum):
  1606. if player.CanUnlock(srcItemVNum, dstSlotPos):
  1607. return True
  1608.  
  1609. elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1610. return True
  1611.  
  1612. else:
  1613. useType=item.GetUseType(srcItemVNum)
  1614.  
  1615. if "USE_CLEAN_SOCKET" == useType:
  1616. if self.__CanCleanBrokenMetinStone(dstSlotPos):
  1617. return True
  1618.  
  1619. elif "USE_CHANGE_ATTRIBUTE" == useType:
  1620. if self.__CanChangeItemAttrList(dstSlotPos):
  1621. return True
  1622.  
  1623. elif "USE_ADD_ATTRIBUTE" == useType:
  1624. if self.__CanAddItemAttr(dstSlotPos):
  1625. return True
  1626.  
  1627. elif "USE_ADD_ATTRIBUTE2" == useType:
  1628. if self.__CanAddItemAttr(dstSlotPos):
  1629. return True
  1630.  
  1631. elif "USE_ADD_ACCESSORY_SOCKET" == useType:
  1632. if self.__CanAddAccessorySocket(dstSlotPos):
  1633. return True
  1634.  
  1635. elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType:
  1636. if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum):
  1637. return True;
  1638.  
  1639. #if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  1640. elif "USE_PUT_INTO_BELT_SOCKET" == useType:
  1641. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1642. print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum
  1643.  
  1644. item.SelectItem(dstItemVNum)
  1645.  
  1646. if item.ITEM_TYPE_BELT == item.GetItemType():
  1647. return True
  1648.  
  1649. return False
  1650.  
  1651. def __CanCleanBrokenMetinStone(self, dstSlotPos):
  1652. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1653. if dstItemVNum == 0:
  1654. return False
  1655.  
  1656. item.SelectItem(dstItemVNum)
  1657.  
  1658. if item.ITEM_TYPE_WEAPON != item.GetItemType():
  1659. return False
  1660.  
  1661. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1662. if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
  1663. return True
  1664.  
  1665. return False
  1666.  
  1667. def __CanChangeItemAttrList(self, dstSlotPos):
  1668. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1669. if dstItemVNum == 0:
  1670. return False
  1671.  
  1672. item.SelectItem(dstItemVNum)
  1673.  
  1674. if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
  1675. return False
  1676.  
  1677. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1678. if player.GetItemAttribute(dstSlotPos, i) != 0:
  1679. return True
  1680.  
  1681. return False
  1682.  
  1683. def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
  1684. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1685. if dstItemVNum == 0:
  1686. return False
  1687.  
  1688. item.SelectItem(dstItemVNum)
  1689.  
  1690. if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1691. return False
  1692.  
  1693. if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1694. return False
  1695.  
  1696. curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1697. maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1698.  
  1699. if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):
  1700. return False
  1701.  
  1702. if curCount>=maxCount:
  1703. return False
  1704.  
  1705. return True
  1706.  
  1707. def __CanAddAccessorySocket(self, dstSlotPos):
  1708. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1709. if dstItemVNum == 0:
  1710. return False
  1711.  
  1712. item.SelectItem(dstItemVNum)
  1713.  
  1714. if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1715. return False
  1716.  
  1717. if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1718. return False
  1719.  
  1720. curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1721. maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1722.  
  1723. ACCESSORY_SOCKET_MAX_SIZE = 3
  1724. if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
  1725. return False
  1726.  
  1727. return True
  1728.  
  1729. def __CanAddItemAttr(self, dstSlotPos):
  1730. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1731. if dstItemVNum == 0:
  1732. return False
  1733.  
  1734. item.SelectItem(dstItemVNum)
  1735.  
  1736. if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
  1737. return False
  1738.  
  1739. attrCount = 0
  1740. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1741. if player.GetItemAttribute(dstSlotPos, i) != 0:
  1742. attrCount += 1
  1743.  
  1744. if attrCount<4:
  1745. return True
  1746.  
  1747. return False
  1748.  
  1749. def ShowToolTip(self, slotIndex):
  1750. itemVnum = player.GetItemIndex(slotIndex)
  1751.  
  1752. if None != self.tooltipItem:
  1753. self.tooltipItem.SetInventoryItem(slotIndex)
  1754.  
  1755. if not player.IsEquipmentSlot(slotIndex) and not item.IsAntiFlag(item.ANTIFLAG_GIVE):
  1756. if self.wndExchange.IsShow():
  1757. self.tooltipItem.AppendTradeableInformation()
  1758.  
  1759. if self.wndDice.IsShow():
  1760. self.tooltipItem.AppendTradeableInformation()
  1761.  
  1762. def OnTop(self):
  1763. if None != self.tooltipItem:
  1764. self.tooltipItem.SetTop()
  1765.  
  1766. def OnPressEscapeKey(self):
  1767. self.Close()
  1768. return True
  1769.  
  1770. if app.ENABLE_COINS_SYSTEM:
  1771. def SetCoins(self, coins):
  1772. self.coins = coins
  1773.  
  1774. def SetJD(self, jd):
  1775. self.jd = jd
  1776.  
  1777. def SetEuro(self, euro):
  1778. self.euro = euro
  1779.  
  1780. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1781. def InventoryLock(self):
  1782. self.InventoryLockBtn[1].Hide()
  1783. self.InventoryLockBtn[0].Show()
  1784.  
  1785. constInfo.SetInventoryLock()
  1786.  
  1787. def InventoryUnlock(self):
  1788. self.InventoryLockBtn[0].Hide()
  1789. self.InventoryLockBtn[1].Show()
  1790.  
  1791. constInfo.SetUnlockedInventory()
  1792.  
  1793. def UseItemSlot(self, slotIndex):
  1794.  
  1795. curCursorNum = app.GetCursor()
  1796. if app.SELL == curCursorNum:
  1797. return
  1798.  
  1799. if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
  1800. return
  1801.  
  1802. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1803. if constInfo.InventoryLocked():
  1804. return
  1805.  
  1806. slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
  1807.  
  1808. if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1809. if self.wndDragonSoulRefine.IsShow():
  1810. self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
  1811. return
  1812.  
  1813. if app.EXCHANGE_CHECKIN_UPDATE:
  1814. if self.wndExchange.IsShow() or self.wndDice.IsShow() and slotIndex < player.EQUIPMENT_SLOT_START:
  1815. for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
  1816. itemVnum = exchange.GetItemVnumFromSelf(i)
  1817.  
  1818. if itemVnum != 0:
  1819. continue
  1820.  
  1821. if not net.SendExchangeItemAddPacket(1, slotIndex, i):
  1822. continue
  1823. break
  1824.  
  1825. return
  1826.  
  1827. self.__UseItem(slotIndex)
  1828. mouseModule.mouseController.DeattachObject()
  1829. self.OverOutItem()
  1830.  
  1831. def SetOpenBoniSwitcherEvent(self, event):
  1832. self.OpenBoniSwitcherEvent = ui.__mem_func__(event)
  1833.  
  1834. def __UseItem(self, slotIndex):
  1835. ItemVNum = player.GetItemIndex(slotIndex)
  1836. item.SelectItem(ItemVNum)
  1837.  
  1838. if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
  1839. self.questionDialog = uiCommon.QuestionDialog()
  1840. self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)
  1841. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
  1842. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
  1843. self.questionDialog.Open()
  1844. self.questionDialog.slotIndex = slotIndex
  1845.  
  1846. else:
  1847. self.__SendUseItemPacket(slotIndex)
  1848.  
  1849. def __UseItemQuestionDialog_OnCancel(self):
  1850. self.OnCloseQuestionDialog()
  1851.  
  1852. def __UseItemQuestionDialog_OnAccept(self):
  1853. self.__SendUseItemPacket(self.questionDialog.slotIndex)
  1854.  
  1855. if self.questionDialog:
  1856. self.questionDialog.Close()
  1857.  
  1858. self.questionDialog = None
  1859.  
  1860. def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
  1861. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1862. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1863.  
  1864. return
  1865.  
  1866. net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
  1867.  
  1868. def __SendUseItemPacket(self, slotPos):
  1869. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1870. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1871.  
  1872. return
  1873.  
  1874. net.SendItemUsePacket(slotPos)
  1875.  
  1876. def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
  1877. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1878. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
  1879.  
  1880. return
  1881.  
  1882. net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
  1883.  
  1884. def __OverInButton(self, stat):
  1885. self.__ShowToolTip(self.BUTTON_TOOLTIP[stat])
  1886.  
  1887. def __OverOutButton(self):
  1888. self.__HideToolTip()
  1889.  
  1890. def __ShowToolTip(self, statDesc):
  1891. arglen = len(str(statDesc))
  1892. self.toolTip.SetThinBoardSize(8 * arglen)
  1893. self.toolTip.ClearToolTip()
  1894. self.toolTip.AppendTextLine(statDesc)
  1895. self.toolTip.Show()
  1896.  
  1897. def __HideToolTip(self):
  1898. self.toolTip.Hide()
  1899.  
  1900. def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
  1901. if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1902. self.wndDragonSoulRefine = wndDragonSoulRefine
  1903.  
  1904. def OnMoveWindow(self, x, y):
  1905. if self.wndSideBar:
  1906. self.wndSideBar.AdjustPosition()
  1907.  
  1908. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  1909. if self.wndBelt:
  1910. self.wndBelt.AdjustPositionAndSize()
  1911.  
  1912. def OnUpdate(self):
  1913. if self.costumeButton:
  1914. if self.HasCostumeItemInInventory():
  1915. self.costumeButton.Show()
  1916. else:
  1917. self.costumeButton.Hide()
  1918.  
  1919. if app.ENABLE_SORT_INVEN and self.tooltipInfo:
  1920. for i in xrange(len(self.tooltipInfo)):
  1921. if self.yenilebutton.IsIn():
  1922. self.tooltipInfo[i].Show()
  1923. else:
  1924. self.tooltipInfo[i].Hide()
  1925.  
  1926. if app.ENABLE_INVENTORY_PROTECT_SYSTEM:
  1927. if self.wndItem or self.wndEquip:
  1928. for i in xrange(player.INVENTORY_PAGE_SIZE*5):
  1929. if constInfo.InventoryLocked():
  1930. self.wndItem.SetLock(True, i)
  1931. else:
  1932. self.wndItem.SetLock(False, i)
  1933.  
  1934. for i in xrange(player.EQUIPMENT_PAGE_COUNT):
  1935. slotNumber = player.EQUIPMENT_SLOT_START + i
  1936.  
  1937. if constInfo.InventoryLocked():
  1938. self.wndEquip.SetLock(True, slotNumber)
  1939. else:
  1940. self.wndEquip.SetLock(False, slotNumber)
  1941.  
  1942. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  1943. for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
  1944. slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
  1945.  
  1946. if constInfo.InventoryLocked():
  1947. self.wndEquip.SetLock(True, slotNumber)
  1948. else:
  1949. self.wndEquip.SetLock(False, slotNumber)
  1950.  
Advertisement
Add Comment
Please, Sign In to add comment