Jump to content

Mind Rapist

Active Member
  • Posts

    548
  • Joined

  • Last visited

  • Days Won

    6
  • Feedback

    0%

Posts posted by Mind Rapist

  1. Dude this is how it's supposed to work ?

    2f7.png

    How long have you been playing the game? Did you ever notice that all DPS effects (damage-per-second) are design to stop hp reduction when it hits 1? Your bleeding works normally you can focus on other stuff now... like learning the game (just saying)

    Best regards ~ Mind Rapist

    • Sad 1
    • Love 1
  2. Hello devs, I found this tutorial today and I found it pretty interesting, so I tried to follow it. I am wasting over 6 hours over a so small patch I cannot believe it. The topic is this:

    I did everything right only to find myself stuck at the python part. My syserr hits on this exact line:

    networkModule.SetSelectCharacterPhase - <type 'exceptions.SyntaxError'>:invalid syntax (uiChat.py, line 1059)

    and it makes me mad because I can't find anything wrong! Tabulations are correct, so as source functions and so as python code. I do not understand what is so wrong with self.btnAll.Down() anw...

    My complete uiChat.py is this:

    Spoiler

    import ui
    import grp
    import chat
    import wndMgr
    import net
    import app
    import ime
    import localeInfo
    import colorInfo
    import constInfo
    import systemSetting

    ENABLE_CHAT_COMMAND = TRUE
    ENABLE_LAST_SENTENCE_STACK = TRUE
    ENABLE_INSULT_CHECK = TRUE

    if localeInfo.IsHONGKONG():
        ENABLE_LAST_SENTENCE_STACK = TRUE

    if localeInfo.IsEUROPE():
        ENABLE_CHAT_COMMAND = FALSE

    if localeInfo.IsCANADA():
        ENABLE_LAST_SENTENCE_STACK = FALSE

    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 : localeInfo.CHAT_NORMAL,
                            chat.CHAT_TYPE_PARTY : localeInfo.CHAT_PARTY,
                            chat.CHAT_TYPE_GUILD : localeInfo.CHAT_GUILD,
                            chat.CHAT_TYPE_SHOUT : localeInfo.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 text.find("@") ==0:
                text = text.split(" ")
                user = text[0]
                user = text[0].split("@")
                user = user[1]
                del text[0]
                realtext = ""
                for i in xrange(len(text)):
                    if i > 0:
                        realtext = realtext + " " + text
                    else:
                        realtext = realtext + text
                if len(realtext) > 0:
                    net.SendWhisperPacket(user, realtext)
                    chat.AppendChat(chat.CHAT_TYPE_INFO, user + " |cff00ff00|hadlý karaktere mesaj gönderildi.") 
                else:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, " |cff00ff00|hBoþ mesaj. ")
            elif net.IsChatInsultIn(text):
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.CHAT_INSULT_STRING)
            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, localeInfo.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)
                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(localeInfo.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(localeInfo.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 localeInfo.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(localeInfo.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(localeInfo.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 localeInfo.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 localeInfo.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 localeInfo.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 localeInfo.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 = ( localeInfo.CHAT_NORMAL, localeInfo.CHAT_PARTY, localeInfo.CHAT_GUILD, localeInfo.CHAT_SHOUT, localeInfo.CHAT_INFORMATION, localeInfo.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 localeInfo.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(localeInfo.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 localeInfo.IsARABIC():
                titleName.SetPosition(self.GetWidth()-20, 6)
            else:
                titleName.SetPosition(20, 6)
                
            titleName.SetText(localeInfo.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 localeInfo.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(localeInfo.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)
                
                if not chat.GetChatMode(self.chatID):
                    self.btnAll.Down()
                    self.ToggleAllChatMode()

        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 localeInfo.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 localeInfo.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() / ?

        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 localeInfo.IsARABIC():
                grp.SetColor(0x77000000)
                grp.RenderBar(x+2, y+45, 13, height-45)
                
                grp.SetColor(0x77000000)
                grp.RenderBar(x, y, width, height)
                grp.SetColor(0x77000000)
                grp.RenderBox(x, y, width-2, height)
                grp.SetColor(0x77000000)
                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(0x77000000)
                grp.RenderBox(x, y, width-2, height)
                grp.SetColor(0x77000000)
                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 localeInfo.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)

    Please let me know if you have any ideas I really appreciate that

  3. The biggest bug in the history of Metin2 chat interface is when you switch keyboard languages. Some clients do not even clear the textbox... But no one has fixed that so far

    EDIT: I don't know why but I'm getting this error:

    networkModule.SetSelectCharacterPhase - <type 'exceptions.SyntaxError'>:invalid syntax (uiChat.py, line 1059)

    I've checked tabulations and code compatibility. It hits at self.btnAll.Down() which I've checked and confirmed that is valid.

  4. Hello community, I'vee been struggling all night long for a solution to this:

    I started a new VM and I installed mysql80-server and configured everything. But when the time came to extract my game's db in the folder, the service died! I couldn't get it back, not without deleting everything I extracted. Since then, I've tried everything, this service hates my tables. I tried manually creating and importing the data 1 by 1 in sql files, error all the time! I tried to import data from another connection and you 'll never guess! It says that '0000-00-00 00:00:00' cannot be set as default value of a datetime field.

    What do I have to do to get it working???

     

  5. Hey guys ?

    It's been a while, how y'all doin?

    I hope you 're having a wonderful time (wow it's been AGES ?)

    Anw is there anyone here that has the new Skills for all the characters (including the Wolfman)? There have been major changes into almost all damages and descriptions. There is even a new flag in town (KNOCKBACK) which I believe is what makes the Shaman's Dragon Roar being able to be "remotely detonated" uppon target (awesome!). And who didn't see the Archer's 6th ability (turns them invisible for a couple of seconds - very interesting)...

    I 'd be very interested in a little sql patch for the db and the way to implement the txt's (I did try that but some texts are not quite there idk why ?)

    Thanks for any efford to help me here, it's so nice to be back ?

    Kind regards ~ Mind Rapist

     

  6. Hello community. I've been away for a while... But today I came up with an idea: did you ever think of changing your database protocol? I mean MySQL is convenient for everyone as all of us got used to it over the years. But is it still out best solutions in 2017? This post is about (hopefully) inspiring a great developer for tutorials on how to change MySQL protocols to MS SQL (2016), PostgreSQL, MongoDB or even Cassandra if possible directly from the source. Think about the speed your server could gain from Mongo or how much more smoothly can the massive amount of db requests in international servers be with Cassandra. I don't know about you guys but I think it's time for a system upgrade. I hope I inspired some of you :)

    • Love 1
  7. Hello guys I'm looking for a tut or some instructions to display those informations under my minimap:

    https://metin2.download/picture/y9DTKcBYOC1765cmUt8wEOR6jaBW103Y/.png

    I'm looking for the date, the FPS and the players online (per empire and total)

    I have this client but I don't know how to transfer those into mine. I took a look at the game.py but I didn't found anything and I don't know if and which other files are involved... Please give me some direction on this thank you devs.

    • Love 1
  8. Hello devs and merry christmas :)

    Today Im looking for a small tut kinda like the Non-tradable items effect system (on this board) but a little different. I want to make the item's slot red when somebody adds it into the trade window you know make it unusable for the rest of the trade because its already in the trade and I want to do that with the private shop building as well with the items that the player already put on the shop window for sale. Just like the official effect. If there is a tut like this please share the link here thank you so much guys :)

×
×
  • 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.