Opublikowano 1 Maja 20241 Maj Witam, implementacje buttonów od strony uiinventory wiem jak zrobić ale mam problem od strony uiminimap. Bazowałem na podobnej zasadzie jak w inventory ale coś mi nie chce własnie zatrybić w uiminimap. Zrobiłem to w taki sposób: uiscript -> minimap.py ## Przycisk KM { "name" : "KsiegaPrzycisk", "type" : "button", "x" : -8, "y" : 26, "tooltip_text" : "Księga Misji", "default_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje1.png", "over_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje2.png", "down_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje3.png", }, Żeby ułatwić odnalezienie kodu, dodałem komentarz w postaci ## button k.misji A tutaj uiminimap.py: Spoiler import ui import uiScriptLocale import wndMgr import player import miniMap import localeInfo import net import app import colorInfo import constInfo import background import uimission ## button k.misji 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): if 949==app.GetDefaultCodePage(): try: self.board.SetTitleName(localeInfo.MINIMAP_ZONE_NAME_DICT[mapName]) except: pass 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") 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.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 def OnUpdate(self): 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 "empty_guild_area" == sName: sName = localeInfo.GUILD_EMPTY_AREA 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)) (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 Hide(self): 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) self.board.SetSize(iSizeX + 15, iSizeY + 38) #self.AtlasMainWindow.SetSize(iSizeX, iSizeY) 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.wndBookMission = uimission.MissionWindow() ## button k.misji 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) self.interface = None 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.KsiegaPrzycisk = 0 ## button k.misji self.wndBookMission = None ## button k.misji self.tooltipMiniMapOpen = 0 self.tooltipMiniMapClose = 0 self.tooltipScaleUp = 0 self.tooltipScaleDown = 0 self.tooltipAtlasOpen = 0 self.KsiegaOpen = 0 ## button k.misji self.tooltipInfo = None self.serverInfo = None self.interface = None def SetMapName(self, mapName): self.mapName=mapName self.AtlasWindow.SetMapName(mapName) 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() if localeInfo.IsARABIC(): pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "Minimap.py") else: 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.KsiegaPrzycisk = self.GetChild("KsiegaPrzycisk") ## button k.misji except: import exception exception.Abort("MiniMap.LoadWindow.Bind") if constInfo.MINIMAP_POSITIONINFO_ENABLE==0: self.positionInfo.Hide() self.serverInfo.SetText(net.GetServerInfo()) 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)) self.KsiegaPrzycisk.SetEvent(ui.__mem_func__(self.ShowKsiegaMisji)) ## button k.misji (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) # (ButtonPosX, ButtonPosY) = self.KsiegaPrzycisk.GetGlobalPosition() ## button k.misji # self.KsiegaOpen.SetTooltipPosition(ButtonPosX, ButtonPosY) ##k.misji 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)) 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() else: self.AtlasWindow.Hide() ##naprawa otwirania minimapy def ToggleAtlasWindow(self): if not miniMap.IsAtlas(): return if self.AtlasWindow.IsShow(): self.AtlasWindow.Hide() else: self.AtlasWindow.Show() #### ## button k.misji def ShowKsiegaMisji(self): if self.wndBookMission: if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Show() Sysser clienta właśnie nic mi nie pokazuje podczas klikniecia w button. W załączniku przesyłam pliki od strony clienta. game.py interfacemodule.py constInfo.py
Opublikowano 1 Maja 20241 Maj O kurwa... 😆 Janusz coś ty tu odpierdolił, wywal to co tam dodałeś i zrób tak: def ShowKsiegaMisji(self): import uimission self.uimission.MissionWindow().Open()
Opublikowano 4 Maja 20244 Maj Rozwiązanie W dniu 1.05.2024 o 19:12, Sevence napisał(a): O kur**... 😆 Janusz coś ty tu odpierdolił, wywal to co tam dodałeś i zrób tak: def ShowKsiegaMisji(self): import uimission self.uimission.MissionWindow().Open() Hehe Miecio nie tędy droga 😆 choć tok myślenia jak najbardziej na plusik! Wysłałem pliczek poprawiony nie tak dawno, zobaczymy czy zadziała, w sumie powinno ale no 😄 Chyba za jakiś czas pora najwyższa będzie napisać TuT w kilku możliwościach dodania przycisku na minimapce ;d Co do rozwiązania: Mini-tut (możliwe uniwersalny) dodawania buttonu pod minimapkę: Spoiler Otwórz plik: uiminimap.py 1. Na górze, pod ostatnim importem, dodaj: if app.RENEWAL_MISSION_BOOKS: import uiMission 2. Znajdź: self.serverInfo = None Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.KsiegaPrzycisk = None self.wndBookMission = None 3. Znajdź: self.serverInfo = self.GetChild("ServerInfo") Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.KsiegaPrzycisk = self.GetChild("KsiegaPrzycisk") 4. Znajdź: if miniMap.IsAtlas(): self.AtlasShowButton.SetEvent(ui.__mem_func__(self.ShowAtlas)) Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.KsiegaPrzycisk.SetEvent(ui.__mem_func__(self.OpenMissionButton)) 5. Znajdź: def Destroy(self): self.HideMiniMap() self.AtlasWindow.Destroy() self.AtlasWindow = None Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.wndBookMission.Close() self.wndBookMission.Destroy() self.wndBookMission = None 6. Na sam koniec pliku, dodaj: if app.RENEWAL_MISSION_BOOKS: def OpenMissionButton(self): if self.wndBookMission is None: self.wndBookMission = uiMission.MissionWindow() if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Open() Pamiętaj o zostawieniu jednego enter'a na samym końcu pliku. Jeśli wyrzuci komuś komunikat z None coś tam, można zapisać w ten sposób ostatni wpis na samym końcu pliku: if app.RENEWAL_MISSION_BOOKS: def OpenMissionButton(self): if self.wndBookMission == None: self.wndBookMission = uiMission.MissionWindow() if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Open() Można też w taki sposób sobie dodać na koniec pliku: if app.RENEWAL_MISSION_BOOKS: def MakeBookMission(self): if self.wndBookMission == None: self.wndBookMission = uiMission.MissionWindow() def OpenMissionButton(self): self.MakeBookMission() if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Open() To już zależy jak kto woli i lubi. Jeśli jednak nie pojawi się, to w punkcie 6 zamiast wklejać tamto, to polecam wkleić to: if app.RENEWAL_MISSION_BOOKS: def OpenMissionButton(self): try: interface = constInfo.GetInterfaceInstance() if interface: interface.OpenBookMission() except: pass Reszta, którą autor już posiada więc zabiorę by była jasność Otwórz plik: uiscript->minimap.py Dodaj (wiadome raczej gdzie, każdy ma inaczej): ## Przycisk KM { "name" : "KsiegaPrzycisk", "type" : "button", "x" : -8, "y" : 26, "tooltip_text" : "Księga Misji", "default_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje1.png", "over_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje2.png", "down_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje3.png", }, No nic pora spać 🛏😴 Edytowane 4 Maja 20244 Maj przez HelpDev
Opublikowano 4 Maja 20244 Maj Autor 16 godzin temu, HelpDev napisał(a): Hehe Miecio nie tędy droga 😆 choć tok myślenia jak najbardziej na plusik! Wysłałem pliczek poprawiony nie tak dawno, zobaczymy czy zadziała, w sumie powinno ale no 😄 Chyba za jakiś czas pora najwyższa będzie napisać TuT w kilku możliwościach dodania przycisku na minimapce ;d Co do rozwiązania: Mini-tut (możliwe uniwersalny) dodawania buttonu pod minimapkę: Ukryj zawartość Otwórz plik: uiminimap.py 1. Na górze, pod ostatnim importem, dodaj: if app.RENEWAL_MISSION_BOOKS: import uiMission 2. Znajdź: self.serverInfo = None Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.KsiegaPrzycisk = None self.wndBookMission = None 3. Znajdź: self.serverInfo = self.GetChild("ServerInfo") Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.KsiegaPrzycisk = self.GetChild("KsiegaPrzycisk") 4. Znajdź: if miniMap.IsAtlas(): self.AtlasShowButton.SetEvent(ui.__mem_func__(self.ShowAtlas)) Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.KsiegaPrzycisk.SetEvent(ui.__mem_func__(self.OpenMissionButton)) 5. Znajdź: def Destroy(self): self.HideMiniMap() self.AtlasWindow.Destroy() self.AtlasWindow = None Pod znalezioną frazą, dodaj: if app.RENEWAL_MISSION_BOOKS: self.wndBookMission.Close() self.wndBookMission.Destroy() self.wndBookMission = None 6. Na sam koniec pliku, dodaj: if app.RENEWAL_MISSION_BOOKS: def OpenMissionButton(self): if self.wndBookMission is None: self.wndBookMission = uiMission.MissionWindow() if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Open() Pamiętaj o zostawieniu jednego enter'a na samym końcu pliku. Jeśli wyrzuci komuś komunikat z None coś tam, można zapisać w ten sposób ostatni wpis na samym końcu pliku: if app.RENEWAL_MISSION_BOOKS: def OpenMissionButton(self): if self.wndBookMission == None: self.wndBookMission = uiMission.MissionWindow() if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Open() Można też w taki sposób sobie dodać na koniec pliku: if app.RENEWAL_MISSION_BOOKS: def MakeBookMission(self): if self.wndBookMission == None: self.wndBookMission = uiMission.MissionWindow() def OpenMissionButton(self): self.MakeBookMission() if self.wndBookMission.IsShow(): self.wndBookMission.Close() else: self.wndBookMission.Open() To już zależy jak kto woli i lubi. Reszta, którą autor już posiada więc zabiorę by była jasność Otwórz plik: uiscript->minimap.py Dodaj (wiadome raczej gdzie, każdy ma inaczej): ## Przycisk KM { "name" : "KsiegaPrzycisk", "type" : "button", "x" : -8, "y" : 26, "tooltip_text" : "Księga Misji", "default_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje1.png", "over_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje2.png", "down_image" : "d:/ymir work/ui/game/ikony/ksiegamisji/misje3.png", }, No nic pora spać 🛏😴 Dziękuje, jak najbardziej działa a tutaj daje rozwiązanie od helpdeva jako drugie rozwiązanie: if app.RENEWAL_MISSION_BOOKS: def OpenMissionButton(self): try: interface = constInfo.GetInterfaceInstance() if interface: interface.OpenBookMission() except: pass
Witam, implementacje buttonów od strony uiinventory wiem jak zrobić ale mam problem od strony uiminimap.
Bazowałem na podobnej zasadzie jak w inventory ale coś mi nie chce własnie zatrybić w uiminimap.
Zrobiłem to w taki sposób:
uiscript -> minimap.py
Żeby ułatwić odnalezienie kodu, dodałem komentarz w postaci ## button k.misji
A tutaj uiminimap.py:
Sysser clienta właśnie nic mi nie pokazuje podczas klikniecia w button.
W załączniku przesyłam pliki od strony clienta.
game.py interfacemodule.py constInfo.py