you writed
local cutString = string.sub(1, #commandForm)
instead of
local cutString = string.sub(message, 1, #commandForm)
i’m fr so sorry if i don’t write english well
you writed
local cutString = string.sub(1, #commandForm)
instead of
local cutString = string.sub(message, 1, #commandForm)
i’m fr so sorry if i don’t write english well
Side note, instead of your current way of checking for commands I would actually recommend doing something that makes use of arguments like the example below in case you want to add more commands in the future that can have different amounts of arguments.
local prefix = ":"
local function splitMsg(msg,reg)
return string.split(msg,reg)
end
local function getPlayerFromAbbreviation(short)
for _,v in pairs(game:GetService("Players"):GetPlayers()) do
if string.sub(string.lower(v.Name), 1, string.len(short)) == string.lower(short) then
return v
end
return nil
end
end
game:GetService("Players").PlayerAdded:Connect(function(plr)
plr.Chatted:Connect(function(msg)
if plr.Name == "yourname?? or someone elses??" then
local args = splitMsg(msg," ")
if args[1] and args[2] then
if args[1]:lower() == prefix.."kick" then
local reason = ""
local playerToKick = getPlayerFromAbbreviation(args[2])
if playerToKick then
args[1] = nil
args[2] = nil
for _,v in pairs(args) do
reason = reason..v.." "
end
playerToKick:Kick(reason)
end
end
end
end
end)
end)
It is okay.
And yes, you were right, but @sjr04 responded first, so I had to tick his answer as a solution.
Thank you still, it is much appreciated
Also, use GFkin’s Catch All Player Added / Removing module.
@BMWLux, the reason for that if statement, is for all the code after it, only work if the player’s name is the OP’s name, aka, the writer. Basically, he’s making it so not everyone can use the ‘command’.
wait so this is for people not using admin OHH I thought this script was just for banning someone who had wronged him.
@OP, also, although not necessary, you might wanna change the use of checking your username, but rather check your own UserID. This can prevent issues which will be caused if you ever change your name. But I believe you won’t be using this forever, so you might just want to leave it as it currently is.
Im confused if they join and they get kicked, thats banning. Is it not? Or is this just for him to say :kick so and so and they would get kicked…
Yes, it’s only for him to say ‘:kick’, and the given player argument will be kicked.
Ooh I thought this was for different reasoning. Ok now it makes sense.
The way Ban systems are made in roblox are with a following workflow:
You have the .Chatted events to check for who to ban etc, and only run for admins (specified by developer through code)
They update a datastore with the key of the player to ban, setting it with values such as banned or not, banned till date etc.
Then the server uses the :Kick method on the player to disconnect the player from the server
Now if the player rejoins, the server always should check at beginning if that person’s ban datastore has any records and use the Kick method accordingly.
It’s on a chatted event. There’s just no way a player can’t be loaded or you would need a wait before executing the function. The issue was along with the string being parsed.
Yeah I understand now. I thought he was just making a list of banned players and if they joined then they’d get kicked.