Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.99 KB | None | 0 0
  1. import app
  2. import net
  3. import slaitsuck as player
  4. import item
  5. import chat
  6. import grp
  7. import ui
  8. import uiToolTip
  9. import mouseModule
  10. import localeInfo
  11. import uiCommon
  12. import constInfo
  13.  
  14. class RefineDialog(ui.ScriptWindow):
  15.  
  16. makeSocketSuccessPercentage = ( 100, 33, 20, 15, 10, 5, 0 )
  17. upgradeStoneSuccessPercentage = ( 30, 29, 28, 27, 26, 25, 24, 23, 22 )
  18. upgradeArmorSuccessPercentage = ( 99, 66, 33, 33, 33, 33, 33, 33, 33 )
  19. upgradeAccessorySuccessPercentage = ( 99, 88, 77, 66, 33, 33, 33, 33, 33 )
  20. upgradeSuccessPercentage = ( 99, 66, 33, 33, 33, 33, 33, 33, 33 )
  21.  
  22. def __init__(self):
  23. ui.ScriptWindow.__init__(self)
  24. self.__LoadScript()
  25.  
  26. self.scrollItemPos = 0
  27. self.targetItemPos = 0
  28.  
  29. def __LoadScript(self):
  30.  
  31. self.__LoadQuestionDialog()
  32.  
  33. try:
  34. pyScrLoader = ui.PythonScriptLoader()
  35. pyScrLoader.LoadScriptFile(self, "uiscript/refinedialog.py")
  36.  
  37. except:
  38. import exception
  39. exception.Abort("RefineDialog.__LoadScript.LoadObject")
  40.  
  41. try:
  42. self.board = self.GetChild("Board")
  43. self.titleBar = self.GetChild("TitleBar")
  44. self.successPercentage = self.GetChild("SuccessPercentage")
  45. self.GetChild("AcceptButton").SetEvent(self.OpenQuestionDialog)
  46. self.GetChild("CancelButton").SetEvent(self.Close)
  47. except:
  48. import exception
  49. exception.Abort("RefineDialog.__LoadScript.BindObject")
  50.  
  51. ## 936 : 개량 확률 표시 안함
  52. ##if 936 == app.GetDefaultCodePage():
  53. self.successPercentage.Show()
  54.  
  55. toolTip = uiToolTip.ItemToolTip()
  56. toolTip.SetParent(self)
  57. toolTip.SetPosition(15, 38)
  58. toolTip.SetFollow(FALSE)
  59. toolTip.Show()
  60. self.toolTip = toolTip
  61.  
  62. self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
  63.  
  64. def __del__(self):
  65. ui.ScriptWindow.__del__(self)
  66.  
  67. def __LoadQuestionDialog(self):
  68. self.dlgQuestion = ui.ScriptWindow()
  69.  
  70. try:
  71. pyScrLoader = ui.PythonScriptLoader()
  72. pyScrLoader.LoadScriptFile(self.dlgQuestion, "uiscript/questiondialog2.py")
  73. except:
  74. import exception
  75. exception.Abort("RefineDialog.__LoadQuestionDialog.LoadScript")
  76.  
  77. try:
  78. GetObject=self.dlgQuestion.GetChild
  79. GetObject("message1").SetText(localeInfo.REFINE_DESTROY_WARNING)
  80. GetObject("message2").SetText(localeInfo.REFINE_WARNING2)
  81. GetObject("accept").SetEvent(ui.__mem_func__(self.Accept))
  82. GetObject("cancel").SetEvent(ui.__mem_func__(self.dlgQuestion.Hide))
  83. except:
  84. import exception
  85. exception.Abort("SelectCharacterWindow.__LoadQuestionDialog.BindObject")
  86.  
  87. def Destroy(self):
  88. self.ClearDictionary()
  89. self.board = 0
  90. self.successPercentage = 0
  91. self.titleBar = 0
  92. self.toolTip = 0
  93. self.dlgQuestion = 0
  94.  
  95. def GetRefineSuccessPercentage(self, scrollSlotIndex, itemSlotIndex):
  96.  
  97. if -1 != scrollSlotIndex:
  98. if player.IsRefineGradeScroll(scrollSlotIndex):
  99. curGrade = player.GetItemGrade(itemSlotIndex)
  100. itemIndex = player.GetItemIndex(itemSlotIndex)
  101.  
  102. item.SelectItem(itemIndex)
  103. itemType = item.GetItemType()
  104. itemSubType = item.GetItemSubType()
  105.  
  106. if item.ITEM_TYPE_METIN == itemType:
  107.  
  108. if curGrade >= len(self.upgradeStoneSuccessPercentage):
  109. return 0
  110. return self.upgradeStoneSuccessPercentage[curGrade]
  111.  
  112. elif item.ITEM_TYPE_ARMOR == itemType:
  113.  
  114. if item.ARMOR_BODY == itemSubType:
  115. if curGrade >= len(self.upgradeArmorSuccessPercentage):
  116. return 0
  117. return self.upgradeArmorSuccessPercentage[curGrade]
  118. else:
  119. if curGrade >= len(self.upgradeAccessorySuccessPercentage):
  120. return 0
  121. return self.upgradeAccessorySuccessPercentage[curGrade]
  122.  
  123. else:
  124.  
  125. if curGrade >= len(self.upgradeSuccessPercentage):
  126. return 0
  127. return self.upgradeSuccessPercentage[curGrade]
  128.  
  129. for i in xrange(player.METIN_SOCKET_MAX_NUM+1):
  130. if 0 == player.GetItemMetinSocket(itemSlotIndex, i):
  131. break
  132.  
  133. return self.makeSocketSuccessPercentage[i]
  134.  
  135. def Open(self, scrollItemPos, targetItemPos):
  136. self.scrollItemPos = scrollItemPos
  137. self.targetItemPos = targetItemPos
  138.  
  139. percentage = self.GetRefineSuccessPercentage(scrollItemPos, targetItemPos)
  140. if 0 == percentage:
  141. return
  142. self.successPercentage.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (percentage))
  143.  
  144. itemIndex = player.GetItemIndex(targetItemPos)
  145. self.toolTip.ClearToolTip()
  146. metinSlot = []
  147. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  148. metinSlot.append(player.GetItemMetinSocket(targetItemPos, i))
  149. self.toolTip.AddItemData(itemIndex, metinSlot)
  150.  
  151. self.UpdateDialog()
  152. self.SetTop()
  153. self.Show()
  154.  
  155. def UpdateDialog(self):
  156. newWidth = self.toolTip.GetWidth() + 30
  157. newHeight = self.toolTip.GetHeight() + 98
  158. self.board.SetSize(newWidth, newHeight)
  159. self.titleBar.SetWidth(newWidth-15)
  160. self.SetSize(newWidth, newHeight)
  161.  
  162. (x, y) = self.GetLocalPosition()
  163. self.SetPosition(x, y)
  164.  
  165. def OpenQuestionDialog(self):
  166. percentage = self.GetRefineSuccessPercentage(-1, self.targetItemPos)
  167. if 100 == percentage:
  168. self.Accept()
  169. return
  170.  
  171. self.dlgQuestion.SetTop()
  172. self.dlgQuestion.Show()
  173.  
  174. def Accept(self):
  175. net.SendItemUseToItemPacket(self.scrollItemPos, self.targetItemPos)
  176. self.Close()
  177.  
  178. def Close(self):
  179. self.dlgQuestion.Hide()
  180. self.Hide()
  181.  
  182. def OnPressEscapeKey(self):
  183. self.Close()
  184. return TRUE
  185.  
  186. class RefineDialogNew(ui.ScriptWindow):
  187.  
  188. def __init__(self):
  189. ui.ScriptWindow.__init__(self)
  190. self.__Initialize()
  191. self.isLoaded = FALSE
  192.  
  193. def __Initialize(self):
  194. self.dlgQuestion = None
  195. self.children = []
  196. self.vnum = 0
  197. self.targetItemPos = 0
  198. self.dialogHeight = 0
  199. self.cost = 0
  200. self.percentage = 0
  201. self.type = 0
  202.  
  203. def __LoadScript(self):
  204.  
  205. try:
  206. pyScrLoader = ui.PythonScriptLoader()
  207. pyScrLoader.LoadScriptFile(self, "uiscript/refinedialog.py")
  208.  
  209. except:
  210. import exception
  211. exception.Abort("RefineDialog.__LoadScript.LoadObject")
  212.  
  213. try:
  214. self.board = self.GetChild("Board")
  215. self.titleBar = self.GetChild("TitleBar")
  216. self.probText = self.GetChild("SuccessPercentage")
  217. self.costText = self.GetChild("Cost")
  218. self.successPercentage = self.GetChild("SuccessPercentage")
  219. self.GetChild("AcceptButton").SetEvent(self.OpenQuestionDialog)
  220. self.GetChild("CancelButton").SetEvent(self.CancelRefine)
  221. except:
  222. import exception
  223. exception.Abort("RefineDialog.__LoadScript.BindObject")
  224.  
  225. ## 936 : 개량 확률 표시 안함
  226. ##if 936 == app.GetDefaultCodePage():
  227. self.successPercentage.Show()
  228.  
  229. toolTip = uiToolTip.ItemToolTip()
  230. toolTip.SetParent(self)
  231. toolTip.SetFollow(FALSE)
  232. toolTip.SetPosition(15, 38)
  233. toolTip.Show()
  234. self.toolTip = toolTip
  235.  
  236. self.slotList = []
  237. for i in xrange(3):
  238. slot = self.__MakeSlot()
  239. slot.SetParent(toolTip)
  240. slot.SetWindowVerticalAlignCenter()
  241. self.slotList.append(slot)
  242.  
  243. itemImage = self.__MakeItemImage()
  244. itemImage.SetParent(toolTip)
  245. itemImage.SetWindowVerticalAlignCenter()
  246. itemImage.SetPosition(-35, 0)
  247. self.itemImage = itemImage
  248.  
  249. self.titleBar.SetCloseEvent(ui.__mem_func__(self.CancelRefine))
  250. self.isLoaded = TRUE
  251.  
  252. def __del__(self):
  253. ui.ScriptWindow.__del__(self)
  254.  
  255. def __MakeSlot(self):
  256. slot = ui.ImageBox()
  257. slot.LoadImage("d:/ymir work/ui/public/slot_base.sub")
  258. slot.Show()
  259. self.children.append(slot)
  260. return slot
  261.  
  262. def __MakeItemImage(self):
  263. itemImage = ui.ImageBox()
  264. itemImage.Show()
  265. self.children.append(itemImage)
  266. return itemImage
  267.  
  268. def __MakeThinBoard(self):
  269. thinBoard = ui.ThinBoard()
  270. thinBoard.SetParent(self)
  271. thinBoard.Show()
  272. self.children.append(thinBoard)
  273. return thinBoard
  274.  
  275. def Destroy(self):
  276. self.ClearDictionary()
  277. self.dlgQuestion = None
  278. self.board = 0
  279. self.probText = 0
  280. self.costText = 0
  281. self.titleBar = 0
  282. self.toolTip = 0
  283. self.successPercentage = None
  284. self.slotList = []
  285. self.children = []
  286.  
  287. def Open(self, targetItemPos, nextGradeItemVnum, cost, prob, type):
  288.  
  289. if FALSE == self.isLoaded:
  290. self.__LoadScript()
  291.  
  292. self.__Initialize()
  293.  
  294. self.targetItemPos = targetItemPos
  295. self.vnum = nextGradeItemVnum
  296. self.cost = cost
  297. self.percentage = prob
  298. self.type = type
  299.  
  300. #chat.AppendChat(1, "%d %d" % (self.percentage, self.type))
  301.  
  302. if self.percentage >= 100:
  303. self.probText.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (100))
  304. else:
  305. self.probText.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (self.percentage))
  306. self.costText.SetText(localeInfo.REFINE_COST % (self.cost))
  307.  
  308. self.toolTip.ClearToolTip()
  309. metinSlot = []
  310. for i in xrange(player.METIN_SOCKET_MAX_NUM):
  311. metinSlot.append(player.GetItemMetinSocket(targetItemPos, i))
  312.  
  313. attrSlot = []
  314. for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
  315. attrSlot.append(player.GetItemAttribute(targetItemPos, i))
  316. self.toolTip.AddRefineItemData(nextGradeItemVnum, metinSlot, attrSlot)
  317.  
  318. item.SelectItem(nextGradeItemVnum)
  319. self.itemImage.LoadImage(item.GetIconImageFileName())
  320. xSlotCount, ySlotCount = item.GetItemSize()
  321. for slot in self.slotList:
  322. slot.Hide()
  323. for i in xrange(min(3, ySlotCount)):
  324. self.slotList[i].SetPosition(-35, i*32 - (ySlotCount-1)*16)
  325. self.slotList[i].Show()
  326.  
  327. self.dialogHeight = self.toolTip.GetHeight() + 46
  328. self.UpdateDialog()
  329.  
  330. self.SetTop()
  331. self.Show()
  332.  
  333. def Close(self):
  334. self.dlgQuestion = None
  335. self.Hide()
  336.  
  337. def AppendMaterial(self, vnum, count):
  338. slot = self.__MakeSlot()
  339. slot.SetParent(self)
  340. slot.SetPosition(15, self.dialogHeight)
  341.  
  342. itemImage = self.__MakeItemImage()
  343. itemImage.SetParent(slot)
  344. item.SelectItem(vnum)
  345. itemImage.LoadImage(item.GetIconImageFileName())
  346.  
  347. thinBoard = self.__MakeThinBoard()
  348. thinBoard.SetPosition(50, self.dialogHeight)
  349. thinBoard.SetSize(191, 20)
  350.  
  351. textLine = ui.TextLine()
  352. textLine.SetParent(thinBoard)
  353. textLine.SetFontName(localeInfo.UI_DEF_FONT)
  354.  
  355. playerCount = player.GetItemCountByVnum(vnum)
  356.  
  357. if (playerCount >= count):
  358. textLine.SetPackedFontColor(grp.GenerateColor(0.5411, 0.7254, 0.5568, 1.0))
  359. else:
  360. textLine.SetPackedFontColor(grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0))
  361.  
  362. textLine.SetText("%s [%02d/%02d]" % (item.GetItemName(), playerCount, count))
  363. textLine.SetOutline()
  364. textLine.SetFeather(FALSE)
  365. textLine.SetWindowVerticalAlignCenter()
  366. textLine.SetVerticalAlignCenter()
  367.  
  368. if localeInfo.IsARABIC():
  369. (x,y) = textLine.GetTextSize()
  370. textLine.SetPosition(x, 0)
  371. else:
  372. textLine.SetPosition(15, 0)
  373.  
  374. textLine.Show()
  375. self.children.append(textLine)
  376.  
  377. self.dialogHeight += 34
  378. self.UpdateDialog()
  379.  
  380. def UpdateDialog(self):
  381. newWidth = self.toolTip.GetWidth() + 60
  382. newHeight = self.dialogHeight + 69
  383.  
  384. ## 936 : 개량 확률 표시 안함
  385. ##if 936 == app.GetDefaultCodePage():
  386. newHeight -= 8
  387.  
  388. if localeInfo.IsARABIC():
  389. self.board.SetPosition( newWidth, 0 )
  390.  
  391. (x, y) = self.titleBar.GetLocalPosition()
  392. self.titleBar.SetPosition( newWidth - 15, y )
  393.  
  394. self.board.SetSize(newWidth, newHeight)
  395. self.toolTip.SetPosition(15 + 35, 38)
  396. self.titleBar.SetWidth(newWidth-15)
  397. self.SetSize(newWidth, newHeight)
  398.  
  399. (x, y) = self.GetLocalPosition()
  400. self.SetPosition(x, y)
  401.  
  402. def OpenQuestionDialog(self):
  403.  
  404. if 100 == self.percentage:
  405. self.Accept()
  406. return
  407.  
  408. if 5 == self.type: ## 무신의 축복서
  409. self.Accept()
  410. return
  411.  
  412. dlgQuestion = uiCommon.QuestionDialog2()
  413. dlgQuestion.SetText2(localeInfo.REFINE_WARNING2)
  414. dlgQuestion.SetAcceptEvent(ui.__mem_func__(self.Accept))
  415. dlgQuestion.SetCancelEvent(ui.__mem_func__(dlgQuestion.Close))
  416.  
  417. if 3 == self.type: ## 현철
  418. dlgQuestion.SetText1(localeInfo.REFINE_DESTROY_WARNING_WITH_BONUS_PERCENT_1)
  419. dlgQuestion.SetText2(localeInfo.REFINE_DESTROY_WARNING_WITH_BONUS_PERCENT_2)
  420. elif 2 == self.type: ## 축복서
  421. dlgQuestion.SetText1(localeInfo.REFINE_DOWN_GRADE_WARNING)
  422. else:
  423. dlgQuestion.SetText1(localeInfo.REFINE_DESTROY_WARNING)
  424.  
  425. dlgQuestion.Open()
  426. self.dlgQuestion = dlgQuestion
  427.  
  428. def Accept(self):
  429. net.SendRefinePacket(self.targetItemPos, self.type)
  430. self.Close()
  431.  
  432. def CancelRefine(self):
  433. net.SendRefinePacket(255, 255)
  434. self.Close()
  435.  
  436. def OnPressEscapeKey(self):
  437. self.CancelRefine()
  438. return TRUE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement