Wert Give Money System
You can access the setup information you need about this product
INSTALLATION
1 - Upload the script folder to the location of your resources
2 - Check config and editable file settings. If you are using different systems, you can make the necessary adjustments in these files, such as for , ox_lib
, etc.
3 - Installation successful, have a good funs
OX LIB OPTION
There are many ox settings available in the files, if you want, you can configure them.

If you want to use ox_lib, please check if this link is enabled on fxmanifest.check it out from inside lua. this must be turned on before you can use ox_lib. After opening it, it will be enough to use the refresh and ensure commands.
INFORMATION
OPEN FILES
Config = {}
Config.OxLib = false
Config.DebugPoly = false
-- # Interaction distance settings
Config.RenderDistance = 10.0 -- Render distance, player long distance interaction ui's show in how much distance so we can say min distance for render interaction ui
Config.InteractionDistance = 1.0 -- Interaction distance, if u try give money for other player u need near how much distance
-- # Interaction text and key settings
Config.LongDistanceInteractionInner = 'E' -- Text for long distance interface also if u want change for icon support : https://fontawesome.com/icons
Config.NearDistanceInteractionKey = 'E' -- Near interaction key text
Config.NearDistanceInteractionInner = 'Give Money (%s$)' -- Give money text for near distance (%s for money amount, if u dont want this u can edit this line for another default string or change position what u want ...)
Config.InteractionKeyForGiveMoney = 38 -- Key code for start give money to other player https://docs.fivem.net/docs/game-references/controls/
-- # Command settings
-- Command for start give money
Config.CommandSettings = {
active = true,
name = 'givemoney',
description = 'Give money other players!',
argument_desc = 'Amount ($)',
}
-- # Key settings
-- Hot key for start fast give money
Config.KeySettings = {
active = true,
key = 'HOME',
description = 'Give money other players!',
}
Config.CancelKey = {key = 'H', description = 'Cancel active give action'}
Config.PlaceKey = {key = 'G', description = 'Place ur money'}
-- # Place settings
Config.EnablePlace = true -- true or false | If u set true u allows drops | So if player press place key him drop money own location for after take ... u can take information in video or features ...
Config.PlaceRenderInteractionDistance = 5.0 -- How far away the interface will be displayed for droped moneys
Config.PlaceKeyInteractionDistance = 1.2 -- How many distances can you press the key within for droped moneys
Config.PlaceLongDistanceInteractionInner = 'E' -- Text for long distance interface also if u want change for icon support : https://fontawesome.com/icons
Config.PlaceNearDistanceInteractionKey = 'E' -- Near interaction key text
Config.PlaceNearDistanceInteractionInner = 'Take Money (%s$)' -- Give money text for near distance (%s for money amount, if u dont want this u can edit this line for another default string or change position what u want ...)
Config.PlaceInteractionKeyForGiveMoney = 38 -- Key code for start give money to other player https://docs.fivem.net/docs/game-references/controls/
-- # Input settings
-- When u not set amount for money from command or u use hotkey or u trigger start event for another script like radial menu for the set amount this is requid
-- Note : If u want use ox_lib u need open Config.OxLib
-- This input settings editable in client side
Config.InputSystem = 'wert-input' -- 'ox_lib' | 'qb-input' | 'custom' | 'wert-input' | Wert input is script feature, if u dont have or dont want others u can use we input system
-- # Model and attach settings
Config.MoneyModel = `prop_cash_pile_02`
Config.MoneyPlacementBone = 28422
Config.MoneyPlacement = {
0.11, -- Position X
0.0, -- Position Y
-0.03, -- Position Z
77.0, -- Rotation X
0.0, -- Rotation Y
0.0 -- Rotation Z
}
-- The dynamic model system allows you to choose between different models and animations as the amount of money changes.
-- You can customize it through the settings below.
-- If you disable the dynamic system, the default Config.MoneyModel value will be used for all money amounts.
Config.UseDynamicModelSystem = true -- # true or false | boolean
Config.UseDynamicModels = {
{
minMoney = 1,
maxMoney = 10000,
model = `prop_cash_pile_02`,
attach = {
bone = 28422,
pos = {0.11, 0.0, -0.03}, -- Position x , y ,z
rot = {77.0, 0.0, 0.0} -- Rotation x , y , z
},
anim = {
dict = "amb@world_human_tourist_map@male@base",
anim = "base",
flag = 50
}
},
{
minMoney = 10001,
maxMoney = 50000,
model = `prop_med_bag_01b`,
attach = {
bone = 28422,
pos = {0.3000, 0.0100, 0.0040}, -- Position x , y ,z
rot = {90.0, 0.0, -90.0} -- Rotation x , y , z
},
anim = {
dict = "move_weapon@jerrycan@generic",
anim = "idle",
flag = 50
}
},
{
minMoney = 50001,
maxMoney = 'unlimited',
model = `prop_ld_suitcase_01`,
attach = {
bone = 28422,
pos = {0.2900, 0.0100, 0.0040}, -- Position x , y ,z
rot = {90.0, 0.0, -90.0} -- Rotation x , y , z
},
anim = {
dict = "move_weapon@jerrycan@generic",
anim = "idle",
flag = 50
}
},
-- If u want add or edit more setting here
}
-- # Money carry animation and settings
Config.AnimationSettings = { -- No dynamic system setting. If u want use dynamic system u can edit above Config.UseDynamicModels table.
dict = "amb@world_human_tourist_map@male@base",
anim = "base",
flag = 50,
}
-- # Give to target animation
Config.GiveTargetAnimationSettings = {
dict = 'mp_common',
anim = 'givetake1_b',
flag = 50,
}
-- # Take money for target animation
Config.TakeMoneyAnimationSettings = {
dict = "mp_common",
anim = "givetake1_a",
flag = 50,
}
-- # Disable control settings (When give money active on hand disable this controls)
Config.DisableControls = {
active = true, -- If u dont want disable system set false this
controls = { 24, 25, 59, 63, 64, 71, 72, 75, 140, 141, 142, 143, 257, 263, 264 },
disableShot = true
}
-- # Request system
-- This is a question system. When player try give money, target player have a question ui. If target accept this give money request, give money action successfully completed.
Config.UseRequestSystem = true -- true or false | For the enable system set true
Config.RequestAnswerTime = 30 -- Second (Player must answer request in this time, if not answer action auto cancel)
Config.RequestInteractionKey = {
key = 'LMENU',
description = 'Enable / Disable request menu interaction'
}
Config.RequestShowGiverName = false -- If You want the see money sender player name on request popui u can set true (LANG file have much text setting for this settings). | true or false | boolean
Config.RequestShowGiverAdvancedSettings = { -- !IMPORTANT for the must work this settings u need open Config.RequestShowGiverName setting.
active = true, -- Do you want to activate the system that checks that the player is unrecognizable by checking clothes ? Like mask check.
datas = {
-- ['key'] (string) = {table}
['1'] = {0}, -- Example : 1) Mask id | Not mask component id drawableId 0 so if player not have mask script show player name but if player have mask it write like mask player (Lang file have edit)
-- If u want add more component id and drawableId like above
},
props = {
-- ['key'] (string) = {table}
-- Same rules available for this like above ...
}
}
Config.RequestShowMoneyAmount = false -- If u want see money amount on popui u can set true (LANG file have much text setting for this settings). | true or false | boolean
-- # Take money from drop animation (Place system)
Config.TakeMoneyFromDropAnimation = {
dict = 'anim@mp_snowball',
anim = 'pickup_snowball',
flag = 0
}
local QBCore = exports['qb-core']:GetCoreObject()
-- # Functions
function CustomNotifVariation(text, style, time)
QBCore.Functions.Notify(text, style, time)
end
function CustomStatusUI(bool, place)
-- If u want change ui for ur self.
-- Now use original script interface
exports['wert-givemoneysystem']:StatusUIActivity(bool, place)
end
function OpenInput()
-- This is input system without wert-input
-- If u want select custom in config and add ur custom input system
if Config.InputSystem == 'ox_lib' then
local dialog = lib.inputDialog(LANG.input.label, {
{type = 'number', label = LANG.input.header, description = LANG.input.description, icon = 'money-bill-wave', required = true},
})
if dialog and dialog[1] then
local amount = tonumber(dialog[1])
if amount > 0 then return amount else
-- Must bigger than 0
return false
end
else
-- Invalid value notif
return false
end
elseif Config.InputSystem == 'qb-input' then
local dialog = exports['qb-input']:ShowInput({
header = LANG.input.header,
submitText = LANG.input.confirm,
inputs = {
{
text = LANG.input.description,
name = "amount",
type = "number",
isRequired = true
},
},
})
if dialog and dialog.amount and dialog.amount ~= '' then
local amount = tonumber(dialog.amount)
if amount > 0 then return amount else
-- Must bigger than 0
return false
end
else
-- Invalid value notif
return false
end
elseif Config.InputSystem == 'custom' then
-- Custom for u
end
end
-- # Events
RegisterNetEvent('wert-givemoneysystem:client:system-activity', function(bool)
-- This is a event handler. When give money action start or stop this event trigger. If u want use with other scripts and add much intergate for other scripts.
-- A example u can use this and disable ur phone open or inventory open, with custom ur exports.
--[[ if bool then
print('Give money action started')
else
print('Give money action finished!')
end ]]
end)
RegisterNetEvent('wert-givemoneysystem:client:send-custom-notif', function(text, style, time)
CustomNotifVariation(text, style, time)
end)
local QBCore = exports['qb-core']:GetCoreObject()
EnableDiscordLogs = true -- !IMPORTANT | If u want use discord logs please set true this. If u dont want set false.
local StartWebHook = ""
local CancelWebHook = ""
local CompleteWebHook = ""
local MoneyDropComplete = ""
PlaceWebHook = ""
function SendNotify(src, msg, style, time) TriggerClientEvent('wert-givemoneysystem:client:send-custom-notif', src, msg, style, time) end
function GetPlayerFullName(ply)
if not ply then return 'Unkown' end
local myfullname = ply.PlayerData.charinfo.firstname .. ' ' .. ply.PlayerData.charinfo.lastname
return myfullname
end
function CheckMoney(src, amount)
local ply = QBCore.Functions.GetPlayer(src)
if not ply then SendNotify(src, LANG.error.player_not_online, 'error') return false end
amount = tonumber(amount)
local money = ply.PlayerData.money.cash
if (money - amount) >= 0 then
ply.Functions.RemoveMoney('cash', amount)
if EnableDiscordLogs then
local time = exports['wert-givemoneysystem']:getTimeStatus()
local fullname = ply.PlayerData.charinfo.firstname .. ' ' .. ply.PlayerData.charinfo.lastname
local cid = ply.PlayerData.citizenid
local logMessage = 'Player Name : ' .. fullname ..
'\n Player Cid / Identifier : ' .. cid ..
'\n Amount : ' .. amount ..
'\n ID : ' .. src ..
'\n Time : ' .. time
exports['wert-givemoneysystem']:sendLog(StartWebHook, 'Player Start Give Money', logMessage)
end
return true
else
SendNotify(src, LANG.error.money_enough, 'error')
return false
end
end
function AddBackMoney(src, amount)
local ply = QBCore.Functions.GetPlayer(src)
if not ply then return end
amount = tonumber(amount)
ply.Functions.AddMoney('cash', amount)
if EnableDiscordLogs then
local time = exports['wert-givemoneysystem']:getTimeStatus()
local fullname = ply.PlayerData.charinfo.firstname .. ' ' .. ply.PlayerData.charinfo.lastname
local cid = ply.PlayerData.citizenid
local logMessage = 'Player Name : ' .. fullname ..
'\n Player Cid / Identifier : ' .. cid ..
'\n Amount : ' .. amount ..
'\n ID : ' .. src ..
'\n Time : ' .. time
exports['wert-givemoneysystem']:sendLog(CancelWebHook, 'Player Cancelled Give Action', logMessage)
end
end
function MoneyTransferCompleted(id, amount, src)
local target = QBCore.Functions.GetPlayer(id)
if not target then return end
amount = tonumber(amount)
target.Functions.AddMoney('cash', amount)
if EnableDiscordLogs then
local ply = QBCore.Functions.GetPlayer(src)
if not ply then return end
local time = exports['wert-givemoneysystem']:getTimeStatus()
local fullname = ply.PlayerData.charinfo.firstname .. ' ' .. ply.PlayerData.charinfo.lastname
local cid = ply.PlayerData.citizenid
local targetcid = target.PlayerData.citizenid
local targetname = target.PlayerData.charinfo.firstname .. ' ' .. target.PlayerData.charinfo.lastname
local logMessage = 'Player Name : ' .. fullname ..
'\n Player Cid / Identifier : ' .. cid ..
'\n Amount : ' .. amount ..
'\n Player ID : ' .. src ..
'\n Target Name : ' .. targetname ..
'\n Target Cid / Identifier : ' .. targetcid ..
'\n Target ID : ' .. id ..
'\n Time : ' .. time
exports['wert-givemoneysystem']:sendLog(CompleteWebHook, 'Player Completed Give Action', logMessage)
end
end
function TakeMoneyFromDrop(src, amount, index)
local ply = QBCore.Functions.GetPlayer(src)
if not ply then return end
amount = tonumber(amount)
ply.Functions.AddMoney('cash', amount)
if EnableDiscordLogs then
local time = exports['wert-givemoneysystem']:getTimeStatus()
local fullname = ply.PlayerData.charinfo.firstname .. ' ' .. ply.PlayerData.charinfo.lastname
local cid = ply.PlayerData.citizenid
local logMessage = 'Player Name : ' .. fullname ..
'\n Player Cid / Identifier : ' .. cid ..
'\n Amount : ' .. amount ..
'\n Player ID : ' .. src ..
'\n Taked Money Index : ' .. index ..
'\n Time : ' .. time
exports['wert-givemoneysystem']:sendLog(MoneyDropComplete, 'Player Take Money From Drop', logMessage)
end
end
LANG = {
error = {
player_not_online = 'Player Not Online!',
money_enough = 'You are not have enough money!',
invalid_amount = 'Invalid amount value!',
amount_minus = 'Your amount value must bigger than 0 !',
target_not_online = 'Target not online!',
id_not_found = 'Id not found!',
target_busy = 'Target busy!',
request_already_have = 'You are already have a request!',
request_time_expire = 'Target did not respond to the call for a long time!',
request_target_cancelled = 'Your call has been canceled by the target!',
target_too_far = 'Player so faar, please go near or cancel this request!',
you_have_active_request = 'You can not do this while you have an active response process!',
money_not_found_on_hand = 'No money was found in your hand, please try again later!',
request_not_found = 'Request not found!',
money_drop_not_found = 'Money drop not found!',
money_drop_so_far = 'You are away from the money drop!',
},
success = {
request_send = 'The request has been sent!',
},
input = {
label = 'Give Money',
header = 'How much money u want transfer ?',
description = 'Money (Number $)',
confirm = 'Confirm',
placeholder = 'Amount',
cancel = 'Cancel'
},
statusUI = {
cancel_key = 'H',
cancel_txt = 'Cancel',
place_key = 'G',
place_txt = 'Place'
},
requestInterface = {
accept = 'Accept',
decline = 'Decline',
interaction = 'Press ALT to interact',
header = 'SOMEONE WANT GIVE MONEY',
header_only_money = 'SOMEONE WANT GIVE %s$',
header_name_and_money = '%s WANT GIVE %s$',
header_only_name = '%s WANT GIVE MONEY',
header_mask_and_money = 'MASKED WANT GIVE MONEY %s$',
header_only_mask = 'MASKED WANT GIVE MONEY',
},
}
Last updated