Old Chat System - LegacyChatSystem converted to TextChatService API


This is a working version of the old 2015-2022 chat system forked from a ~2016 version. It uses TextChatService, has a functional bubblechat, and hooks into the coregui chat button so it seamlessly works.

Known Issues:
-Fading had to be disabled due to the logic breaking.

Game: Old Chat - Roblox
Model: https://www.roblox.com/library/14900511305/Old-Chat-System

If you find any issues, please tell me

Previous version

i noticed i had member status while browsing an update post so i decided im going to share something i made yesterday when i was bored. the chat window is based on the newest version of the chat system i could find that was still a single script, but bubblechat was taken straight from chat service.

features:
-supports both the old commands and the new ones (mostly)
-supports the coregui chat button without topbar+
-has classic bubble chat

known issues:
-displaynames don’t currently work
-fading had to be disabled as its a bit broken
-though it didnt occur, i dont know if the bubblechat glitch exists in the version i modified


if you find any new issues or have feedback please let me know!

34 Likes

Old chat system? I used the old chat system once. But then they replaced it. They replaced it with a new chat system. And the new chat system makes me miss the

19 Likes

Rubber rooms make me rats. Rats make rats crazy. I was crazy once.

7 Likes

eating a very good burger rn bet you arent :cat: , Can you make the package/model public?

I don’t mind the errors I can figure them out myself.

3 Likes

no like it tells me im sending too many requests (even the first request did that)
you need to use the uncopylocked place atm

edit: okay im just going to use a model now this is stupid (referring to the package error thing)

1 Like

Yooo this is awesome i hope theres a finished version of this because it looks really good!
(also that it doesnt cut off NPC dialogue like legacychatsystem does for some reason)

The NPC dialogue part is a core script and it would be hard to make a one-size-fits-all solution for that, it just hasnt been updated in 8 years so the bug in an engine update that made bubble chat need patched broke that too

1 Like

May upgrade this to include the current backpack when that gets phased out

Forgive me for not testing this myself before posting this, I just don’t have the means to test it right now.

The legacy chat system had issues on mobile (for me, anyways. With a relatively old phone), one of which being an issue with text wrapping. Sometimes when the final word or two of a message landed outside the right-side edge of the chatbox, instead of text wrapping to the next line, those words were cut off completely.

I don’t remember off the top of my head if this has been an issue with the new TextChatService system, I don’t think it has. But would it be safe to assume your resource won’t reinstate those old legacy issues? Or at the very least, the text wrapping issue? Is this mainly for visuals or legacy functionality too? i.e. no emoji list, command previews, etc.

(Bubble chat would still show the entirety of the message, it’s just an annoying bug regardless. Especially when the person you’re trying to read messages from isn’t nearby and their message is cut short.)

This is quite literally just the backend being changes slightly so it probably has those issues if it didnt start before 2016/2017 (and wasnt caused by lua updates with no chat fixes)

if you give me an accurate reproduction instructions thing I can try and fix it if it exists as I did no know of the bug

Sorry for the late-ish reply.

Reproducing the issue using Legacy chat is pretty easy. You can test it with various NPCs with different length names (although name length shouldn’t matter, it still helps tests), have them send a message in chat that’s a random length (aiming for messages that would typically be close to the point of dropping to a new line), and if it happens to land in that bug’s sweet spot, it should occur and cut off the ending of their message in the chatbox.

If it doesn’t, then I’d say it’s safe to assume it won’t happen with your resource (at least until someone gets it and reports it). I’ll give it a test whenever I can get the time. But if you also get the time, it’d probably be worth testing it out yourself as well.

Edit: Here’s a thread from 2019 that addressed the bug I’m referring to. Has a prime example screenshot and helpful information on the bug.

Update!

The chat window now supports transparency accessibility settings!

Small update:

  1. Removed output spam when in studio
  2. Displays displaynames in chat (still can’t /whisper them)
  3. confirmed it still works with the new topbar

Update!!!

  • Fixed a few bugs
  • All SetCore and GetCore functions now work!!!
    This means you can use ChatMakeSystemMessage and ChatBarDisabled
  • You can now make your game BubbleChat only

Do there is a way to just get the old bubble chat?

yeah, remove references to the chat module in the script
unless you mean bubble chat only mode
to get that you disable classic chat in the attributes

if someone need just the old bubble chat then here is the script for this

local tcs = game:GetService("TextChatService")
local uis = game:GetService("UserInputService")
local players = game:GetService("Players")
local player = players.LocalPlayer
--tcs:WaitForChild("ChatWindowConfiguration").Enabled = false
--tcs:WaitForChild("ChatInputBarConfiguration").Enabled = false

if tcs:CanUserChatAsync(player.UserId) then
	local bubblechat = require(script:WaitForChild("BubbleChat"))
	

	tcs:WaitForChild('BubbleChatConfiguration').Changed:Connect(function(prop)
		if prop == "Enabled" then
			script:SetAttribute("BubbleChat", tcs.BubbleChatConfiguration.Enabled)
		end
	end)
	script:GetAttributeChangedSignal("BubbleChat"):Connect(function()
		tcs.BubbleChatConfiguration.Enabled = script:GetAttribute("BubbleChat")
	end)
	local function isUDim2Value(value)
		return typeof(value) == "UDim2" and value or nil
	end
	local function isBubbleChatOn()
		return not script:GetAttribute("ClassicChat") and script:GetAttribute("BubbleChat")
	end
	
	
	
	tcs.OnIncomingMessage = function(msg)
		bubblechat(msg)
	end
else
	game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false)
end

Bump! You can already switch back to LegacyChatService in the service “TextChatService”

image