PHP код:
	
local function SetupChat()
    InstallStepComplete.message = L["Chat Set"]
    InstallStepComplete:Show()            
    FCF_ResetChatWindows()
    FCF_SetLocked(ChatFrame1, 1)
    FCF_DockFrame(ChatFrame2)
    FCF_SetLocked(ChatFrame2, 1)
    FCF_OpenNewWindow(LOOT)
    FCF_UnDockFrame(ChatFrame3)
    FCF_DockFrame(ChatFrame4)
    FCF_SetLocked(ChatFrame4, 1)
    FCF_SetLocked(ChatFrame3, 1)
    ChatFrame3:Show()        
            
    for i = 1, NUM_CHAT_WINDOWS do
        local frame = _G[format("ChatFrame%s", i)]
        local chatFrameId = frame:GetID()
        local chatName = FCF_GetChatWindowInfo(chatFrameId)
        
        -- move general bottom left
        if i == 1 then
            frame:ClearAllPoints()
            frame:Point("BOTTOMLEFT", LeftChatToggleButton, "TOPLEFT", 1, 3)            
        elseif i == 3 then
            frame:ClearAllPoints()
            frame:Point("BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 1, 3)
        elseif i == 4 then
            frame:ClearAllPoints()
            frame:Point("BOTTOMLEFT", RightChatDataPanel, "TOPLEFT", 1, 3)
        end
        
        FCF_SavePositionAndDimensions(frame)
        FCF_StopDragging(frame)
        
        -- set default Elvui font size
        FCF_SetChatWindowFontSize(nil, frame, 13)
        
        -- rename windows general because moved to chat #3
        if i == 1 then
            FCF_SetWindowName(frame, GENERAL)
        elseif i == 2 then
            FCF_SetWindowName(frame, GUILD_EVENT_LOG)
        elseif i == 3 then 
            FCF_SetWindowName(frame, LOOT.." / "..TRADE) 
        elseif i == 4 then 
            FCF_SetWindowName(frame, ALL)
        end
    end
    
    ChatFrame_RemoveAllMessageGroups(ChatFrame1)
    ChatFrame_AddMessageGroup(ChatFrame1, "SAY")
    ChatFrame_AddMessageGroup(ChatFrame1, "EMOTE")
    ChatFrame_AddMessageGroup(ChatFrame1, "YELL")
    ChatFrame_AddMessageGroup(ChatFrame1, "GUILD")
    ChatFrame_AddMessageGroup(ChatFrame1, "OFFICER")
    ChatFrame_AddMessageGroup(ChatFrame1, "GUILD_ACHIEVEMENT")
    ChatFrame_AddMessageGroup(ChatFrame1, "WHISPER")
    ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_SAY")
    ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_EMOTE")
    ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_YELL")
    ChatFrame_AddMessageGroup(ChatFrame1, "MONSTER_BOSS_EMOTE")
    ChatFrame_AddMessageGroup(ChatFrame1, "PARTY")
    ChatFrame_AddMessageGroup(ChatFrame1, "PARTY_LEADER")
    ChatFrame_AddMessageGroup(ChatFrame1, "RAID")
    ChatFrame_AddMessageGroup(ChatFrame1, "RAID_LEADER")
    ChatFrame_AddMessageGroup(ChatFrame1, "RAID_WARNING")
    ChatFrame_AddMessageGroup(ChatFrame1, "BATTLEGROUND")
    ChatFrame_AddMessageGroup(ChatFrame1, "BATTLEGROUND_LEADER")
    ChatFrame_AddMessageGroup(ChatFrame1, "BG_HORDE")
    ChatFrame_AddMessageGroup(ChatFrame1, "BG_ALLIANCE")
    ChatFrame_AddMessageGroup(ChatFrame1, "BG_NEUTRAL")
    ChatFrame_AddMessageGroup(ChatFrame1, "SYSTEM")
    ChatFrame_AddMessageGroup(ChatFrame1, "ERRORS")
    ChatFrame_AddMessageGroup(ChatFrame1, "AFK")
    ChatFrame_AddMessageGroup(ChatFrame1, "DND")
    ChatFrame_AddMessageGroup(ChatFrame1, "IGNORED")
    ChatFrame_AddMessageGroup(ChatFrame1, "ACHIEVEMENT")
    ChatFrame_AddMessageGroup(ChatFrame1, "BN_WHISPER")
    ChatFrame_AddMessageGroup(ChatFrame1, "BN_CONVERSATION")
    ChatFrame_AddMessageGroup(ChatFrame1, "BN_INLINE_TOAST_ALERT")
    
    ChatFrame_RemoveAllMessageGroups(ChatFrame3)    
    ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_FACTION_CHANGE")
    ChatFrame_AddMessageGroup(ChatFrame3, "SKILL")
    ChatFrame_AddMessageGroup(ChatFrame3, "LOOT")
    ChatFrame_AddMessageGroup(ChatFrame3, "MONEY")
    ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_XP_GAIN")
    ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_HONOR_GAIN")
    ChatFrame_AddMessageGroup(ChatFrame3, "COMBAT_GUILD_XP_GAIN")
    ChatFrame_AddChannel(ChatFrame1, GENERAL)
    ChatFrame_RemoveChannel(ChatFrame1, L['Trade'])
    ChatFrame_AddChannel(ChatFrame3, L['Trade'])
    ChatFrame_RemoveAllMessageGroups(ChatFrame4)
    ChatFrame_AddChannel(ChatFrame4, L['all'])
    if E.myname == "Elvz" then
        SetCVar("scriptErrors", 1)
    end
    
    -- enable classcolor automatically on login and on each character without doing /configure each time.
    ToggleChatColorNamesByClassGroup(true, "SAY")
    ToggleChatColorNamesByClassGroup(true, "EMOTE")
    ToggleChatColorNamesByClassGroup(true, "YELL")
    ToggleChatColorNamesByClassGroup(true, "GUILD")
    ToggleChatColorNamesByClassGroup(true, "OFFICER")
    ToggleChatColorNamesByClassGroup(true, "GUILD_ACHIEVEMENT")
    ToggleChatColorNamesByClassGroup(true, "ACHIEVEMENT")
    ToggleChatColorNamesByClassGroup(true, "WHISPER")
    ToggleChatColorNamesByClassGroup(true, "PARTY")
    ToggleChatColorNamesByClassGroup(true, "PARTY_LEADER")
    ToggleChatColorNamesByClassGroup(true, "RAID")
    ToggleChatColorNamesByClassGroup(true, "RAID_LEADER")
    ToggleChatColorNamesByClassGroup(true, "RAID_WARNING")
    ToggleChatColorNamesByClassGroup(true, "BATTLEGROUND")
    ToggleChatColorNamesByClassGroup(true, "BATTLEGROUND_LEADER")    
    ToggleChatColorNamesByClassGroup(true, "CHANNEL1")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL2")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL3")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL4")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL5")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL6")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL7")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL8")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL9")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL10")
    ToggleChatColorNamesByClassGroup(true, "CHANNEL11")
    
    --Adjust Chat Colors
    --General
    ChangeChatColor("CHANNEL1", 195/255, 230/255, 232/255)
    --Trade
    ChangeChatColor("CHANNEL2", 232/255, 158/255, 121/255)
    --Local Defense
    ChangeChatColor("CHANNEL3", 232/255, 228/255, 121/255)