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!
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.
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!
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.
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.