Files
Elite-Gaming-FiveM/resources/SpeedTrap/server.lua
T
2021-12-03 01:05:09 +00:00

137 lines
4.4 KiB
Lua

------------------------------------------------------------
-- SpeedTrap- A Simple FiveM Script, Made By Jordan.#2139 --
------------------------------------------------------------
----------------------------------------------------------------------------------------------
-- !WARNING! !WARNING! !WARNING! !WARNING! !WARNING! --
-- DO NOT TOUCH THIS FILE OR YOU /WILL/ FUCK SHIT UP! EDIT THE CONFIG.LUA --
-- DO NOT BE STUPID AND WHINE TO ME ABOUT THIS BEING BROKEN IF YOU TOUCHED THE LINES BELOW. --
----------------------------------------------------------------------------------------------
webhookURL = Config.webhookURL
debugEnabled = Config.debugEnabled;
webhookEnabled = Config.webhookEnabled
function GetAllPlayers()
local players = {}
for _, i in ipairs(GetPlayers()) do
table.insert(players, i)
end
return players
end
AddEventHandler('playerDropped', function (reason)
Cooldown[source] = nil;
end)
Cooldown = {}
Citizen.CreateThread(function()
while true do
Citizen.Wait(1000); -- Every second
for k, v in pairs(Cooldown) do
Cooldown[k] = Cooldown[k] - 1;
if Cooldown[k] <= 0 then
Cooldown[k] = nil;
end
end
end
end)
Slowdown = {}
Citizen.CreateThread(function()
while true do
Citizen.Wait(1000); -- Every second
for k, v in pairs(Slowdown) do
Slowdown[k] = Slowdown[k] - 1;
if Slowdown[k] <= 0 then
Slowdown[k] = nil;
end
end
end
end)
RegisterNetEvent('AllowSpeed')
AddEventHandler('AllowSpeed', function()
local src = source;
local id = source;
local ids = ExtractIdentifiers(id);
local steam = ids.steam:gsub("steam:", "");
local steamDec = tostring(tonumber(steam,16));
steam = "https://steamcommunity.com/profiles/" .. steamDec;
local discord = ids.discord;
if debugEnabled then
print("[SpeedTrap Debug] AllowSpeed event ran...");
end
if IsPlayerAceAllowed(src, "jordan.gofast") then
TriggerClientEvent('AllowSpeedClient', src)
else
TriggerClientEvent('DoAllowSpeedClient', src)
if Cooldown[src] == nil then
local players = GetAllPlayers()
for i=1, #players do
if IsPlayerAceAllowed(players[i], 'jordan.gofastwatch') then
TriggerClientEvent('chatMessage', players[i], Config.StaffAlert:gsub("{PLAYER}",
GetPlayerName(src)):gsub("{SPEED}", Config.maxspeedwarning));
end
end
Cooldown[src] = Config.StaffAlertCooldown;
else
-- They are on cooldown, we do nothing for now
end
if Config.webhookEnabled then
if Slowdown[src] == nil then
sendToDisc("SpeedTrap has caught " .. GetPlayerName(id) .. " going over " .. Config.maxspeedwarning .. " MPH!",
'Steam: **' .. steam .. '**\n' ..
'Discord Tag: ** <@' .. discord:gsub('discord:', '') .. '> **\n' ..
'Discord UID: **' .. discord:gsub('discord:', '') .. '**\n');
Slowdown[src] = Config.StaffAlertCooldown;
else
-- They are on cooldown, we do nothing for now
end
else
end
end
end)
function ExtractIdentifiers(src)
local identifiers = {
steam = "",
discord = ""
}
--Loop over all identifiers
for i = 0, GetNumPlayerIdentifiers(src) - 1 do
local id = GetPlayerIdentifier(src, i)
--Convert it to a nice table.
if string.find(id, "steam") then
identifiers.steam = id
elseif string.find(id, "discord") then
identifiers.discord = id
end
end
return identifiers
end
function sendToDisc(title, message, footer)
local embed = {}
embed = {
{
["color"] = 16711680, -- GREEN = 65280 --- RED = 16711680
["title"] = "**".. title .."**",
["description"] = "" .. message .. "",
["footer"] = {
["text"] = footer,
},
}
}
-- Start
-- TODO Input Webhook
PerformHttpRequest(webhookURL,
function(err, text, headers) end, 'POST', json.encode({username = name, embeds = embed}), { ['Content-Type'] = 'application/json' })
-- END
end