Version: 1.5.0
Latest Patch Notes
Special Thanks to:
@Ebonhelm - EN-US Dictionary Proofreading & Assistance
@TigerValdos - Live Testing & Initial Funding
-
38 Unique Settings
-
Drag & Drop Theme Support + Theme Scripting Support
-
Integrated Gamepad Support with Virtual Keyboard
Tested with XBOX, PlayStation and Nintendo Switch Pro Controllers via USB-C on Windows. -
Complete Luau Documentation & Comments
Documentation can be found atChat/ChatSettings
andChat/Theme/NOTICE
Luau Comments are provided in All Scripts.
Developers are not required to credit or otherwise refer to WinryChat. You are free to do anything, including (but not limited to) the modification and redistribution of WinryChat. Use of WinryChat as a direct-reference resource for source code is also permitted for any other chat systems without accreditation.
In return for the limitless use of WinryChat, outside of the original format(s) supplied above, we do not retain any responsibility or liability as open-source developers for modifications to or alternate distributions of WinryChat by third-parties and can in no way guarantee that every version will work as described in the original distributions’ documentation. If any problems occur with the original distribution, developers may notify us via this post or in direct messages and we will work with all reasonable action to resolve them as part of ongoing patches and updates if possible.
How WinryChat Works
WinryChat searches through (and listens for new) descendants in TextChatService to get TextChannels and TextChatCommands.
-
When a player is added to a TextChannel, a new view and channel button are created for the player.
-
When a player is removed from a TextChannel, the view and channel button are cleaned up, then deleted.
-
If a Text Channel is given a
Default
tag (via Luau or In Studio), it is treated as the first channel a player should see when joining the game. -
If a Text Channel has a
LayoutOrder
(number) attribute, that number is then used to set it’s order in the Channels List.
Default WinryChat Shortcuts
Since Version 1.4, developers can now have the option to change the shortcuts for WinryChat. This includes the ability to enable and disable Gamepad Support for WinryChat. Chat Shortcuts can also be
For PC/Keyboard Users, the default shortcuts are:
- Toggle Chat Visibility: Z
- Focus Text Box: /
For Controller Users, the default shortcuts are:
- Toggle Chat Visibility: DPad Down
- Focus Text Box: DPad Up
Focusing the text box should open an On-Screen Keyboard for most platforms (XBOX, PlayStation, Android, iOS), but this isn’t always functional. In our case, we found out that ROBLOX for Desktop didn’t have an on-screen keyboard for testing… so we made our own! WinryVirtualKeyboard has been designed as a universal On-Screen Keyboard, with it’s debut example being here in WinryChat.
Setting Up Winry Chat
The new Chat UI can be found at StarterGui.PlayerChat.Chat
and can be copied or moved anywhere without interference. You can also customize the appearance and behaviour of WinryChat using the list of attributes attached to the Chat UI - see Chat/ChatSettings
for the full documentation.
You can also find the latest version of WinryVirtualKeyboard - an On-Screen keyboard implementation alongside WinryChat in StarterGui.PlayerChat.OnScreenKeyboard
. Both are maintained and improved together.
Setting Up Chat Command Autocompelete
Text Chat Commands are automatically setup by the Autocomplete system, if AutocompleteEnabled
is set to true. Autocomplete for Arguments is also supported.
WinryChat’s Autocomplete feature is also dynamic. It will show any TextChatCommand and it’s arguments if the AutocompleteVisible
property is set to true, even if this is changed after it’s setup. This allows for the visibility of commands to be changed when a player is granted admin, or developer, status in-game (or if permissions are revoked).
Setting up Arguments for Autocomplete
Any type is supported for Argument Autocomplete, however, only boolean
and Player
types provide a list of buttons for autofilling values. Additionally, the byte
type provides a custom message instead of the default message. This will expand over time.
-
Create a new
NumberValue
instance as a child of your TextChatCommand.
-
Set the
Name
property of the new NumberValue to that of the name of the argument.
-
Set the
Value
property of the new NumberValue to that of which argument it is in line. This can start at any number. So long as the order of arguments is correct, WinryChat will handle the rest for you.
-
Add a new attribute called
Type
, with it’s type set tostring
. WinryChat will use this as the expected type if applicable. Then set the attribute’s value to the desired type, which will bePlayer
for this example.
If set up correctly, you'll see either:
- A list of buttons to select if this is a
boolean
orPlayer
type.
- A string asking you to input a valid value for the type:
This section will be updated over time, as more resources are brought to my attention.
Final Notes
If you have any features to suggest, or find any bugs, please leave a comment and we’ll try to respond with either a fix or update for you. We want to make a reliable system that anyone can use in their workflows.
ASSET ATTRIBUTIONS
While we ourselves don’t require any specific accreditation, we cannot be sure of that of the Audio Effects we’ve used in place of our privately used ones. The placeholder UIClick, UIOpen and UIClose sound effects have been uploaded by ROBLOX, Z9R and ProSoundEffects.
If these assets require unique licenses, and you wish to use them, you may need to contact the individual owners.