Kod:
ROTA: Gidin, uicharacterdetails.py dosyasını açın ve şunu arayın: for i in xrange(self.UI_MAX_COUNT): self.labelTextList[i].SetOverEvent( ui.__mem_func__(self.__ButtonOverIn), i ) self.labelTextList[i].SetOverOutEvent( ui.__mem_func__(self.__ButtonOverOut), i ) Bunu şununla değiştirin: for i in xrange(self.UI_MAX_COUNT): self.labelTextList[i].ShowToolTip = lambda arg=i: self.__ButtonOverIn(arg) self.labelTextList[i].HideToolTip = lambda arg=i: self.__ButtonOverOut(arg) Şimdi arayın: if i+self.LabelLineCount < self.UI_MAX_COUNT: self.labelTextList[i+self.LabelLineCount].SetOverEvent( ui.__mem_func__(self.__ButtonOverIn), self.LabelLineCount + self.startline_endlinecount ) self.labelTextList[i+self.LabelLineCount].SetOverOutEvent( ui.__mem_func__(self.__ButtonOverOut), self.LabelLineCount + self.startline_endlinecount ) Bunu şununla değiştirin: if i+self.LabelLineCount < self.UI_MAX_COUNT: self.labelTextList[i+self.LabelLineCount].ShowToolTip = lambda arg=self.LabelLineCount + self.startline_endlinecount: self.__ButtonOverIn(arg) self.labelTextList[i+self.LabelLineCount].HideToolTip = lambda arg=self.LabelLineCount + self.startline_endlinecount: self.__ButtonOverOut(arg) Şimdi uitooltip.py dosyasını açın ve def AutoAppendTextLine(self, text, color = FONT_COLOR, centerAlign = True) öğesini arayın: Tüm tanımdan sonra şunu ekleyin: def SetThinBoardSize(self, width, height = 12): self.toolTipWidth = width self.toolTipHeight = height Şimdi ui.py'ye gidin ve şunu arayın: elif Type == "thinboard": parent.Children[Index] = ThinBoard() parent.Children[Index].SetParent(parent) self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) Körük ekleyin (veya zaten varsa değiştirin): elif Type == "thinboard_gold": parent.Children[Index] = ThinBoardGold() parent.Children[Index].SetParent(parent) self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) elif Type == "thinboard_circle": parent.Children[Index] = ThinBoardCircle() parent.Children[Index].SetParent(parent) self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) Şimdi ThinBoard(Window) sınıfını arayın ve sınıfın tamamından sonra ekleyin (veya zaten buna sahipseniz değiştirin): class ThinBoardGold(Window): CORNER_WIDTH = 16 CORNER_HEIGHT = 16 LINE_WIDTH = 16 LINE_HEIGHT = 16 LT = 0 LB = 1 RT = 2 RB = 3 L = 0 R = 1 T = 2 B = 3 def __init__(self, layer = "UI"): Window.__init__(self, layer) CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Corner_"+dir+"_Gold.tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ] LineFileNames = [ "d:/ymir work/ui/pattern/thinboardgold/ThinBoard_Line_"+dir+"_Gold.tga" for dir in ["Left","Right","Top","Bottom"] ] self.MakeBase() self.Corners = [] for fileName in CornerFileNames: Corner = ExpandedImageBox() Corner.AddFlag("attach") Corner.AddFlag("not_pick") Corner.LoadImage(fileName) Corner.SetParent(self) Corner.SetPosition(0, 0) Corner.Show() self.Corners.append(Corner) self.Lines = [] for fileName in LineFileNames: Line = ExpandedImageBox() Line.AddFlag("attach") Line.AddFlag("not_pick") Line.LoadImage(fileName) Line.SetParent(self) Line.SetPosition(0, 0) Line.Show() self.Lines.append(Line) self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT) self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0) def __del__(self): Window.__del__(self) def SetSize(self, width, height): width = max(self.CORNER_WIDTH*2, width) height = max(self.CORNER_HEIGHT*2, height) Window.SetSize(self, width, height) self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT) self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0) self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT) self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT) self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT) verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) [HASH=65828]#self.Base.GetWidth([/HASH]) [HASH=65829]#self.Base.GetHeight([/HASH]) """ Defalt Width : 128, Height : 128 0.0 > 128, 1.0 > 256 """ if self.Base: self.Base.SetRenderingRect(0, 0, (float(width)-32)/float(self.Base.GetWidth()) - 1.0, (float(height)-32)/float(self.Base.GetHeight()) - 1.0) def MakeBase(self): self.Base = ExpandedImageBox() self.Base.AddFlag("not_pick") self.Base.LoadImage("d:/ymir work/ui/pattern/Board_Base.tga") self.Base.SetParent(self) self.Base.SetPosition(16, 16) self.Base.SetAlpha(0.8) self.Base.Show() def ShowInternal(self): self.Base.Show() for wnd in self.Lines: wnd.Show() for wnd in self.Corners: wnd.Show() def HideInternal(self): self.Base.Hide() for wnd in self.Lines: wnd.Hide() for wnd in self.Corners: wnd.Hide() class ThinBoardCircle(Window): CORNER_WIDTH = 4 CORNER_HEIGHT = 4 LINE_WIDTH = 4 LINE_HEIGHT = 4 BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0) LT = 0 LB = 1 RT = 2 RB = 3 L = 0 R = 1 T = 2 B = 3 def __init__(self, layer = "UI"): Window.__init__(self, layer) CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardcircle/ThinBoard_Corner_"+dir+"_Circle.tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ] LineFileNames = [ "d:/ymir work/ui/pattern/thinboardcircle/ThinBoard_Line_"+dir+"_Circle.tga" for dir in ["Left","Right","Top","Bottom"] ] self.Corners = [] for fileName in CornerFileNames: Corner = ExpandedImageBox() Corner.AddFlag("attach") Corner.AddFlag("not_pick") Corner.LoadImage(fileName) Corner.SetParent(self) Corner.SetPosition(0, 0) Corner.Show() self.Corners.append(Corner) self.Lines = [] for fileName in LineFileNames: Line = ExpandedImageBox() Line.AddFlag("attach") Line.AddFlag("not_pick") Line.LoadImage(fileName) Line.SetParent(self) Line.SetPosition(0, 0) Line.Show() self.Lines.append(Line) Base = Bar() Base.SetParent(self) Base.AddFlag("attach") Base.AddFlag("not_pick") Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT) Base.SetColor(self.BOARD_COLOR) Base.Show() self.Base = Base self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT) self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0) def __del__(self): Window.__del__(self) def SetSize(self, width, height): width = max(self.CORNER_WIDTH*2, width) height = max(self.CORNER_HEIGHT*2, height) Window.SetSize(self, width, height) self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT) self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0) self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT) self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT) self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT) verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2) def ShowInternal(self): self.Base.Show() for wnd in self.Lines: wnd.Show() for wnd in self.Corners: wnd.Show() def HideInternal(self): self.Base.Hide() for wnd in self.Lines: wnd.Hide() for wnd in self.Corners: wnd.Hide() [!] Doğru SEKMELERİ yaptığınızdan emin olun.
TÜRKÇELEŞTİRİLMİŞ ANLATIM - ALINTIDIR.
Metin2 Lobby'da [FIX] ipucu bonus Hatalarını Giderme Rehberi
Metin2 özel sunucularında ([FIX] ipucu bonus) gibi hata mesajları bazen oyuncuların oyun deneyimini bozabilir. Bu rehberde, Metin2 lobby ortamında ipucu bonus hatasının nasıl düzeltileceğini adım adım ele alacağız.
Neden [FIX] ipucu bonus Hatası Oluşur?
Metin2 özel sunucularda ipucu bonus hatası genellikle client-side veya server-side eksik yapılandırmalardan kaynaklanır. Bu hata, oyuncuların bonus sistemlerinden etkilenmesini önleyebilir veya hatalı bilgi gösterimlerine sebep olabilir.
Hatanın Neden Kaynağı Tespiti
Öncelikle, Metin2 sunucunuzda ipucu bonus sistemi aktif mi, yoksa uiscript dosyalarında eksiklik var mı diye kontrol edilmelidir. Özellikle py root klasöründe bonus ile ilgili dosyaların eksik olması bu hataya neden olabilir.
Fix Uygulamaları
1. uiscript klasöründe bonus_hints.py veya benzeri bir dosya eksikse, doğru yapılandırılmış bir dosya ile değiştirilmelidir.
2. game server tarafında bonus sistemine ait C++ kaynak kodlar[/CHAR]nda eksiklik varsa, source edit işlemiyle gerekli fonksiyonlar eklenmelidir.
3. db core ile game core uyumunda eksiklikler varsa, auth ve game sunucularında bonus tabloları eksiksiz şekilde tanımlanmalıdır.
Bonus Sistemi Kodlama Örneği
Python tarafında basit bir bonus kontrolü şu şekilde yapılabilir:
def check_bonus_hints():
if player.has_bonus_hint():
return True
else:
return False
Bu kod parçası, Metin2 sunucusunda bonus ipuçlarının kontrolünü sağlar. Py GUI ile bu fonksiyon görsel olarak da kullanıcıya aktarılabilir.
Yanlış Yapılandırmalar
Bazı Metin2 geliştiricileri, uiscript dosyasında bonus sistemini aktif etmeden server-side kodlamayı yapmaya çalışırlar. Bu durumda [FIX] ipucu bonus hatası oluşur.
Kapanış
Metin2 özel sunucularında bonus sistemlerinin sağlıklı çalışması için hem client hem de server tarafında eksiksiz yapılandırma yapılması gerekir. Metin2lobby.com olarak, Metin2 gelişimine katkı sunan community üyelerine yardımcı olmaya devam ediyoruz.
[FIX] ipucu bonus Fix Guide on Metin2 Lobby
In Metin2 private servers, errors like ([FIX] ipucu bonus) can disrupt the gaming experience for players. This guide addresses step-by-step how to fix the ipucu bonus error within the Metin2 lobby environment.
Why Does the [FIX] ipucu bonus Error Occur?
Metin2 private server errors such as ipucu bonus typically arise from missing configurations either on the client-side or server-side. This error may prevent players from receiving bonuses or cause incorrect information displays.
Identifying the Root Cause
Firstly, check whether the ipucu bonus system is active on your Metin2 server or if there are any missing files in the uiscript folder. Missing files related to bonus in the py root directory might trigger this error.
Fix Implementations
1. If a file like bonus_hints.py is missing in the uiscript folder, replace it with a properly configured version.
2. If there are missing functions in the C++ source codes related to the bonus system on the game server side, add them via source edit.
3. If there are inconsistencies between the db core and game core, ensure that bonus tables are fully defined in both auth and game servers.
Sample Bonus System Code
A simple bonus check in Python could look like this:
def check_bonus_hints():
if player.has_bonus_hint():
return True
else:
return False
This code snippet handles the check for bonus hints in the Metin2 server. The function can be visually presented to the user via Py GUI.
Misconfigurations
Some Metin2 developers attempt to implement server-side coding without activating the bonus system in the uiscript file. This leads to the [FIX] ipucu bonus error.
Conclusion
For bonus systems in Metin2 private servers to operate correctly, complete configuration is required on both the client and server sides. At Metin2lobby.com, we continue to support the community members contributing to Metin2 development.
