Wert Dev Docs
Tebex StoreDiscord
  • ℹ️About Us
  • Products
    • QBCore
      • Wert-pdroster
      • Wert-JewelRobberyV2
      • Wert-jammer
      • Wert-GpsV2
      • Wert-AmmunationJobs
      • Wert-JobsV2
      • Wert-ContactlessPayment
      • Wert-GoPro (Watch vehicles with gopros)
      • Wert-ShopRobbery
      • Wert-shops + delivery jobs (Buy and manage your shops)
      • Wert-houses
      • Wert-ambulancejob
      • Wert-BodyCam (For civilians and jobs)
      • Wert-PoliceSystemsV2
      • Wert-ChopShopV2
      • Wert-taboo (Play and enjoy)
      • Wert illegal house robbery
      • Wert-banking (Bank ui and system)
      • Wert-PaletoBankRobberyV2
      • Wert Car Arena (Death race, Death match, Arena war)
      • Wert Blackmarket Phone
      • Wert Gang Zone (Advanced Npc System)
      • Wert Fuel Stations (Job, Buy, Manage, Create and more ... )
      • Wert Craft System
      • Wert Merryweather Job
      • Wert Cleaning System And Jobs
      • Wert Weapon Racks (Deployable, Advanced)
      • Wert Water Dispensers (Coolers)
      • Wert Lucky Wheel
      • Wert Evidence System
      • Wert Give Money System
      • Wert Ems Roster System
      • Wert New Year Lottery
      • Wert Vending Machines
    • ESX
      • Wert-ShopRobbery
      • Wert-JewelRobberyV2
      • Wert-GpsV2
      • Wert-PoliceSystemsV2
      • Wert-JobsV2
      • Wert-ContactlessPayment
      • Wert-GoPro (Watch vehicles with gopros)
      • Wert-AmmunationJobs
      • Wert-BodyCam (For civilians and jobs)
      • Wert-ChopShopV2
      • Wert-taboo (Play and enjoy)
      • Wert illegal house robbery
      • Wert-PaletoBankRobberyV2
      • Wert-jammer
      • Wert Car Arena (Death race, Death match, Arena war)
      • Wert-banking (Bank ui and system)
      • Wert Fuel Stations (Job, Buy, Manage, Create and more ... )
      • Wert Gang Zone (Advanced Npc System)
      • Wert Blackmarket Phone
      • Wert Craft System
      • Wert Merryweather Job
      • Wert Cleaning System And Jobs
      • Wert Weapon Racks (Deployable, Advanced)
      • Wert Water Dispensers (Coolers)
      • Wert Lucky Wheel
      • Wert Evidence System
      • Wert Give Money System
      • Wert Ems Roster System
      • Wert New Year Lottery
      • Wert-pdroster
      • Wert Vending Machines
    • Qbox
      • Wert-pdroster
      • Wert-JewelRobberyV2
      • Wert-jammer
      • Wert-GpsV2
      • Wert-AmmunationJobs
      • Wert-JobsV2
      • Wert-ContactlessPayment
      • Wert-GoPro (Watch vehicles with gopros)
      • Wert-ShopRobbery
      • Wert-shops + delivery jobs (Buy and manage your shops)
      • Wert-houses
      • Wert-ambulancejob
      • Wert-BodyCam (For civilians and jobs)
      • Wert-PoliceSystemsV2
      • Wert-ChopShopV2
      • Wert-taboo (Play and enjoy)
      • Wert illegal house robbery
      • Wert-banking (Bank ui and system)
      • Wert-PaletoBankRobberyV2
      • Wert Car Arena (Death race, Death match, Arena war)
      • Wert Blackmarket Phone
      • Wert Gang Zone (Advanced Npc System)
      • Wert Fuel Stations (Job, Buy, Manage, Create and more ... )
      • Wert Craft System
      • Wert Merryweather Job
      • Wert Cleaning System And Jobs
      • Wert Weapon Racks (Deployable, Advanced)
      • Wert Water Dispensers (Coolers)
      • Wert Lucky Wheel
      • Wert Evidence System
      • Wert Give Money System
      • Wert Ems Roster System
      • Wert New Year Lottery
      • Wert Vending Machines
    • STANDALONE
      • Wert Npc Dialog System
      • Wert Racing Hud
Powered by GitBook
On this page
  • INSTALLATION
  • OX LIB OPTION
  • INFORMATION
  • OPEN FILES
  1. Products
  2. Qbox

Wert Give Money System

You can access the setup information you need about this product

PreviousWert Evidence SystemNextWert Ems Roster System

Last updated 6 months ago

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

The script comes with default settings. There are many settings in the configuration file, and you can customize all of them to your personal preferences. Below are the configuration files, feel free to check them out.

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',
    },
}