Guest User

Untitled

a guest
Apr 23rd, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.34 KB | None | 0 0
  1. import ui
  2. import app
  3. import net
  4. import grp
  5. import chat
  6. import item
  7. import time
  8. import wndMgr
  9. import player
  10. import uiCommon
  11. import exchange
  12. import localeInfo
  13. import mouseModule
  14. import uiPickMoney
  15. import playerSettingModule
  16.  
  17.  
  18. class ExchangeDialog(ui.ScriptWindow):
  19. FACE_IMAGE_DICT = {
  20. playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga",
  21. playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga",
  22. playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga",
  23. playerSettingModule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga",
  24. playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga",
  25. playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga",
  26. playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga",
  27. playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga",
  28. }
  29.  
  30. #if app.ENABLE_WOLFMAN_CHARACTER:
  31. #FACE_IMAGE_DICT.update({playerSettingModule.RACE_WOLFMAN_M : "icon/face/wolfman_m.tga",})
  32.  
  33. def __init__(self):
  34. ui.ScriptWindow.__init__(self)
  35. self.TitleName = 0
  36. self.tooltipItem = 0
  37. self.xStart = 0
  38. self.yStart = 0
  39.  
  40. def __del__(self):
  41. ui.ScriptWindow.__del__(self)
  42.  
  43. class Item(ui.ListBoxEx.Item):
  44. def __init__(self,parent, text, value=0):
  45. ui.ListBoxEx.Item.__init__(self)
  46. self.textBox=ui.TextLine()
  47. self.textBox.SetParent(self)
  48. self.textBox.SetText(text)
  49. self.textBox.Show()
  50. self.value = value
  51.  
  52. def GetValue(self):
  53. return self.value
  54.  
  55. def __del__(self):
  56. ui.ListBoxEx.Item.__del__(self)
  57.  
  58. def LoadDialog(self):
  59. PythonScriptLoader = ui.PythonScriptLoader()
  60. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  61. PythonScriptLoader.LoadScriptFile(self, "UIScript/exchangedialog_new.py")
  62. else:
  63. PythonScriptLoader.LoadScriptFile(self, "UIScript/exchangedialog.py")
  64.  
  65. self.OwnerSlot = self.GetChild("Owner_Slot")
  66. self.OwnerSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectOwnerEmptySlot))
  67. self.OwnerSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectOwnerItemSlot))
  68. self.OwnerSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInOwnerItem))
  69. self.OwnerSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  70. self.OwnerMoney = self.GetChild("Owner_Money_Value")
  71. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  72. self.OwnerAcceptLight = self.GetChild("Owner_Accept_Light")
  73. self.OwnerAcceptLight.Disable()
  74. self.OwnerMoneyButton = self.GetChild("Owner_Money")
  75. self.OwnerMoneyButton.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
  76.  
  77. self.TargetSlot = self.GetChild("Target_Slot")
  78. self.TargetSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInTargetItem))
  79. self.TargetSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  80. self.TargetMoney = self.GetChild("Target_Money_Value")
  81. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  82. self.TargetAcceptLight = self.GetChild("Target_Accept_Light")
  83. self.TargetAcceptLight.Disable()
  84.  
  85. dlgPickMoney = uiPickMoney.PickMoneyDialog()
  86. dlgPickMoney.LoadDialog()
  87. dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
  88. dlgPickMoney.SetTitleName(localeInfo.EXCHANGE_MONEY)
  89. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  90. dlgPickMoney.SetMax(6)
  91. else:
  92. dlgPickMoney.SetMax(20)
  93. dlgPickMoney.Hide()
  94. self.dlgPickMoney = dlgPickMoney
  95.  
  96. self.AcceptButton = self.GetChild("Owner_Accept_Button")
  97. self.AcceptButton.SetToggleDownEvent(ui.__mem_func__(self.AcceptExchange))
  98.  
  99. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  100. self.TargetAcceptButton = self.GetChild("Target_Accept_Button")
  101.  
  102. self.TitleName = self.GetChild("TitleName")
  103. self.GetChild("TitleBar").SetCloseEvent(net.SendExchangeExitPacket)
  104. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  105. self.FaceOwnerImage = self.GetChild("FaceOwner_Image")
  106. self.FaceTargetImage = self.GetChild("FaceTarget_Image")
  107. self.TargetName = self.GetChild("target_NameText")
  108. self.TargetLevel = self.GetChild("target_LvText")
  109. self.ExchangeLogs = self.GetChild("ExchangeLogs")
  110. self.LogsScrollBar = ui.ThinScrollBar()
  111. self.LogsScrollBar.SetParent(self.ExchangeLogs)
  112. self.LogsScrollBar.SetPosition(442 - 75, 17)
  113. self.LogsScrollBar.SetScrollBarSize(50)
  114. self.LogsScrollBar.Show()
  115. self.LogsDropList = ui.ListBoxEx()
  116. self.LogsDropList.SetParent(self.ExchangeLogs)
  117. self.LogsDropList.itemHeight = 12
  118. self.LogsDropList.itemStep = 13
  119. self.LogsDropList.SetPosition(35, 12)
  120. self.LogsDropList.SetSize(0, 45)
  121. self.LogsDropList.SetScrollBar(self.LogsScrollBar)
  122. self.LogsDropList.SetViewItemCount(5)
  123. self.LogsDropList.Show()
  124. self.LogsScrollBar.Show()
  125. self.listOwnerSlot = []
  126. self.listTargetSlot = []
  127.  
  128. def Destroy(self):
  129. print "---------------------------------------------------------------------------- DESTROY EXCHANGE"
  130. self.ClearDictionary()
  131. self.dlgPickMoney.Destroy()
  132. self.dlgPickMoney = 0
  133. self.OwnerSlot = 0
  134. self.OwnerMoney = 0
  135. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  136. self.OwnerAcceptLight = 0
  137. self.OwnerMoneyButton = 0
  138. self.TargetSlot = 0
  139. self.TargetMoney = 0
  140. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  141. self.TargetAcceptLight = 0
  142. self.TitleName = 0
  143. self.AcceptButton = 0
  144. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  145. self.TargetAcceptButton = 0
  146. self.FaceOwnerImage = None
  147. self.FaceTargetImage = None
  148. self.TargetName = None
  149. self.TargetLevel = None
  150. self.ExchangesLogsWindow = None
  151. self.LogsDropList.RemoveAllItems()
  152. self.LogsScrollBar = None
  153. self.LogsDropList = None
  154.  
  155. self.tooltipItem = 0
  156.  
  157. def OpenDialog(self):
  158. #if app.ENABLE_LEVEL_IN_TRADE:
  159. ##self.TitleName.SetText(localeInfo.EXCHANGE_TITLE_LEVEL % (exchange.GetNameFromTarget(), exchange.GetLevelFromTarget()))
  160. #else:
  161. self.TitleName.SetText(localeInfo.EXCHANGE_TITLE % (exchange.GetNameFromTarget()))
  162.  
  163. self.AcceptButton.Enable()
  164. self.AcceptButton.SetUp()
  165. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  166. self.TargetAcceptButton.Disable()
  167. self.TargetAcceptButton.SetUp()
  168. self.FaceOwnerImage.LoadImage(self.FACE_IMAGE_DICT[exchange.GetRaceFromSelf()])
  169. self.FaceTargetImage.LoadImage(self.FACE_IMAGE_DICT[exchange.GetRaceFromTarget()])
  170. self.TargetName.SetText(exchange.GetNameFromTarget())
  171. self.TargetLevel.SetText(localeInfo.NEW_EXCHANGE_LEVEL % (exchange.GetLevelFromTarget()))
  172. self.LogsDropList.RemoveAllItems()
  173. self.LogsDropList.AppendItem(self.Item(self, localeInfo.NEW_EXCHANGE_YOU_READY % (str(time.strftime("[%H:%M:%S]"))), 0))
  174.  
  175. self.Show()
  176. (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
  177.  
  178. def CloseDialog(self):
  179. wndMgr.OnceIgnoreMouseLeftButtonUpEvent()
  180. if 0 != self.tooltipItem:
  181. self.tooltipItem.HideToolTip()
  182.  
  183. self.dlgPickMoney.Close()
  184. self.Hide()
  185.  
  186. def SetItemToolTip(self, tooltipItem):
  187. self.tooltipItem = tooltipItem
  188.  
  189. def OpenPickMoneyDialog(self):
  190. if exchange.GetElkFromSelf() > 0:
  191. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANT_EDIT_MONEY)
  192. return
  193.  
  194. self.dlgPickMoney.Open(player.GetElk())
  195.  
  196. def OnPickMoney(self, money):
  197. net.SendExchangeElkAddPacket(money)
  198.  
  199. def AcceptExchange(self):
  200. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  201. atLeastOneItem = 0
  202. atLeastOneYang = 0
  203. for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
  204. itemCount = exchange.GetItemCountFromTarget(i)
  205. if itemCount >= 1:
  206. atLeastOneYang = 1
  207. break
  208.  
  209. if exchange.GetElkFromTarget() >= 1:
  210. atLeastOneYang = 1
  211.  
  212. if atLeastOneItem or atLeastOneYang:
  213. net.SendExchangeAcceptPacket()
  214. self.AcceptButton.Disable()
  215. else:
  216. atLeastOneItem = 0
  217. atLeastOneYang = 0
  218. for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
  219. itemCount = exchange.GetItemCountFromSelf(i)
  220. if itemCount >= 1:
  221. atLeastOneYang = 1
  222. break
  223.  
  224. if exchange.GetElkFromSelf() >= 1:
  225. atLeastOneYang = 1
  226.  
  227. if atLeastOneItem or atLeastOneYang:
  228. self.questionDialog = uiCommon.QuestionDialog2()
  229. self.questionDialog.SetText1(localeInfo.NEW_EXCHANGE_ALERT1)
  230. self.questionDialog.SetText2(localeInfo.NEW_EXCHANGE_ALERT2)
  231. self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.AcceptQuestion))
  232. self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  233. self.questionDialog.Open()
  234. else:
  235. net.SendExchangeAcceptPacket()
  236. self.AcceptButton.Disable()
  237. else:
  238. net.SendExchangeAcceptPacket()
  239. self.AcceptButton.Disable()
  240.  
  241. if app.ENABLE_NEW_EXCHANGE_WINDOW:
  242. def AcceptQuestion(self):
  243. net.SendExchangeAcceptPacket()
  244. self.AcceptButton.Disable()
  245. if self.questionDialog:
  246. self.questionDialog.Close()
  247.  
  248. self.questionDialog = None
  249.  
  250. def OnCloseQuestionDialog(self):
  251. if self.questionDialog:
  252. self.questionDialog.Close()
  253.  
  254. self.questionDialog = None
  255. self.AcceptButton.Enable()
  256. self.AcceptButton.SetUp()
  257.  
  258. def SelectOwnerEmptySlot(self, SlotIndex):
  259. if False == mouseModule.mouseController.isAttached():
  260. return
  261.  
  262. if mouseModule.mouseController.IsAttachedMoney():
  263. net.SendExchangeElkAddPacket(str(mouseModule.mouseController.GetAttachedMoneyAmount()))
  264. else:
  265. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  266. if (player.SLOT_TYPE_INVENTORY == attachedSlotType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType):
  267. attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
  268. SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
  269. DstSlotNumber = SlotIndex
  270. itemID = player.GetItemIndex(attachedInvenType, SrcSlotNumber)
  271. item.SelectItem(itemID)
  272. if item.IsAntiFlag(item.ANTIFLAG_GIVE):
  273. chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
  274. mouseModule.mouseController.DeattachObject()
  275. return
  276.  
  277. net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)
  278.  
  279. mouseModule.mouseController.DeattachObject()
  280.  
  281. def SelectOwnerItemSlot(self, SlotIndex):
  282. if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
  283. money = mouseModule.mouseController.GetAttachedItemCount()
  284. net.SendExchangeElkAddPacket(money)
  285.  
  286. def RefreshOwnerSlot(self):
  287. for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
  288. itemIndex = exchange.GetItemVnumFromSelf(i)
  289. itemCount = exchange.GetItemCountFromSelf(i)
  290. if 1 == itemCount:
  291. itemCount = 0
  292.  
  293. self.OwnerSlot.SetItemSlot(i, itemIndex, itemCount)
  294.  
  295.  
  296.  
  297. self.OwnerSlot.RefreshSlot()
  298.  
  299. def RefreshTargetSlot(self):
  300. for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
  301. itemIndex = exchange.GetItemVnumFromTarget(i)
  302. itemCount = exchange.GetItemCountFromTarget(i)
  303. if 1 == itemCount:
  304. itemCount = 0
  305.  
  306. self.TargetSlot.SetItemSlot(i, itemIndex, itemCount)
  307.  
  308. self.TargetSlot.RefreshSlot()
  309.  
  310. def Refresh(self):
  311. self.RefreshOwnerSlot()
  312. self.RefreshTargetSlot()
  313.  
  314. self.OwnerMoney.SetText(localeInfo.NumberToMoneyString(exchange.GetElkFromSelf()))
  315. self.TargetMoney.SetText(localeInfo.NumberToMoneyString(exchange.GetElkFromTarget()))
  316. if exchange.GetAcceptFromSelf() == True:
  317. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  318. self.OwnerAcceptLight.Down()
  319. else:
  320. self.OwnerSlot.SetSlotBaseImage("d:/ymir work/ui/public/slot_base.sub", 0.3500, 0.8500, 0.3500, 1.0)
  321. self.LogsDropList.AppendItem(self.Item(self, localeInfo.NEW_EXCHANGE_YOU_ACCEPT % (str((time.strftime("[%H:%M:%S]")))), 0))
  322.  
  323.  
  324. else:
  325. if self.AcceptButton.IsDown() == True:
  326. self.LogsDropList.AppendItem(self.Item(self, localeInfo.NEW_EXCHANGE_YOU_ABORT % (str((time.strftime("[%H:%M:%S]")))), 0))
  327.  
  328. self.AcceptButton.Enable()
  329. self.AcceptButton.SetUp()
  330. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  331. self.OwnerAcceptLight.SetUp()
  332. else:
  333. self.OwnerSlot.SetSlotBaseImage("d:/ymir work/ui/public/slot_base.sub", 1.0, 1.0, 1.0, 1.0)
  334.  
  335. if exchange.GetAcceptFromTarget() == True:
  336. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  337. self.TargetAcceptLight.Down()
  338. else:
  339. self.TargetAcceptButton.Down()
  340. self.TargetSlot.SetSlotBaseImage("d:/ymir work/ui/public/slot_base.sub", 0.3500, 0.8500, 0.3500, 1.0)
  341. self.LogsDropList.AppendItem(self.Item(self, localeInfo.NEW_EXCHANGE_ACCEPT % (str((time.strftime("[%H:%M:%S]"))), exchange.GetNameFromTarget()), 0))
  342. else:
  343. if not app.ENABLE_NEW_EXCHANGE_WINDOW:
  344. self.TargetAcceptLight.SetUp()
  345. else:
  346. if self.TargetAcceptButton.IsDown() == True:
  347. self.LogsDropList.AppendItem(self.Item(self, localeInfo.NEW_EXCHANGE_ABORT % (str((time.strftime("[%H:%M:%S]"))), exchange.GetNameFromTarget()), 0))
  348.  
  349. self.TargetAcceptButton.SetUp()
  350. self.TargetSlot.SetSlotBaseImage("d:/ymir work/ui/public/slot_base.sub", 1.0, 1.0, 1.0, 1.0)
  351.  
  352. def OverInOwnerItem(self, slotIndex):
  353. if 0 != self.tooltipItem:
  354. self.tooltipItem.SetExchangeOwnerItem(slotIndex)
  355. self.LogsDropList.AppendItem(self.Item(self, localeInfo.NEW_EXCHANGE_ADDED % (str((time.strftime("[%H:%M:%S]"))), exchange.GetItemVnum(slotIndex)), 0))
  356.  
  357. def OverInTargetItem(self, slotIndex):
  358. if 0 != self.tooltipItem:
  359. self.tooltipItem.SetExchangeTargetItem(slotIndex)
  360.  
  361. def OverOutItem(self):
  362. if 0 != self.tooltipItem:
  363. self.tooltipItem.HideToolTip()
  364.  
  365. def OnTop(self):
  366. self.tooltipItem.SetTop()
  367.  
  368. def OnUpdate(self):
  369. USE_EXCHANGE_LIMIT_RANGE = 1000
  370. (x, y, z) = player.GetMainCharacterPosition()
  371. if abs(x - self.xStart) > USE_EXCHANGE_LIMIT_RANGE or abs(y - self.yStart) > USE_EXCHANGE_LIMIT_RANGE:
  372. (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
  373. net.SendExchangeExitPacket()
Advertisement
Add Comment
Please, Sign In to add comment