Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # author: dracaryS
- # static
- import ui, time, constInfo
- # dynamic
- import item, app, net, grp
- class Window(ui.BoardWithTitleBar):
- def __init__(self):
- ui.BoardWithTitleBar.__init__(self)
- self.__LoadWindow()
- def Destroy(self):
- self.__children = {}
- def __LoadWindow(self):
- self.Destroy()
- self.SetSize(300, 230)
- self.SetCenterPosition()
- self.SetCloseEvent(self.Close)
- self.AddFlag("movable")
- self.AddFlag("attach")
- titleBar = CreateWindow(ui.ThinBoardCircle(), self, (0, 0))
- self.__children["titleBar"] = titleBar
- titleBarText = CreateWindow(ui.TextLine(), titleBar, (0, 0))
- titleBarText.SetHorizontalAlignCenter()
- titleBarText.SetVerticalAlignCenter()
- titleBarText.SetWindowHorizontalAlignCenter()
- titleBarText.SetWindowVerticalAlignCenter()
- self.__children["titleBarText"] = titleBarText
- leftTimeText = CreateWindow(ui.TextLine(), self, (0, 0))
- leftTimeText.SetHorizontalAlignRight()
- self.__children["leftTimeText"] = leftTimeText
- def Refresh(self):
- titleBar = self.__children["titleBar"]
- itemChildrenList = self.__children["itemChildrenList"] if "itemChildrenList" in self.__children else []
- for j in range(len(itemChildrenList)):
- itemChildrenList[j].Destroy()
- itemChildrenList[j].Hide()
- itemChildrenList = []
- itemList = self.__children["itemList"]
- shuffle_list(itemList)
- _x = 15
- for j in range(len(itemList)):
- itemIdx = itemList[j]
- itemBoard = CreateWindow(ui.ThinBoardCircle(), self, (_x, 45 + 30 + 14), "", "", (32 + (32 / 2), 96 + (32 / 2)))
- itemBoard.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__OverInItem, itemIdx)
- itemBoard.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__OverOutItem)
- itemBoard.SetMouseLeftButtonUpEvent(ui.__mem_func__(self.__ClickItem), itemIdx)
- itemBoardBar = CreateWindow(ui.Bar(), itemBoard, (1, 1), "", "", (50, 50))
- itemBoardBar.AddFlag("not_pick")
- item.SelectItem(itemIdx)
- itemIcon = CreateWindow(ui.ImageBox(), itemBoard, (-1, -1), item.GetIconImageFileName())
- itemIcon.AddFlag("not_pick")
- itemIcon.SetPosition((itemBoard.GetWidth()/2) - (itemIcon.GetWidth()/2), (itemBoard.GetHeight()/2) - (itemIcon.GetHeight()/2))
- itemChildrenList.append(itemBoardBar)
- itemChildrenList.append(itemIcon)
- itemChildrenList.append(itemBoard)
- _x += itemBoard.GetWidth() + 10
- _x += 5
- self.__children["itemChildrenList"] = itemChildrenList
- self.SetSize(_x, self.GetHeight())
- titleBar.SetSize(20 + self.__children["titleBarText"].GetTextSize()[0] + 20, 30)
- titleBar.SetPosition((self.GetWidth() / 2) - (titleBar.GetWidth()/2), 45)
- self.__children["leftTimeText"].SetPosition(self.GetWidth() - 15, self.GetHeight() - 25)
- stageData = self.__children["stage"] if "stage" in self.__children else [0, 0]
- self.SetTitleName("Anti Bot Captcha - %d/%d" % (stageData[1], stageData[0]))
- def __ClickItem(self, itemIdx):
- net.SendChatPacket("/captcha click " + str(itemIdx))
- def Open(self, leftTime=0, totalStage=0, currentStage=0, itemListCMD=""):
- if itemListCMD != "":
- itemListCMD = app.DecryptText(itemListCMD, "31")
- itemList = []
- randomItemList = itemListCMD.split("#")
- item.SelectItem(int(randomItemList[0]))
- self.__children["titleBarText"].SetText("Click on The |cFF07B527%s" % item.GetItemName())
- for j in range(len(randomItemList)):
- itemList.append(int(randomItemList[j]))
- self.__children["itemList"] = itemList
- self.__children["serverleftTime"] = float(leftTime) + app.GetTime()
- self.__children["serverleftTimeMax"] = float(leftTime)
- self.__children["stage"] = [totalStage, currentStage]
- self.Refresh()
- self.Show()
- def OnUpdate(self):
- leftTime = self.__children["serverleftTime"] - app.GetTime() if "serverleftTime" in self.__children else 0
- serverleftTimeMax = self.__children["serverleftTimeMax"] if "serverleftTimeMax" in self.__children else 0
- if leftTime < 0:
- leftTime = 0
- self.__children["leftTimeText"].SetText("Left Time: %s" % FormatTime(int(leftTime)))
- itemChildrenList = self.__children["itemChildrenList"] if "itemChildrenList" in self.__children else []
- for child in itemChildrenList:
- if isinstance(child, ui.ThinBoardCircle):
- child.SetColor(child.BOARD_COLOR_IN if child.IsIn() else child.BOARD_COLOR_OUT)
- elif isinstance(child, ui.Bar):
- if not leftTime:
- child.Hide()
- return
- difference = 20
- barHeight = (96 + (32 / 2)) - difference
- barWidth = (32 + (32 / 2)) - difference
- child.SetPosition(difference / 2, difference / 2)
- child.SetSize(barWidth, int(leftTime * (float(barHeight) / serverleftTimeMax)))
- if leftTime > 15:
- child.SetColor(grp.GenerateColor(67.0 / 255.0, 237.0 / 255.0, 33.0 / 255.0, 0.3))
- elif leftTime > 10:
- child.SetColor(grp.GenerateColor(149.0 / 255.0, 75.0 / 255.0, 48.0 / 255.0, 0.3))
- else:
- child.SetColor(grp.GenerateColor(234.0 / 255.0, 55.0 / 255.0, 33.0 / 255.0, 0.3))
- lastRefresh = self.__children["lastRefresh"] if "lastRefresh" in self.__children else 0
- if lastRefresh > app.GetGlobalTimeStamp():
- return
- self.__children["lastRefresh"] = app.GetGlobalTimeStamp() + 2
- self.Refresh()
- def __OverOutItem(self):
- interface = constInfo.GetInterfaceInstance()
- if interface:
- if interface.tooltipItem:
- interface.tooltipItem.HideToolTip()
- def __OverInItem(self, itemIdx):
- interface = constInfo.GetInterfaceInstance()
- if interface:
- if interface.tooltipItem:
- interface.tooltipItem.SetItemToolTip(itemIdx)
- def Close(self):
- self.Hide()
- def OnPressEscapeKey(self):
- self.Close()
- return True
- def shuffle_list(lst):
- seed = int(time.time() * 1000)
- for i in range(len(lst) - 1, 0, -1):
- j = seed % (i + 1)
- lst[i], lst[j] = lst[j], lst[i]
- seed = (seed + i + j) % 2**32
- def CreateWindow(window, parent, windowPos, windowArgument="", windowPositionRule="", windowSize=(-1, -1), windowFontName=-1):
- window.SetParent(parent)
- window.SetPosition(*windowPos)
- if windowSize != (-1, -1):
- window.SetSize(*windowSize)
- if windowPositionRule:
- splitList = windowPositionRule.split(":")
- if len(splitList) == 2:
- (type, mode) = (splitList[0], splitList[1])
- if type == "horizontal":
- if isinstance(window, ui.TextLine):
- if mode == "center":
- window.SetHorizontalAlignCenter()
- elif mode == "right":
- window.SetHorizontalAlignRight()
- elif mode == "left":
- window.SetHorizontalAlignLeft()
- else:
- if mode == "center":
- window.SetWindowHorizontalAlignCenter()
- elif mode == "right":
- window.SetWindowHorizontalAlignRight()
- elif mode == "left":
- window.SetWindowHorizontalAlignLeft()
- elif type == "vertical":
- if isinstance(window, ui.TextLine):
- if mode == "center":
- window.SetVerticalAlignCenter()
- elif mode == "top":
- window.SetVerticalAlignTop()
- elif mode == "bottom":
- window.SetVerticalAlignBottom()
- else:
- if mode == "top":
- window.SetWindowVerticalAlignTop()
- elif mode == "center":
- window.SetWindowVerticalAlignCenter()
- elif mode == "bottom":
- window.SetWindowVerticalAlignBottom()
- if windowArgument:
- if isinstance(window, ui.TextLine):
- if windowFontName != -1:
- window.SetFontName(windowFontName)
- window.SetText(windowArgument)
- elif isinstance(window, ui.NumberLine):
- window.SetNumber(windowArgument)
- elif isinstance(window, ui.ExpandedImageBox) or isinstance(window, ui.ImageBox):
- window.LoadImage(windowArgument if windowArgument.find("gr2") == -1 else "icon/item/27995.tga")
- window.Show()
- return window
- def FormatTime(seconds):
- if seconds <= 0:
- return "0s"
- m, s = divmod(seconds, 60)
- h, m = divmod(m, 60)
- d, h = divmod(h, 24)
- text = ""
- if d > 0:
- text += "{}d ".format(d)
- if h > 0:
- text += "{}h ".format(h)
- if m > 0:
- text += "{}m ".format(m)
- if s > 0:
- text += "{}s ".format(s)
- return text[:len(text) - 1] if len(text) > 0 else "0s"
Advertisement
Add Comment
Please, Sign In to add comment