137 lines
4.4 KiB
Lua
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
|