Customized Chat, Giving a second life to the old beloved chat

PLEASE Support “emoji chat suite”.

1 Like

emoji chat suite works fine with the customized chat (I tested just to be sure). You can use it just as you would with the default chat


However, the resize window gets moved to the bottom right for some reason (if enabled) and the default position of the chat is moved back to the edge of the screen sadly. Those are issues with the emoji chat suite as both issues are from features included with the default chat (when modifying these two values in the settings module)
image - Change this to (0,0,0,0)
image - Keep this to false

The customized chat is exactly the same as the default chat with the exception of the settings module (that has more settings and different ones) and some modifications to other modules to add up corners and stuff, so it’s still almost exactly like the default chat

1 Like

Heyyy, I’ve got a little update for the modified chat!

I basically updated the model to remove the draggable property from it, and replace it with custom dragging. No more odd behaviour from draggable when resizing and dragging the chat around, the chat also cannot be dragged off screen anymore, the position gets snapped

Also added padding to the ChatBox in the module from the marketplace, as commented by the first post here. (acutally, I don’t know if that was already the case before I updated it…)

1 Like

It looks weird. It makes me feel like I am playing a simulator game. (I associate rounded corners with simulators)

3 Likes

The settings module includes settings for the corner radius
The customizable nature of the old chat makes it really easy to modify it to your liking (unless you want to make it textured like I did in my game, you have to mess in the other modules)

I don’t really see the parallel with simulators, I tried to make it look like the other Roblox core gui (well mainly the top bar buttons). Everyone has different preferences I guess

2 Likes

pretty nice.
i generally like tinkering with old chat more than new. its simply lower level than new chat service (lower level as in able to edit chat more indepth)

3 Likes

You are right, I didn’t see the padding when I used the module from marketplace which got me questioning but man I really love this amazing creation of yours!

Also great update too.

Oh wait I didn’t see this, I was just gonna say you should add support for the newly added dropdown menu for emojis but you already did it!

Removing the all/team tab doesnt add life to it. Its still a broken mess of a chat

1 Like

Any plans to support GuiService.PreferredTransparency and/or GuiService.ReducedMotionEnabled? Also your custom drag function (that replaced the deprecated GuiObject.Draggable) freezes Studio on my laptop forever…

That would be a good thing to add, I’ll see about adding that. I don’t think that would be very hard to add

The default chat doesn’t have any motion to begin with, so idk what that would do

I don’t see how that is possible…


I’ll need more information to figure out what causes this, because to me it’s seems literally impossible for the loop to freeze studio

	ChatResizerFrame.MouseButton1Down:Connect(function() 
		
		if not ChatResizerFrameDraggable then return end
		BaseFrameDraggable = false
		
		local BaseFramePosition = BaseFrame.AbsolutePosition
		
		local InitialMousePosition = UserInputService:GetMouseLocation()
		local InitialFramePosition = ChatResizerFrame.AbsolutePosition
		
		while UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) and ChatResizerFrameDraggable do 
			
			RunService.RenderStepped:Wait()
			
			local MousePosition = UserInputService:GetMouseLocation()
			local Difference = (MousePosition - InitialMousePosition) - BaseFramePosition
			
			local AbsolutePosition = InitialFramePosition + Difference
			ChatResizerFrame.Position = UDim2.fromOffset(AbsolutePosition.X,AbsolutePosition.Y)
			
			UpdatePositionFromDrag(ChatResizerFrame.AbsolutePosition)
		end
		
		BaseFrameDraggable = ChatSettings.WindowDraggable
	end)
	
	BaseFrame.MouseButton1Down:Connect(function() 
		
		if not BaseFrameDraggable then return end
		
		local screenGuiParent = GetScreenGuiParent()

		local InitialMousePosition = UserInputService:GetMouseLocation()
		local InitialFramePosition = BaseFrame.AbsolutePosition

		while UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do 

			RunService.RenderStepped:Wait()

			local MousePosition = UserInputService:GetMouseLocation()
			local Difference = MousePosition - InitialMousePosition

			local AbsolutePosition = InitialFramePosition + Difference
			AbsolutePosition = Vector2.new(math.clamp(AbsolutePosition.X,1,screenGuiParent.AbsoluteSize.X - BaseFrame.AbsoluteSize.X),math.clamp(AbsolutePosition.Y,-(GuiService.TopbarInset.Height+2),screenGuiParent.AbsoluteSize.Y - BaseFrame.AbsoluteSize.Y))
			BaseFrame.Position = UDim2.fromOffset(AbsolutePosition.X,AbsolutePosition.Y)

			doCheckSizeBounds()
		end
	end)

This code starts at line 229 in the ChatWindow Module script (inside ChatMain, inside ChatScript)
Does it cause a script timeout error? If so, please send a picture of the error

Chat translations do work on the old chat!
Here is how to get it working: In-Experience Text Chat Translations - #98 by Tomi1231

The LegacyChat has the translation system built in, what is required to get it working is overwriting a variable set by a FFlag (which will probably be true soonish) and having a BoolValue named “ChatTranslationEnabled” set to true

I looked at the scripts from this custom chat module, and they seem to have all the translation stuff already in them (surprisingly, from the update I did in november). It might be outdated though, I didn’t check that. Might update the module just to be sure, the scripts concerned aren’t the same as the ones I have modified

I personally don’t like the new textchatservice as ChatMakeSystemMessage doesn’t work, and it’s the text is tinier and harder to read. (I have glasses)

That literally why I had to remove it, the text was too small and everyone in the test server was complaining.

I have identified the issue to be coming from the deferred signal behaviour
image
(On workspace, set SignalBehaviour to Immediate and it should work. However, Immeditate is supposed to be removed eventually, but seeing how many things deferred breaks, I hope they just never roll out deferred signals)

I don’t have a fix for it yet, and the fix might come after a big update to the module. I’ll have to change some stuff in the code, because deferred signals strait up break a part of the script, which needs to be done in another way
(Edit, or I might be able to defer the change of a variable, that might work)

1 Like

Happened to me too. I was messing around with the resize drag when studio just crashed.

UPDATE

I’ve done further changes to the chat, which includes some new features, and bug fixes

Features

– Added support for Font objects, which includes these 81 fronts in the creator marketplace. These fonts are not available in studio by default, and are downloaded when users join your game. Using Font objects also allows for further customization of fonts


(Using a Enum.Font is still supported)

– Added a HiddenChannels settings to ChatSettings. This table can be used to hide some channels (such as the System channel) from the Channels Bar, when it is enabled

– Added a ChatBarBoxBackGroundTransparency Setting to ChatSettings. This controls the transparency of the Textbox in the ChatBar, which was previously controlled alongside the whole ChatBar by the ChatBarBackGroundTransparency Setting. This allows for more in depth customization of the look of the chat

– Chat translations is enabled by default, see this reply. This also includes a setting in the ChatSettings module to customize the color of the Translation Onboarding Message. The Option To View Untranslated Message setting doesn’t do anything because I cannot retrieve that setting


Bug Fixes

– Fixed my implementation of dragging and resizing crashing studio (and live games?) when using deferred signal behaviour

– Fixed deleting the last character of your message kicking you out of a /team or /w (…) channel. Now you must press backspace again to exit the channel. (Oddly enough, this bug only starts happening after sending the first message in /team or /w, because you aren’t actually in those channels at that point)

– Fixed messages not shrinking after taking less lines than they used to (after resizing), which used to leave gaps in between messages

– Fixed a bug where the wrong size would be applied to the chat (there are 3 sizes for desktop, tablet, and phone, specified in ChatSettings), due to the chat loading before the RobloxApp goes in fullscreen (or whatever you have it set up to)
For some reason, there is apparently no way to detect when the screen size is final, so I ended up just making it update dynamically, unless it was dragged or resized


These updates could introduce some new bugs into the chat, so if you encounter what you believe to be a bug, please report it, I’ll gladly look into it :P

If you have any other weird bugs or quirk of the legacy chat that is bothering you (or a feature request), leave a reply, and I’ll see what I can do about it

1 Like

Bug Fix
Fixed the chat breaking when joining a game with a blocked user that has chatted before you joined

Update regarding the deprecation of LegacyChat

I might try to port the legacy chat to TextChatService. What needs to be done is to remove the Chat service (not actually required I think, but whatever), which is mostly changing Chat service to TextChatService for most methods, removing the integration the LegacyChat has with core scripts (not sure what that does lol), and the most challenging surely, going from remote events to TextChannels.

Do not expect anything, I do not know how much work is need to port the LegacyChat, and just the idea might be a little crazy lol. I also don’t have a whole lot of time on my hands…

UPDATE

Implemented TextChatService:CanUsersDirectChatAsync()

The only instance where it is used is in the ChatModules.PrivateMessaging module script, which I did not modify, so I replaced it with the new version of the module from roblox

You have until January 15th 2025 to update the chat to include this api (you probably received an email about this if you are using this forked chat)

LegacyChat will be allowed until April 30th 2025. In the best case scenario, I, or someone else, will have ported the legacy chat to use TextChannels. Otherwise, will have to use the new chat