Jump to content

Fix Notice Color


Blend

Recommended Posts

Hello devs. Here is my fix of lua color string. Look at screens.

Here is the problem:
NUOq.png



And here is fixed screen:
u0mp.png




How to fix? Open uitip.py and find self.__AppendText(curTime, text)
(must by Class TipBoard, not BigBoard)
Repleace to:

Quote

self.__AppendText(curTime, self.notice(text))



After go to last line of Class TipBoard and paste:
 

Quote

    def notice(self, text):
        if text.find("|h") >= 0:
            self.a = text.split("|h")
            return self.notice2(self.GetTextNot(self.a, len(self.a)))
        else:
            return self.notice2(text)
                
    def notice2(self, text):
        if text.find("|cFF") >= 0:
            self.x = text
            while self.x.find("|cFF") >=0:
                self.le = self.x.find("|cFF")+4
                self.a = self.x.split("|cFF" + self.x[self.le] + self.x[self.le+1] + self.x[self.le+2] + self.x[self.le+3] + self.x[self.le+4] + self.x[self.le+5])
                self.x = self.GetTextNot(self.a, len(self.a))
            if self.x.find("|cff") >= 0:
                while self.x.find("|cff") >=0:
                    self.le = self.x.find("|cff")+4
                    self.a = self.x.split("|cff" + self.x[self.le] + self.x[self.le+1] + self.x[self.le+2] + self.x[self.le+3] + self.x[self.le+4] + self.x[self.le+5])
                    self.x = self.GetTextNot(self.a, len(self.a))
                return self.x
            else:
                return self.x
        else:
            return text
            
    def GetTextNot(self, text, c):
        self.out = ""
        for i in range(c):
            self.out = self.out + text
        return self.out



Its all. Nothing hard. Fix by Blend.

Edited by Metin2 Dev
Core X - External 2 Internal
  • Love 4
Link to comment
Share on other sites

  • Forum Moderator

This fix is very bad, you can use RE library and fix it with 3-4 lines.

m = re.search('\|c([a-zA-Z0-9]+)\|h', '|cFF29bfbf|hMetin2 is dead.')
# TODO: Replace |h|r with: str()
# TODO: Replace |c + m.groups()[0] + |h with: str()

6jGqaab.png

Is just an example, good luck.

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 2
  • Love 1
  • Love 6
Link to comment
Share on other sites

15 minutes ago, VegaS™ said:

This fix is very bad, you can use RE library and fix it with 3-4 lines.


m = re.search('\|c([a-zA-Z0-9]+)\|h', '|cFF29bfbf|hMetin2 is dead.')
# TODO: Replace |h|r with: str()
# TODO: Replace |c + m.groups()[0] + |h with: str()

6jGqaab.png

Is just an example, good luck.


Yes i know use re library, but my client get error if i use re, so i try to find fix without re library. Just with str.find() and str.split(). I think its good example for begginers to learn str. functions.

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • Active Member
	def StripColor(self,text):
		Search = re.search('\|c([a-zA-Z0-9]{0,8})', text)
		if Search:
			text = text.replace(Search.group(0),'')
			text = text.replace('|r','')
			text = text.replace('|h','')
		return text

 

Link to comment
Share on other sites

  • 1 year later...
  • Honorable Member

EterLib/TextBar.cpp:

Spoiler

 


#include <regex>
void CTextBar::TextOut(int ix, int iy, const char * c_szText)
{
	const auto x = std::regex_replace(c_szText, std::regex("\\|c[a-zA-Z0-9]+|\\|[r|R|H|h]"), "");
	c_szText = x.c_str();

	if (m_isBold) { // fix
		SIZE size { 0,0 };
		GetTextExtent(c_szText, &size);
		ix = (500 - size.cx) / 2;
	}

	m_dib.TextOut(ix, iy, c_szText);
	Invalidate();
}

 

or

we can use colors instead of removing them

https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 24
  • Lmao 1
  • Good 6
  • Love 11

 

Link to comment
Share on other sites

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.