Channel Tabs & UI Gradient Now Available in TextChatService

Cool, would it be possible to bind a channel (for example teams vs a general channel) to different keybinds like for example say there’s blue and red team and you’re on blue team, bind team chat to “T” and it brings you to team only blue chat and vice-versa, binding it to “Y” puts you to general.

I know the default bind to chat is “/” but it’s it possible to change this stuff or at least bind after you hit “/”

7 Likes

That is actually pretty neat. I would imagine the kinds of games that would use these new features.

4 Likes

Thank you so much my glorious king Hiatus. However, it would be nice if this update had the option to close channels via /close or proper documentation on how to make channels. It seems as if this update was half baked and should go back into the oven.

2 Likes

Is there any plans on whether we can adjust the text transparency and the text stroke transparency for when we’re typing in the chat compared to prompting us to chat? This is the last two parts missing to be able to recreate the legacy chat UI in the new TextChatSystem. Right now we can’t adjust the text transparency at all and the text stroke transparency applies to both typing and chat prompting

image
image
image

On a side note, is there a way to hide chat sent from the sender? That way people can be confident if their messages are rejected from ShouldDeliverCallback.

7 Likes

Let’s go!!!

LETS GOOO

I can’t lie, I’m actually looking forward to figuring out TextChatService now.

2 Likes

Are there any plans to implement a feature that allows users to leave channels individually, without deleting the channel for everyone? Currently, while we have TextChannel:AddUserAsync() to add users to a channel, there’s no equivalent RemoveUser function, which is quite limiting.

For instance, when a player sends a private message to another player, the channel remains open as a tab indefinitely, unless one of the players exits the server. A method for users to close or leave a channel independently would be great.

image

16 Likes

try this, textChannel[player.Name]:Destroy()

5 Likes

I would assume it would be as easy as destroying the TextSource object which represents the player, however this is not the case as they can still “use” the channel. They really aren’t though as their messages aren’t actually going through and only the text shows up on the client side.

I’m pretty sure that there are bugs present regarding removing users from channels. Also, there is currently no way to “hide” a channel from anyone, a feature which I would really enjoy. I want to allow players to swap teams and read the history of a team chat and the only way to do that appears to be having them connected but hiding it on the client until they’re actually on that team.

5 Likes

Sounds like having a bunch of child added/removed listeners on the text channels in order to remove the user locally from the text channel itself may work? Just tested it, the removal of text channel from child removed works, but addUserAsync() does not replicate the text channel to client if its missing, welp have to use a remote event to substitute.

3 Likes

Cool. Now add UICorner support for ChatWindowConfiguration, ChatInputBarConfiguration an ChannelTabsConfiguration.

7 Likes

Wow! That’s amazing! Just one thing that is to please change the GUI.

3 Likes

Really appreciate the new changes, but unfortunately chat bubble customization is still somewhat lacking in TextChatService (and other limitations with the default UI that people have brought up).

It’d be great if all of the remaining features from LegacyChatService could be ported over so we can fully migrate over to TextChatService before its removal.


Bubble properties which can’t be customized per-NPC in TextChatService:

  • BubbleDuration
  • BubblesSpacing
  • MaxBubbles
  • VerticalStudsOffset
  • MinimizeDistance
  • MaxDistance

Bubble properties which are missing from TextChatService entirely:

  • MaxWidth
  • SizeAnimation
  • TransparencyAnimation
5 Likes

You would be better off using the Rich Text Markup UIStroke instead of actual UIStrokes

An example for it is:

"<stroke color='rgb(255, 0, 0)' joins='miter' thickness='2' transparency='0'>[ANGRY]</stroke>"

That should give you text stroke that looks like this
image

Of course I used the Creepster font as its the closest to the non default your using

4 Likes

Is there a way to only make a gradient change the player name, that was the main thing i wanted but seems no matter what i do it does the tag and player name.

1 Like

This isn’t fully bulletproof but you could use the Color property of the UIGradient to set the tag portion of the gradient to your desired colour, then set the name portion of it to white, using super closely positioned keypoints. You could figure out the width of your tags compared to the width of the entire name using TextService:GetTextBoundsAsync. This won’t always work though, for example if you wanted your tags to span multiple lines. A proper implementation would be great

2 Likes

I assume this makes a copy of the original UIGradient. Do property changes to the original UIGradient get passed onto the copy? If not, it would be great if this were a thing for animating the gradient (rotation, offset)

3 Likes

Npc chatting is cool and all but i’m afraid about the impersonation and the advantage developers will take to scam players with this NPC chat…

1 Like

how do i use chat in my game on Roblox on my Xbox?

3 Likes

Finally, Reasons to swap over to TTS over Lua Chat.

4 Likes

Thanks alot this is the best Chat update this year!

I’ve been wanting to add teamchats, that others can’t access / “ghosts” can’t access the normal chat and now it all seems to be possible :D!

1 Like