Is it possible to set an in-game limit for the distance it takes for players to see bubble chat messages and that message being displayed on the global chat gui?
For example, you can only be within 15 studs to see someones bubble chat message.
Is it possible to set an in-game limit for the distance it takes for players to see bubble chat messages and that message being displayed on the global chat gui?
For example, you can only be within 15 studs to see someones bubble chat message.
You’d have to create a custom replication function like the TeamChat chat module uses. You should be able to find the TeamChatReplicationFunction in Chat.ChatModules.TeamChat and use that as a base for making your own.
There’s a bunch of other code in that module for things like handling team changing and /team commands, but you can just ignore it.
No idea how the bubble chat part actually works. I assume it’d be something with BillboardGuis and setting the max view distance or w/e.
I actually made this back when I was working on the chat system at Roblox.
-- // FileName: ProximityChat.lua
-- // Written by: TheGamer101
-- // Description: Only allows players to see messages from those within a certain distance.
local Chat = game:GetService("Chat")
local RunService = game:GetService("RunService")
local ReplicatedModules = Chat:WaitForChild("ClientChatModules")
local ChatSettings = require(ReplicatedModules:WaitForChild("ChatSettings"))
local PROXIMITY_DISTANCE = 100
local function Run(ChatService)
local function WithinProximity(player1, player2)
if player1 == player2 then
return true
end
if player1.Character and player2.Character then
local torso1 = player1.Character:FindFirstChild("Torso")
local torso2 = player2.Character:FindFirstChild("Torso")
if torso1 and torso2 then
return (torso1.Position - torso2.Position).magnitude < PROXIMITY_DISTANCE
end
end
return false
end
local function ProximityChatReplicationFunction(speakerName, message, channelName)
local speakerObj = ChatService:GetSpeaker(speakerName)
local channelObj = ChatService:GetChannel(channelName)
if not speakerObj then return false end
if not channelObj then return false end
local playerObj = speakerObj:GetPlayer()
if not playerObj then return false end
for i, otherSpeakerName in pairs(channelObj:GetSpeakerList()) do
local otherSpeakerObj = ChatService:GetSpeaker(otherSpeakerName)
if otherSpeakerObj then
local otherPlayerObj = otherSpeakerObj:GetPlayer()
if otherPlayerObj then
if WithinProximity(playerObj, otherPlayerObj) then
otherSpeakerObj:SendMessage(message, channelName, speakerName, message.ExtraData)
end
end
end
end
return true
end
ChatService:RegisterProcessCommandsFunction("proximity_chat", ProximityChatReplicationFunction, ChatSettings.LowPriority)
end
return Run
No comments so let me know if you want anything explained but it should be easy enough to modify for your purposes.
For just bubble chat you can change MAX_BUBBLE_DISTANCE property in the bubble chat script.
Where do you put this? I would like to use this for upcoming games.
You put it in the ChatModules folder under Chat.
I would recommend installing it like this:
Hey! I’d like to let you know that this apparently no longer works, and I have tested it with a friend, and whatever he is/I’m chatting, doesn’t appear for him or me. I can’t really tell you what’s wrong since nothing appears in the console.
It’s probably broken because it’s written for R6 and not R15. It uses the position of “Torso” which doesn’t exist for R15s. Try changing Torso to HumanoidRootPart and that should fix it.
Yup! Thanks, it works now! But for some reason, the messages replicates twice for the person that’s sending the message.
Theres two Bubble Distance properties in roblox’s chat config, yet changing either doesn’t seem to effect the range.
Hi there, when I implemented this for a game called SCP: Containment Breach by MiniToon it seems like anyone can see team chats and whispers seem to be really unreliable and not send sometimes (a lot of people reported these issues in our bug reports channel) i’m wondering if I need to change any other chat module scripts to fix these? I could also reproduce these issues in a fresh baseplate place as-well.
Did you figure this out? I’m having the same issue. ProximityChat breaks PrivateMessaging module, and most likely any other module that involves channels