diff --git a/ND_Jailing/config_client.lua b/ND_Jailing/config_client.lua deleted file mode 100644 index 28478ff..0000000 --- a/ND_Jailing/config_client.lua +++ /dev/null @@ -1,24 +0,0 @@ -config = { - maxJailTime = 300, -- Max time in seconds that someone can jail another player. - jailDistance = 90.0, -- How far can the player go from the Jail coordinates. If the player is further than the set amount they will be teleported back. - - jailCoords = {x = 1680.21, y = 2513.25, z = 44.56, h = 6.53}, - releaseCoords = {x = 1840.22, y = 2608.42, z = 45.58, h = 270.09}, - - -- Where can players access it from. - accessLocation = { - {x = -450.17, y = 6012.62, z = 31.71}, -- Paleto Bay Sheriff's Office - {x = 1853.57, y = 3690.74, z = 34.26}, -- Sandy Shores Sheriff's Office - {x = 460.53, y = -988.84, z = 24.91} -- Mission Row PD - }, - - -- Departments that can access the jail tablet. - accessDepartments = { - "SAHP", - "LSPD", - "BCSO" - }, - - -- How close does the player have to be to the coordiantes to be able to open the tablet. - accessDistance = 1.2, -} \ No newline at end of file diff --git a/ND_Jailing/config_server.lua b/ND_Jailing/config_server.lua deleted file mode 100644 index f5d8c19..0000000 --- a/ND_Jailing/config_server.lua +++ /dev/null @@ -1,3 +0,0 @@ -server_config = { - discordWebhook = "https://discord.com/api/webhooks/873744008122335252/zk53XWv0ZfD-BD2Su6VYGPzUgNW0NjLrj7hVBQFVgp_ByO0f0rpMwx7fsNNNjyVp4GUT", -} \ No newline at end of file diff --git a/ND_Jailing/fxmanifest.lua b/ND_Jailing/fxmanifest.lua deleted file mode 100644 index 8005cdc..0000000 --- a/ND_Jailing/fxmanifest.lua +++ /dev/null @@ -1,25 +0,0 @@ --- For support join my discord: https://discord.gg/Z9Mxu72zZ6 - -author "Andyyy#7666, N1K0#0001" -description "ND Framework Jailing" -version "2.2.0" - -fx_version "cerulean" -game "gta5" -lua54 "yes" - -files { - "source/ui/index.html", - "source/ui/script.js", - "source/ui/style.css" -} -ui_page "source/ui/index.html" - -shared_script "config_client.lua" -client_script "source/client.lua" -server_scripts { - "config_server.lua", - "source/server.lua" -} - -dependency "ND_Core" \ No newline at end of file diff --git a/ND_Jailing/source/client.lua b/ND_Jailing/source/client.lua deleted file mode 100644 index 3add9e6..0000000 --- a/ND_Jailing/source/client.lua +++ /dev/null @@ -1,245 +0,0 @@ -local display = false -local nearJailingUi = false -local jailTime = 0 -local ped -NDCore = exports["ND_Core"]:GetCoreObject() - -function SetDisplay(bool) - display = bool - SetNuiFocus(bool, bool) - SendNUIMessage({ - type = "ui", - status = bool - }) -end - -function text(text, x, y, scale) - SetTextFont(4) - SetTextProportional(0) - SetTextScale(scale, scale) - SetTextEdge(1, 0, 0, 0, 255) - SetTextDropShadow(0, 0, 0, 0,255) - SetTextOutline() - SetTextJustification(0) - SetTextEntry("STRING") - AddTextComponentString(text) - DrawText(x, y) -end - -function drawText3D(coords, text) - local onScreen, _x, _y = World3dToScreen2d(coords.x, coords.y, coords.z + 0.3) - local pX, pY, pZ = table.unpack(GetGameplayCamCoords()) - SetTextScale(0.4, 0.4) - SetTextFont(4) - SetTextProportional(1) - SetTextEntry("STRING") - SetTextCentre(true) - SetTextColour(255, 255, 255, 255) - SetTextOutline() - AddTextComponentString(text) - DrawText(_x, _y) -end - -function hasAccess() - local job = NDCore.Functions.GetSelectedCharacter().job - for _, department in pairs(config.accessDepartments) do - if department == job then - return true - end - end - return false -end - -function inRange(ped) - local pedCoords = GetEntityCoords(ped) - for locations in pairs(config.accessLocation) do - local uiCoords = vector3(config.accessLocation[locations].x, config.accessLocation[locations].y, config.accessLocation[locations].z) - if (#(pedCoords - uiCoords)) < config.accessDistance then - if hasAccess() then - return uiCoords - end - end - end - return false -end - -local tablet = false -function ToggleTablet(toggle) - if toggle and not tablet then - tablet = true - Citizen.CreateThread(function() - RequestAnimDict("amb@code_human_in_bus_passenger_idles@female@tablet@base") - while not HasAnimDictLoaded("amb@code_human_in_bus_passenger_idles@female@tablet@base") do - Citizen.Wait(150) - end - RequestModel(`prop_cs_tablet`) - while not HasModelLoaded(`prop_cs_tablet`) do - Citizen.Wait(150) - end - local playerPed = PlayerPedId() - local tabletObj = CreateObject(`prop_cs_tablet`, 0.0, 0.0, 0.0, true, true, false) - local tabletBoneIndex = GetPedBoneIndex(playerPed, 60309) - SetCurrentPedWeapon(playerPed, `weapon_unarmed`, true) - AttachEntityToEntity(tabletObj, playerPed, tabletBoneIndex, 0.03, 0.002, -0.0, 10.0, 160.0, 0.0, true, false, false, false, 2, true) - SetModelAsNoLongerNeeded(`prop_cs_tablet`) - while tablet do - Citizen.Wait(100) - playerPed = PlayerPedId() - - if not IsEntityPlayingAnim(playerPed, "amb@code_human_in_bus_passenger_idles@female@tablet@base", "base", 3) then - TaskPlayAnim(playerPed, "amb@code_human_in_bus_passenger_idles@female@tablet@base", "base", 3.0, 3.0, -1, 49, 0, 0, 0, 0) - end - end - ClearPedSecondaryTask(playerPed) - Citizen.Wait(450) - DetachEntity(tabletObj, true, false) - DeleteEntity(tabletObj) - end) - elseif not toggle and tablet then - tablet = false - end -end - -Citizen.CreateThread(function() - while true do - Citizen.Wait(500) - ped = PlayerPedId() - nearJailingUi = inRange(ped) - end -end) - -Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - if not display and nearJailingUi then - drawText3D(nearJailingUi, "~w~Press ~b~E ~w~to open the jail ui") - if IsControlJustPressed(0, 51) then - TriggerServerEvent("ND_Jailing:getPlayers") - end - end - end -end) - --- Return list of all players on the server and open ui. -RegisterNetEvent("ND_Jailing:returnPlayers", function(players) - for _, player in pairs(players) do - SendNUIMessage({ - type = "players", - players = player, - }) - end - SetDisplay(true) - ToggleTablet(display) -end) - -AddEventHandler("playerSpawned", function() - TriggerServerEvent("ND_Jailing:getJailTime") -end) - -function jail(time) - local player = PlayerPedId() - local pedCoords = GetEntityCoords(player) - jailTime = time - SetEntityCoords(player, config.jailCoords.x, config.jailCoords.y, config.jailCoords.z, false, false, false, false) - SetEntityHeading(player, config.jailCoords.h) - TriggerEvent("ND_Jailing:timeLeft") - TriggerServerEvent("ND_Jailing:updateJailing", jailTime) - - while jailTime > 0 do - jailTime = jailTime -1 - player = PlayerPedId() - if #(GetEntityCoords(player) - vector3(config.jailCoords.x, config.jailCoords.y, config.jailCoords.z)) > config.jailDistance then - SetEntityCoords(player, config.jailCoords.x, config.jailCoords.y, config.jailCoords.z, false, false, false, false) - end - Citizen.Wait(1000) - end - SetEntityCoords(player, config.releaseCoords.x, config.releaseCoords.y, config.releaseCoords.z, false, false, false, false) - SetEntityHeading(player, config.releaseCoords.h) - TriggerServerEvent("ND_Jailing:updateJailing", jailTime) -end - -RegisterNetEvent("ND_Jailing:timeLeft", function() - while jailTime > 0 do - Citizen.Wait(0) - text("Time until release: " .. tostring(jailTime), 0.5, 0.9, 0.5) - end -end) - --- Jail a player and loop to keep them in jail every second. -RegisterNetEvent("ND_Jailing:jailPlayer", function(time) - jail(time) -end) - -RegisterNetEvent("ND_Jailing:unjailPlayer", function(time) - jailTime = 0 -end) - --- Chat suggestion for command. -TriggerEvent("chat:addSuggestion", "/jail", "Jail a player", { - {name="Id", help="Player Id"}, - {name="Time", help="Time to jail (seconds)"}, - {name="Fine", help="How much will the player be fined?"}, - {name="Reason", help="Short description of the charge."} -}) - --- Same jail function but with a command. -RegisterCommand("jail", function(source, args, rawCommand) - local id = tonumber(args[1]) - local time = tonumber(args[2]) - local fine = args[3] - local reason = args[4] - if hasAccess() then - if not GetPlayerFromServerId(id) then - TriggerEvent("chat:addMessage", { - color = { 255, 0, 0}, - multiline = true, - args = {"[Error]", "couldn't find a player with id " .. id .. "."} - }) - elseif time > config.maxJailTime then - TriggerEvent("chat:addMessage", { - color = { 255, 0, 0}, - multiline = true, - args = {"[Error]", "max time to jail is: " .. config.maxJailTime .. " seconds."} - }) - elseif time <= config.maxJailTime then - TriggerServerEvent("ND_Jailing:jailPlayer", id, time, fine, reason) - SetDisplay(false) - end - else - TriggerEvent("chat:addMessage", { - color = { 255, 0, 0}, - multiline = true, - args = {"[Error]", "You don't have permission to use this command."} - }) - end -end, false) - --- When form is submitted. -RegisterNUICallback("sumbit", function(data) - local id = tonumber(string.sub(data.id, 2, string.find(data.id, ")") - 1)) - local time = tonumber(data.time) - local fine = data.fine - local reason = data.reason - if time > config.maxJailTime then - SendNUIMessage({ - error = "Error: max time to jail is: " .. config.maxJailTime .. " seconds." - }) - Citizen.Wait(5000) - SendNUIMessage({ - error = "" - }) - else - TriggerServerEvent("ND_Jailing:jailPlayer", id, time, fine, reason) - SendNUIMessage({ - type = "clean" - }) - SetDisplay(false) - ToggleTablet(display) - end -end) - --- Close ui. -RegisterNUICallback("close", function(data) - SetDisplay(false) - ToggleTablet(display) -end) \ No newline at end of file diff --git a/ND_Jailing/source/server.lua b/ND_Jailing/source/server.lua deleted file mode 100644 index 1948e89..0000000 --- a/ND_Jailing/source/server.lua +++ /dev/null @@ -1,79 +0,0 @@ -NDCore = exports["ND_Core"]:GetCoreObject() -NDCore.Functions.VersionChecker("ND_Jailing", GetCurrentResourceName(), "https://github.com/ND-Framework/ND_Framework", "https://raw.githubusercontent.com/ND-Framework/ND_Framework/main/ND_Jailing/fxmanifest.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", function(id, time, fine, reason) - local player = source - local players = NDCore.Functions.GetPlayers() - local dept = players[player].job - for _, department in pairs(config.accessDepartments) do - if department == dept then - jailedPlayers[GetPlayerIdentifierFromType("license", id)] = time - NDCore.Functions.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", 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", 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", function() - local player = source - local time = jailedPlayers[GetPlayerIdentifierFromType("license", player)] - if time then - TriggerClientEvent("ND_Jailing:jailPlayer", player, time) - end -end) diff --git a/ND_Jailing/source/ui/index.html b/ND_Jailing/source/ui/index.html deleted file mode 100644 index 569ecec..0000000 --- a/ND_Jailing/source/ui/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - -
-

Jailing Interface

-
-
- - - - - - - - - - - -
-
-

- - -
- - \ No newline at end of file diff --git a/ND_Jailing/source/ui/script.js b/ND_Jailing/source/ui/script.js deleted file mode 100644 index 40ba128..0000000 --- a/ND_Jailing/source/ui/script.js +++ /dev/null @@ -1,61 +0,0 @@ -$(document).ready(function() { - function display(bool) { - if (bool) { - $("#overlay").fadeIn("slow"); - } else { - $("#overlay").fadeOut("slow"); - } - } - display(false); - - window.addEventListener('message', function(event) { - var item = event.data; - if (item.type === "ui") { - if (item.status == true) { - display(true); - } else { - display(false); - } - } - - $("#error").text(item.error); - - if (item.type === "players") { - $("#id").append($("