Skocz do zawartości
Opublikowano

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

Rozwiązane przez HelpDev

Przejdź do rozwiązania

Featured Replies

Opublikowano

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
  • 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 przez HelpDev

Opublikowano
  • 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

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.