Skip to content

Commit

Permalink
Add custom fines and ability to remove fines
Browse files Browse the repository at this point in the history
  • Loading branch information
Comet1903 committed Dec 26, 2023
1 parent 21e9261 commit d5b980e
Show file tree
Hide file tree
Showing 14 changed files with 100 additions and 16 deletions.
75 changes: 59 additions & 16 deletions client/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -507,31 +507,37 @@ function OpenBodySearchMenu(player)
end

function OpenFineMenu(player)
local elements = {
{unselectable = true, icon = "fas fa-scroll", title = TranslateCap('fine')},
{icon = "fas fa-scroll", title = TranslateCap('traffic_offense'), value = 0},
{icon = "fas fa-scroll", title = TranslateCap('minor_offense'), value = 1},
{icon = "fas fa-scroll", title = TranslateCap('average_offense'), value = 2},
{icon = "fas fa-scroll", title = TranslateCap('major_offense'), value = 3}
}

ESX.OpenContext("right", elements, function(menu,element)
local data = {current = element}
OpenFineCategoryMenu(player, data.current.value)
end)
if Config.EnableFinePresets then
local elements = {
{unselectable = true, icon = "fas fa-scroll", title = TranslateCap('fine')},
{icon = "fas fa-scroll", title = TranslateCap('traffic_offense'), value = 0},
{icon = "fas fa-scroll", title = TranslateCap('minor_offense'), value = 1},
{icon = "fas fa-scroll", title = TranslateCap('average_offense'), value = 2},
{icon = "fas fa-scroll", title = TranslateCap('major_offense'), value = 3}
}

ESX.OpenContext("right", elements, function(menu,element)
local data = {current = element}
OpenFineCategoryMenu(player, data.current.value)
end)
else
ESX.CloseContext()
ESX.CloseContext()
OpenFineTextInput(player)
end
end

local fineList = {}
function OpenFineCategoryMenu(player, category)
if not fineList[category] then
if not fineList[category] then
local p = promise.new()

ESX.TriggerServerCallback('esx_policejob:getFineList', function(fines)
p:resolve(fines)
end, category)

fineList[category] = Citizen.Await(p)
end
end

local elements = {
{unselectable = true, icon = "fas fa-scroll", title = TranslateCap('fine')}
Expand Down Expand Up @@ -561,6 +567,39 @@ end
end)
end

function OpenFineTextInput(player)
Citizen.CreateThread(function()
local amount = 0
local reason = ''
AddTextEntry('FMMC_KEY_TIP1', TranslateCap('fine_enter_amount'))
Citizen.Wait(0)
DisplayOnscreenKeyboard(1, 'FMMC_KEY_TIP1', '', '', '', '', '', 30)
while UpdateOnscreenKeyboard() ~= 1 and UpdateOnscreenKeyboard() ~= 2 do
Citizen.Wait(0)
end
if UpdateOnscreenKeyboard() ~= 2 then
amount = tonumber(GetOnscreenKeyboardResult())
if amount == nil then
ESX.ShowNotification(TranslateCap('not_a_number'))
return
end
end
AddTextEntry('FMMC_KEY_TIP1', TranslateCap('fine_enter_text'))
Citizen.Wait(0)
DisplayOnscreenKeyboard(1, 'FMMC_KEY_TIP1', '', '', '', '', '', 120)
while UpdateOnscreenKeyboard() ~= 1 and UpdateOnscreenKeyboard() ~= 2 do
Citizen.Wait(0)
end
if UpdateOnscreenKeyboard() ~= 2 then
reason = GetOnscreenKeyboardResult()
end
Citizen.Wait(500)
TriggerServerEvent('esx_billing:sendBill', GetPlayerServerId(player), 'society_police', reason, amount)
OpenPoliceActionsMenu()
end)
end


function LookupVehicle(elementF)
local elements = {
{unselectable = true, icon = "fas fa-car", title = elementF.title},
Expand Down Expand Up @@ -634,14 +673,18 @@ function OpenUnpaidBillsMenu(player)
ESX.TriggerServerCallback('esx_billing:getTargetBills', function(bills)
for k,bill in ipairs(bills) do
elements[#elements+1] = {
unselectable = true,
unselectable = not Config.EnableFineRemoval,
icon = "fas fa-scroll",
title = ('%s - <span style="color:red;">%s</span>'):format(bill.label, TranslateCap('armory_item', ESX.Math.GroupDigits(bill.amount))),
billId = bill.id
}
end

ESX.OpenContext("right", elements, nil, nil)
ESX.OpenContext('right', elements, function(menu, bill)
TriggerServerEvent('esx_policejob:removeFine', bill.billId)
ESX.CloseContext()
OpenUnpaidBillsMenu(player)
end, nil)
end, GetPlayerServerId(player))
end

Expand Down
3 changes: 3 additions & 0 deletions config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ Config.EnableCustomPeds = false -- Enable custom peds in cloak room? S
Config.EnableESXService = false -- Enable esx service?
Config.MaxInService = -1 -- How many people can be in service at once? Set as -1 to have no limit

Config.EnableFinePresets = true -- Set to false to use a custom input fields for fines
Config.EnableFineRemoval = true -- Enable to let officers remove fines

Config.Locale = GetConvar('esx:locale', 'en')

Config.OxInventory = ESX.GetConfig().OxInventory
Expand Down
3 changes: 3 additions & 0 deletions locales/cs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['cs'] = {
['licence_you_revoked'] = 'zrusil jsi %s ktery patril %s',
['no_players_nearby'] = 'zadny hrac pobliz!',
['being_searched'] = 'prave jsi prohledavan policii',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Vehicle interaction
['vehicle_info'] = 'informace o vozidle',
['pick_lock'] = 'vypáčit vozidlo',
Expand Down
3 changes: 3 additions & 0 deletions locales/de.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['de'] = {
['licence_you_revoked'] = 'Du entziehst eine ~b~%s~s~ welche zu ~y~%s~s~ gehörte.',
['no_players_nearby'] = 'Es sind keine Personen in der Nähe!',
['being_searched'] = 'Du wirst von der Polizei durchsucht!',
['fine_enter_amount'] = 'Gebe den Betrag der Geldstrafe ein',
['fine_enter_text'] = 'Gebe den Grund der Geldstrafe ein',
['not_a_number'] = 'Fehler: Die Eingabe muss eine Zahl sein',
-- Vehicle interaction
['vehicle_info'] = 'Fahrzeug Info',
['pick_lock'] = 'Fahrzeug Aufbrechen',
Expand Down
3 changes: 3 additions & 0 deletions locales/en.lua
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ Locales['en'] = {
['average_offense'] = 'average Offense',
['major_offense'] = 'major Offense',
['fine_total'] = 'fine: %s',
['fine_enter_amount'] = 'Enter the amount of the fine',
['fine_enter_text'] = 'Enter the reason for the fine',
['not_a_number'] = 'Error: Value was not a number',
-- Vehicle Info Menu
['plate'] = 'plate: %s',
['owner_unknown'] = 'owner: Unknown',
Expand Down
3 changes: 3 additions & 0 deletions locales/es.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['es'] = {
['licence_you_revoked'] = 'you revoked a %s which belonged to %s',
['no_players_nearby'] = 'no hay jugadores cerca',
['being_searched'] = 'you are being searched by the Police',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Vehicle interaction
['vehicle_info'] = 'Información del vehículo',
['pick_lock'] = 'Forzar coche',
Expand Down
3 changes: 3 additions & 0 deletions locales/fi.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['fi'] = {
['licence_you_revoked'] = 'sinä kumosit %s mikä kuului henkilölle %s',
['no_players_nearby'] = 'ei pelaajia lähettyvillä',
['being_searched'] = 'you are being searched by the Police',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Vehicle interaction
['vehicle_info'] = 'ajoneuvon tiedot',
['pick_lock'] = 'tiirikoi ovet',
Expand Down
3 changes: 3 additions & 0 deletions locales/fr.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['fr'] = {
['licence_you_revoked'] = 'vous avez révoqué un %s qui appartenait à %s',
['no_players_nearby'] = 'aucun joueur à proximité',
['being_searched'] = 'vous êtes recherché(e) par la Police',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Intéraction véhicule
['vehicle_info'] = 'infos véhicule',
['pick_lock'] = 'crocheter véhicule',
Expand Down
3 changes: 3 additions & 0 deletions locales/hu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['hu'] = {
['licence_you_revoked'] = 'visszavonta %s %s engedélyét',
['no_players_nearby'] = 'nincs a közeledben játékos!',
['being_searched'] = 'Téged éppen megmotoztak!',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Vehicle interaction
['vehicle_info'] = 'Jármü infó',
['pick_lock'] = 'Jármü feltörése',
Expand Down
3 changes: 3 additions & 0 deletions locales/it.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['it'] = {
['licence_you_revoked'] = 'hai revocato una %s che apparteneva a %s',
['no_players_nearby'] = 'non ci sono giocatori nelle vicinanze!',
['being_searched'] = 'stai venendo perquisito dalla Polizia',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Interazione veicolo
['vehicle_info'] = 'informazioni sul veicolo',
['pick_lock'] = 'forza la serratura del veicolo',
Expand Down
3 changes: 3 additions & 0 deletions locales/nl.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['nl'] = {
['licence_you_revoked'] = 'Je hebt een %s van %s ingevorderd.',
['no_players_nearby'] = 'Geen spelers in de buurt!',
['being_searched'] = 'Je wordt gefouilleerd door de Politie',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Voertuig Interactie
['vehicle_info'] = 'Voertuig Informatie',
['pick_lock'] = 'Breek voertuig open',
Expand Down
3 changes: 3 additions & 0 deletions locales/pl.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ Locales['pl'] = {
['licence_you_revoked'] = 'unieważniasz %s które należały do %s',
['no_players_nearby'] = 'brak graczy w pobliżu',
['being_searched'] = 'you are being searched by the Police',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Vehicle interaction
['vehicle_info'] = 'informacje o pojeździe',
['pick_lock'] = 'odblokuj pojazd',
Expand Down
3 changes: 3 additions & 0 deletions locales/sr.lua
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ Locales['sr'] = {
['average_offense'] = 'Prosečan prekršaj',
['major_offense'] = 'Veliki prekršaj',
['fine_total'] = 'kazna: %s',
['fine_enter_amount'] = 'Enter the amount of the fine', --not translated
['fine_enter_text'] = 'Enter the reason for the fine', --not translated
['not_a_number'] = 'Error: Value was not a number', --not translated
-- Vehicle Info Menu
['plate'] = 'Tablice: %s',
['owner_unknown'] = 'Vlasnik: Nepoznat',
Expand Down
5 changes: 5 additions & 0 deletions server/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,11 @@ ESX.RegisterServerCallback('esx_policejob:getFineList', function(source, cb, cat
end
end)

RegisterNetEvent('esx_policejob:removeFine')
AddEventHandler('esx_policejob:removeFine', function(id)
MySQL.update('DELETE FROM billing WHERE id = ?', {id})
end)

ESX.RegisterServerCallback('esx_policejob:getVehicleInfos', function(source, cb, plate)
local retrivedInfo = {
plate = plate
Expand Down

0 comments on commit d5b980e

Please sign in to comment.