Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

Why does this argument get lower cased in my chat command?

Asked by
tjtorin 172
5 years ago
Edited 5 years ago

I am trying to make a chat command that awards an item. The user is supposed to type the name of the item, but I have to search for the item in a model and it is case sensitive and for some reason it makes the item name from the command lowercase. Ex: Player types "awarditem tjtorin 1 Alien Relic" Error: Can't find alien relic in Model

Commands.awarditem = function(Sender, Args)
    local Player = Args[1]
    local Amount = Args[2]
    local Item = Args[3]

    Item = string.gsub(Args[3], "_", " ")

    game.ServerStorage.AwardItem:Invoke(Player, game.ReplicatedStorage.Items[Item].ItemId.Value, Amount)
end

-- Full code
local Players = game:GetService("Players")
local Admins = {
    "tjtorin";
    127652021;
}
local prefix = ":"
local Commands = {}

-- COMMANDS
Commands.kill = function(Sender,Args)
    Args = table.concat(Args," ")
    if game.Players:FindFirstChild(Args) then
        game.Players[Args].Character.Head:Destroy()
    else
        game.Players[Sender.Name].Character.Head:Destroy()
    end
end

Commands.givecash = function(Sender,Args)
    local MAX = 2^52
    local MIN = -2^52
    local Player = Args[1]
    local Amount = Args[2]
    --[[if tonumber(Amount) > MAX then
        print("Cash amount is over max")
        Amount = MAX
    end
    if tonumber(Amount) < MIN then
        print("Cash amound is under the min")
        Amount = MIN
    end]]
    if game.Players:FindFirstChild(Player) then
        game.ServerStorage.MoneyStorage:FindFirstChild(Player).Value = game.ServerStorage.MoneyStorage:FindFirstChild(Player).Value + Amount
    end
end

Commands.setcash = function(Sender,Args)
    local MAX = 2^52
    local MIN = -2^52
    local Player = Args[1]
    local Amount = Args[2]
    --if tonumber(Amount) > MAX then
        --print("Cash amount is over max")
        --Amount = MAX
    --end
    --if tonumber(Amount) < MIN then
        --print("Cash amound is under the min")
        --Amount = MIN
    --end
    if game.Players:FindFirstChild(Player) then
        game.ServerStorage.MoneyStorage:FindFirstChild(Player).Value = Amount
    end
end

Commands.awarditem = function(Sender, Args)
    local Player = Args[1]
    local Amount = Args[2]
    local Item = Args[3]

    Item = string.gsub(Args[3], "_", " ")

    game.ServerStorage.AwardItem:Invoke(Player, game.ReplicatedStorage.Items[Item].ItemId.Value, Amount)
end

Commands.kick = function(Sender,Args)
    local Player = Args[1]
    local Reason = table.concat(Args," ",2)
    if game.Players:FindFirstChild(Player) then
        game.Players[Player]:Kick(Reason)
    else
        print(Player.." does not exist")
    end
end
-----------------

-- FUNCTIONS
local function IsAdmin(Player)
    for _,Admin in pairs(Admins) do
        if type(Admin) == "String" and string.lower(Admin) == string.lower(Player.Name) then
            print(true)
            return true
        elseif type(Admin) == "number" and Admin == Player.UserId then
            return true
        end
        end
        print(false)
    return false
    end

local function ParseMessage(Player,Message)
    Message = string.lower(Message)
    local PrefixMatch = string.match(Message,"^"..prefix)

    if PrefixMatch then
        Message = string.gsub(Message,PrefixMatch,"",1)
        local Arguments = {}

        for Argument in string.gmatch(Message,"[^%s]+") do
            table.insert(Arguments,Argument)
        end

        local CommandName = Arguments[1]
        table.remove(Arguments,1)
        local CommandFunc = Commands[CommandName]

        if CommandFunc ~= nil then
            CommandFunc(Player,Arguments)
        end
    end
end

function notify(title,msg)
    game.StarterGui:SetCore("SendNotification",{
        Title = "Admin"; 
        Text = msg;
        Icon = "";
        Duration =  5;
   })
end
------------------

Players.PlayerAdded:Connect(function(Player)
    if IsAdmin(Player) then
        wait(.01)
        notify("Admin!","Looks like your an admin!")
    end
    Player.Chatted:Connect(function(Message,Recipient)
        if not Recipient and IsAdmin(Player) then
            ParseMessage(Player,Message)
        end
    end)
end)
0
Post the code where you're calling that function. Azarth 3141 — 5y
0
Please post the only part of the code needed D4rk_Robloxian 0 — 4y

Answer this question