-- rChat: core -- zork, 2016 ----------------------------- -- Variables ----------------------------- local A, L = ... local cfg = L.C ----------------------------- -- Functions ----------------------------- --SkinChat local function SkinChat(self) if not self then return end local name = self:GetName() --chat frame resizing self:SetClampRectInsets(0, 0, 0, 0) self:SetMaxResize(UIParent:GetWidth()/2, UIParent:GetHeight()/2) self:SetMinResize(100, 50) self:SetFont(unpack(cfg.chat.font)) self:SetShadowOffset(unpack(cfg.dropshadow.offset)) self:SetShadowColor(unpack(cfg.dropshadow.color)) --chat fading self:SetFading(true) --hide button frame local bf = _G[name.."ButtonFrame"] bf:HookScript("OnShow", bf.Hide) bf:Hide() --editbox local eb = _G[name.."EditBox"] eb:SetAltArrowKeyMode(false) --textures _G[name.."EditBoxLeft"]:Hide() _G[name.."EditBoxMid"]:Hide() _G[name.."EditBoxRight"]:Hide() --reposition eb:ClearAllPoints() eb:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 20) eb:SetPoint("BOTTOMRIGHT", self, "TOPRIGHT", 0, 20) -- if name == "ChatFrame2" then -- eb:SetPoint("BOTTOM",self,"TOP",0,20+24) --CombatLogQuickButtonFrame_Custom:GetHeight() -- else -- eb:SetPoint("BOTTOM",self,"TOP",0,20) -- end -- eb:SetPoint("LEFT",self,-5,0) -- eb:SetPoint("RIGHT",self,10,0) end local function UpdateBackgroundAnchors(self) --fix wierd combat log self:SetClampRectInsets(0, 0, 0, 0) end --OpenTemporaryWindow local function OpenTemporaryWindow() for _, name in next, CHAT_FRAMES do local frame = _G[name] if (frame.isTemporary) then SkinChat(frame) end end end --OnMOuseScroll local function OnMOuseScroll(self,dir) if(dir > 0) then if(IsShiftKeyDown()) then self:ScrollToTop() else self:ScrollUp() end else if(IsShiftKeyDown()) then self:ScrollToBottom() else self:ScrollDown() end end end -- ================================ -- 公共频道和自定义频道精简 -- ================================ -- local gsub = _G.string.gsub -- local newAddMsg = {} -- local chn = { -- "%[%d+%. 综合.-%]", -- "%[%d+%. 交易.-%]", -- "%[%d+%. 本地防务.-%]", -- "%[%d+%. 寻求组队%]", -- "%[%d+%. 世界防务%]", -- "%[%d+%. 公会招募.-%]", -- "%[%d+%. 大脚世界频道.-%]", -- "%[%d+%. 新手聊天.-%]", -- "%[%d+%. 自定义频道.-%]" -- 自定义频道英文名随便填写 -- } -- local rplc = { -- "[%1综]", -- "[%1交]", -- "[%1防]", -- "[%1组]", -- "[%1守]", -- "[%1招]", -- "[%1世]", -- "[%1萌]" -- "[%1自定义]" -- 英文缩写 -- } -- local rules = { -- --!!不要改 -- {pat = "|c%x+|HChatCopy|h.-|h|r", repl = ""}, -- {pat = "|c%x%x%x%x%x%x%x%x(.-)|r", repl = "%1"}, -- --左鍵 -- {pat = "|Hchannel:.-|h.-|h", repl = "", button = "LeftButton"}, -- {pat = "|Hplayer:.-|h.-|h" .. ":", repl = "", button = "LeftButton"}, -- {pat = "|Hplayer:.-|h.-|h" .. ":", repl = "", button = "LeftButton"}, -- {pat = "|HBNplayer:.-|h.-|h" .. ":", repl = "", button = "LeftButton"}, -- {pat = "|HBNplayer:.-|h.-|h" .. ":", repl = "", button = "LeftButton"}, -- --右鍵 -- {pat = "|Hchannel:.-|h(.-)|h", repl = "%1", button = "RightButton"}, -- {pat = "|Hplayer:.-|h(.-)|h", repl = "%1", button = "RightButton"}, -- {pat = "|HBNplayer:.-|h(.-)|h", repl = "%1", button = "RightButton"}, -- --!!不要改 -- {pat = "|H.-|h(.-)|h", repl = "%1"}, -- {pat = "|TInterface\\TargetingFrame\\UI%-RaidTargetingIcon_(%d):0|t", repl = "{rt%1}"}, -- {pat = "|T.-|t", repl = ""}, -- {pat = "^%s+", repl = ""} -- } --AddMessage local function AddMessage(self, text, ...) --channel replace (Trade and such) text = text:gsub('|h%[(%d+)%. .-%]|h', '|h%1.|h') -- for i = 1, #chn do -- 对应上面几个频道(如果有9个频道就for i = 1, 9 do) -- text = text:gsub(chn[i], rplc[i]) -- end -- text = text:gsub("%[(%d0?)%. .-%]", "%1.") --url search text = text:gsub('([wWhH][wWtT][wWtT][%.pP]%S+[^%p%s])', '|cffffffff|Hurl:%1|h[%1]|h|r') return self.DefaultAddMessage(self, text, ...) end ----------------------------- -- Stuff ----------------------------- --editbox font ChatFontNormal:SetFont(unpack(cfg.editbox.font)) ChatFontNormal:SetShadowOffset(unpack(cfg.dropshadow.offset)) ChatFontNormal:SetShadowColor(unpack(cfg.dropshadow.color)) --font size CHAT_FONT_HEIGHTS = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} --tabs CHAT_TAB_HIDE_DELAY = 1 CHAT_FRAME_TAB_NORMAL_MOUSEOVER_ALPHA = 1 CHAT_FRAME_TAB_NORMAL_NOMOUSE_ALPHA = 0 CHAT_FRAME_TAB_SELECTED_MOUSEOVER_ALPHA = 1 CHAT_FRAME_TAB_SELECTED_NOMOUSE_ALPHA = 0 CHAT_FRAME_TAB_ALERTING_MOUSEOVER_ALPHA = 1 CHAT_FRAME_TAB_ALERTING_NOMOUSE_ALPHA = 1 --channels CHAT_WHISPER_GET = "%s > " CHAT_WHISPER_INFORM_GET = "%s < " CHAT_BN_WHISPER_GET = "%s > " CHAT_BN_WHISPER_INFORM_GET = "%s < " CHAT_YELL_GET = "%s " CHAT_SAY_GET = "%s " CHAT_BATTLEGROUND_GET = "|Hchannel:Battleground|hBG.|h %s: " CHAT_BATTLEGROUND_LEADER_GET = "|Hchannel:Battleground|hBGL.|h %s: " CHAT_GUILD_GET = "|Hchannel:Guild|hG.|h %s: " CHAT_OFFICER_GET = "|Hchannel:Officer|hGO.|h %s: " CHAT_PARTY_GET = "|Hchannel:Party|hP.|h %s: " CHAT_PARTY_LEADER_GET = "|Hchannel:Party|hPL.|h %s: " CHAT_PARTY_GUIDE_GET = "|Hchannel:Party|hPG.|h %s: " CHAT_RAID_GET = "|Hchannel:Raid|hR.|h %s: " CHAT_RAID_LEADER_GET = "|Hchannel:Raid|hRL.|h %s: " CHAT_RAID_WARNING_GET = "|Hchannel:RaidWarning|hRW.|h %s: " CHAT_INSTANCE_CHAT_GET = "|Hchannel:Battleground|hI.|h %s: " CHAT_INSTANCE_CHAT_LEADER_GET = "|Hchannel:Battleground|hIL.|h %s: " --CHAT_MONSTER_PARTY_GET = CHAT_PARTY_GET --CHAT_MONSTER_SAY_GET = CHAT_SAY_GET --CHAT_MONSTER_WHISPER_GET = CHAT_WHISPER_GET --CHAT_MONSTER_YELL_GET = CHAT_YELL_GET CHAT_FLAG_AFK = "<AFK> " CHAT_FLAG_DND = "<DND> " CHAT_FLAG_GM = "<[GM]> " --remove the annoying guild loot messages by replacing them with the original ones YOU_LOOT_MONEY_GUILD = YOU_LOOT_MONEY LOOT_MONEY_SPLIT_GUILD = LOOT_MONEY_SPLIT --don't cut the toastframe BNToastFrame:SetClampedToScreen(true) BNToastFrame:SetClampRectInsets(-15,15,15,-15) --ChatFrameMenuButton ChatFrameMenuButton:HookScript("OnShow", ChatFrameMenuButton.Hide) ChatFrameMenuButton:Hide() --ChatFrameChannelButton ChatFrameChannelButton:HookScript("OnShow", ChatFrameChannelButton.Hide) ChatFrameChannelButton:Hide() --ChatFrameToggleVoiceDeafenButton -- ChatFrameToggleVoiceDeafenButton:HookScript("OnShow", ChatFrameToggleVoiceDeafenButton.Hide) -- ChatFrameToggleVoiceDeafenButton:Hide() --ChatFrameToggleVoiceMuteButton -- ChatFrameToggleVoiceMuteButton:HookScript("OnShow", ChatFrameToggleVoiceMuteButton.Hide) -- ChatFrameToggleVoiceMuteButton:Hide() --hide the friend micro button -- local button = QuickJoinToastButton or FriendsMicroButton -- button:HookScript("OnShow", button.Hide) -- button:Hide() --skin chat for i = 1, NUM_CHAT_WINDOWS do local chatframe = _G["ChatFrame"..i] SkinChat(chatframe) --adjust channel display if (i ~= 2) then chatframe.DefaultAddMessage = chatframe.AddMessage chatframe.AddMessage = AddMessage end end --scroll FloatingChatFrame_OnMouseScroll = OnMOuseScroll --temporary chat windows hooksecurefunc("FCF_OpenTemporaryWindow", OpenTemporaryWindow) --background thingy hooksecurefunc("FloatingChatFrame_UpdateBackgroundAnchors", UpdateBackgroundAnchors)