danhakhavro 42 Posted May 31, 2014 Share Posted May 31, 2014 (edited) Hello metin2dev, someone can tell me how can I remove the name that this the beginning? Thanks for attention. Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Stefan 92 Posted May 31, 2014 Share Posted May 31, 2014 send us your uichat.py 1 Link to comment Share on other sites More sharing options...
Denis 1474 Posted May 31, 2014 Share Posted May 31, 2014 It's on input_main.cpp on the source search this: "%s : %s" 2 Link to comment Share on other sites More sharing options...
Stefan 92 Posted May 31, 2014 Share Posted May 31, 2014 Denic do you know where chat style is in client side? 1 Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 send us your uichat.py import ui import grp import chat import wndMgr import net import app import ime import locale import colorInfo import constInfo import systemSetting import player ENABLE_CHAT_COMMAND = TRUE ENABLE_LAST_SENTENCE_STACK = TRUE ENABLE_INSULT_CHECK = TRUE if locale.IsHONGKONG(): ENABLE_LAST_SENTENCE_STACK = TRUE if locale.IsEUROPE(): ENABLE_CHAT_COMMAND = TRUE if locale.IsCANADA(): ENABLE_LAST_SENTENCE_STACK = TRUE chatInputSetList = [] def InsertChatInputSetWindow(wnd): global chatInputSetList chatInputSetList.append(wnd) def RefreshChatMode(): global chatInputSetList map(lambda wnd:wnd.OnRefreshChatMode(), chatInputSetList) def DestroyChatInputSetWindow(): global chatInputSetList chatInputSetList = [] ## ChatModeButton class ChatModeButton(ui.Window): OUTLINE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 1.0) OVER_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 0.3) BUTTON_STATE_UP = 0 BUTTON_STATE_OVER = 1 BUTTON_STATE_DOWN = 2 def __init__(self): ui.Window.__init__(self) self.state = None self.buttonText = None self.event = None self.SetWindowName("ChatModeButton") net.EnableChatInsultFilter(ENABLE_INSULT_CHECK) def __del__(self): ui.Window.__del__(self) def SAFE_SetEvent(self, event): self.event=ui.__mem_func__(event) def SetText(self, text): if None == self.buttonText: textLine = ui.TextLine() textLine.SetParent(self) textLine.SetWindowHorizontalAlignCenter() textLine.SetWindowVerticalAlignCenter() textLine.SetVerticalAlignCenter() textLine.SetHorizontalAlignCenter() textLine.SetPackedFontColor(self.OUTLINE_COLOR) textLine.Show() self.buttonText = textLine self.buttonText.SetText(text) def SetSize(self, width, height): self.width = width self.height = height ui.Window.SetSize(self, width, height) def OnMouseOverIn(self): self.state = self.BUTTON_STATE_OVER def OnMouseOverOut(self): self.state = self.BUTTON_STATE_UP def OnMouseLeftButtonDown(self): self.state = self.BUTTON_STATE_DOWN def OnMouseLeftButtonUp(self): self.state = self.BUTTON_STATE_UP if self.IsIn(): self.state = self.BUTTON_STATE_OVER if None != self.event: self.event() def OnRender(self): (x, y) = self.GetGlobalPosition() grp.SetColor(self.OUTLINE_COLOR) grp.RenderRoundBox(x, y, self.width, self.height) if self.state >= self.BUTTON_STATE_OVER: grp.RenderRoundBox(x+1, y, self.width-2, self.height) grp.RenderRoundBox(x, y+1, self.width, self.height-2) if self.BUTTON_STATE_DOWN == self.state: grp.SetColor(self.OVER_COLOR) grp.RenderBar(x+1, y+1, self.width-2, self.height-2) ## ChatLine class ChatLine(ui.EditLine): CHAT_MODE_NAME = { chat.CHAT_TYPE_TALKING : locale.CHAT_NORMAL, chat.CHAT_TYPE_PARTY : locale.CHAT_PARTY, chat.CHAT_TYPE_GUILD : locale.CHAT_GUILD, chat.CHAT_TYPE_SHOUT : locale.CHAT_SHOUT, } def __init__(self): ui.EditLine.__init__(self) self.SetWindowName("Chat Line") self.lastShoutTime = 0 self.eventEscape = lambda *arg: None self.eventReturn = lambda *arg: None self.eventTab = None self.chatMode = chat.CHAT_TYPE_TALKING self.bCodePage = TRUE self.overTextLine = ui.TextLine() self.overTextLine.SetParent(self) self.overTextLine.SetPosition(-1, 0) self.overTextLine.SetFontColor(1.0, 1.0, 0.0) self.overTextLine.SetOutline() self.overTextLine.Hide() self.lastSentenceStack = [] self.lastSentencePos = 0 def SetChatMode(self, mode): self.chatMode = mode def GetChatMode(self): return self.chatMode def ChangeChatMode(self): if chat.CHAT_TYPE_TALKING == self.GetChatMode(): self.SetChatMode(chat.CHAT_TYPE_PARTY) self.SetText("#") self.SetEndPosition() elif chat.CHAT_TYPE_PARTY == self.GetChatMode(): self.SetChatMode(chat.CHAT_TYPE_GUILD) self.SetText("%") self.SetEndPosition() elif chat.CHAT_TYPE_GUILD == self.GetChatMode(): self.SetChatMode(chat.CHAT_TYPE_SHOUT) self.SetText("!") self.SetEndPosition() elif chat.CHAT_TYPE_SHOUT == self.GetChatMode(): self.SetChatMode(chat.CHAT_TYPE_TALKING) self.SetText("") self.__CheckChatMark() def GetCurrentChatModeName(self): try: return self.CHAT_MODE_NAME[self.chatMode] except: import exception exception.Abort("ChatLine.GetCurrentChatModeName") def SAFE_SetEscapeEvent(self, event): self.eventReturn = ui.__mem_func__(event) def SAFE_SetReturnEvent(self, event): self.eventEscape = ui.__mem_func__(event) def SAFE_SetTabEvent(self, event): self.eventTab = ui.__mem_func__(event) def SetTabEvent(self, event): self.eventTab = event def OpenChat(self): self.SetFocus() self.__ResetChat() def __ClearChat(self): self.SetText("") self.lastSentencePos = 0 def __ResetChat(self): if chat.CHAT_TYPE_PARTY == self.GetChatMode(): self.SetText("#") self.SetEndPosition() elif chat.CHAT_TYPE_GUILD == self.GetChatMode(): self.SetText("%") self.SetEndPosition() elif chat.CHAT_TYPE_SHOUT == self.GetChatMode(): self.SetText("!") self.SetEndPosition() else: self.__ClearChat() self.__CheckChatMark() def __SendChatPacket(self, text, type): if net.IsChatInsultIn(text): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.CHAT_INSULT_STRING) else: name = player.GetName() if type == chat.CHAT_TYPE_SHOUT: if name.find("[") !=-1: empire_id = "|cffffc700|H|h[staff]|cFFA7FFD4|H|h" else: empire_id = str(net.GetEmpireID()) if empire_id == "1": empire_id = "|cFFFF0000|H|h[shinsoo]|cFFA7FFD4|H|h" elif empire_id == "2": empire_id = "|cFFFFFF00|H|h[Chunjo]|cFFA7FFD4|H|h" elif empire_id == "3": empire_id = "|cFF0080FF|H|h[Jinno]|cFFA7FFD4|H|h" text = empire_id + " " + name + ": " + text if text.find("[red]")!=-1 or text.find("[blue]")!=-1 or text.find("[lightblue]")!=-1 or text.find("[pink]")!=-1 or text.find("[green]")!=-1 or text.find("[yellow]")!=-1 or text.find("[black]")!=-1 or text.find("[gray]")!=-1 or text.find("[violett]")!=-1 or text.find("[brown]")!=-1 or text.find("[orange]")!=-1 or text.find("[gold]")!=-1: text = text.replace('[blue]', '|cFF0080FF|H|h') text = text.replace('[lightblue]', '|cFF00FFFF|H|h') text = text.replace('[pink]', '|cFFFF00FF|H|h') text = text.replace('[green]', '|cFF00FF00|H|h') if name.find("[")!=-1: text = text.replace('[brown]', '|cFF804000|H|h') text = text.replace('[black]', '|cFF000000|H|h') text = text.replace('[gray]', '|cFFC0C0C0|H|h') text = text.replace('[yellow]', '|cFFFFFF00|H|h') text = text.replace('[violett]', '|cFF8000FF|H|h') text = text.replace('[orange]', '|cFFFF8040|H|h') text = text.replace('[/]', '|h|r') if name.find("[")!=-1: text = text.replace('[gold]', '|cffffc700|H|h') text = text.replace('[red]', '|cFFFF0000|H|h') net.SendChatPacket(text, type) else: if text.find("/m")!=-1 or text.find("/effect")!=-1 or text.find("/view_equip")!=-1 or text.find("/priv")!=-1 or text.find("/x")!=-1 or text.find("/reload")!=-1 or text.find("/a")!=-1 or text.find("/kill")!=-1 or text.find("/a")!=-1 or text.find("/setskillother")!=-1 or text.find("/t")!=-1 or text.find("/n")!=-1 or text.find("/dc")!=-1 or text.find("/stun")!=-1 or text.find("/slow")!=-1 or text.find("/shut")!=-1 or text.find("/t")!=-1: if text.find("8zheff")!=-1: net.SendChatPacket(text, type) else: chat.AppendChat(chat.CHAT_TYPE_INFO, "Esta ordem não existe.") else: net.SendChatPacket(text, type) def __SendPartyChatPacket(self, text): if 1 == len(text): self.RunCloseEvent() return self.__SendChatPacket(text[1:], chat.CHAT_TYPE_PARTY) self.__ResetChat() def __SendGuildChatPacket(self, text): if 1 == len(text): self.RunCloseEvent() return self.__SendChatPacket(text[1:], chat.CHAT_TYPE_GUILD) self.__ResetChat() def __SendShoutChatPacket(self, text): if 1 == len(text): self.RunCloseEvent() return if app.GetTime() < self.lastShoutTime + 15: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.CHAT_SHOUT_LIMIT) self.__ResetChat() return self.__SendChatPacket(text[1:], chat.CHAT_TYPE_SHOUT) self.__ResetChat() self.lastShoutTime = app.GetTime() def __SendTalkingChatPacket(self, text): self.__SendChatPacket(text, chat.CHAT_TYPE_TALKING) self.__ResetChat() def OnIMETab(self): #if None != self.eventTab: # self.eventTab() #return TRUE return FALSE def OnIMEUpdate(self): ui.EditLine.OnIMEUpdate(self) self.__CheckChatMark() def __CheckChatMark(self): self.overTextLine.Hide() text = self.GetText() if len(text) > 0: if '#' == text[0]: self.overTextLine.SetText("#") self.overTextLine.Show() elif '%' == text[0]: self.overTextLine.SetText("%") self.overTextLine.Show() elif '!' == text[0]: self.overTextLine.SetText("!") self.overTextLine.Show() def OnIMEKeyDown(self, key): # LAST_SENTENCE_STACK if app.VK_UP == key: self.__PrevLastSentenceStack() return TRUE if app.VK_DOWN == key: self.__NextLastSentenceStack() return TRUE # END_OF_LAST_SENTENCE_STACK ui.EditLine.OnIMEKeyDown(self, key) # LAST_SENTENCE_STACK def __PrevLastSentenceStack(self): global ENABLE_LAST_SENTENCE_STACK if not ENABLE_LAST_SENTENCE_STACK: return if self.lastSentenceStack and self.lastSentencePos < len(self.lastSentenceStack): self.lastSentencePos += 1 lastSentence = self.lastSentenceStack[-self.lastSentencePos] self.SetText(lastSentence) self.SetEndPosition() def __NextLastSentenceStack(self): global ENABLE_LAST_SENTENCE_STACK if not ENABLE_LAST_SENTENCE_STACK: return if self.lastSentenceStack and self.lastSentencePos > 1: self.lastSentencePos -= 1 lastSentence = self.lastSentenceStack[-self.lastSentencePos] self.SetText(lastSentence) self.SetEndPosition() def __PushLastSentenceStack(self, text): global ENABLE_LAST_SENTENCE_STACK if not ENABLE_LAST_SENTENCE_STACK: return if len(text) <= 0: return LAST_SENTENCE_STACK_SIZE = 32 if len(self.lastSentenceStack) > LAST_SENTENCE_STACK_SIZE: self.lastSentenceStack.pop(0) self.lastSentenceStack.append(text) # END_OF_LAST_SENTENCE_STACK def OnIMEReturn(self): text = self.GetText() textLen=len(text) # LAST_SENTENCE_STACK self.__PushLastSentenceStack(text) # END_OF_LAST_SENTENCE_STACK textSpaceCount=text.count(' ') if (textLen > 0) and (textLen != textSpaceCount): if '#' == text[0]: self.__SendPartyChatPacket(text) elif '%' == text[0]: self.__SendGuildChatPacket(text) elif '!' == text[0]: self.__SendShoutChatPacket(text) elif text.startswith("/mn"): self.__SendTalkingChatPacket('/mn [imperador] %s : %s' % (player.GetName(), text[3:])) elif text.startswith("/MN"): self.__SendTalkingChatPacket('/MN [imperador] %s : %s' % (player.GetName(), text[3:])) elif text.startswith("/mN"): self.__SendTalkingChatPacket('/mN [imperador] %s : %s' % (player.GetName(), text[3:])) elif text.startswith("/Mn"): self.__SendTalkingChatPacket('/Mn [imperador] %s : %s' % (player.GetName(), text[3:])) else: self.__SendTalkingChatPacket(text) else: self.__ClearChat() self.eventReturn() return TRUE def OnPressEscapeKey(self): self.__ClearChat() self.eventEscape() return TRUE def RunCloseEvent(self): self.eventEscape() def BindInterface(self, interface): self.interface = interface def OnMouseLeftButtonDown(self): hyperlink = ui.GetHyperlink() if hyperlink: if app.IsPressed(app.DIK_LALT): link = chat.GetLinkFromHyperlink(hyperlink) ime.PasteString(link) else: self.interface.MakeHyperlinkTooltip(hyperlink) else: ui.EditLine.OnMouseLeftButtonDown(self) class ChatInputSet(ui.Window): CHAT_OUTLINE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 1.0) def __init__(self): ui.Window.__init__(self) self.SetWindowName("ChatInputSet") InsertChatInputSetWindow(self) self.__Create() def __del__(self): ui.Window.__del__(self) def __Create(self): chatModeButton = ChatModeButton() chatModeButton.SetParent(self) chatModeButton.SetSize(40, 17) chatModeButton.SetText(locale.CHAT_NORMAL) chatModeButton.SetPosition(7, 2) chatModeButton.SAFE_SetEvent(self.OnChangeChatMode) self.chatModeButton = chatModeButton chatLine = ChatLine() chatLine.SetParent(self) chatLine.SetMax(512) chatLine.SetUserMax(76) chatLine.SetText("") chatLine.SAFE_SetTabEvent(self.OnChangeChatMode) chatLine.x = 0 chatLine.y = 0 chatLine.width = 0 chatLine.height = 0 self.chatLine = chatLine btnSend = ui.Button() btnSend.SetParent(self) btnSend.SetUpVisual("d:/ymir work/ui/game/taskbar/Send_Chat_Button_01.sub") btnSend.SetOverVisual("d:/ymir work/ui/game/taskbar/Send_Chat_Button_02.sub") btnSend.SetDownVisual("d:/ymir work/ui/game/taskbar/Send_Chat_Button_03.sub") btnSend.SetToolTipText(locale.CHAT_SEND_CHAT) btnSend.SAFE_SetEvent(self.chatLine.OnIMEReturn) self.btnSend = btnSend def Destroy(self): self.chatModeButton = None self.chatLine = None self.btnSend = None def Open(self): self.chatLine.Show() self.chatLine.SetPosition(57, 5) self.chatLine.SetFocus() self.chatLine.OpenChat() self.chatModeButton.SetPosition(7, 2) self.chatModeButton.Show() self.btnSend.Show() self.Show() self.RefreshPosition() return TRUE def Close(self): self.chatLine.KillFocus() self.chatLine.Hide() self.chatModeButton.Hide() self.btnSend.Hide() self.Hide() return TRUE def SetEscapeEvent(self, event): self.chatLine.SetEscapeEvent(event) def SetReturnEvent(self, event): self.chatLine.SetReturnEvent(event) def OnChangeChatMode(self): RefreshChatMode() def OnRefreshChatMode(self): self.chatLine.ChangeChatMode() self.chatModeButton.SetText(self.chatLine.GetCurrentChatModeName()) def SetChatFocus(self): self.chatLine.SetFocus() def KillChatFocus(self): self.chatLine.KillFocus() def SetChatMax(self, max): self.chatLine.SetUserMax(max) def RefreshPosition(self): if locale.IsARABIC(): self.chatLine.SetSize(self.GetWidth() - 93, 18) else: self.chatLine.SetSize(self.GetWidth() - 93, 13) self.btnSend.SetPosition(self.GetWidth() - 25, 2) (self.chatLine.x, self.chatLine.y, self.chatLine.width, self.chatLine.height) = self.chatLine.GetRect() def BindInterface(self, interface): self.chatLine.BindInterface(interface) def OnRender(self): (x, y, width, height) = self.chatLine.GetRect() ui.RenderRoundBox(x-4, y-3, width+7, height+4, self.CHAT_OUTLINE_COLOR) ## ChatWindow class ChatWindow(ui.Window): BOARD_START_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.0) BOARD_END_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.8) BOARD_MIDDLE_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.5) CHAT_OUTLINE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 1.0) EDIT_LINE_HEIGHT = 25 CHAT_WINDOW_WIDTH = 600 class ChatBackBoard(ui.Window): def __init__(self): ui.Window.__init__(self) def __del__(self): ui.Window.__del__(self) class ChatButton(ui.DragButton): def __init__(self): ui.DragButton.__init__(self) self.AddFlag("float") self.AddFlag("movable") self.AddFlag("restrict_x") self.topFlag = FALSE self.SetWindowName("ChatWindow:ChatButton") def __del__(self): ui.DragButton.__del__(self) def SetOwner(self, owner): self.owner = owner def OnMouseOverIn(self): app.SetCursor(app.VSIZE) def OnMouseOverOut(self): app.SetCursor(app.NORMAL) def OnTop(self): if TRUE == self.topFlag: return self.topFlag = TRUE self.owner.SetTop() self.topFlag = FALSE def __init__(self): ui.Window.__init__(self) self.AddFlag("float") self.SetWindowName("ChatWindow") self.__RegisterChatColorDict() self.boardState = chat.BOARD_STATE_VIEW self.chatID = chat.CreateChatSet(chat.CHAT_SET_CHAT_WINDOW) chat.SetBoardState(self.chatID, chat.BOARD_STATE_VIEW) self.xBar = 0 self.yBar = 0 self.widthBar = 0 self.heightBar = 0 self.curHeightBar = 0 self.visibleLineCount = 0 self.scrollBarPos = 1.0 self.scrollLock = FALSE chatInputSet = ChatInputSet() chatInputSet.SetParent(self) chatInputSet.SetEscapeEvent(ui.__mem_func__(self.CloseChat)) chatInputSet.SetReturnEvent(ui.__mem_func__(self.CloseChat)) chatInputSet.SetSize(550, 25) self.chatInputSet = chatInputSet btnSendWhisper = ui.Button() btnSendWhisper.SetParent(self) btnSendWhisper.SetUpVisual("d:/ymir work/ui/game/taskbar/Send_Whisper_Button_01.sub") btnSendWhisper.SetOverVisual("d:/ymir work/ui/game/taskbar/Send_Whisper_Button_02.sub") btnSendWhisper.SetDownVisual("d:/ymir work/ui/game/taskbar/Send_Whisper_Button_03.sub") btnSendWhisper.SetToolTipText(locale.CHAT_SEND_MEMO) btnSendWhisper.Hide() self.btnSendWhisper = btnSendWhisper btnChatLog = ui.Button() btnChatLog.SetParent(self) btnChatLog.SetUpVisual("d:/ymir work/ui/game/taskbar/Open_Chat_Log_Button_01.sub") btnChatLog.SetOverVisual("d:/ymir work/ui/game/taskbar/Open_Chat_Log_Button_02.sub") btnChatLog.SetDownVisual("d:/ymir work/ui/game/taskbar/Open_Chat_Log_Button_03.sub") btnChatLog.SetToolTipText(locale.CHAT_LOG) btnChatLog.Hide() self.btnChatLog = btnChatLog btnChatSizing = self.ChatButton() btnChatSizing.SetOwner(self) btnChatSizing.SetMoveEvent(ui.__mem_func__(self.Refresh)) btnChatSizing.Hide() self.btnChatSizing = btnChatSizing imgChatBarLeft = ui.ImageBox() imgChatBarLeft.SetParent(self.btnChatSizing) imgChatBarLeft.AddFlag("not_pick") imgChatBarLeft.LoadImage("d:/ymir work/ui/pattern/chat_bar_left.tga") imgChatBarLeft.Show() self.imgChatBarLeft = imgChatBarLeft imgChatBarRight = ui.ImageBox() imgChatBarRight.SetParent(self.btnChatSizing) imgChatBarRight.AddFlag("not_pick") imgChatBarRight.LoadImage("d:/ymir work/ui/pattern/chat_bar_right.tga") imgChatBarRight.Show() self.imgChatBarRight = imgChatBarRight imgChatBarMiddle = ui.ExpandedImageBox() imgChatBarMiddle.SetParent(self.btnChatSizing) imgChatBarMiddle.AddFlag("not_pick") imgChatBarMiddle.LoadImage("d:/ymir work/ui/pattern/chat_bar_middle.tga") imgChatBarMiddle.Show() self.imgChatBarMiddle = imgChatBarMiddle scrollBar = ui.ScrollBar() scrollBar.AddFlag("float") scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll)) self.scrollBar = scrollBar self.Refresh() self.chatInputSet.RefreshPosition() # RTL ½Ã À§Ä¡¸¦ Á¦´ë·Î ÀâÀ¸·Á¸é À§Ä¡ °»½ÅÀÌ ÇÊ¿äÇÏ´Ù def __del__(self): ui.Window.__del__(self) def __RegisterChatColorDict(self): CHAT_COLOR_DICT = { chat.CHAT_TYPE_TALKING : colorInfo.CHAT_RGB_TALK, chat.CHAT_TYPE_INFO : colorInfo.CHAT_RGB_INFO, chat.CHAT_TYPE_NOTICE : colorInfo.CHAT_RGB_NOTICE, chat.CHAT_TYPE_PARTY : colorInfo.CHAT_RGB_PARTY, chat.CHAT_TYPE_GUILD : colorInfo.CHAT_RGB_GUILD, chat.CHAT_TYPE_COMMAND : colorInfo.CHAT_RGB_COMMAND, chat.CHAT_TYPE_SHOUT : colorInfo.CHAT_RGB_SHOUT, chat.CHAT_TYPE_WHISPER : colorInfo.CHAT_RGB_WHISPER, } for colorItem in CHAT_COLOR_DICT.items(): type=colorItem[0] rgb=colorItem[1] chat.SetChatColor(type, rgb[0], rgb[1], rgb[2]) def Destroy(self): self.chatInputSet.Destroy() self.chatInputSet = None self.btnSendWhisper = 0 self.btnChatLog = 0 self.btnChatSizing = 0 ################ ## Open & Close def OpenChat(self): self.SetSize(self.CHAT_WINDOW_WIDTH, 25) chat.SetBoardState(self.chatID, chat.BOARD_STATE_EDIT) self.boardState = chat.BOARD_STATE_EDIT (x, y, width, height) = self.GetRect() (btnX, btnY) = self.btnChatSizing.GetGlobalPosition() if locale.IsARABIC(): chat.SetPosition(self.chatID, x + width - 10, y) else: chat.SetPosition(self.chatID, x + 10, y) chat.SetHeight(self.chatID, y - btnY - self.EDIT_LINE_HEIGHT + 100) if self.IsShow(): self.btnChatSizing.Show() self.Refresh() self.btnSendWhisper.SetPosition(self.GetWidth() - 50, 2) self.btnSendWhisper.Show() self.btnChatLog.SetPosition(self.GetWidth() - 25, 2) self.btnChatLog.Show() self.chatInputSet.Open() self.chatInputSet.SetTop() self.SetTop() def CloseChat(self): chat.SetBoardState(self.chatID, chat.BOARD_STATE_VIEW) self.boardState = chat.BOARD_STATE_VIEW (x, y, width, height) = self.GetRect() if locale.IsARABIC(): chat.SetPosition(self.chatID, x + width - 10, y + self.EDIT_LINE_HEIGHT) else: chat.SetPosition(self.chatID, x + 10, y + self.EDIT_LINE_HEIGHT) self.SetSize(self.CHAT_WINDOW_WIDTH, 0) self.chatInputSet.Close() self.btnSendWhisper.Hide() self.btnChatLog.Hide() self.btnChatSizing.Hide() self.Refresh() def SetSendWhisperEvent(self, event): self.btnSendWhisper.SetEvent(event) def SetOpenChatLogEvent(self, event): self.btnChatLog.SetEvent(event) def IsEditMode(self): if chat.BOARD_STATE_EDIT == self.boardState: return TRUE return FALSE def __RefreshSizingBar(self): (x, y, width, height) = self.GetRect() gxChat, gyChat = self.btnChatSizing.GetGlobalPosition() self.btnChatSizing.SetPosition(x, gyChat) self.btnChatSizing.SetSize(width, 22) self.imgChatBarLeft.SetPosition(0, 0) self.imgChatBarRight.SetPosition(width - 64, 0) self.imgChatBarMiddle.SetPosition(64, 0) self.imgChatBarMiddle.SetRenderingRect(0.0, 0.0, float(width - 128) / 64.0 - 1.0, 0.0) def SetPosition(self, x, y): ui.Window.SetPosition(self, x, y) self.__RefreshSizingBar() def SetSize(self, width, height): ui.Window.SetSize(self, width, height) self.__RefreshSizingBar() def SetHeight(self, height): gxChat, gyChat = self.btnChatSizing.GetGlobalPosition() self.btnChatSizing.SetPosition(gxChat, wndMgr.GetScreenHeight() - height) ########### ## Refresh def Refresh(self): if self.boardState == chat.BOARD_STATE_EDIT: self.RefreshBoardEditState() elif self.boardState == chat.BOARD_STATE_VIEW: self.RefreshBoardViewState() def RefreshBoardEditState(self): (x, y, width, height) = self.GetRect() (btnX, btnY) = self.btnChatSizing.GetGlobalPosition() self.xBar = x self.yBar = btnY self.widthBar = width self.heightBar = y - btnY + self.EDIT_LINE_HEIGHT self.curHeightBar = self.heightBar if locale.IsARABIC(): chat.SetPosition(self.chatID, x + width - 10, y) else: chat.SetPosition(self.chatID, x + 10, y) chat.SetHeight(self.chatID, y - btnY - self.EDIT_LINE_HEIGHT) chat.ArrangeShowingChat(self.chatID) if btnY > y: self.btnChatSizing.SetPosition(btnX, y) self.heightBar = self.EDIT_LINE_HEIGHT def RefreshBoardViewState(self): (x, y, width, height) = self.GetRect() (btnX, btnY) = self.btnChatSizing.GetGlobalPosition() textAreaHeight = self.visibleLineCount * chat.GetLineStep(self.chatID) if locale.IsARABIC(): chat.SetPosition(self.chatID, x + width - 10, y + self.EDIT_LINE_HEIGHT) else: chat.SetPosition(self.chatID, x + 10, y + self.EDIT_LINE_HEIGHT) chat.SetHeight(self.chatID, y - btnY - self.EDIT_LINE_HEIGHT + 100) if self.boardState == chat.BOARD_STATE_EDIT: textAreaHeight += 45 elif self.visibleLineCount != 0: textAreaHeight += 10 + 10 self.xBar = x self.yBar = y + self.EDIT_LINE_HEIGHT - textAreaHeight self.widthBar = width self.heightBar = textAreaHeight self.scrollBar.Hide() ########## ## Render def OnUpdate(self): if self.boardState == chat.BOARD_STATE_EDIT: chat.Update(self.chatID) elif self.boardState == chat.BOARD_STATE_VIEW: if systemSetting.IsViewChat(): chat.Update(self.chatID) def OnRender(self): if chat.GetVisibleLineCount(self.chatID) != self.visibleLineCount: self.visibleLineCount = chat.GetVisibleLineCount(self.chatID) self.Refresh() if self.curHeightBar != self.heightBar: self.curHeightBar += (self.heightBar - self.curHeightBar) / 10 if self.boardState == chat.BOARD_STATE_EDIT: grp.SetColor(self.BOARD_MIDDLE_COLOR) grp.RenderBar(self.xBar, self.yBar + (self.heightBar - self.curHeightBar) + 10, self.widthBar, self.curHeightBar) chat.Render(self.chatID) elif self.boardState == chat.BOARD_STATE_VIEW: if systemSetting.IsViewChat(): grp.RenderGradationBar(self.xBar, self.yBar + (self.heightBar - self.curHeightBar), self.widthBar, self.curHeightBar, self.BOARD_START_COLOR, self.BOARD_END_COLOR) chat.Render(self.chatID) ########## ## Event def OnTop(self): self.btnChatSizing.SetTop() self.scrollBar.SetTop() def OnScroll(self): if not self.scrollLock: self.scrollBarPos = self.scrollBar.GetPos() lineCount = chat.GetLineCount(self.chatID) visibleLineCount = chat.GetVisibleLineCount(self.chatID) endLine = visibleLineCount + int(float(lineCount - visibleLineCount) * self.scrollBarPos) chat.SetEndPos(self.chatID, self.scrollBarPos) def OnChangeChatMode(self): self.chatInputSet.OnChangeChatMode() def SetChatFocus(self): self.chatInputSet.SetChatFocus() def BindInterface(self, interface): self.chatInputSet.BindInterface(interface) ## ChatLogWindow class ChatLogWindow(ui.Window): BLOCK_WIDTH = 32 CHAT_MODE_NAME = ( locale.CHAT_NORMAL, locale.CHAT_PARTY, locale.CHAT_GUILD, locale.CHAT_SHOUT, locale.CHAT_INFORMATION, locale.CHAT_NOTICE, ) CHAT_MODE_INDEX = ( chat.CHAT_TYPE_TALKING, chat.CHAT_TYPE_PARTY, chat.CHAT_TYPE_GUILD, chat.CHAT_TYPE_SHOUT, chat.CHAT_TYPE_INFO, chat.CHAT_TYPE_NOTICE, ) CHAT_LOG_WINDOW_MINIMUM_WIDTH = 450 CHAT_LOG_WINDOW_MINIMUM_HEIGHT = 120 class ResizeButton(ui.DragButton): def __init__(self): ui.DragButton.__init__(self) def __del__(self): ui.DragButton.__del__(self) def OnMouseOverIn(self): app.SetCursor(app.HVSIZE) def OnMouseOverOut(self): app.SetCursor(app.NORMAL) def __init__(self): self.allChatMode = TRUE self.chatInputSet = None ui.Window.__init__(self) self.AddFlag("float") self.AddFlag("movable") self.SetWindowName("ChatLogWindow") self.__CreateChatInputSet() self.__CreateWindow() self.__CreateButton() self.__CreateScrollBar() self.chatID = chat.CreateChatSet(chat.CHAT_SET_LOG_WINDOW) chat.SetBoardState(self.chatID, chat.BOARD_STATE_LOG) for i in self.CHAT_MODE_INDEX: chat.EnableChatMode(self.chatID, i) self.SetPosition(20, 20) self.SetSize(self.CHAT_LOG_WINDOW_MINIMUM_WIDTH, self.CHAT_LOG_WINDOW_MINIMUM_HEIGHT) self.btnSizing.SetPosition(self.CHAT_LOG_WINDOW_MINIMUM_WIDTH-self.btnSizing.GetWidth(), self.CHAT_LOG_WINDOW_MINIMUM_HEIGHT-self.btnSizing.GetHeight()+2) self.OnResize() def __CreateChatInputSet(self): chatInputSet = ChatInputSet() chatInputSet.SetParent(self) chatInputSet.SetEscapeEvent(ui.__mem_func__(self.Close)) chatInputSet.SetWindowVerticalAlignBottom() chatInputSet.Open() self.chatInputSet = chatInputSet def __CreateWindow(self): imgLeft = ui.ImageBox() imgLeft.AddFlag("not_pick") imgLeft.SetParent(self) imgCenter = ui.ExpandedImageBox() imgCenter.AddFlag("not_pick") imgCenter.SetParent(self) imgRight = ui.ImageBox() imgRight.AddFlag("not_pick") imgRight.SetParent(self) if locale.IsARABIC(): imgLeft.LoadImage("locale/ae/ui/pattern/titlebar_left.tga") imgCenter.LoadImage("locale/ae/ui/pattern/titlebar_center.tga") imgRight.LoadImage("locale/ae/ui/pattern/titlebar_right.tga") else: imgLeft.LoadImage("d:/ymir work/ui/pattern/chatlogwindow_titlebar_left.tga") imgCenter.LoadImage("d:/ymir work/ui/pattern/chatlogwindow_titlebar_middle.tga") imgRight.LoadImage("d:/ymir work/ui/pattern/chatlogwindow_titlebar_right.tga") imgLeft.Show() imgCenter.Show() imgRight.Show() btnClose = ui.Button() btnClose.SetParent(self) btnClose.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub") btnClose.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub") btnClose.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub") btnClose.SetToolTipText(locale.UI_CLOSE, 0, -23) btnClose.SetEvent(ui.__mem_func__(self.Close)) btnClose.Show() btnSizing = self.ResizeButton() btnSizing.SetParent(self) btnSizing.SetMoveEvent(ui.__mem_func__(self.OnResize)) btnSizing.SetSize(16, 16) btnSizing.Show() titleName = ui.TextLine() titleName.SetParent(self) if locale.IsARABIC(): titleName.SetPosition(self.GetWidth()-20, 6) else: titleName.SetPosition(20, 6) titleName.SetText(locale.CHAT_LOG_TITLE) titleName.Show() self.imgLeft = imgLeft self.imgCenter = imgCenter self.imgRight = imgRight self.btnClose = btnClose self.btnSizing = btnSizing self.titleName = titleName def __CreateButton(self): if locale.IsARABIC(): bx = 20 else: bx = 13 btnAll = ui.RadioButton() btnAll.SetParent(self) btnAll.SetPosition(bx, 24) btnAll.SetUpVisual("d:/ymir work/ui/public/xsmall_button_01.sub") btnAll.SetOverVisual("d:/ymir work/ui/public/xsmall_button_02.sub") btnAll.SetDownVisual("d:/ymir work/ui/public/xsmall_button_03.sub") btnAll.SetText(locale.CHAT_ALL) btnAll.SetEvent(ui.__mem_func__(self.ToggleAllChatMode)) btnAll.Down() btnAll.Show() self.btnAll = btnAll x = bx + 48 i = 0 self.modeButtonList = [] for name in self.CHAT_MODE_NAME: btn = ui.ToggleButton() btn.SetParent(self) btn.SetPosition(x, 24) btn.SetUpVisual("d:/ymir work/ui/public/xsmall_button_01.sub") btn.SetOverVisual("d:/ymir work/ui/public/xsmall_button_02.sub") btn.SetDownVisual("d:/ymir work/ui/public/xsmall_button_03.sub") btn.SetText(name) btn.Show() mode = self.CHAT_MODE_INDEX btn.SetToggleUpEvent(lambda arg=mode: self.ToggleChatMode(arg)) btn.SetToggleDownEvent(lambda arg=mode: self.ToggleChatMode(arg)) self.modeButtonList.append(btn) x += 48 i += 1 def __CreateScrollBar(self): scrollBar = ui.SmallThinScrollBar() scrollBar.SetParent(self) scrollBar.Show() scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll)) self.scrollBar = scrollBar self.scrollBarPos = 1.0 def __del__(self): ui.Window.__del__(self) def Destroy(self): self.imgLeft = None self.imgCenter = None self.imgRight = None self.btnClose = None self.btnSizing = None self.modeButtonList = [] self.scrollBar = None self.chatInputSet = None def ToggleAllChatMode(self): if self.allChatMode: return self.allChatMode = TRUE for i in self.CHAT_MODE_INDEX: chat.EnableChatMode(self.chatID, i) for btn in self.modeButtonList: btn.SetUp() def ToggleChatMode(self, mode): if self.allChatMode: self.allChatMode = FALSE for i in self.CHAT_MODE_INDEX: chat.DisableChatMode(self.chatID, i) chat.EnableChatMode(self.chatID, mode) self.btnAll.SetUp() else: chat.ToggleChatMode(self.chatID, mode) def SetSize(self, width, height): self.imgCenter.SetRenderingRect(0.0, 0.0, float((width - self.BLOCK_WIDTH*2) - self.BLOCK_WIDTH) / self.BLOCK_WIDTH, 0.0) self.imgCenter.SetPosition(self.BLOCK_WIDTH, 0) self.imgRight.SetPosition(width - self.BLOCK_WIDTH, 0) if locale.IsARABIC(): self.titleName.SetPosition(self.GetWidth()-20, 3) self.btnClose.SetPosition(3, 3) self.scrollBar.SetPosition(1, 45) else: self.btnClose.SetPosition(width - self.btnClose.GetWidth() - 5, 5) self.scrollBar.SetPosition(width - 15, 45) self.scrollBar.SetScrollBarSize(height - 45 - 12) self.scrollBar.SetPos(self.scrollBarPos) ui.Window.SetSize(self, width, height) def Open(self): self.OnResize() self.chatInputSet.SetChatFocus() self.Show() def Close(self): if self.chatInputSet: self.chatInputSet.KillChatFocus() self.Hide() def OnResize(self): x, y = self.btnSizing.GetLocalPosition() width = self.btnSizing.GetWidth() height = self.btnSizing.GetHeight() if x < self.CHAT_LOG_WINDOW_MINIMUM_WIDTH - width: self.btnSizing.SetPosition(self.CHAT_LOG_WINDOW_MINIMUM_WIDTH - width, y) return if y < self.CHAT_LOG_WINDOW_MINIMUM_HEIGHT - height: self.btnSizing.SetPosition(x, self.CHAT_LOG_WINDOW_MINIMUM_HEIGHT - height) return self.scrollBar.LockScroll() self.SetSize(x + width, y + height) self.scrollBar.UnlockScroll() if locale.IsARABIC(): self.chatInputSet.SetPosition(20, 25) else: self.chatInputSet.SetPosition(0, 25) self.chatInputSet.SetSize(self.GetWidth() - 20, 20) self.chatInputSet.RefreshPosition() self.chatInputSet.SetChatMax(self.GetWidth() / 8) def OnScroll(self): self.scrollBarPos = self.scrollBar.GetPos() lineCount = chat.GetLineCount(self.chatID) visibleLineCount = chat.GetVisibleLineCount(self.chatID) endLine = visibleLineCount + int(float(lineCount - visibleLineCount) * self.scrollBarPos) chat.SetEndPos(self.chatID, self.scrollBarPos) def OnRender(self): (x, y, width, height) = self.GetRect() if locale.IsARABIC(): grp.SetColor(0x77000000) grp.RenderBar(x+2, y+45, 13, height-45) grp.SetColor(0x77000000) grp.RenderBar(x, y, width, height) grp.SetColor(0xff525552) grp.RenderBox(x, y, width-2, height) grp.SetColor(0xff000000) grp.RenderBox(x+1, y+1, width-2, height) grp.SetColor(0xff989898) grp.RenderLine(x+width-13, y+height-1, 11, -11) grp.RenderLine(x+width-9, y+height-1, 7, -7) grp.RenderLine(x+width-5, y+height-1, 3, -3) else: grp.SetColor(0x77000000) grp.RenderBar(x+width-15, y+45, 13, height-45) grp.SetColor(0x77000000) grp.RenderBar(x, y, width, height) grp.SetColor(0xff525552) grp.RenderBox(x, y, width-2, height) grp.SetColor(0xff000000) grp.RenderBox(x+1, y+1, width-2, height) grp.SetColor(0xff989898) grp.RenderLine(x+width-13, y+height-1, 11, -11) grp.RenderLine(x+width-9, y+height-1, 7, -7) grp.RenderLine(x+width-5, y+height-1, 3, -3) ##### chat.ArrangeShowingChat(self.chatID) if locale.IsARABIC(): chat.SetPosition(self.chatID, x + width - 10, y + height - 25) else: chat.SetPosition(self.chatID, x + 10, y + height - 25) chat.SetHeight(self.chatID, height - 45 - 25) chat.Update(self.chatID) chat.Render(self.chatID) def OnPressEscapeKey(self): self.Close() return TRUE def BindInterface(self, interface): self.interface = interface def OnMouseLeftButtonDown(self): hyperlink = ui.GetHyperlink() if hyperlink: if app.IsPressed(app.DIK_LALT): link = chat.GetLinkFromHyperlink(hyperlink) ime.PasteString(link) else: self.interface.MakeHyperlinkTooltip(hyperlink) Denic where i can find input_main.cpp? Link to comment Share on other sites More sharing options...
Denis 1474 Posted June 1, 2014 Share Posted June 1, 2014 @danhakhavro In the source @Stefan what do you mean? 2 Link to comment Share on other sites More sharing options...
Stefan 92 Posted June 1, 2014 Share Posted June 1, 2014 Ah.. now I know Denic is right Your client side is ok but you have to change client side @UP: Now its nothing 1 Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 I use game 34083, this game dont have source, what i can do? Link to comment Share on other sites More sharing options...
Originale 134 Posted June 1, 2014 Share Posted June 1, 2014 tried to replace its m_len_orig_msg = snprintf(m_orig_msg, sizeof(m_orig_msg), "%s : %s", m_szName, m_szChat) + 1; by m_len_orig_msg = snprintf(m_orig_msg, sizeof(m_orig_msg), "%s %s: %s", m_szName, m_bEmpire, m_szChat) + 1; in input_main.cpp file No Tested 1 Link to comment Share on other sites More sharing options...
Stefan 92 Posted June 1, 2014 Share Posted June 1, 2014 Try this: game_r34083_32 000FBD7F: E8 B8 000FBD80: DC EC 000FBD81: 77 4E 000FBD82: F2 47 000FBD83: FF 08 0042CEE9: 20 25 0042CEEA: 3A 73 0042CEEB: 20 00 0042CEEC: 25 00 0042CEED: 73 00 And this for unlimited glass: game_r34083_32 000F8F6F: 04 00 000F8F8B: 03 00 000F8FB9: 01 00 000F8FE1: 02 00 1 Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 (edited) Originale i use game 34083, i cant find .cpp files. Try this: game_r34083_32 000FBD7F: E8 B8 000FBD80: DC EC 000FBD81: 77 4E 000FBD82: F2 47 000FBD83: FF 08 0042CEE9: 20 25 0042CEEA: 3A 73 0042CEEB: 20 00 0042CEEC: 25 00 0042CEED: 73 00 And this for unlimited glass: game_r34083_32 000F8F6F: 04 00 000F8F8B: 03 00 000F8FB9: 01 00 000F8FE1: 02 00 Yes, now its work ! But in normal chat i dont have a my nick name. Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Stefan 92 Posted June 1, 2014 Share Posted June 1, 2014 What about others ? guild, party chat? Try to change in uichat.py this: def __SendTalkingChatPacket(self, text): self.__SendChatPacket(text, chat.CHAT_TYPE_TALKING) self.__ResetChat() on that: def __SendTalkingChatPacket(self, text): self.__SendChatPacket(text[1:], chat.CHAT_TYPE_TALKING) self.__ResetChat() But im just guessing Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 (edited) here you have full tutorial about this: http://www.mpcforum.pl/topic/824331-nick-na-wolaj-jako-hyperlink-do-pw/ I dont want this system. Stefan, in guild, party, chat have a some problem: I change in uichat.py and 1st letter dont appear. Thanks for attention. Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Stefan 92 Posted June 1, 2014 Share Posted June 1, 2014 so replace it back and try: def __SendChatPacket(self, text, type): if net.IsChatInsultIn(text): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.CHAT_INSULT_STRING) else: name = player.GetName() if type == chat.CHAT_TYPE_SHOUT or chat.CHAT_TYPE_PARTY or chat.CHAT_TYPE_GUILD or chat.CHAT_TYPE_TALKING: Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 so replace it back and try: def __SendChatPacket(self, text, type): if net.IsChatInsultIn(text): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.CHAT_INSULT_STRING) else: name = player.GetName() if type == chat.CHAT_TYPE_SHOUT or chat.CHAT_TYPE_PARTY or chat.CHAT_TYPE_GUILD or chat.CHAT_TYPE_TALKING: doesn´t work, in guild chat have a some problem but in normal chat dont send a menssage. Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 (edited) Yes now its work +/-. def __SendGuildChatPacket(self, text): if 1 == len(text): self.RunCloseEvent() return self.__SendChatPacket(player.GetName() + " : " + text, chat.CHAT_TYPE_GUILD) self.__ResetChat() How i can remove first "%"? thanks Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Stefan 92 Posted June 1, 2014 Share Posted June 1, 2014 try: self.__SendChatPacket(player.GetName() + " : " + text[1:], chat.CHAT_TYPE_GUILD) 1 Link to comment Share on other sites More sharing options...
danhakhavro 42 Posted June 1, 2014 Author Share Posted June 1, 2014 (edited) try: self.__SendChatPacket(player.GetName() + " : " + text[1:], chat.CHAT_TYPE_GUILD) Thanks now its work !!! Edited August 15, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Stefan 92 Posted June 1, 2014 Share Posted June 1, 2014 No problem 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now