CC: @mutex_lock, @Robot_Engine
I am talking about blocking malicious scam websites. Roblox already provides filtering in chat for your typical websites.
CC: @mutex_lock, @Robot_Engine
I am talking about blocking malicious scam websites. Roblox already provides filtering in chat for your typical websites.
Possible. But I’ve noticed a new link every day for most of these scam websites. Would you really want to update your game every day to keep up-to-date with scams?
This is a neat concept! I have an idea on a better mute system that doesn’t utilize many lines of code. You should try out the RegisterProcessCommandsFunction function of the default chat system. It’s partially documented here, but since Roblox is bad at documenting stuff like this I’ve created a test script that utilizes this function.
--> click the "current client" button in studio on the top bar when the game runs and go to ServerScriptService, this will be created as part of the default chat system.
local serverScriptService = game:GetService("ServerScriptService");
local runner = serverScriptService:WaitForChild("ChatServiceRunner");
local chatService = require(runner:WaitForChild("ChatService"));
local verified = {};
--[[
Try firing a remote event when the captcha is completed (please add valid security if you're going to do this).
And if it's a success add the player's name to this verified array as "true".
Example: verified[player.Name] = true;
]]
chatService:RegisterProcessCommandsFunction("botCheck",function(speakerName,messageObject,channelName)
if(verified[speakerName]) then --> is "speakerName" in the verified table? ex: once verified, do: "verified[player.Name] = true"
return false; --> display message
else
return true; --> don't display message
end
end)
This code actually works, but it’s up to you to add the other part of it if you want to. Good luck!
This is extremely helpful! Thank you! I’ll be sure to switch my method to this ASAP.
You’re welcome! Good luck with this captcha system, it looks pretty promising
Thanks!
Quick question where should the script be parented and will this work with my module script setup?
You don’t have to with external databases…
You shouldn’t need to add a new script, and it should work with your module setup. If it messes up for some reason, redefine the variables according to the “ChatServiceRunner” you forked in the MainModule.
I believe all you should need to do is:
verified[Plr.Name] = true
Events.Mute:Fire("Unmute",Plr.Name)
) and make sure to replace it with the verified array thing.If that system works, you can just remove your old mute system.
And last thing, regarding @DoctorNO2106’s question:
It’s possible, and it’s very straightforward. You can add this code to the bottom of the “GUICreate” script after “RoStopGUI” is defined.
local modalButton = Instance.new("TextButton");
modalButton.Parent = RoStopGUI;
modalButton.Modal = true;
modalButton.Size = UDim2.new(1,0,1,0);
modalButton.BackgroundTransparency = 1;
modalButton.Text = "";
This creates an invisible TextButton with the “Modal” property and parents it to the main frame, there’s slightly more detail on here. This allows you to move your mouse around in first person on the chat system.
Once again thank you for the help! I don’t even believe I need to define an array as I already have a value stored in the player of if they can chat or not. Being able to remove my mute script will make this much more accessible as-well. Thank you!
Also the modal thing is interesting i’ll add that as well!
My alternate solution would be to use the account age, bots should be fairly new accounts and a system that triggers this one-time chat verify system only when you have been in roblox for less than a month. Trust me when I saw the account age used in a game I was a little suprised but more shocked, there are literal to no people who would tell you how old your account is in a story game.
I thought Roblox removed the require() feature, or at least that you needed the script in the game in order to use it. Because people had so many viruses hidden inside, or am I misunderstanding something?
Uhhh no??? Why would they remove that feature? The only issue is that people abuse it, but many of us use it for our own game. You’ve probably heard this as a mistake and/or misunderstanding.
its very cool but hope it wont be like the roblox captcha
Never do this. Let‘s say you have 2 children that are 5 years old. The first knows Roblox, his friend not. Now, the child who knows Roblox shows his friend, who dosen‘t know it, what is the game. And this motivates the friend to play Roblox, too. And now let‘s say that he just created his account, and the first game that he will play is your game, but then he gets kicked because he is new. This isn‘t good at all, no ones do this. You newer should use the AccountAge for filtering bots, this could be counterproductive. And no, in no case, even top AAA games like Fortnite, RocketLeague and etc. (idk why I said Fortnite or RocketLeague, they are the only games that I have in mind) don‘t solve their bot problems by this way, so you shouldn‘t to it either. If you are willing to sacrifice new players just to stop bots, there are big issues:
Who even says that Roblox bans bots? Ok, Roblox may ban bots, but not all. Or just simply: The bot creator creates the bots, waits that the bot accounts are 1 month old or more, and then spamms your game. This would be even heavier for your game, because the malicious programmer had 1 month time to creates a lot of bots.
This will ruin the reputation of your game, and by a lot. With this I mean that, if new players can‘t join the game because they are new, then they will spread the information and say that your game is bad because they can‘t play it, and, they are right then. If you buy a game with or just simply want to play a game, but you can‘t because you are new, then the game can be the best made game of all the times but it will remain a bad one. Everyone should be start to play some game, if popular or not
Bots simply can change their AccountAge property, and by this I mean that: You have a new bot, that just was created, but when you read the AccountAge propertie, it says more than one year or something other. This is because they can fake properties. This is one of the reasons why speedhackers are difficult to find (if we ignore the physics glitch that you start flying over 999 km/h over the map): They have a Humanoid.Speed of 50 or etc., but when you print this out it says you 16. More informations on @starmaq‘s topic All you need to know about metatables and metamethods in section " VIII.
About exploiting". It‘s the last one.
Now, correct me if I am wrong.
TL:DR: Never rely on AccountAge for important things like this, or you will ruin the fun of innocent people + anyways, this is can be bypassed without too many efforts.
AccountAge property for security checks = very bad
I would say that this would not be suitable for certain games. Such as those which need fast communication with each other (if they don’t have discord or don’t know each other) This would also not be suitable for games which need alot of in game chatting (e.g. Trade Hangout) and those which use chat admin commands.
But this would be suitable for most games since the games which are not suitable for this module is not alot.
Great work!
Well, if you consider that a bot joins the game for miliseconds, then leave, and that if you have a good internet connection this takes seconds, you won a point
iirc they disabled requiring private 3rd-party modules by asset ID for security reasons. It should still work if the module is open-source or you created the module.
This helps so much, thank you for doing this!
Yes! That was the thing I was looking for, thanks!
Unless the developer turns it off, the module is built to save. Meaning players do it once and don’t have to do it again (until it expires).