Guest User

Untitled

a guest
Feb 20th, 2025
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.91 KB | None | 0 0
  1. # author: dracaryS
  2.  
  3. # static
  4. import ui, time, constInfo
  5.  
  6. # dynamic
  7. import item, app, net, grp
  8.  
  9. class Window(ui.BoardWithTitleBar):
  10. def __init__(self):
  11. ui.BoardWithTitleBar.__init__(self)
  12. self.__LoadWindow()
  13.  
  14. def Destroy(self):
  15. self.__children = {}
  16.  
  17. def __LoadWindow(self):
  18. self.Destroy()
  19. self.SetSize(300, 230)
  20. self.SetCenterPosition()
  21. self.SetCloseEvent(self.Close)
  22.  
  23. self.AddFlag("movable")
  24. self.AddFlag("attach")
  25.  
  26. titleBar = CreateWindow(ui.ThinBoardCircle(), self, (0, 0))
  27. self.__children["titleBar"] = titleBar
  28.  
  29. titleBarText = CreateWindow(ui.TextLine(), titleBar, (0, 0))
  30. titleBarText.SetHorizontalAlignCenter()
  31. titleBarText.SetVerticalAlignCenter()
  32. titleBarText.SetWindowHorizontalAlignCenter()
  33. titleBarText.SetWindowVerticalAlignCenter()
  34. self.__children["titleBarText"] = titleBarText
  35.  
  36. leftTimeText = CreateWindow(ui.TextLine(), self, (0, 0))
  37. leftTimeText.SetHorizontalAlignRight()
  38. self.__children["leftTimeText"] = leftTimeText
  39.  
  40. def Refresh(self):
  41. titleBar = self.__children["titleBar"]
  42. itemChildrenList = self.__children["itemChildrenList"] if "itemChildrenList" in self.__children else []
  43. for j in range(len(itemChildrenList)):
  44. itemChildrenList[j].Destroy()
  45. itemChildrenList[j].Hide()
  46. itemChildrenList = []
  47. itemList = self.__children["itemList"]
  48. shuffle_list(itemList)
  49.  
  50. _x = 15
  51. for j in range(len(itemList)):
  52. itemIdx = itemList[j]
  53.  
  54. itemBoard = CreateWindow(ui.ThinBoardCircle(), self, (_x, 45 + 30 + 14), "", "", (32 + (32 / 2), 96 + (32 / 2)))
  55. itemBoard.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__OverInItem, itemIdx)
  56. itemBoard.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__OverOutItem)
  57. itemBoard.SetMouseLeftButtonUpEvent(ui.__mem_func__(self.__ClickItem), itemIdx)
  58.  
  59. itemBoardBar = CreateWindow(ui.Bar(), itemBoard, (1, 1), "", "", (50, 50))
  60. itemBoardBar.AddFlag("not_pick")
  61.  
  62. item.SelectItem(itemIdx)
  63. itemIcon = CreateWindow(ui.ImageBox(), itemBoard, (-1, -1), item.GetIconImageFileName())
  64. itemIcon.AddFlag("not_pick")
  65. itemIcon.SetPosition((itemBoard.GetWidth()/2) - (itemIcon.GetWidth()/2), (itemBoard.GetHeight()/2) - (itemIcon.GetHeight()/2))
  66. itemChildrenList.append(itemBoardBar)
  67. itemChildrenList.append(itemIcon)
  68. itemChildrenList.append(itemBoard)
  69.  
  70. _x += itemBoard.GetWidth() + 10
  71. _x += 5
  72. self.__children["itemChildrenList"] = itemChildrenList
  73. self.SetSize(_x, self.GetHeight())
  74. titleBar.SetSize(20 + self.__children["titleBarText"].GetTextSize()[0] + 20, 30)
  75. titleBar.SetPosition((self.GetWidth() / 2) - (titleBar.GetWidth()/2), 45)
  76.  
  77. self.__children["leftTimeText"].SetPosition(self.GetWidth() - 15, self.GetHeight() - 25)
  78.  
  79. stageData = self.__children["stage"] if "stage" in self.__children else [0, 0]
  80.  
  81. self.SetTitleName("Anti Bot Captcha - %d/%d" % (stageData[1], stageData[0]))
  82.  
  83. def __ClickItem(self, itemIdx):
  84. net.SendChatPacket("/captcha click " + str(itemIdx))
  85.  
  86. def Open(self, leftTime=0, totalStage=0, currentStage=0, itemListCMD=""):
  87. if itemListCMD != "":
  88. itemListCMD = app.DecryptText(itemListCMD, "31")
  89.  
  90. itemList = []
  91. randomItemList = itemListCMD.split("#")
  92. item.SelectItem(int(randomItemList[0]))
  93. self.__children["titleBarText"].SetText("Click on The |cFF07B527%s" % item.GetItemName())
  94. for j in range(len(randomItemList)):
  95. itemList.append(int(randomItemList[j]))
  96. self.__children["itemList"] = itemList
  97. self.__children["serverleftTime"] = float(leftTime) + app.GetTime()
  98. self.__children["serverleftTimeMax"] = float(leftTime)
  99. self.__children["stage"] = [totalStage, currentStage]
  100. self.Refresh()
  101. self.Show()
  102.  
  103. def OnUpdate(self):
  104. leftTime = self.__children["serverleftTime"] - app.GetTime() if "serverleftTime" in self.__children else 0
  105. serverleftTimeMax = self.__children["serverleftTimeMax"] if "serverleftTimeMax" in self.__children else 0
  106. if leftTime < 0:
  107. leftTime = 0
  108. self.__children["leftTimeText"].SetText("Left Time: %s" % FormatTime(int(leftTime)))
  109. itemChildrenList = self.__children["itemChildrenList"] if "itemChildrenList" in self.__children else []
  110. for child in itemChildrenList:
  111. if isinstance(child, ui.ThinBoardCircle):
  112. child.SetColor(child.BOARD_COLOR_IN if child.IsIn() else child.BOARD_COLOR_OUT)
  113. elif isinstance(child, ui.Bar):
  114. if not leftTime:
  115. child.Hide()
  116. return
  117. difference = 20
  118. barHeight = (96 + (32 / 2)) - difference
  119. barWidth = (32 + (32 / 2)) - difference
  120. child.SetPosition(difference / 2, difference / 2)
  121. child.SetSize(barWidth, int(leftTime * (float(barHeight) / serverleftTimeMax)))
  122. if leftTime > 15:
  123. child.SetColor(grp.GenerateColor(67.0 / 255.0, 237.0 / 255.0, 33.0 / 255.0, 0.3))
  124. elif leftTime > 10:
  125. child.SetColor(grp.GenerateColor(149.0 / 255.0, 75.0 / 255.0, 48.0 / 255.0, 0.3))
  126. else:
  127. child.SetColor(grp.GenerateColor(234.0 / 255.0, 55.0 / 255.0, 33.0 / 255.0, 0.3))
  128.  
  129. lastRefresh = self.__children["lastRefresh"] if "lastRefresh" in self.__children else 0
  130. if lastRefresh > app.GetGlobalTimeStamp():
  131. return
  132. self.__children["lastRefresh"] = app.GetGlobalTimeStamp() + 2
  133. self.Refresh()
  134.  
  135. def __OverOutItem(self):
  136. interface = constInfo.GetInterfaceInstance()
  137. if interface:
  138. if interface.tooltipItem:
  139. interface.tooltipItem.HideToolTip()
  140.  
  141. def __OverInItem(self, itemIdx):
  142. interface = constInfo.GetInterfaceInstance()
  143. if interface:
  144. if interface.tooltipItem:
  145. interface.tooltipItem.SetItemToolTip(itemIdx)
  146.  
  147. def Close(self):
  148. self.Hide()
  149.  
  150. def OnPressEscapeKey(self):
  151. self.Close()
  152. return True
  153.  
  154. def shuffle_list(lst):
  155. seed = int(time.time() * 1000)
  156. for i in range(len(lst) - 1, 0, -1):
  157. j = seed % (i + 1)
  158. lst[i], lst[j] = lst[j], lst[i]
  159. seed = (seed + i + j) % 2**32
  160.  
  161. def CreateWindow(window, parent, windowPos, windowArgument="", windowPositionRule="", windowSize=(-1, -1), windowFontName=-1):
  162. window.SetParent(parent)
  163. window.SetPosition(*windowPos)
  164. if windowSize != (-1, -1):
  165. window.SetSize(*windowSize)
  166. if windowPositionRule:
  167. splitList = windowPositionRule.split(":")
  168. if len(splitList) == 2:
  169. (type, mode) = (splitList[0], splitList[1])
  170. if type == "horizontal":
  171. if isinstance(window, ui.TextLine):
  172. if mode == "center":
  173. window.SetHorizontalAlignCenter()
  174. elif mode == "right":
  175. window.SetHorizontalAlignRight()
  176. elif mode == "left":
  177. window.SetHorizontalAlignLeft()
  178. else:
  179. if mode == "center":
  180. window.SetWindowHorizontalAlignCenter()
  181. elif mode == "right":
  182. window.SetWindowHorizontalAlignRight()
  183. elif mode == "left":
  184. window.SetWindowHorizontalAlignLeft()
  185. elif type == "vertical":
  186. if isinstance(window, ui.TextLine):
  187. if mode == "center":
  188. window.SetVerticalAlignCenter()
  189. elif mode == "top":
  190. window.SetVerticalAlignTop()
  191. elif mode == "bottom":
  192. window.SetVerticalAlignBottom()
  193. else:
  194. if mode == "top":
  195. window.SetWindowVerticalAlignTop()
  196. elif mode == "center":
  197. window.SetWindowVerticalAlignCenter()
  198. elif mode == "bottom":
  199. window.SetWindowVerticalAlignBottom()
  200. if windowArgument:
  201. if isinstance(window, ui.TextLine):
  202. if windowFontName != -1:
  203. window.SetFontName(windowFontName)
  204. window.SetText(windowArgument)
  205. elif isinstance(window, ui.NumberLine):
  206. window.SetNumber(windowArgument)
  207. elif isinstance(window, ui.ExpandedImageBox) or isinstance(window, ui.ImageBox):
  208. window.LoadImage(windowArgument if windowArgument.find("gr2") == -1 else "icon/item/27995.tga")
  209. window.Show()
  210. return window
  211.  
  212. def FormatTime(seconds):
  213. if seconds <= 0:
  214. return "0s"
  215. m, s = divmod(seconds, 60)
  216. h, m = divmod(m, 60)
  217. d, h = divmod(h, 24)
  218. text = ""
  219. if d > 0:
  220. text += "{}d ".format(d)
  221. if h > 0:
  222. text += "{}h ".format(h)
  223. if m > 0:
  224. text += "{}m ".format(m)
  225. if s > 0:
  226. text += "{}s ".format(s)
  227. return text[:len(text) - 1] if len(text) > 0 else "0s"
  228.  
Advertisement
Add Comment
Please, Sign In to add comment