Open Source: Winky's Custom Chat

Hey there. I tried using your chat but I’ve found that it doesn’t work for me.

The only things that I changed were:

  • Added a UIGradient to all the elements
  • Changed the size of the ‘send’ button
  • Set the send button image to Fit instead of Stretch
  • Changed the fonts to Gotham equivalents
  • Made the ‘main’ frame smaller to fit my games’ UI style

This is all that I changed so if you could give me a diagnosis that’d be great since I am no scripter. :wink:

2 Likes

Update no 2:

HUUUGE shoutout to @Techyfied for doing the UI!

Here’s what was changed:

  • UI overhaul (updated the showcase video)
  • Font configuration (with gamepass support)
  • Typing text (e.g "Winky_y is typing)
  • Character limit configuration (default is 100)
  • Bug/s fixes

Note:

I have been really loving all the feedback, good and bad. If you have any feedback, feel free to reply with it because it really is helpful to know what works and what doesn’t. Any suggestions, please reply - no matter how dumb you may think they are. Thank you for all the support!

Get the model:

6 Likes

Awesome model! Keep up the great work.

1 Like

NOOOOOOOOO :frowning: I PREFERED THE old ui

1 Like

You can always change the UI to your liking. (:

i dont fully know how. and i deleted the old chat gui cause it was in my way. and now you revamped it :frowning:

How do you scale the message depending on the text size and scale the chat gui itself simulteanously?

How would “player is typing” work in server with 50+ players (3+messages a sec)?

Text scaled is on for the typing thing, so it’d just be pretty small text. 3 people on the text label should be good.

I haven’t done that for this chat, but feel free to implement this yourself.

Would it be possible to have bubble chat enabled at the same time as this?

1 Like

Thank you for this! I have been making my own chat and it was an epic fail.

1 Like

I believe that it is possible.

I think that there is chat API that allows you to send bubble chat messages… so this may be something I add in the future.

it would also be interesting if it could sent to actual chat as well so you are able to run commands via chat, etc.

Looks great! I might modify it as I have had a bit of experience with modifying chat and I could put some of the icons I’ve made in Inkscape as general icons to use in my port.

Except there’s one problem… I want the /mute command to work for players and ideally the legacy /me command and I would also like compatibility with HD Admin but that’s not a big issue as the command bar exists.

1 Like

I think this is worse than the default chat in my opinion.

Here’s some problems with this:

  • Possibly the WORST part of this: Spamming the server with a typing event. This is absolutely terrible and I’m honestly shocked that you haven’t experienced serious server lag when using this system, I don’t even know how it works. I can only guess this is because you tested with just a baseplate on your local machine. This won’t hold up in any game. Why not just send an event to the server when they focused the textbox, and released focus?
  • Doesn’t resize messages based on text. Using a locked-size textbox and relying on TextScaled makes long messages look small and longer messages impossible to read, not to mention ugly. All messages should be the same size.
  • Doesn’t use the correct API for handling enter being pressed. You should use the LostFocus event and check that the enter pressed parameter is true. It also doesn’t check that this textbox is focused.
  • Uses another loop for some sort of typing animation.
  • Wrapping random functions in pcalls for seemingly no reason??
  • Spawning functions for seemingly no reason
  • Doesn’t show message feedback to the user until it’s sent through and back
  • manually shifts UI elements up. UIListLayout exists for a reason.

and minor complaints:

  • doesn’t use Roact. you should look into this
  • Doesn’t use the new TextService filtering API
  • you create lots of needless table variables for no reason, and also redefines variables that should be constants
  • the UI as it is, is frankly not that attractive, though this is subjective

You should not need any loops for a chat script. In fact, I can’t see a reason why you’d even need a Heartbeat connection either, though that would be preferable to your several loops.

I would highly recommend that you familiarize yourself with the Roblox API! Lots of your issues seem to be caused by you not realizing that events exist. I’m confident the Developer Hub will help you out a lot!

8 Likes

My custom chat was not made to be “better” than the default chat, but it was designed to change things up. Don’t use it if you want but it’s here if you want to. This was more of a learning experience on my part.

Just know that people like you are the reason that a lot of people don’t opensource looking for nothing but negatives in peoples works, and it’s kinda sad that you had nothing better to do than dissect a model looking for bad things and attempt to debunk someone trying to help other people on dvf. (:

Some responses…

Your most valid point. I was unaware that “spamming” remotes caused lag for the whole server (if this was true exploiters could crash any game on roblox…?), but in retrospect I can see how this was inefficient and this will be changed in a new version of the chat.

I’ve looked through every spawn that I used, and the only time this was being used was when there was a wait() in the script. If you didn’t know, wait yields the script, and spawn creates a separate thread, so instead of yielding the whole script, I created a separate thread for it. For example, the thread that waits 40 seconds before fading a message out is wrapped in a spawn so that the whole function does not yield and the script can continue.

I did this so that I can use tweening, if I used a list layout the inserting of new messages would be a cut and it would be jarring.

The main reason that I used TextScaled is because, correct me if I am wrong, TextSize is offset and not scale. So what may appear to be normal on a phone could be tiny on pc, vice-versa.

I did this because some of the functions were getting random errors, ones that occurred once in a hundred times but could crash the script so I just pcalled it.

My reason for pcalling in the server script is because exploiters can easily fire the chatting event with invalid arguments and crash the script.

Just being petty at this point.

What is roact?

Did not know there was one

If you’re talking about the configuration variables then these were created so that people with not a lot of knowledge with scripting can change things that they want to change without having to dive through the script.

Sorry for not being a UI designer?

What I think he actually means is the fonts just don’t look nice, Gotham is much more modern font. I don’t think he’s talking about positioning or icons but I could be wrong.

In the main script is a variable named “Configuration”…

Configuration.NameFont = Enum.Font.GothamBlack
Configuration.TextFont = Enum.Font.Cartoon

Exists… so why not just change the fonts if you don’t like them?

Hmm, maybe he didn’t use it and just looked at the script and the test video.

1 Like