Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- #-*- coding: iso-8859-1 -*-
- import ui
- import uiScriptLocale
- import wndMgr
- import player
- import miniMap
- import localeInfo
- import net
- import app
- import colorInfo
- import constInfo
- import background
- import dbg
- import time
- import chr
- spoty_state=0
- class MapTextToolTip(ui.Window):
- def __init__(self):
- ui.Window.__init__(self)
- textLine = ui.TextLine()
- textLine.SetParent(self)
- textLine.SetHorizontalAlignCenter()
- textLine.SetOutline()
- textLine.SetHorizontalAlignRight()
- textLine.Show()
- self.textLine = textLine
- def __del__(self):
- ui.Window.__del__(self)
- def SetText(self, text):
- self.textLine.SetText(text)
- def SetTooltipPosition(self, PosX, PosY):
- if localeInfo.IsARABIC():
- w, h = self.textLine.GetTextSize()
- self.textLine.SetPosition(PosX - w - 5, PosY)
- else:
- self.textLine.SetPosition(PosX - 5, PosY)
- def SetTextColor(self, TextColor):
- self.textLine.SetPackedFontColor(TextColor)
- def GetTextSize(self):
- return self.textLine.GetTextSize()
- class AtlasWindow(ui.ScriptWindow):
- class AtlasRenderer(ui.Window):
- def __init__(self):
- ui.Window.__init__(self)
- self.AddFlag("not_pick")
- def OnUpdate(self):
- miniMap.UpdateAtlas()
- def OnRender(self):
- (x, y) = self.GetGlobalPosition()
- fx = float(x)
- fy = float(y)
- miniMap.RenderAtlas(fx, fy)
- def HideAtlas(self):
- miniMap.HideAtlas()
- def ShowAtlas(self):
- miniMap.ShowAtlas()
- def __init__(self):
- self.tooltipInfo = MapTextToolTip()
- self.tooltipInfo.Hide()
- self.infoGuildMark = ui.MarkBox()
- self.infoGuildMark.Hide()
- self.AtlasMainWindow = None
- self.mapName = ""
- self.board = 0
- ui.ScriptWindow.__init__(self)
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def SetMapName(self, mapName):
- self.board.SetTitleName(localeInfo.MINIMAP_ZONE_NAME_DICT.get(mapName, uiScriptLocale.ZONE_MAP))
- def LoadWindow(self):
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, "UIScript/AtlasWindow.py")
- except:
- import exception
- exception.Abort("AtlasWindow.LoadWindow.LoadScript")
- try:
- self.board = self.GetChild("board")
- self.bigspot_img = self.GetChild("bigspot_img")
- self.bigspot_img.Hide()
- self.bigspot = self.GetChild("bigspot")
- self.bigspot.SetEvent(ui.__mem_func__(self.SetSpot))
- except:
- import exception
- exception.Abort("AtlasWindow.LoadWindow.BindObject")
- self.AtlasMainWindow = self.AtlasRenderer()
- self.board.SetCloseEvent(self.Hide)
- self.AtlasMainWindow.SetParent(self.board)
- self.AtlasMainWindow.SetPosition(7, 30)
- self.tooltipInfo.SetParent(self.board)
- self.infoGuildMark.SetParent(self.board)
- self.SetPosition(wndMgr.GetScreenWidth() - 136 - 256 - 10, 0)
- self.board.SetMouseLeftButtonUpEvent(ui.__mem_func__(self.GoToLocalPosition))
- self.Hide()
- miniMap.RegisterAtlasWindow(self)
- def Destroy(self):
- miniMap.UnregisterAtlasWindow()
- self.ClearDictionary()
- self.AtlasMainWindow = None
- self.tooltipAtlasClose = 0
- self.tooltipInfo = None
- self.infoGuildMark = None
- self.board = None
- global spoty_state
- spoty_state=0
- def IsMapSpot(self, map_name):
- maps=[
- "metin2_map_kain",
- "map_setao",
- "metin2_map_zielona",
- "metin2_map_dreikon1",
- "metin2_daim_map",
- "metin2_arianea_3",
- "metin2_duester_map",
- ]
- if map_name in maps:
- return int(maps.index(map_name))
- return -1
- def SetSpot(self):
- try:
- global spoty_state
- if spoty_state == 0:
- map_name = background.GetCurrentMapName()
- map_id = self.IsMapSpot(map_name)
- if map_id >= 0:
- spoty_state=1
- self.bigspot_img.LoadImage("spoty/"+str(map_id)+".tga")
- else:
- spoty_state=0
- else:
- spoty_state=0
- except:
- pass
- def OnUpdate(self):
- if spoty_state == 0:
- self.bigspot_img.Hide()
- self.bigspot.SetText("Spoty")
- else:
- self.bigspot_img.Show()
- self.bigspot.SetText("Spoty")
- if not self.tooltipInfo:
- return
- if not self.infoGuildMark:
- return
- self.infoGuildMark.Hide()
- self.tooltipInfo.Hide()
- if FALSE == self.board.IsIn():
- return
- (mouseX, mouseY) = wndMgr.GetMousePosition()
- (bFind, sName, iPosX, iPosY, dwTextColor, dwGuildID) = miniMap.GetAtlasInfo(mouseX, mouseY)
- if FALSE == bFind:
- return
- if chr.IsGameMaster(player.GetMainCharacterIndex()):
- (iPosX, iPosY) = miniMap.MousePosToAtlasPos(mouseX, mouseY)
- dwTextColor = 0xffffffff
- else:
- return
- if "empty_guild_area" == sName:
- sName = localeInfo.GUILD_EMPTY_AREA
- if bFind == False:
- self.tooltipInfo.SetText("(%d, %d)" % (iPosX, iPosY))
- elif localeInfo.IsARABIC() and sName[-1].isalnum():
- self.tooltipInfo.SetText("(%s)%d, %d" % (sName, iPosX, iPosY))
- else:
- self.tooltipInfo.SetText("%s(%d, %d)" % (sName, iPosX, iPosY))
- if spoty_state != 1:
- (x, y) = self.GetGlobalPosition()
- self.tooltipInfo.SetTooltipPosition(mouseX - x, mouseY - y)
- self.tooltipInfo.SetTextColor(dwTextColor)
- self.tooltipInfo.Show()
- self.tooltipInfo.SetTop()
- if 0 != dwGuildID:
- textWidth, textHeight = self.tooltipInfo.GetTextSize()
- self.infoGuildMark.SetIndex(dwGuildID)
- self.infoGuildMark.SetPosition(mouseX - x - textWidth - 18 - 5, mouseY - y)
- self.infoGuildMark.Show()
- def GoToLocalPosition(self):
- if False == self.board.IsIn() or False == chr.IsGameMaster(player.GetMainCharacterIndex()):
- return
- (mouseX, mouseY) = wndMgr.GetMousePosition()
- (iPosX, iPosY) = miniMap.MousePosToAtlasPos(mouseX, mouseY)
- net.SendChatPacket("/goto %d %d" % (iPosX, iPosY))
- def Hide(self):
- global spoty_state
- spoty_state=0
- if self.AtlasMainWindow:
- self.AtlasMainWindow.HideAtlas()
- self.AtlasMainWindow.Hide()
- ui.ScriptWindow.Hide(self)
- def Show(self):
- if self.AtlasMainWindow:
- (bGet, iSizeX, iSizeY) = miniMap.GetAtlasSize()
- if bGet:
- self.SetSize(iSizeX + 15, iSizeY + 38)
- if localeInfo.IsARABIC():
- self.board.SetPosition(iSizeX+15, 0)
- if self.IsMapSpot(background.GetCurrentMapName()) >=0:
- self.bigspot_img.Show()
- self.bigspot.Show()
- else:
- self.bigspot_img.Hide()
- self.bigspot.Hide()
- self.board.SetSize(iSizeX + 15, iSizeY + 38)
- self.AtlasMainWindow.ShowAtlas()
- self.AtlasMainWindow.Show()
- ui.ScriptWindow.Show(self)
- def SetCenterPositionAdjust(self, x, y):
- self.SetPosition((wndMgr.GetScreenWidth() - self.GetWidth()) / 2 + x, (wndMgr.GetScreenHeight() - self.GetHeight()) / 2 + y)
- def OnPressEscapeKey(self):
- self.Hide()
- return TRUE
- def __RegisterMiniMapColor(type, rgb):
- miniMap.RegisterColor(type, rgb[0], rgb[1], rgb[2])
- class MiniMap(ui.ScriptWindow):
- CANNOT_SEE_INFO_MAP_DICT = {
- "metin2_map_monkeydungeon" : FALSE,
- "metin2_map_monkeydungeon_02" : FALSE,
- "metin2_map_monkeydungeon_03" : FALSE,
- "metin2_map_devilsCatacomb" : FALSE,
- }
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.__Initialize()
- miniMap.Create()
- miniMap.SetScale(2.0)
- self.AtlasWindow = AtlasWindow()
- self.AtlasWindow.LoadWindow()
- self.AtlasWindow.Hide()
- self.tooltipMiniMapOpen = MapTextToolTip()
- self.tooltipMiniMapOpen.SetText(localeInfo.MINIMAP)
- self.tooltipMiniMapOpen.Show()
- self.tooltipMiniMapClose = MapTextToolTip()
- self.tooltipMiniMapClose.SetText(localeInfo.UI_CLOSE)
- self.tooltipMiniMapClose.Show()
- self.tooltipScaleUp = MapTextToolTip()
- self.tooltipScaleUp.SetText(localeInfo.MINIMAP_INC_SCALE)
- self.tooltipScaleUp.Show()
- self.tooltipScaleDown = MapTextToolTip()
- self.tooltipScaleDown.SetText(localeInfo.MINIMAP_DEC_SCALE)
- self.tooltipScaleDown.Show()
- self.tooltipAtlasOpen = MapTextToolTip()
- self.tooltipAtlasOpen.SetText(localeInfo.MINIMAP_SHOW_AREAMAP)
- self.tooltipAtlasOpen.Show()
- self.tooltipInfo = MapTextToolTip()
- self.tooltipInfo.Show()
- if miniMap.IsAtlas():
- self.tooltipAtlasOpen.SetText(localeInfo.MINIMAP_SHOW_AREAMAP)
- else:
- self.tooltipAtlasOpen.SetText(localeInfo.MINIMAP_CAN_NOT_SHOW_AREAMAP)
- self.tooltipInfo = MapTextToolTip()
- self.tooltipInfo.Show()
- self.mapName = ""
- self.isLoaded = 0
- self.canSeeInfo = TRUE
- # AUTOBAN
- self.imprisonmentDuration = 0
- self.imprisonmentEndTime = 0
- self.imprisonmentEndTimeText = ""
- # END_OF_AUTOBAN
- def __del__(self):
- miniMap.Destroy()
- ui.ScriptWindow.__del__(self)
- def __Initialize(self):
- self.positionInfo = 0
- self.observerCount = 0
- self.OpenWindow = 0
- self.CloseWindow = 0
- self.ScaleUpButton = 0
- self.ScaleDownButton = 0
- self.MiniMapHideButton = 0
- self.MiniMapShowButton = 0
- self.AtlasShowButton = 0
- self.tooltipMiniMapOpen = 0
- self.tooltipMiniMapClose = 0
- self.tooltipScaleUp = 0
- self.tooltipScaleDown = 0
- self.tooltipAtlasOpen = 0
- self.tooltipInfo = None
- self.serverInfo = None
- self.timeInfo = None
- self.dateInfo = None
- def SetMapName(self, mapName):
- self.mapName=mapName
- self.AtlasWindow.SetMapName(mapName)
- if app.TOURNAMENT_PVP_SYSTEM:
- if player.IsTournamentMap():
- self.canSeeInfo = FALSE
- self.HideMiniMap()
- ui.ScriptWindow.Hide(self)
- if self.CANNOT_SEE_INFO_MAP_DICT.has_key(mapName):
- self.canSeeInfo = FALSE
- self.HideMiniMap()
- self.tooltipMiniMapOpen.SetText(localeInfo.MINIMAP_CANNOT_SEE)
- else:
- self.canSeeInfo = TRUE
- self.ShowMiniMap()
- self.tooltipMiniMapOpen.SetText(localeInfo.MINIMAP)
- # AUTOBAN
- def SetImprisonmentDuration(self, duration):
- self.imprisonmentDuration = duration
- self.imprisonmentEndTime = app.GetGlobalTimeStamp() + duration
- self.__UpdateImprisonmentDurationText()
- def __UpdateImprisonmentDurationText(self):
- restTime = max(self.imprisonmentEndTime - app.GetGlobalTimeStamp(), 0)
- imprisonmentEndTimeText = localeInfo.SecondToDHM(restTime)
- if imprisonmentEndTimeText != self.imprisonmentEndTimeText:
- self.imprisonmentEndTimeText = imprisonmentEndTimeText
- self.serverInfo.SetText("%s: %s" % (uiScriptLocale.AUTOBAN_QUIZ_REST_TIME, self.imprisonmentEndTimeText))
- # END_OF_AUTOBAN
- def Show(self):
- self.__LoadWindow()
- ui.ScriptWindow.Show(self)
- def __LoadWindow(self):
- if self.isLoaded == 1:
- return
- self.isLoaded = 1
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, "UIScript/MiniMap.py")
- except:
- import exception
- exception.Abort("MiniMap.LoadWindow.LoadScript")
- try:
- self.OpenWindow = self.GetChild("OpenWindow")
- self.MiniMapWindow = self.GetChild("MiniMapWindow")
- self.ScaleUpButton = self.GetChild("ScaleUpButton")
- self.ScaleDownButton = self.GetChild("ScaleDownButton")
- self.MiniMapHideButton = self.GetChild("MiniMapHideButton")
- self.AtlasShowButton = self.GetChild("AtlasShowButton")
- self.CloseWindow = self.GetChild("CloseWindow")
- self.MiniMapShowButton = self.GetChild("MiniMapShowButton")
- self.positionInfo = self.GetChild("PositionInfo")
- self.observerCount = self.GetChild("ObserverCount")
- self.serverInfo = self.GetChild("ServerInfo")
- self.timeInfo = self.GetChild("TimeInfo")
- self.dateInfo = self.GetChild("DateInfo")
- except:
- import exception
- exception.Abort("MiniMap.LoadWindow.Bind")
- if constInfo.MINIMAP_POSITIONINFO_ENABLE==0:
- self.positionInfo.Hide()
- self.serverInfo.SetText(net.GetServerInfo())
- self.timeInfo.SetText(time.strftime("%Y.%m.%d"))
- self.dateInfo.SetText("["+time.strftime("%H:%M:%S")+"]")
- self.ScaleUpButton.SetEvent(ui.__mem_func__(self.ScaleUp))
- self.ScaleDownButton.SetEvent(ui.__mem_func__(self.ScaleDown))
- self.MiniMapHideButton.SetEvent(ui.__mem_func__(self.HideMiniMap))
- self.MiniMapShowButton.SetEvent(ui.__mem_func__(self.ShowMiniMap))
- if miniMap.IsAtlas():
- self.AtlasShowButton.SetEvent(ui.__mem_func__(self.ShowAtlas))
- (ButtonPosX, ButtonPosY) = self.MiniMapShowButton.GetGlobalPosition()
- self.tooltipMiniMapOpen.SetTooltipPosition(ButtonPosX, ButtonPosY)
- (ButtonPosX, ButtonPosY) = self.MiniMapHideButton.GetGlobalPosition()
- self.tooltipMiniMapClose.SetTooltipPosition(ButtonPosX, ButtonPosY)
- (ButtonPosX, ButtonPosY) = self.ScaleUpButton.GetGlobalPosition()
- self.tooltipScaleUp.SetTooltipPosition(ButtonPosX, ButtonPosY)
- (ButtonPosX, ButtonPosY) = self.ScaleDownButton.GetGlobalPosition()
- self.tooltipScaleDown.SetTooltipPosition(ButtonPosX, ButtonPosY)
- (ButtonPosX, ButtonPosY) = self.AtlasShowButton.GetGlobalPosition()
- self.tooltipAtlasOpen.SetTooltipPosition(ButtonPosX, ButtonPosY)
- self.ShowMiniMap()
- def Destroy(self):
- self.HideMiniMap()
- self.AtlasWindow.Destroy()
- self.AtlasWindow = None
- self.ClearDictionary()
- self.__Initialize()
- def UpdateObserverCount(self, observerCount):
- if observerCount>0:
- self.observerCount.Show()
- elif observerCount<=0:
- self.observerCount.Hide()
- self.observerCount.SetText(localeInfo.MINIMAP_OBSERVER_COUNT % observerCount)
- def OnUpdate(self):
- (x, y, z) = player.GetMainCharacterPosition()
- miniMap.Update(x, y)
- self.positionInfo.SetText("(%.0f, %.0f)" % (x/100, y/100))
- self.timeInfo.SetText(time.strftime("%Y.%m.%d"))
- self.dateInfo.SetText("["+time.strftime("%H:%M:%S")+"]")
- if self.tooltipInfo:
- if TRUE == self.MiniMapWindow.IsIn():
- (mouseX, mouseY) = wndMgr.GetMousePosition()
- (bFind, sName, iPosX, iPosY, dwTextColor) = miniMap.GetInfo(mouseX, mouseY)
- if bFind == 0:
- self.tooltipInfo.Hide()
- elif not self.canSeeInfo:
- self.tooltipInfo.SetText("%s(%s)" % (sName, localeInfo.UI_POS_UNKNOWN))
- self.tooltipInfo.SetTooltipPosition(mouseX - 5, mouseY)
- self.tooltipInfo.SetTextColor(dwTextColor)
- self.tooltipInfo.Show()
- else:
- if localeInfo.IsARABIC() and sName[-1].isalnum():
- self.tooltipInfo.SetText("(%s)%d, %d" % (sName, iPosX, iPosY))
- else:
- self.tooltipInfo.SetText("%s(%d, %d)" % (sName, iPosX, iPosY))
- self.tooltipInfo.SetTooltipPosition(mouseX - 5, mouseY)
- self.tooltipInfo.SetTextColor(dwTextColor)
- self.tooltipInfo.Show()
- else:
- self.tooltipInfo.Hide()
- # AUTOBAN
- if self.imprisonmentDuration:
- self.__UpdateImprisonmentDurationText()
- # END_OF_AUTOBAN
- if TRUE == self.MiniMapShowButton.IsIn():
- self.tooltipMiniMapOpen.Show()
- else:
- self.tooltipMiniMapOpen.Hide()
- if TRUE == self.MiniMapHideButton.IsIn():
- self.tooltipMiniMapClose.Show()
- else:
- self.tooltipMiniMapClose.Hide()
- if TRUE == self.ScaleUpButton.IsIn():
- self.tooltipScaleUp.Show()
- else:
- self.tooltipScaleUp.Hide()
- if TRUE == self.ScaleDownButton.IsIn():
- self.tooltipScaleDown.Show()
- else:
- self.tooltipScaleDown.Hide()
- if TRUE == self.AtlasShowButton.IsIn():
- self.tooltipAtlasOpen.Show()
- else:
- self.tooltipAtlasOpen.Hide()
- def OnRender(self):
- (x, y) = self.GetGlobalPosition()
- fx = float(x)
- fy = float(y)
- miniMap.Render(fx + 4.0, fy + 5.0)
- def Close(self):
- self.HideMiniMap()
- def HideMiniMap(self):
- miniMap.Hide()
- self.OpenWindow.Hide()
- self.CloseWindow.Show()
- def ShowMiniMap(self):
- if not self.canSeeInfo:
- return
- miniMap.Show()
- self.OpenWindow.Show()
- self.CloseWindow.Hide()
- def isShowMiniMap(self):
- return miniMap.isShow()
- def ScaleUp(self):
- miniMap.ScaleUp()
- def ScaleDown(self):
- miniMap.ScaleDown()
- def ShowAtlas(self):
- if not miniMap.IsAtlas():
- return
- if not self.AtlasWindow.IsShow():
- self.AtlasWindow.Show()
- def ToggleAtlasWindow(self):
- if not miniMap.IsAtlas():
- return
- if self.AtlasWindow.IsShow():
- self.AtlasWindow.Hide()
- else:
- self.AtlasWindow.Show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement