I've been looking for ways to improve my chat commands script and I came across string.match... I thought it would be useful in my case because instead of me having to type in the targeted player's full username and use find first child to look for something matching that, i could use it and type an abbreviation of the plr's name, and then have the script search for the closest matching plr in player service. But I don't know how to use it.
local Valid_Commands_Table = require(game:GetService("ServerStorage").ValidCommands)
local Permitted_Players = require(game:GetService("ServerStorage").PlayerNamesPermitted)
local ToWarnEvent = game:GetService("ReplicatedStorage").ToWarn
local Maximum_Amount_Of_Warns = 3
function Check(Plr)
for _, Permitted_Player in pairs(Permitted_Players) do
return Plr.Name == Permitted_Player
end
end
game:GetService("Players").PlayerAdded:Connect(function(Player)
local Warns_Num_Value = Instance.new("NumberValue")
Warns_Num_Value .Parent = Player
Warns_Num_Value.Name = "Warns"
Player.Chatted:Connect(function(StringMsg)
local SplitString = StringMsg:split(" ")
if Check(Player) and SplitString[1] == Valid_Commands_Table[1] then --Kick Command
local NameOfPlayer = SplitString[2]
local ActualPlayer = game:GetService("Players"):FindFirstChild(NameOfPlayer)
if ActualPlayer then
local Reason = StringMsg:split(NameOfPlayer)[2]
ActualPlayer:Kick(Reason)
end
elseif Check(Player) and SplitString[1] == Valid_Commands_Table[2] then
local Name_Of_Player = SplitString[2]
local PlayerToWarn = game:GetService("Players"):FindFirstChild(Name_Of_Player)
local Reason = StringMsg:split(Name_Of_Player)[2]
local WarnsInPlayer = PlayerToWarn:WaitForChild("Warns")
if WarnsInPlayer then
WarnsInPlayer.Value += 1
ToWarnEvent:FireClient(PlayerToWarn)
if WarnsInPlayer.Value >= 3 then
PlayerToWarn:Kick("Max Number Of Warns Reached, therefore you have been kicked from the server.")
end
end
elseif Check(Player) and SplitString[1] == Valid_Commands_Table[3] then
local Targets = SplitString[2]
if Targets == "All" then
for _, TargetedPlayer in pairs(game:GetService("Players"):GetChildren()) do
local Char_Of_Plr = TargetedPlayer.Character
local HumanoidOfTP = Char_Of_Plr.Humanoid
HumanoidOfTP:TakeDamage(HumanoidOfTP.MaxHealth)
end
else
local NameOfTargetedPlr = SplitString[2]
local ActualPlayer = game:GetService("Players"):FindFirstChild(NameOfTargetedPlr)
if ActualPlayer then
ActualPlayer.Character.Humanoid:TakeDamage(ActualPlayer.Character.Humanoid.MaxHealth)
end
end
end
end)
end)
^ Chat Commands Script I Have.

1 comment
Thanks a lot for that!