You could technically make your own emotes button if you wanted to.
Check if Emotes is open: GuiService:GetEmotesMenuOpen()
Open/close Emotes: GuiService:SetEmotesMenuOpen(bool)
You can already do this:
Check if Chat is open: StarterGui:GetCore("ChatActive")
Open/close Chat: StarterGui:SetCore("ChatActive", bool)
(EDIT: Didn’t realize you wanted to hide the default chat button but still be able to show the chat window. Unfortunately this isn’t possible unless you make your own chat system)
Including a report menu button in the experience controls does not provide the user with an easier way of reporting, rather, it does the same thing, twice.
As I mentioned in my post above, it takes the same number of interactions for a user to access the report menu on both occasions.
Now reconciling sounds interesting, but it would certainly be better if the button were removed from the hamburger menu outright. The Leaderboard and Roblox Menus already provide enough reporting functionality to the user.
If I were to make a list of changes that should be done, it would be like this:
When all the CoreGui elements are disabled one by one or when done: StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.All, false), the hamburger menu should automatically be hidden. And only the Roblox button should remain. This provides the developer more UI space, and the TopbarSafeInsets API would not have to be used, even if the developer has disabled all of the CoreGui elements.
(Creates backwards-compatibility with the UI of older experiences on the platform, makes new developers’ lives easier, and has many other benefits.)
In the future, we should have more control over how the hamburger menu should work, for example, the ability to add or remove buttons from the hamburger menu should be allowed, this would create higher consistency across the developer and the Roblox created systems. (TextChatService is a great example of how to do it.)
Even if the above requests cannot be done, we would still appreciate proper answers to why, rather than simply giving a response like this:
Thanks so much for at least addressing the feedback here rather than being completely silent, as has been the case in previous update threads on this feature. We appreciate it.
We obviously can’t respond to everything, but we’re still reading every post and discussing things internally. Whether positive or negative, all feedback is absolutely appreciated!
I already know this. What I’m talking about is a custom chat system that I wrote from the ground up. I would like to be able to insert the chat icon for my chat system into the flyout.
You unfortunately can’t add custom buttons to the menu, but you could technically hijack Roblox’s built-in chat button to toggle your custom chat system instead of the default one, which is what I was explaining
Definitely agree with this. Especially with the new audio features, I think the ability for voice chat bubbles to exist in the UI and be disabled in the game world would be great for certain experiences. It wouldn’t really make sense for a player to be speaking and have a speaker over that player’s head if the sound isn’t coming from that player.
By disabling the default chat window and checking ChatActive…
Sadly there’s no event to listen to here, so you’d probably have to run a constant loop on StarterGui:GetCore("ChatActive") to check if the chat is toggled or not.
ChatActive determines if the chat button is in the active state. It does not determine if the entire chat has been disabled with SetCoreGuiEnabled.
I don’t see what the point of doing this is. If the default chat is active, it’s going to be visible. I want the default chat to be invisible or disabled so mine can take over.
What they really need to add is a way to figure out if that chatbox is visible or not, I’m having to make this ghetto code to figure out something that should have already been added.
Player:SetAttribute("chatBoxHidden2", true)
Player:SetAttribute("chatBoxHiddenConfirmed", true)
Player:SetAttribute("lastFocus", tick())
game:GetService("TextChatService"):FindFirstChild("ChatInputBarConfiguration"):GetPropertyChangedSignal("IsFocused"):Connect(function()
local ChatInputBarConfiguration = game:GetService("TextChatService"):FindFirstChild("ChatInputBarConfiguration")
if ChatInputBarConfiguration.IsFocused == false then
local start = tick()
Player:SetAttribute("lastFocus", start)
Player:SetAttribute("chatBoxHidden2", false)
Player:SetAttribute("chatBoxHiddenConfirmed", false)
repeat
task.wait()
until tick() - start > 4 or Player:GetAttribute("lastFocus") ~= start or ChatInputBarConfiguration.IsFocused
if Player:GetAttribute("lastFocus") ~= start then
Player:SetAttribute("chatBoxHiddenConfirmed", false)
return
elseif ChatInputBarConfiguration.IsFocused then
Player:SetAttribute("chatBoxHiddenConfirmed", false)
return
elseif tick() - start > 4 then
Player:SetAttribute("chatBoxHidden2", true)
Player:SetAttribute("chatBoxHiddenConfirmed", true)
end
else
Player:SetAttribute("chatBoxHidden2", false)
Player:SetAttribute("chatBoxHiddenConfirmed", false)
end
end)
local lastChatActive = StarterGui:GetCore("ChatActive")
local chatActivatedAt = nil
local check = nil
RunService.RenderStepped:Connect(function()
local chatActiveNow = StarterGui:GetCore("ChatActive")
if chatActiveNow == true and lastChatActive == false then
Player:SetAttribute("chatBoxHiddenConfirmed", false)
chatActivatedAt = tick()
elseif chatActiveNow == false and lastChatActive == true then
Player:SetAttribute("chatBoxHiddenConfirmed", true)
end
if chatActivatedAt and tick() - chatActivatedAt > 4 then
local lastFocus = Player:GetAttribute("lastFocus")
local timeSinceLastFocus = tick() - lastFocus
local ChatInputBarConfiguration = game:GetService("TextChatService"):FindFirstChild("ChatInputBarConfiguration")
if timeSinceLastFocus > 4 and not ChatInputBarConfiguration.IsFocused then
StarterGui:SetCore("ChatActive", false)
Player:SetAttribute("chatBoxHiddenConfirmed", true)
chatActivatedAt = nil
check = nil
else
check = tick()
end
end
lastChatActive = chatActiveNow
end)
yeah, but why did you have to change the inset size? why not keep it 36 pixels? worked for the entire existence of roblox, why change it now? phone screen DPIs arent so high, so its a useless change. and i am still not a fan of circular buttons. just keep the original corner radius