forked from Simnation/Main
34 lines
1.4 KiB
Lua
34 lines
1.4 KiB
Lua
![]() |
local Config = require("shared.sh_config")
|
|||
|
local Locales = require("shared.sh_locales")
|
|||
|
|
|||
|
if Config.Framework ~= "custom" then return end
|
|||
|
|
|||
|
--- Processes payment of the fine for death and notifies the player.
|
|||
|
---@param source number -- The player’s source ID
|
|||
|
---@return boolean -- Returns true if the fine was successfully paid, false otherwise
|
|||
|
local function PayFine(source)
|
|||
|
local player = GetPlayerId(source) -- Retrieve the player object using their source ID
|
|||
|
if not player then return false end
|
|||
|
|
|||
|
local amount = Config.PriceForDeath -- Fine amount to be paid
|
|||
|
local moneyAvailable = player.GetMoney("cash") -- Player’s available cash balance
|
|||
|
local bankAvailable = player.GetMoney("bank") -- Player’s available bank balance
|
|||
|
|
|||
|
-- Attempt to pay with cash first, then bank, and notify accordingly
|
|||
|
if moneyAvailable >= amount then
|
|||
|
player.RemoveMoney("cash", amount) -- Remove Player’s cash
|
|||
|
ServerNotify(source, Locales.Notify.PaidFine:format(amount), "info")
|
|||
|
return true
|
|||
|
elseif bankAvailable >= amount then
|
|||
|
player.RemoveMoney("bank", amount) -- Remove Player’s bank money
|
|||
|
ServerNotify(source, Locales.Notify.PaidFine:format(amount), "info")
|
|||
|
return true
|
|||
|
else
|
|||
|
ServerNotify(source, Locales.Notify.NoMoney, "error")
|
|||
|
return false
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- Registers the PayFine function as a server callback
|
|||
|
lib.callback.register("cloud-deathscreen:server:PayFine", PayFine)
|