Files
ND_Core/ND_Jailing/source/server.lua
2022-07-08 23:18:25 +02:00

80 lines
3.2 KiB
Lua

local jailedPlayers = {}
-- Get player any identifier, available types: steam, license, xbl, ip, discord, live.
function GetPlayerIdentifierFromType(type, source)
local identifierCount = GetNumPlayerIdentifiers(source)
for count = 0, identifierCount do
local identifier = GetPlayerIdentifier(source, count)
if identifier and string.find(identifier, type) then
return identifier
end
end
return nil
end
-- send discord embed with webhook.
function sendToDiscord(name, message, color)
local embed = {
{
title = name,
description = message,
footer = {
icon_url = "https://i.imgur.com/notBtrZ.png",
text = "Created by Andyyy#7666"
},
color = color
}
}
PerformHttpRequest(server_config.discordWebhook, function(err, text, headers) end, 'POST', json.encode({username = "ND Jailing", embeds = embed}), {["Content-Type"] = "application/json"})
end
-- Jail player discord log, trigger the even on the players client and send a message to everyone.
RegisterNetEvent("ND_Jailing:jailPlayer")
AddEventHandler("ND_Jailing:jailPlayer", function(id, time, fine, reason)
local player = source
local players = exports["ND_Core"]:getCharacterTable()
local dept = players[player].dept
for _, department in pairs(config.accessDepartments) do
if department == dept then
jailedPlayers[GetPlayerIdentifierFromType("license", id)] = time
exports["ND_Core"]:deductMoney(fine, id, "bank")
TriggerClientEvent("ND_Jailing:jailPlayer", id, time)
sendToDiscord("Jail Logs", "**" .. GetPlayerName(player) .. "** Jailed **" .. GetPlayerName(id) .. "** for **" .. time .. " seconds** with the reason: **" .. reason .. "**.", 1595381)
TriggerClientEvent('chat:addMessage', -1, {
color = { 255, 0, 0},
multiline = true,
args = {"[Judge]", GetPlayerName(id) .. " was charaged with " .. reason .. " and will be spending " .. time .. " months in jail."}
})
break
end
end
end)
RegisterNetEvent("ND_Jailing:updateJailing")
AddEventHandler("ND_Jailing:updateJailing", function(time)
local player = source
if time == 0 then
jailedPlayers[GetPlayerIdentifierFromType("license", player)] = nil
else
jailedPlayers[GetPlayerIdentifierFromType("license", player)] = time
end
end)
-- Gets all players on the server and adds them to a table.
RegisterNetEvent("ND_Jailing:getPlayers")
AddEventHandler("ND_Jailing:getPlayers", function()
local players = {}
for _, id in pairs(GetPlayers()) do
players[id] = "(" .. id .. ") " .. GetPlayerName(id)
end
TriggerClientEvent("ND_Jailing:returnPlayers", source, players)
end)
RegisterNetEvent("ND_Jailing:getJailTime")
AddEventHandler("ND_Jailing:getJailTime", function()
local player = source
local time = jailedPlayers[GetPlayerIdentifierFromType("license", player)]
if time then
TriggerClientEvent("ND_Jailing:jailPlayer", player, time)
end
end)