ZyuX 672 Posted June 3, 2020 Share Posted June 3, 2020 Bellow you'll see a small fix for tooltip from bonus board like official. Spoiler Go in root, open uicharacterdetails.py and look for: 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 ) Replace that with: 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) Now look for: 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 ) Replace that with: 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) Now open uitooltip.py and look for def AutoAppendTextLine(self, text, color = FONT_COLOR, centerAlign = True): After the entire definition add this: def SetThinBoardSize(self, width, height = 12): self.toolTipWidth = width self.toolTipHeight = height Now go in ui.py and look for: elif Type == "thinboard": parent.Children[Index] = ThinBoard() parent.Children[Index].SetParent(parent) self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) Bellow add (or replace if you already have this): 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) Now look for class ThinBoard(Window): and after entire class add (or replace if you already have this): 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) #self.Base.GetWidth() #self.Base.GetHeight() """ 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() [!] Make sure you do the right TABS. 2 Link to comment Share on other sites More sharing options...
Bot Metin2 Dev 4886 Posted June 4, 2020 Bot Share Posted June 4, 2020 (edited) The tooltip in official pythons is not bug. You just need add the "OnMouseOverIn" and "OnMouseOverOut" in PythonWindow.cpp. Is not neccesary a lot of code for show it. Edited June 4, 2020 by M2Dev 1 Link to comment Share on other sites More sharing options...
LordRenoX 3 Posted June 8, 2020 Share Posted June 8, 2020 how exactly? On 6/4/2020 at 2:47 AM, WLsj24 said: The tooltip in official pythons is not bug. You just need add the "OnMouseOverIn" and "OnMouseOverOut" in PythonWindow.cpp. Is not neccesary a lot of code for show it. how exactly? Link to comment Share on other sites More sharing options...
Mafuyu 51 Posted June 14, 2020 Share Posted June 14, 2020 (edited) On 6/4/2020 at 2:47 AM, WLsj24 said: The tooltip in official pythons is not bug. You just need add the "OnMouseOverIn" and "OnMouseOverOut" in PythonWindow.cpp. Is not neccesary a lot of code for show it. nope, this function is on default in pythonwindow, but still bugs! there are more changed needed and btw; still doesnt work. Edited June 15, 2020 by Mafuyu Link to comment Share on other sites More sharing options...
Bot Metin2 Dev 4886 Posted June 17, 2020 Bot Share Posted June 17, 2020 On 6/14/2020 at 7:12 PM, Mafuyu said: nope, this function is on default in pythonwindow I did not mean that On 6/8/2020 at 5:36 PM, LordRenoX said: how exactly? void CButton::OnMouseOverIn() { if (!IsEnable()) return; Over(); PyCallClassMemberFunc(m_poHandler, "ShowToolTip", BuildEmptyTuple()); #ifdef ENABLE_DETAILS_UI PyCallClassMemberFunc(m_poHandler, "OnMouseOverIn", BuildEmptyTuple()); #endif } void CButton::OnMouseOverOut() { if (!IsEnable()) return; SetUp(); PyCallClassMemberFunc(m_poHandler, "HideToolTip", BuildEmptyTuple()); #ifdef ENABLE_DETAILS_UI PyCallClassMemberFunc(m_poHandler, "OnMouseOverOut", BuildEmptyTuple()); #endif } Link to comment Share on other sites More sharing options...
Mafuyu 51 Posted June 18, 2020 Share Posted June 18, 2020 On 6/17/2020 at 4:14 PM, WLsj24 said: I did not mean that void CButton::OnMouseOverIn() { if (!IsEnable()) return; Over(); PyCallClassMemberFunc(m_poHandler, "ShowToolTip", BuildEmptyTuple()); #ifdef ENABLE_DETAILS_UI PyCallClassMemberFunc(m_poHandler, "OnMouseOverIn", BuildEmptyTuple()); #endif } void CButton::OnMouseOverOut() { if (!IsEnable()) return; SetUp(); PyCallClassMemberFunc(m_poHandler, "HideToolTip", BuildEmptyTuple()); #ifdef ENABLE_DETAILS_UI PyCallClassMemberFunc(m_poHandler, "OnMouseOverOut", BuildEmptyTuple()); #endif } yeah no, it still shows nothing, more is missing^^ Link to comment Share on other sites More sharing options...
Mafuyu 51 Posted July 10, 2020 Share Posted July 10, 2020 Up Link to comment Share on other sites More sharing options...
peakzinho 21 Posted November 3, 2020 Share Posted November 3, 2020 for me dont work Link to comment Share on other sites More sharing options...
Accee 11 Posted December 17, 2020 Share Posted December 17, 2020 same Link to comment Share on other sites More sharing options...
Bot Metin2 Dev 4886 Posted December 17, 2020 Bot Share Posted December 17, 2020 (edited) Just make sure whole the files inside locale\xx\ui\windows is like the official client: Edited December 17, 2020 by M2Dev 1 Link to comment Share on other sites More sharing options...
Accee 11 Posted December 17, 2020 Share Posted December 17, 2020 works thx Link to comment Share on other sites More sharing options...
Jordan 22 Posted March 9, 2021 Share Posted March 9, 2021 (edited) Already solved. thx Edited March 9, 2021 by Jordan Link to comment Share on other sites More sharing options...
Recommended Posts