shrpnl 1
shrpnl
YusufŞimşek14 1
YusufŞimşek14
berzahx 2
berzahx
xranzei 1
xranzei
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
romegames 1
romegames
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Party Extend Fix

  • Konuyu başlatan Konuyu başlatan Silverhand
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 102

Silverhand

SilveriusPanel
TC Kimlik Numarası Doğrulanmış Üye
Moderator
Katılım
26 Eki 2021
Konular
196
Mesajlar
910
Çözüm
6
Online süresi
3mo 6d
Reaksiyon Skoru
962
Altın Konu
39
Başarım Puanı
184
Yaş
28
MmoLira
5,274
DevLira
36
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Parti penceresinde, çok fazla parti üyesi olduğunda ekrandan taşma sorununu gideren bir düzeltme.

Ne yapıyor?​


  • Fazladan parti üyelerini ekran dışına taşırmak yerine kaydırılabilir bir listeye ekler.
  • Kaydırma (scroll) desteği ekler ve kaynak kodunda belirlenen limite göre aynı anda kaç üyenin görüneceğini ayarlamanıza olanak tanır (örneğin 6 üye veya istediğiniz başka bir sayı).

Not​


Bu düzenleme, orijinal parti penceresi görünümünü ve stilini korurken, parti çok büyüdüğünde üyelerin ekran dışına taşması sorununu çözer.

Ekran görüntüsü 2026-06-12 020441.png



Kod:
// Locale_inc.h:
#define ENABLE_FIX_PARTY_EXTEND
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
// PythonApplicationModule.cpp:

// Add / keep:
#ifdef ENABLE_FIX_PARTY_EXTEND
    PyModule_AddIntConstant(poModule, "ENABLE_FIX_PARTY_EXTEND",   1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_FIX_PARTY_EXTEND",   0);
#endif
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
// root/uiparty.py

// Search:
        self.__LoadBoard()

// Add BEFORE:
        if app.ENABLE_FIX_PARTY_EXTEND:
            self.parentWindow = None

------------------------------------------------------------------------------------------

// Search:
        self.leaderButton = None

// Add BEFORE:
        if app.ENABLE_FIX_PARTY_EXTEND:
            self.parentWindow = None

------------------------------------------------------------------------------------------

// Search:
        (x, y) = self.GetGlobalPosition()
        xPos = x + 110

// Add AFTER:
        if app.ENABLE_FIX_PARTY_EXTEND and self.parentWindow:
            if len(self.parentWindow.partyMemberInfoBoardList) > self.parentWindow.MAX_VISIBLE_MEMBERS:
                xPos += 20

------------------------------------------------------------------------------------------

// Search:
    def OnAffectOverOut(self, index):
        self.affectToolTip.HideToolTip()

// Add AFTER:
    if app.ENABLE_FIX_PARTY_EXTEND:
        def SetParentWindow(self, wnd):
            self.parentWindow = wnd

        def UpdateStateButtonsPosition(self):
            if not self.isShowStateButton:
                return

            if not self.IsShow():
                for button in self.stateButtonDict.values():
                    button.Hide()
                return

            if not any(button.IsShow() for button in self.stateButtonDict.values()):
                self.__ShowStateButton()
                return

            (base_x, base_y) = self.GetGlobalPosition()
            xPos = base_x + 110
            if self.parentWindow and len(self.parentWindow.partyMemberInfoBoardList) > self.parentWindow.MAX_VISIBLE_MEMBERS:
                xPos += 20

            skillLevel = self.__GetPartySkillLevel()

            if skillLevel >= 10 and self.stateButtonDict.has_key(player.PARTY_STATE_ATTACKER):
                button = self.stateButtonDict[player.PARTY_STATE_ATTACKER]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)
                    xPos += 23

            if skillLevel >= 20 and self.stateButtonDict.has_key(player.PARTY_STATE_BERSERKER):
                button = self.stateButtonDict[player.PARTY_STATE_BERSERKER]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)
                    xPos += 23

            if skillLevel >= 20 and self.stateButtonDict.has_key(player.PARTY_STATE_TANKER):
                button = self.stateButtonDict[player.PARTY_STATE_TANKER]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)
                    xPos += 23

            if skillLevel >= 25 and self.stateButtonDict.has_key(player.PARTY_STATE_BUFFER):
                button = self.stateButtonDict[player.PARTY_STATE_BUFFER]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)
                    xPos += 23

            if skillLevel >= 35 and self.stateButtonDict.has_key(player.PARTY_STATE_SKILL_MASTER):
                button = self.stateButtonDict[player.PARTY_STATE_SKILL_MASTER]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)
                    xPos += 23

            if skillLevel >= 40 and self.stateButtonDict.has_key(player.PARTY_STATE_DEFENDER):
                button = self.stateButtonDict[player.PARTY_STATE_DEFENDER]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)
                    xPos += 23

            if self.stateButtonDict.has_key(self.MEMBER_BUTTON_EXPEL):
                button = self.stateButtonDict[self.MEMBER_BUTTON_EXPEL]
                if button.IsShow():
                    button.SetPosition(xPos, base_y)

------------------------------------------------------------------------------------------

// Search:
        self.__CreatePartyMenuButton()

// Add BEFORE:
        if app.ENABLE_FIX_PARTY_EXTEND:
            self.partyScrollOffset = 0
            self.MAX_VISIBLE_MEMBERS = 6
            self.isRefreshScrollBar = True

            self.scrollBar = ui.ScrollBar()
            self.scrollBar.SetParent(self)
            self.scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScrollBarChange))
            self.scrollBar.AddFlag("float")
            self.scrollBar.Hide()

------------------------------------------------------------------------------------------

// Search:
        self.partyMenu = None

// Add AFTER:
        if app.ENABLE_FIX_PARTY_EXTEND:
            self.isRefreshScrollBar = True
            self.scrollBar = None

------------------------------------------------------------------------------------------

// Search:
            board.SetCharacterPID(pid)

// Add AFTER:
            if app.ENABLE_FIX_PARTY_EXTEND:
                board.SetParentWindow(self)

------------------------------------------------------------------------------------------

// Search:
    def __ArrangePartyMemberInfoBoard(self):

// REPLACE the whole function with:
    def __ArrangePartyMemberInfoBoard(self):
        if app.ENABLE_FIX_PARTY_EXTEND:
            if not self.partyMemberInfoBoardList:
                self.SetSize(PartyMemberInfoBoard.BOARD_WIDTH, 20)
                self.partyScrollOffset = 0
                self.scrollBar.Hide()
                return

            rowHeight = self.partyMemberInfoBoardList[0].GetHeight() + 2
            totalCount = len(self.partyMemberInfoBoardList)
            needsScroll = totalCount > self.MAX_VISIBLE_MEMBERS
            visibleCount = min(totalCount, self.MAX_VISIBLE_MEMBERS)
            visibleHeight = 20 + visibleCount * rowHeight
            buttonHeight = self.partyMenuButton.GetHeight()
            windowHeight = visibleHeight + buttonHeight + 4
            extraWidth = 12 if needsScroll else 0

            self.SetSize(PartyMemberInfoBoard.BOARD_WIDTH + extraWidth, windowHeight)

            if needsScroll:
                maxOffset = totalCount - self.MAX_VISIBLE_MEMBERS
                self.partyScrollOffset = max(0, min(self.partyScrollOffset, maxOffset))
            else:
                self.partyScrollOffset = 0

            startIndex = self.partyScrollOffset
            endIndex = startIndex + self.MAX_VISIBLE_MEMBERS

            yPos = 20
            for index, board in enumerate(self.partyMemberInfoBoardList):
                if startIndex <= index < endIndex:
                    board.SetPosition(0, yPos)
                    board.Show()
                    yPos += rowHeight
                else:
                    board.Hide()

                board.UpdateStateButtonsPosition()
                board.UpdateRect()

            if needsScroll:
                if self.isRefreshScrollBar:
                    barX = PartyMemberInfoBoard.BOARD_WIDTH + 2
                    self.scrollBar.SetPosition(barX, 20)
                    self.scrollBar.SetScrollBarSize(max(visibleHeight - 20, 1))
                    self.scrollBar.SetMiddleBarSize(float(self.MAX_VISIBLE_MEMBERS) / float(totalCount))
                    totalSteps = totalCount - self.MAX_VISIBLE_MEMBERS
                    self.scrollBar.SetScrollStep(float(4.0) / float(totalSteps))
                    self.scrollBar.LockScroll()
                    self.scrollBar.SetPos(float(self.partyScrollOffset) / float(totalSteps))
                    self.scrollBar.UnlockScroll()
                self.scrollBar.Show()
            else:
                self.scrollBar.Hide()

            buttonY = visibleHeight + 2
            xOffset = -5 if needsScroll else 0
            self.partyMenuButton.SetWindowVerticalAlignTop()
            self.partyMenuButton.SetPosition(xOffset, buttonY)
            self.partyMenuButton.SetTop()

            (_, yGlobal) = self.GetGlobalPosition()
            self.partyMenu.SetPosition(10, yGlobal + buttonY + buttonHeight + 4)
            return

        else:
            count = 0
            newHeight = 20

            for board in self.partyMemberInfoBoardList:
                board.SetPosition(0, count * (board.GetHeight() + 2))
                count += 1
                newHeight += board.GetHeight() + 2

            self.SetSize(PartyMemberInfoBoard.BOARD_WIDTH, newHeight)

            (x, y) = self.GetGlobalPosition()
            self.partyMenu.SetPosition(10, y + newHeight + 2)

------------------------------------------------------------------------------------------

// Add at the END of the page:
    if app.ENABLE_FIX_PARTY_EXTEND:
        def OnMouseWheel(self, delta):
            if not self.partyMemberInfoBoardList:
                return False
            if not self.scrollBar or not self.scrollBar.IsShow():
                return False
            return self.scrollBar.OnMouseWheel(delta)

        def OnScrollBarChange(self):
            maxOffset = max(0, len(self.partyMemberInfoBoardList) - self.MAX_VISIBLE_MEMBERS)
            newOffset = int(float(maxOffset) * self.scrollBar.GetPos() + 0.5)
            newOffset = max(0, min(newOffset, maxOffset))
            if newOffset != self.partyScrollOffset:
                self.partyScrollOffset = newOffset
                self.isRefreshScrollBar = False
                self.__ArrangePartyMemberInfoBoard()
                self.isRefreshScrollBar = True
                self.UpdateRect()
 
Diğer paylaşımlarını bekliyorum, Farklı şeyler çıkıcak gibi.
Paylaşım için teşekkürler.​
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 1, Misafir: 0)

Geri
Üst