eri000n

Untitled

Apr 3rd, 2023
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 49.83 KB | None | 0 0
  1. import ui
  2. import exchange
  3. import player
  4. import mouseModule
  5. import net
  6. import app
  7. import snd
  8. import item
  9. import player
  10. import chat
  11. import grp
  12. import uiScriptLocale
  13. import uiRefine
  14. import uiAttachMetin
  15. import uiPickMoney
  16. import uiCommon
  17. import uiPrivateShopBuilder # °łŔλóÁˇ ż­µżľČ ItemMove ąćÁö
  18. import localeInfo
  19. import constInfo
  20. import ime
  21. import wndMgr
  22. if app.ENABLE_SORT_INVEN:
  23. import uiToolTip
  24.  
  25. ITEM_MALL_BUTTON_ENABLE = True
  26.  
  27.  
  28. if app.ENABLE_SASH_SYSTEM:
  29. import sash
  30.  
  31. ITEM_FLAG_APPLICABLE = 1 << 14
  32.  
  33. class CostumeWindow(ui.ScriptWindow):
  34.  
  35. def __init__(self, wndInventory):
  36. import exception
  37.  
  38. if not app.ENABLE_COSTUME_SYSTEM:
  39. exception.Abort("What do you do?")
  40. return
  41.  
  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. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  51. self.visibleButtonList = []
  52.  
  53. self.__LoadWindow()
  54.  
  55. def __del__(self):
  56. ui.ScriptWindow.__del__(self)
  57.  
  58. def Show(self):
  59. self.__LoadWindow()
  60. self.RefreshCostumeSlot()
  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/CostumeWindow.py")
  76. except:
  77. import exception
  78. exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  79.  
  80. try:
  81. wndEquip = self.GetChild("CostumeSlot")
  82. self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
  83. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  84. self.visibleButtonList.append(self.GetChild("BodyToolTipButton"))
  85. self.visibleButtonList.append(self.GetChild("HairToolTipButton"))
  86. self.visibleButtonList.append(self.GetChild("SashToolTipButton"))
  87. self.visibleButtonList.append(self.GetChild("WeaponToolTipButton"))
  88. #self.visibleButtonList.append(self.GetChild("AuraToolTipButton"))
  89.  
  90. except:
  91. import exception
  92. exception.Abort("CostumeWindow.LoadWindow.BindObject")
  93.  
  94. ## Equipment
  95. wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
  96. wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
  97. wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  98. wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  99. wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
  100. wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
  101.  
  102. self.wndEquip = wndEquip
  103. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  104. self.visibleButtonList[0].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 1, 0)
  105. self.visibleButtonList[1].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 2, 0)
  106. if app.ENABLE_SASH_SYSTEM:
  107. self.visibleButtonList[2].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 3, 0)
  108. if app.ENABLE_COSTUME_WEAPON_SYSTEM:
  109. self.visibleButtonList[3].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 4, 0)
  110. #if app.ENABLE_AURA_SYSTEM:
  111. #self.visibleButtonList[4].SetToggleUpEvent(ui.__mem_func__(self.VisibleCostume), 5, 0)
  112.  
  113. self.visibleButtonList[0].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 1, 1)
  114. self.visibleButtonList[1].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 2, 1)
  115. if app.ENABLE_SASH_SYSTEM:
  116. self.visibleButtonList[2].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 3, 1)
  117. if app.ENABLE_COSTUME_WEAPON_SYSTEM:
  118. self.visibleButtonList[3].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 4, 1)
  119. #if app.ENABLE_AURA_SYSTEM:
  120. #self.visibleButtonList[4].SetToggleDownEvent(ui.__mem_func__(self.VisibleCostume), 5, 1)
  121.  
  122. def RefreshCostumeSlot(self):
  123. getItemVNum=player.GetItemIndex
  124.  
  125. for i in xrange(item.COSTUME_SLOT_COUNT):
  126. slotNumber = item.COSTUME_SLOT_START + i
  127. self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
  128.  
  129. self.wndEquip.RefreshSlot()
  130. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  131. def RefreshVisibleCostume(self):
  132. body = constInfo.HIDDEN_BODY_COSTUME
  133. hair = constInfo.HIDDEN_HAIR_COSTUME
  134. if app.ENABLE_SASH_SYSTEM:
  135. sash = constInfo.HIDDEN_SASH_COSTUME
  136. if app.ENABLE_COSTUME_WEAPON_SYSTEM:
  137. weapon = constInfo.HIDDEN_WEAPON_COSTUME
  138. #if app.ENABLE_AURA_SYSTEM:
  139. #aura = constInfo_new.HIDDEN_AURA_COSTUME
  140.  
  141. if body == 1:
  142. self.visibleButtonList[0].SetToolTipText(localeInfo.SHOW_COSTUME)
  143. self.visibleButtonList[0].Down()
  144. else:
  145. self.visibleButtonList[0].SetToolTipText(localeInfo.HIDE_COSTUME)
  146. self.visibleButtonList[0].SetUp()
  147.  
  148. if hair == 1:
  149. self.visibleButtonList[1].SetToolTipText(localeInfo.SHOW_COSTUME)
  150. self.visibleButtonList[1].Down()
  151. else:
  152. self.visibleButtonList[1].SetToolTipText(localeInfo.HIDE_COSTUME)
  153. self.visibleButtonList[1].SetUp()
  154.  
  155. if app.ENABLE_SASH_SYSTEM:
  156. if sash == 1:
  157. self.visibleButtonList[2].SetToolTipText(localeInfo.SHOW_COSTUME)
  158. self.visibleButtonList[2].Down()
  159. else:
  160. self.visibleButtonList[2].SetToolTipText(localeInfo.HIDE_COSTUME)
  161. self.visibleButtonList[2].SetUp()
  162.  
  163. if app.ENABLE_COSTUME_WEAPON_SYSTEM:
  164. if weapon == 1:
  165. self.visibleButtonList[3].SetToolTipText(localeInfo.SHOW_COSTUME)
  166. self.visibleButtonList[3].Down()
  167. else:
  168. self.visibleButtonList[3].SetToolTipText(localeInfo.HIDE_COSTUME)
  169. self.visibleButtonList[3].SetUp()
  170.  
  171. #if app.ENABLE_AURA_SYSTEM:
  172. # if aura == 1:
  173. # self.visibleButtonList[4].SetToolTipText(localeInfo.SHOW_COSTUME)
  174. # self.visibleButtonList[4].Down()
  175. # else:
  176. # self.visibleButtonList[4].SetToolTipText(localeInfo.HIDE_COSTUME)
  177. # self.visibleButtonList[4].SetUp()
  178.  
  179. def VisibleCostume(self, part, hidden):
  180. net.SendChatPacket("/hide_costume %d %d" % (part, hidden))
  181.  
  182. class BeltInventoryWindow(ui.ScriptWindow):
  183.  
  184. def __init__(self, wndInventory):
  185. import exception
  186.  
  187. if not app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  188. exception.Abort("What do you do?")
  189. return
  190.  
  191. if not wndInventory:
  192. exception.Abort("wndInventory parameter must be set to InventoryWindow")
  193. return
  194.  
  195. ui.ScriptWindow.__init__(self)
  196.  
  197. self.isLoaded = 0
  198. self.wndInventory = wndInventory;
  199.  
  200. self.wndBeltInventoryLayer = None
  201. self.wndBeltInventorySlot = None
  202. self.expandBtn = None
  203. self.minBtn = None
  204.  
  205. self.__LoadWindow()
  206.  
  207. def __del__(self):
  208. ui.ScriptWindow.__del__(self)
  209.  
  210. def Show(self, openBeltSlot = FALSE):
  211. self.__LoadWindow()
  212. self.RefreshSlot()
  213.  
  214. ui.ScriptWindow.Show(self)
  215.  
  216. if openBeltSlot:
  217. self.OpenInventory()
  218. else:
  219. self.CloseInventory()
  220.  
  221. def Close(self):
  222. self.Hide()
  223.  
  224. def IsOpeningInventory(self):
  225. return self.wndBeltInventoryLayer.IsShow()
  226.  
  227. def OpenInventory(self):
  228. self.wndBeltInventoryLayer.Show()
  229. self.expandBtn.Hide()
  230.  
  231. if localeInfo.IsARABIC() == 0:
  232. self.AdjustPositionAndSize()
  233.  
  234. def CloseInventory(self):
  235. self.wndBeltInventoryLayer.Hide()
  236. self.expandBtn.Show()
  237.  
  238. if localeInfo.IsARABIC() == 0:
  239. self.AdjustPositionAndSize()
  240.  
  241. ## ÇöŔç ŔÎşĄĹ丮 Ŕ§Äˇ¸¦ ±âÁŘŔ¸·Î BASE Ŕ§Äˇ¸¦ °č»ę, ¸®ĹĎ.. ĽýŔÚ ÇϵĺÄÚµůÇϱâ Á¤¸» ˝ČÁö¸¸ ąćąýŔĚ ľř´Ů..
  242. def GetBasePosition(self):
  243. x, y = self.wndInventory.GetGlobalPosition()
  244. return x - 148, y + 241
  245.  
  246. def AdjustPositionAndSize(self):
  247. bx, by = self.GetBasePosition()
  248.  
  249. if self.IsOpeningInventory():
  250. self.SetPosition(bx, by)
  251. self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
  252.  
  253. else:
  254. self.SetPosition(bx + 138, by);
  255. self.SetSize(10, self.GetHeight())
  256.  
  257. def __LoadWindow(self):
  258. if self.isLoaded == 1:
  259. return
  260.  
  261. self.isLoaded = 1
  262.  
  263. try:
  264. pyScrLoader = ui.PythonScriptLoader()
  265. pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py")
  266. except:
  267. import exception
  268. exception.Abort("CostumeWindow.LoadWindow.LoadObject")
  269.  
  270. try:
  271. self.ORIGINAL_WIDTH = self.GetWidth()
  272. wndBeltInventorySlot = self.GetChild("BeltInventorySlot")
  273. self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer")
  274. self.expandBtn = self.GetChild("ExpandBtn")
  275. self.minBtn = self.GetChild("MinimizeBtn")
  276.  
  277. self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
  278. self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
  279.  
  280. if localeInfo.IsARABIC() :
  281. self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15)
  282. self.wndBeltInventoryLayer.SetPosition(self.wndBeltInventoryLayer.GetWidth() - 5, 0)
  283. self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15)
  284.  
  285. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  286. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  287. wndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  288. "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  289. "d:/ymir work/ui/game/quest/slot_button_01.sub",\
  290. "d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", FALSE, FALSE)
  291.  
  292. except:
  293. import exception
  294. exception.Abort("CostumeWindow.LoadWindow.BindObject")
  295.  
  296. ## Equipment
  297. wndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
  298. wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
  299. wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  300. wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
  301. wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
  302. wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
  303.  
  304. self.wndBeltInventorySlot = wndBeltInventorySlot
  305.  
  306. def RefreshSlot(self):
  307. getItemVNum=player.GetItemIndex
  308.  
  309. for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
  310. slotNumber = item.BELT_INVENTORY_SLOT_START + i
  311. self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))
  312. self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, TRUE)
  313.  
  314. avail = "0"
  315.  
  316. if player.IsAvailableBeltInventoryCell(slotNumber):
  317. self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
  318. else:
  319. self.wndBeltInventorySlot.DisableCoverButton(slotNumber)
  320.  
  321. self.wndBeltInventorySlot.RefreshSlot()
  322.  
  323.  
  324. class InventoryWindow(ui.ScriptWindow):
  325.  
  326. 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", "USE_COSTUME_CHANGE_ATTRIBUTE", "USE_COSTUME_ADD_ATTRIBUTE")
  327.  
  328. questionDialog = None
  329. tooltipItem = None
  330. wndCostume = None
  331. wndBelt = None
  332. dlgPickMoney = None
  333.  
  334. sellingSlotNumber = -1
  335. isLoaded = 0
  336. isOpenedCostumeWindowWhenClosingInventory = 0 # ŔÎşĄĹ丮 ´ÝŔ» ¶§ ÄÚ˝şĂőŔĚ ż­·ÁŔÖľú´ÂÁö ż©şÎ-_-; ł×ŔĚąÖ ¤¸¤µ
  337. isOpenedBeltWindowWhenClosingInventory = 0 # ŔÎşĄĹ丮 ´ÝŔ» ¶§ ş§Ć® ŔÎşĄĹ丮°ˇ ż­·ÁŔÖľú´ÂÁö ż©şÎ-_-; ł×ŔĚąÖ ¤¸¤µ
  338.  
  339. def __init__(self):
  340. ui.ScriptWindow.__init__(self)
  341.  
  342. self.isOpenedBeltWindowWhenClosingInventory = 0 # ŔÎşĄĹ丮 ´ÝŔ» ¶§ ş§Ć® ŔÎşĄĹ丮°ˇ ż­·ÁŔÖľú´ÂÁö ż©şÎ-_-; ł×ŔĚąÖ ¤¸¤µ
  343.  
  344. self.__LoadWindow()
  345.  
  346. def __del__(self):
  347. ui.ScriptWindow.__del__(self)
  348.  
  349. def Show(self):
  350. self.__LoadWindow()
  351.  
  352. ui.ScriptWindow.Show(self)
  353.  
  354. # ŔÎşĄĹ丮¸¦ ´ÝŔ» ¶§ ÄÚ˝şĂőŔĚ ż­·ÁŔÖľú´Ů¸é ŔÎşĄĹ丮¸¦ ż­ ¶§ ÄÚ˝şĂőµµ °°ŔĚ ż­µµ·Ď ÇÔ.
  355. if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
  356. self.wndCostume.Show()
  357.  
  358. # ŔÎşĄĹ丮¸¦ ´ÝŔ» ¶§ ş§Ć® ŔÎşĄĹ丮°ˇ ż­·ÁŔÖľú´Ů¸é °°ŔĚ ż­µµ·Ď ÇÔ.
  359. if self.wndBelt:
  360. self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)
  361.  
  362. def BindInterfaceClass(self, interface):
  363. self.interface = interface
  364.  
  365. def __LoadWindow(self):
  366. if self.isLoaded == 1:
  367. return
  368.  
  369. self.isLoaded = 1
  370.  
  371. try:
  372. pyScrLoader = ui.PythonScriptLoader()
  373.  
  374. if ITEM_MALL_BUTTON_ENABLE:
  375. pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "InventoryWindow.py")
  376. else:
  377. pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
  378. except:
  379. import exception
  380. exception.Abort("InventoryWindow.LoadWindow.LoadObject")
  381.  
  382. try:
  383. wndItem = self.GetChild("ItemSlot")
  384. wndEquip = self.GetChild("EquipmentSlot")
  385. self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
  386. self.wndMoney = self.GetChild("Money")
  387. self.wndMoneySlot = self.GetChild("Money_Slot")
  388. self.mallButton = self.GetChild2("MallButton")
  389. self.DSSButton = self.GetChild2("DSSButton")
  390. self.costumeButton = self.GetChild2("CostumeButton")
  391.  
  392. self.inventoryTab = []
  393. self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
  394. self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
  395. self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
  396. self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))
  397.  
  398. self.equipmentTab = []
  399. self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
  400. self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))
  401. if app.ENABLE_SORT_INVEN:
  402. self.yenilebutton = self.GetChild2("YenileButton")
  403. self.yenilebutton.SetEvent(ui.__mem_func__(self.ClickYenileButton))
  404. self.tooltipI = uiToolTip.ToolTip()
  405. self.tooltipI.Hide()
  406. self.tooltipInfo = [self.tooltipI]*4
  407. self.InformationText = [localeInfo.YENILE_BUTTON_TITLE,
  408. localeInfo.YENILE_BUTTON,
  409. localeInfo.YENILE_BUTTON2,
  410. localeInfo.YENILE_BUTTON3
  411. ]
  412. for i in xrange(len(self.tooltipInfo)):
  413. self.tooltipInfo[i].SetFollow(True)
  414. self.tooltipInfo[i].AlignHorizonalCenter()
  415. if i == 0:
  416. self.tooltipInfo[i].AppendTextLine(self.InformationText[i], 0xffffff00)
  417. else:
  418. self.tooltipInfo[i].AppendTextLine(self.InformationText[i])
  419. self.tooltipInfo[i].Hide()
  420.  
  421. if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:
  422. self.costumeButton.Hide()
  423. self.costumeButton.Destroy()
  424. self.costumeButton = 0
  425.  
  426. # Belt Inventory Window
  427. self.wndBelt = None
  428.  
  429. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  430. self.wndBelt = BeltInventoryWindow(self)
  431.  
  432. except:
  433. import exception
  434. exception.Abort("InventoryWindow.LoadWindow.BindObject")
  435.  
  436. ## Item
  437. wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  438. wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  439. wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  440. wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  441. wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  442. wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  443.  
  444. ## Equipment
  445. wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
  446. wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
  447. wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
  448. wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
  449. wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  450. wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  451.  
  452. ## PickMoneyDialog
  453. dlgPickMoney = uiPickMoney.PickMoneyDialog()
  454. dlgPickMoney.LoadDialog()
  455. dlgPickMoney.Hide()
  456.  
  457. ## RefineDialog
  458. self.refineDialog = uiRefine.RefineDialog()
  459. self.refineDialog.Hide()
  460.  
  461. ## AttachMetinDialog
  462. self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
  463. self.attachMetinDialog.Hide()
  464.  
  465. ## MoneySlot
  466. self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
  467.  
  468. self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
  469. self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
  470. self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
  471. self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))
  472. self.inventoryTab[0].Down()
  473. self.inventoryPageIndex = 0
  474.  
  475. self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg))
  476. self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg))
  477. self.equipmentTab[0].Down()
  478. self.equipmentTab[0].Hide()
  479. self.equipmentTab[1].Hide()
  480.  
  481. self.wndItem = wndItem
  482. self.wndEquip = wndEquip
  483. self.dlgPickMoney = dlgPickMoney
  484.  
  485. # MallButton
  486. if self.mallButton:
  487. self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))
  488.  
  489. if self.DSSButton:
  490. self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
  491.  
  492. # Costume Button
  493. if self.costumeButton:
  494. self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))
  495.  
  496. self.wndCostume = None
  497.  
  498. #####
  499.  
  500. ## Refresh
  501. if app.ENABLE_SASH_SYSTEM:
  502. self.listAttachedSashs = []
  503. self.SetInventoryPage(0)
  504. self.SetEquipmentPage(0)
  505. self.RefreshItemSlot()
  506. self.RefreshStatus()
  507.  
  508. def Destroy(self):
  509. self.ClearDictionary()
  510.  
  511. self.dlgPickMoney.Destroy()
  512. self.dlgPickMoney = 0
  513.  
  514. self.refineDialog.Destroy()
  515. self.refineDialog = 0
  516.  
  517. self.attachMetinDialog.Destroy()
  518. self.attachMetinDialog = 0
  519.  
  520. self.tooltipItem = None
  521. self.wndItem = 0
  522. self.wndEquip = 0
  523. self.dlgPickMoney = 0
  524. self.wndMoney = 0
  525. self.wndMoneySlot = 0
  526. self.questionDialog = None
  527. self.mallButton = None
  528. self.DSSButton = None
  529. if app.ENABLE_DSS_ACTIVE_EFFECT_BUTTON:
  530. self.DSSButtonEffect = None
  531. self.interface = None
  532.  
  533. if self.wndCostume:
  534. self.wndCostume.Destroy()
  535. self.wndCostume = 0
  536.  
  537. if self.wndBelt:
  538. self.wndBelt.Destroy()
  539. self.wndBelt = None
  540.  
  541. self.inventoryTab = []
  542. self.equipmentTab = []
  543.  
  544. def Hide(self):
  545. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
  546. self.OnCloseQuestionDialog()
  547. return
  548. if None != self.tooltipItem:
  549. self.tooltipItem.HideToolTip()
  550.  
  551. if self.wndCostume:
  552. self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # ŔÎşĄĹ丮 âŔĚ ´ÝČú ¶§ ÄÚ˝şĂőŔĚ ż­·Á ŔÖľú´Â°ˇ?
  553. self.wndCostume.Close()
  554.  
  555. if self.wndBelt:
  556. self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory() # ŔÎşĄĹ丮 âŔĚ ´ÝČú ¶§ ş§Ć® ŔÎşĄĹ丮µµ ż­·Á ŔÖľú´Â°ˇ?
  557. print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventory
  558. self.wndBelt.Close()
  559.  
  560. if self.dlgPickMoney:
  561. self.dlgPickMoney.Close()
  562.  
  563. wndMgr.Hide(self.hWnd)
  564.  
  565.  
  566. def Close(self):
  567. self.Hide()
  568. if app.ENABLE_SORT_INVEN:
  569. def ClickYenileButton(self):
  570. if app.IsPressed(app.DIK_LALT):
  571. net.SortInven(2)
  572. elif app.IsPressed(app.DIK_LCONTROL):
  573. net.SortInven(3)
  574. else:
  575. net.SortInven(1)
  576.  
  577. def OnUpdate(self):
  578. if self.wndItem:
  579. if app.ENABLE_SORT_INVEN and self.tooltipInfo:
  580. for i in xrange(len(self.tooltipInfo)):
  581. if self.yenilebutton.IsIn():
  582. self.tooltipInfo[i].Show()
  583. else:
  584. self.tooltipInfo[i].Hide()
  585.  
  586. def SetInventoryPage(self, page):
  587. self.inventoryTab[self.inventoryPageIndex].SetUp()
  588. self.inventoryPageIndex = page
  589. self.inventoryTab[self.inventoryPageIndex].Down()
  590. self.RefreshBagSlotWindow()
  591.  
  592. def SetEquipmentPage(self, page):
  593. self.equipmentPageIndex = page
  594. self.equipmentTab[1-page].SetUp()
  595. self.RefreshEquipSlotWindow()
  596.  
  597. def ClickMallButton(self):
  598. print "click_mall_button"
  599. net.SendChatPacket("/click_mall")
  600.  
  601. # DSSButton
  602. def ClickDSSButton(self):
  603. print "click_dss_button"
  604. self.interface.ToggleDragonSoulWindow()
  605. if app.ENABLE_DSS_ACTIVE_EFFECT_BUTTON:
  606. def UseDSSButtonEffect(self, enable):
  607. if self.DSSButton:
  608. DSSButtonEffect = ui.SlotWindow()
  609. DSSButtonEffect.AddFlag("attach")
  610. DSSButtonEffect.SetParent(self.DSSButton)
  611. DSSButtonEffect.SetPosition(3.2, 0)
  612.  
  613. DSSButtonEffect.AppendSlot(0, 0, 0, 32, 32)
  614. DSSButtonEffect.SetRenderSlot(0)
  615. DSSButtonEffect.RefreshSlot()
  616.  
  617. if enable == True:
  618. DSSButtonEffect.ActivateSlot(0)
  619. DSSButtonEffect.Show()
  620. else:
  621. DSSButtonEffect.DeactivateSlot(0)
  622. DSSButtonEffect.Hide()
  623. self.DSSButtonEffect = DSSButtonEffect
  624.  
  625. def ClickCostumeButton(self):
  626. print "Click Costume Button"
  627. if self.wndCostume:
  628. if self.wndCostume.IsShow():
  629. self.wndCostume.Hide()
  630. else:
  631. self.wndCostume.Show()
  632. else:
  633. self.wndCostume = CostumeWindow(self)
  634. self.wndCostume.Show()
  635.  
  636. def OpenPickMoneyDialog(self):
  637.  
  638. if mouseModule.mouseController.isAttached():
  639.  
  640. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  641. if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():
  642.  
  643. if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
  644. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  645. snd.PlaySound("sound/ui/money.wav")
  646.  
  647. mouseModule.mouseController.DeattachObject()
  648.  
  649. else:
  650. curMoney = player.GetElk()
  651.  
  652. if curMoney <= 0:
  653. return
  654.  
  655. self.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE)
  656. self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
  657. self.dlgPickMoney.Open(curMoney)
  658. self.dlgPickMoney.SetMax(7) # ŔÎşĄĹ丮 990000 Á¦ÇŃ ąö±× ĽöÁ¤
  659.  
  660. def OnPickMoney(self, money):
  661. mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
  662.  
  663. def OnPickItem(self, count):
  664. itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
  665. selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  666. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
  667.  
  668. def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
  669. if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)):
  670. return local
  671.  
  672. return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
  673.  
  674. if app.ENABLE_HIDE_COSTUME_SYSTEM:
  675. def RefreshVisibleCostume(self):
  676. if self.wndCostume:
  677. self.wndCostume.RefreshVisibleCostume()
  678. else:
  679. self.wndCostume = CostumeWindow(self)
  680. self.wndCostume.RefreshVisibleCostume()
  681. def RefreshBagSlotWindow(self):
  682. getItemVNum=player.GetItemIndex
  683. getItemCount=player.GetItemCount
  684. setItemVNum=self.wndItem.SetItemSlot
  685.  
  686. for i in xrange(player.INVENTORY_PAGE_SIZE):
  687. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
  688.  
  689. itemCount = getItemCount(slotNumber)
  690. # itemCount == 0ŔĚ¸é ĽŇÄĎŔ» şńżî´Ů.
  691. if 0 == itemCount:
  692. self.wndItem.ClearSlot(i)
  693. continue
  694. elif 1 == itemCount:
  695. itemCount = 0
  696.  
  697. itemVnum = getItemVNum(slotNumber)
  698. setItemVNum(i, itemVnum, itemCount)
  699.  
  700. ## ŔÚµżą°ľŕ (HP: #72723 ~ #72726, SP: #72727 ~ #72730) ĆŻĽöĂł¸® - ľĆŔĚĹŰŔεĄµµ ˝˝·Ôżˇ ȰĽşČ­/şńȰĽşČ­ ÇĄ˝Ă¸¦ Ŕ§ÇŃ ŔŰľ÷ŔÓ - [hyo]
  701. if constInfo.IS_AUTO_POTION(itemVnum):
  702. # metinSocket - [0] : ȰĽşČ­ ż©şÎ, [1] : »çżëÇŃ ľç, [2] : ĂÖ´ë żë·®
  703. metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
  704.  
  705. if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
  706. slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
  707.  
  708. isActivated, usedAmount, totalAmount = metinSocket[:3]
  709. if isActivated:
  710. potionType = 0
  711. if constInfo.IS_AUTO_POTION_HP(itemVnum):
  712. potionType = player.AUTO_POTION_TYPE_HP
  713. self.wndItem.ActivateSlot(slotNumber, (238.00 / 255.0), (000.00 / 255.0), (000.00 / 255.0), 1.0)
  714.  
  715. elif constInfo.IS_AUTO_POTION_SP(itemVnum):
  716. potionType = player.AUTO_POTION_TYPE_SP
  717. self.wndItem.ActivateSlot(slotNumber, (000.00 / 255.0), (000.00 / 255.0), (238.00 / 255.0), 1.0)
  718.  
  719. player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, slotNumber)
  720. else:
  721. self.wndItem.DeactivateSlot(slotNumber)
  722.  
  723. if app.ENABLE_SASH_SYSTEM:
  724. slotNumberChecked = 0
  725. if not constInfo.IS_AUTO_POTION(itemVnum):
  726. self.wndItem.DeactivateSlot(i)
  727.  
  728. for j in xrange(sash.WINDOW_MAX_MATERIALS):
  729. (isHere, iCell) = sash.GetAttachedItem(j)
  730. if isHere:
  731. if iCell == slotNumber:
  732. self.wndItem.ActivateSlot(i, (36.00 / 255.0), (222.00 / 255.0), (3.00 / 255.0), 1.0)
  733. if not slotNumber in self.listAttachedSashs:
  734. self.listAttachedSashs.append(slotNumber)
  735.  
  736. slotNumberChecked = 1
  737. else:
  738. if slotNumber in self.listAttachedSashs and not slotNumberChecked:
  739. self.wndItem.DeactivateSlot(i)
  740. self.listAttachedSashs.remove(slotNumber)
  741.  
  742. self.wndItem.RefreshSlot()
  743.  
  744. if self.wndBelt:
  745. self.wndBelt.RefreshSlot()
  746.  
  747. def RefreshEquipSlotWindow(self):
  748. getItemVNum=player.GetItemIndex
  749. getItemCount=player.GetItemCount
  750. setItemVNum=self.wndEquip.SetItemSlot
  751. for i in xrange(player.EQUIPMENT_PAGE_COUNT):
  752. slotNumber = player.EQUIPMENT_SLOT_START + i
  753. itemCount = getItemCount(slotNumber)
  754. if itemCount <= 1:
  755. itemCount = 0
  756. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  757.  
  758. if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
  759. for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
  760. slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
  761. itemCount = getItemCount(slotNumber)
  762. if itemCount <= 1:
  763. itemCount = 0
  764. setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
  765. print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)
  766.  
  767.  
  768.  
  769. self.wndEquip.RefreshSlot()
  770.  
  771. if self.wndCostume:
  772. self.wndCostume.RefreshCostumeSlot()
  773.  
  774. def RefreshItemSlot(self):
  775. self.RefreshBagSlotWindow()
  776. self.RefreshEquipSlotWindow()
  777.  
  778. def RefreshStatus(self):
  779. money = player.GetElk()
  780. self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
  781.  
  782. def SetItemToolTip(self, tooltipItem):
  783. self.tooltipItem = tooltipItem
  784.  
  785. def SellItem(self):
  786. if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
  787. if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
  788. ## żëČĄĽ®µµ Ćȸ®°Ô ÇĎ´Â ±â´É Ăß°ˇÇϸ鼭 ŔÎŔÚ type Ăß°ˇ
  789. net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY)
  790. snd.PlaySound("sound/ui/money.wav")
  791. self.OnCloseQuestionDialog()
  792.  
  793. def OnDetachMetinFromItem(self):
  794. if None == self.questionDialog:
  795. return
  796.  
  797. #net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
  798. self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
  799. self.OnCloseQuestionDialog()
  800.  
  801. def OnCloseQuestionDialog(self):
  802. if not self.questionDialog:
  803. return
  804.  
  805. self.questionDialog.Close()
  806. self.questionDialog = None
  807. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
  808.  
  809. ## Slot Event
  810. def SelectEmptySlot(self, selectedSlotPos):
  811. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
  812. return
  813.  
  814. selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
  815.  
  816. if mouseModule.mouseController.isAttached():
  817.  
  818. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  819. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  820. attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
  821. attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
  822.  
  823. if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  824. itemCount = player.GetItemCount(attachedSlotPos)
  825. attachedCount = mouseModule.mouseController.GetAttachedItemCount()
  826. self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
  827.  
  828. if item.IsRefineScroll(attachedItemIndex):
  829. self.wndItem.SetUseMode(False)
  830.  
  831. elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
  832. mouseModule.mouseController.RunCallBack("INVENTORY")
  833.  
  834. elif player.SLOT_TYPE_SHOP == attachedSlotType:
  835. net.SendShopBuyPacket(attachedSlotPos)
  836.  
  837. elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:
  838.  
  839. if player.ITEM_MONEY == attachedItemIndex:
  840. net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
  841. snd.PlaySound("sound/ui/money.wav")
  842.  
  843. else:
  844. net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos)
  845.  
  846. elif player.SLOT_TYPE_MALL == attachedSlotType:
  847. net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
  848.  
  849. mouseModule.mouseController.DeattachObject()
  850.  
  851. def SelectItemSlot(self, itemSlotIndex):
  852. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
  853. return
  854.  
  855. itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)
  856.  
  857. if mouseModule.mouseController.isAttached():
  858. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  859. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  860. attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
  861.  
  862. if player.SLOT_TYPE_INVENTORY == attachedSlotType:
  863. self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
  864.  
  865. mouseModule.mouseController.DeattachObject()
  866.  
  867. else:
  868.  
  869. curCursorNum = app.GetCursor()
  870. if app.SELL == curCursorNum:
  871. self.__SellItem(itemSlotIndex)
  872.  
  873. elif app.BUY == curCursorNum:
  874. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)
  875.  
  876. elif app.IsPressed(app.DIK_LALT):
  877. link = player.GetItemLink(itemSlotIndex)
  878. ime.PasteString(link)
  879.  
  880. elif app.IsPressed(app.DIK_LSHIFT):
  881. itemCount = player.GetItemCount(itemSlotIndex)
  882.  
  883. if itemCount > 1:
  884. self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
  885. self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
  886. self.dlgPickMoney.Open(itemCount)
  887. self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
  888. #else:
  889. #selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  890. #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)
  891.  
  892. elif app.IsPressed(app.DIK_LCONTROL):
  893. itemIndex = player.GetItemIndex(itemSlotIndex)
  894.  
  895. if True == item.CanAddToQuickSlotItem(itemIndex):
  896. player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
  897. else:
  898. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)
  899.  
  900. else:
  901. selectedItemVNum = player.GetItemIndex(itemSlotIndex)
  902. itemCount = player.GetItemCount(itemSlotIndex)
  903. mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
  904.  
  905. if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
  906. self.wndItem.SetUseMode(True)
  907. else:
  908. self.wndItem.SetUseMode(False)
  909.  
  910. snd.PlaySound("sound/ui/pick.wav")
  911.  
  912. def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
  913. if srcItemSlotPos == dstItemSlotPos:
  914. return
  915.  
  916. elif item.IsRefineScroll(srcItemVID):
  917. self.RefineItem(srcItemSlotPos, dstItemSlotPos)
  918. self.wndItem.SetUseMode(False)
  919.  
  920. elif item.IsMetin(srcItemVID):
  921. self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)
  922.  
  923. elif item.IsDetachScroll(srcItemVID):
  924. self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)
  925.  
  926. elif item.IsKey(srcItemVID):
  927. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  928.  
  929. elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  930. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  931.  
  932. elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
  933. self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
  934.  
  935. else:
  936. #snd.PlaySound("sound/ui/drop.wav")
  937.  
  938. ## Ŕ̵ż˝ĂŲ °÷ŔĚ ŔĺÂř ˝˝·ÔŔĎ °ćżě ľĆŔĚĹŰŔ» »çżëÇŘĽ­ ŔĺÂř ˝ĂŲ´Ů - [levites]
  939. if player.IsEquipmentSlot(dstItemSlotPos):
  940.  
  941. ## µé°í ŔÖ´Â ľĆŔĚĹŰŔĚ ŔĺşńŔ϶§¸¸
  942. if item.IsEquipmentVID(srcItemVID):
  943. self.__UseItem(srcItemSlotPos)
  944.  
  945. else:
  946. self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
  947. #net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)
  948.  
  949. def __SellItem(self, itemSlotPos):
  950. if not player.IsEquipmentSlot(itemSlotPos):
  951. self.sellingSlotNumber = itemSlotPos
  952. itemIndex = player.GetItemIndex(itemSlotPos)
  953. itemCount = player.GetItemCount(itemSlotPos)
  954.  
  955.  
  956. self.sellingSlotitemIndex = itemIndex
  957. self.sellingSlotitemCount = itemCount
  958.  
  959. item.SelectItem(itemIndex)
  960. ## ľČĆĽ ÇĂ·ą±× °Ë»ç şüÁ®Ľ­ Ăß°ˇ
  961. ## 20140220
  962. if item.IsAntiFlag(item.ANTIFLAG_SELL):
  963. popup = uiCommon.PopupDialog()
  964. popup.SetText(localeInfo.SHOP_CANNOT_SELL_ITEM)
  965. popup.SetAcceptEvent(self.__OnClosePopupDialog)
  966. popup.Open()
  967. self.popup = popup
  968. return
  969.  
  970. itemPrice = item.GetISellItemPrice()
  971.  
  972. if item.Is1GoldItem():
  973. itemPrice = itemCount / itemPrice / 5
  974. else:
  975. itemPrice = itemPrice * itemCount / 5
  976.  
  977. item.GetItemName(itemIndex)
  978. itemName = item.GetItemName()
  979.  
  980. self.questionDialog = uiCommon.QuestionDialog()
  981. self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
  982. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
  983. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  984. self.questionDialog.Open()
  985. self.questionDialog.count = itemCount
  986.  
  987. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  988.  
  989. def __OnClosePopupDialog(self):
  990. self.pop = None
  991.  
  992. def RefineItem(self, scrollSlotPos, targetSlotPos):
  993.  
  994. scrollIndex = player.GetItemIndex(scrollSlotPos)
  995. targetIndex = player.GetItemIndex(targetSlotPos)
  996.  
  997. if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
  998. return
  999.  
  1000. ###########################################################
  1001. self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
  1002. #net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
  1003. return
  1004. ###########################################################
  1005.  
  1006. ###########################################################
  1007. #net.SendRequestRefineInfoPacket(targetSlotPos)
  1008. #return
  1009. ###########################################################
  1010.  
  1011. result = player.CanRefine(scrollIndex, targetSlotPos)
  1012.  
  1013. if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
  1014. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1015. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET)
  1016.  
  1017. elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
  1018. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1019. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)
  1020.  
  1021. elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
  1022. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1023. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)
  1024.  
  1025. elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
  1026. #snd.PlaySound("sound/ui/jaeryun_fail.wav")
  1027. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
  1028.  
  1029. elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
  1030. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
  1031.  
  1032. if player.REFINE_OK != result:
  1033. return
  1034.  
  1035. self.refineDialog.Open(scrollSlotPos, targetSlotPos)
  1036.  
  1037. def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
  1038. scrollIndex = player.GetItemIndex(scrollSlotPos)
  1039. targetIndex = player.GetItemIndex(targetSlotPos)
  1040. if app.ENABLE_SASH_SYSTEM:
  1041. if not player.CanDetach(scrollIndex, targetSlotPos):
  1042. item.SelectItem(scrollIndex)
  1043. if item.GetValue(0) == sash.CLEAN_ATTR_VALUE0:
  1044. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SASH_FAILURE_CLEAN)
  1045. else:
  1046. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
  1047.  
  1048. return
  1049. else:
  1050. if not player.CanDetach(scrollIndex, targetSlotPos):
  1051. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
  1052. return
  1053.  
  1054. self.questionDialog = uiCommon.QuestionDialog()
  1055. self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)
  1056. if app.ENABLE_SASH_SYSTEM:
  1057. item.SelectItem(targetIndex)
  1058. if item.GetItemType() == item.ITEM_TYPE_COSTUME and item.GetItemSubType() == item.COSTUME_TYPE_SASH:
  1059. item.SelectItem(scrollIndex)
  1060. if item.GetValue(0) == sash.CLEAN_ATTR_VALUE0:
  1061. self.questionDialog.SetText(localeInfo.SASH_DO_YOU_CLEAN)
  1062.  
  1063. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem))
  1064. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  1065. self.questionDialog.Open()
  1066. self.questionDialog.sourcePos = scrollSlotPos
  1067. self.questionDialog.targetPos = targetSlotPos
  1068.  
  1069. def AttachMetinToItem(self, metinSlotPos, targetSlotPos):
  1070. metinIndex = player.GetItemIndex(metinSlotPos)
  1071. targetIndex = player.GetItemIndex(targetSlotPos)
  1072.  
  1073. item.SelectItem(metinIndex)
  1074. itemName = item.GetItemName()
  1075.  
  1076. result = player.CanAttachMetin(metinIndex, targetSlotPos)
  1077.  
  1078. if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
  1079. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
  1080.  
  1081. if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
  1082. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))
  1083.  
  1084. elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
  1085. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
  1086.  
  1087. elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
  1088. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
  1089.  
  1090. if player.ATTACH_METIN_OK != result:
  1091. return
  1092.  
  1093. self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
  1094.  
  1095.  
  1096.  
  1097. def OverOutItem(self):
  1098. self.wndItem.SetUsableItem(False)
  1099. if None != self.tooltipItem:
  1100. self.tooltipItem.HideToolTip()
  1101.  
  1102. def OverInItem(self, overSlotPos):
  1103. overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
  1104. self.wndItem.SetUsableItem(False)
  1105.  
  1106. if mouseModule.mouseController.isAttached():
  1107. attachedItemType = mouseModule.mouseController.GetAttachedType()
  1108. if player.SLOT_TYPE_INVENTORY == attachedItemType:
  1109.  
  1110. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  1111. attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
  1112.  
  1113. if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos):
  1114. self.wndItem.SetUsableItem(True)
  1115. self.ShowToolTip(overSlotPos)
  1116. return
  1117.  
  1118. self.ShowToolTip(overSlotPos)
  1119.  
  1120.  
  1121. def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
  1122. "´Ů¸Ą ľĆŔĚĹŰżˇ »çżëÇŇ Ľö ŔÖ´Â ľĆŔĚĹŰŔΰˇ?"
  1123.  
  1124. if item.IsRefineScroll(srcItemVNum):
  1125. return True
  1126. elif item.IsMetin(srcItemVNum):
  1127. return True
  1128. elif item.IsDetachScroll(srcItemVNum):
  1129. return True
  1130. elif item.IsKey(srcItemVNum):
  1131. return True
  1132. elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1133. return True
  1134. else:
  1135. if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:
  1136. return True
  1137.  
  1138. return False
  1139.  
  1140. def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
  1141. "´ë»ó ľĆŔĚĹŰżˇ »çżëÇŇ Ľö Ŕִ°ˇ?"
  1142.  
  1143. if srcSlotPos == dstSlotPos:
  1144. return False
  1145.  
  1146. if item.IsRefineScroll(srcItemVNum):
  1147. if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
  1148. return True
  1149. elif item.IsMetin(srcItemVNum):
  1150. if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
  1151. return True
  1152. elif item.IsDetachScroll(srcItemVNum):
  1153. if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):
  1154. return True
  1155. elif item.IsKey(srcItemVNum):
  1156. if player.CanUnlock(srcItemVNum, dstSlotPos):
  1157. return True
  1158.  
  1159. elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
  1160. return True
  1161.  
  1162. else:
  1163. useType=item.GetUseType(srcItemVNum)
  1164.  
  1165. if "USE_CLEAN_SOCKET" == useType:
  1166. if self.__CanCleanBrokenMetinStone(dstSlotPos):
  1167. return True
  1168. elif "USE_CHANGE_ATTRIBUTE" == useType:
  1169. if self.__CanChangeItemAttrList(dstSlotPos):
  1170. return True
  1171. elif "USE_ADD_ATTRIBUTE" == useType:
  1172. if self.__CanAddItemAttr(dstSlotPos):
  1173. return True
  1174. elif "USE_ADD_ATTRIBUTE2" == useType:
  1175. if self.__CanAddItemAttr(dstSlotPos):
  1176. return True
  1177. elif "USE_ADD_ACCESSORY_SOCKET" == useType:
  1178. if self.__CanAddAccessorySocket(dstSlotPos):
  1179. return True
  1180. elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType:
  1181. if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum):
  1182. return TRUE;
  1183. elif "USE_PUT_INTO_BELT_SOCKET" == useType:
  1184. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1185. print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum
  1186.  
  1187. item.SelectItem(dstItemVNum)
  1188.  
  1189. if item.ITEM_TYPE_BELT == item.GetItemType():
  1190. return True
  1191.  
  1192. return False
  1193.  
  1194. def __CanCleanBrokenMetinStone(self, dstSlotPos):
  1195. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1196. if dstItemVNum == 0:
  1197. return False
  1198.  
  1199. item.SelectItem(dstItemVNum)
  1200.  
  1201. if item.ITEM_TYPE_WEAPON != item.GetItemType():
  1202. return False
  1203.  
  1204. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1205. if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
  1206. return True
  1207.  
  1208. return False
  1209.  
  1210. def __CanChangeItemAttrList(self, dstSlotPos):
  1211. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1212. if dstItemVNum == 0:
  1213. return False
  1214.  
  1215. item.SelectItem(dstItemVNum)
  1216.  
  1217. if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
  1218. return False
  1219.  
  1220. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1221. if player.GetItemAttribute(dstSlotPos, i) != 0:
  1222. return True
  1223.  
  1224. return False
  1225.  
  1226. def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
  1227. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1228. if dstItemVNum == 0:
  1229. return False
  1230.  
  1231. item.SelectItem(dstItemVNum)
  1232.  
  1233. if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1234. return False
  1235.  
  1236. if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1237. return False
  1238.  
  1239. curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1240. maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1241.  
  1242. if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):
  1243. return False
  1244.  
  1245. if curCount>=maxCount:
  1246. return False
  1247.  
  1248. return True
  1249.  
  1250. def __CanAddAccessorySocket(self, dstSlotPos):
  1251. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1252. if dstItemVNum == 0:
  1253. return False
  1254.  
  1255. item.SelectItem(dstItemVNum)
  1256.  
  1257. if item.GetItemType() != item.ITEM_TYPE_ARMOR:
  1258. return False
  1259.  
  1260. if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
  1261. return False
  1262.  
  1263. curCount = player.GetItemMetinSocket(dstSlotPos, 0)
  1264. maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
  1265.  
  1266. ACCESSORY_SOCKET_MAX_SIZE = 3
  1267. if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
  1268. return False
  1269.  
  1270. return True
  1271.  
  1272. def __CanAddItemAttr(self, dstSlotPos):
  1273. dstItemVNum = player.GetItemIndex(dstSlotPos)
  1274. if dstItemVNum == 0:
  1275. return False
  1276.  
  1277. item.SelectItem(dstItemVNum)
  1278.  
  1279. if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
  1280. return False
  1281.  
  1282. attrCount = 0
  1283. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  1284. if player.GetItemAttribute(dstSlotPos, i) != 0:
  1285. attrCount += 1
  1286.  
  1287. if attrCount<4:
  1288. return True
  1289.  
  1290. return False
  1291.  
  1292. def ShowToolTip(self, slotIndex):
  1293. if None != self.tooltipItem:
  1294. self.tooltipItem.SetInventoryItem(slotIndex)
  1295. if self.interface.dlgExchange.IsShow():
  1296. self.tooltipItem.AppendTradeableInformation()
  1297.  
  1298. def OnTop(self):
  1299. if None != self.tooltipItem:
  1300. self.tooltipItem.SetTop()
  1301.  
  1302. def OnPressEscapeKey(self):
  1303. self.Close()
  1304. return True
  1305.  
  1306. def UseItemSlot(self, slotIndex):
  1307. if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
  1308. return
  1309.  
  1310. slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
  1311. if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1312. if self.wndDragonSoulRefine.IsShow():
  1313. self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
  1314. return
  1315.  
  1316. if app.ENABLE_SASH_SYSTEM:
  1317. if self.isShowSashWindow():
  1318. sash.Add(player.INVENTORY, slotIndex, 255)
  1319. return
  1320.  
  1321. if self.interface.dlgExchange.IsShow() and (app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL)):
  1322. item.SelectItem(player.GetItemIndex(slotIndex))
  1323. emptyExchangeSlots = self.GetExchangeEmptyItemPos(item.GetItemSize()[1])
  1324. if emptyExchangeSlots == -1:
  1325. return
  1326.  
  1327. if item.IsAntiFlag(item.ANTIFLAG_GIVE):
  1328. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
  1329. return
  1330.  
  1331.  
  1332. net.SendExchangeItemAddPacket(player.SLOT_TYPE_INVENTORY, slotIndex, emptyExchangeSlots[0])
  1333. else:
  1334. self.__UseItem(slotIndex)
  1335. mouseModule.mouseController.DeattachObject()
  1336. self.OverOutItem()
  1337. # MOVE ITEM TO SAFEBOX
  1338. def __GetCurrentItemGrid(self):
  1339. itemGrid = [[False for slot in xrange(player.INVENTORY_PAGE_SIZE)] for page in xrange(player.INVENTORY_PAGE_COUNT)]
  1340.  
  1341. for page in xrange(player.INVENTORY_PAGE_COUNT):
  1342. for slot in xrange(player.INVENTORY_PAGE_SIZE):
  1343. itemVnum = player.GetItemIndex(slot + page * player.INVENTORY_PAGE_SIZE)
  1344. if itemVnum <> 0:
  1345. (w, h) = item.GetItemSize(item.SelectItem(itemVnum))
  1346. for i in xrange(h):
  1347. itemGrid[page][slot + i * 5] = True
  1348.  
  1349. return itemGrid
  1350.  
  1351. def __FindEmptyCellForSize(self, itemGrid, size):
  1352. for page in xrange(player.INVENTORY_PAGE_COUNT):
  1353. for slot in xrange(player.INVENTORY_PAGE_SIZE):
  1354. if itemGrid[page][slot] == False:
  1355. possible = True
  1356. for i in xrange(size):
  1357. p = slot + (i * 5)
  1358.  
  1359. try:
  1360. if itemGrid[page][p] == True:
  1361. possible = False
  1362. break
  1363. except IndexError:
  1364. possible = False
  1365. break
  1366.  
  1367. if possible:
  1368. return slot + page * player.INVENTORY_PAGE_SIZE
  1369.  
  1370. return -1
  1371.  
  1372. def AttachItemFromSafebox(self, slotIndex, itemIndex):
  1373. itemGrid = self.__GetCurrentItemGrid()
  1374.  
  1375. if item.GetItemType(item.SelectItem(itemIndex)) == item.ITEM_TYPE_DS:
  1376. return
  1377.  
  1378. emptySlotIndex = self.__FindEmptyCellForSize(itemGrid, item.GetItemSize()[1])
  1379. if emptySlotIndex <> -1:
  1380. net.SendSafeboxCheckoutPacket(slotIndex, player.INVENTORY, emptySlotIndex)
  1381.  
  1382. return True
  1383. # MOVE ITEM TO SAFEBOX
  1384. def GetExchangeEmptyItemPos(self, itemHeight):
  1385. inventorySize = exchange.EXCHANGE_ITEM_MAX_NUM
  1386. inventoryWidth = 4
  1387. GetBlockedSlots = lambda slot, size: [slot+(round*inventoryWidth) for round in xrange(size)]
  1388. 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]
  1389. 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)]]]
  1390. return [freeSlots, -1][len(freeSlots) == 0]
  1391.  
  1392. def __UseItem(self, slotIndex):
  1393. ItemVNum = player.GetItemIndex(slotIndex)
  1394. item.SelectItem(ItemVNum)
  1395. # MOVE ITEM TO SAFEBOX
  1396. if self.interface and (app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL)) and self.interface.AttachInvenItemToOtherWindowSlot(player.INVENTORY, slotIndex):#slotIndex is the argument of __UseItem
  1397. return
  1398. # MOVE ITEM TO SAFEBOX
  1399. if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
  1400. self.questionDialog = uiCommon.QuestionDialog()
  1401. self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)
  1402. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
  1403. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
  1404. self.questionDialog.Open()
  1405. self.questionDialog.slotIndex = slotIndex
  1406.  
  1407. constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
  1408.  
  1409. else:
  1410. self.__SendUseItemPacket(slotIndex)
  1411. #net.SendItemUsePacket(slotIndex)
  1412.  
  1413. def __UseItemQuestionDialog_OnCancel(self):
  1414. self.OnCloseQuestionDialog()
  1415.  
  1416. def __UseItemQuestionDialog_OnAccept(self):
  1417. self.__SendUseItemPacket(self.questionDialog.slotIndex)
  1418. self.OnCloseQuestionDialog()
  1419.  
  1420. def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
  1421. # °łŔλóÁˇ ż­°í ŔÖ´Â µżľČ ľĆŔĚĹŰ »çżë ąćÁö
  1422. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1423. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1424. return
  1425.  
  1426. net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
  1427.  
  1428. def __SendUseItemPacket(self, slotPos):
  1429. # °łŔλóÁˇ ż­°í ŔÖ´Â µżľČ ľĆŔĚĹŰ »çżë ąćÁö
  1430. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1431. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
  1432. return
  1433.  
  1434. net.SendItemUsePacket(slotPos)
  1435.  
  1436. def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
  1437. # °łŔλóÁˇ ż­°í ŔÖ´Â µżľČ ľĆŔĚĹŰ »çżë ąćÁö
  1438. if uiPrivateShopBuilder.IsBuildingPrivateShop():
  1439. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
  1440. return
  1441.  
  1442. net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
  1443.  
  1444. def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
  1445. if app.ENABLE_DRAGON_SOUL_SYSTEM:
  1446. self.wndDragonSoulRefine = wndDragonSoulRefine
  1447.  
  1448. if app.ENABLE_SASH_SYSTEM:
  1449. def SetSashWindow(self, wndSashCombine, wndSashAbsorption):
  1450. self.wndSashCombine = wndSashCombine
  1451. self.wndSashAbsorption = wndSashAbsorption
  1452.  
  1453. def isShowSashWindow(self):
  1454. if self.wndSashCombine:
  1455. if self.wndSashCombine.IsShow():
  1456. return 1
  1457.  
  1458. if self.wndSashAbsorption:
  1459. if self.wndSashAbsorption.IsShow():
  1460. return 1
  1461.  
  1462. return 0
  1463.  
  1464. def OnMoveWindow(self, x, y):
  1465. # print "Inventory Global Pos : ", self.GetGlobalPosition()
  1466. if self.wndBelt:
  1467. # print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
  1468. self.wndBelt.AdjustPositionAndSize()
  1469.  
  1470.  
Advertisement
Add Comment
Please, Sign In to add comment