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

I have got a problem with my temp ban system setting a ban is working but checking ban? is not

Asked by 3 years ago

I have got a problem with my temp ban system - I have done the first bit which is setting the ban which works fine but the problem is then the player then joins again in which it works for the player banned fine.

Here is the code - (its in ServerScriptServcie)

local ds = game:GetService('DataStoreService')
local banData = ds:GetDataStore('BanData')

local admin = {'CRAZYQUACKY84'}

local banTimes = {
    one_Day = 86400;
    three_Days = 259200;
    one_Week = 604800;

}

game.Players.PlayerAdded:Connect(function(player)
    local Success, Result =  pcall(function()
        return banData:GetAsync(tostring(player.UserId), 'BanData')
    end)

    if Success then
        if Result then
            if Result.BST + Result.BT > os.time() then
                warn('Ban is done')
                banData:RemoveAsync(player.UserId)
            else
                player:Kick('\n You are temporarily banned for violating Terms of Service.')
            end
        end
    end
end)

game.Players.PlayerAdded:Connect(function(plr)
    for _,v in pairs(admin) do
        if plr.Name == v then
            plr.Chatted:Connect(function(ban)
                local args = ban:split(' ')
                if args[1] == ':ban' then
                    local plrToBan = game.Players:FindFirstChild(args[2])
                    local banReason = args[3]
                    local plrInputBan = args[4]

                    if plrToBan then
                        local Success, Error = pcall(function()
                            if plrInputBan == 'one_day' then
                                banData:SetAsync(tostring(plrToBan.UserId),{BST= os.time(), BT = banTimes.one_Day})
                                plrToBan:Kick('\n You have been banned for 1 day. \n Enforcer: '..plr.Name..'\n Reason: '..banReason)
                            elseif plrInputBan == 'three_day' then
                                banData:SetAsync(tostring(plrToBan.UserId),{BSTe = os.time(), BT = banTimes.three_Days})
                                plrToBan:Kick('\n You have been banned for 3 days. \n Enforcer: '..plr.Name..'\n Reason: '..banReason)
                            elseif plrInputBan == 'one_week' then
                                banData:SetAsync(tostring(plrToBan.UserId),{BST = os.time(), BT = banTimes.one_Week})
                                plrToBan:Kick('\n You have been banned for 1 week. \n Enforcer: '..plr.Name..'\n Reason: '..banReason)
                            end
                        end)
                        if not Success then
                            warn('Not Successful.')
                        end
                    end
                end
            end)
        end
    end
end)

BST = BanStartTime BT = BanTime

Answer this question