[ESX] Advanced Money Wash


:video_camera: Preview Youtube Video Preview


:sewing_needle: Store ( We have more Scripts just give a Look :heart: )
:globe_with_meridians: https://fivem.phoenix-development.shop/


Resource Information:

:money_with_wings:What can Money Wash do?

:small_red_triangle_down: You can choose a building where your money wash will be done.
:small_red_triangle_down: You can set the Current Rate statically.
:small_red_triangle_down: You can set the current rate dynamically.
:small_red_triangle_down: You can change whenever the rate is changed
:small_red_triangle_down: Everything is changed livetime even if you have the UI open!
:small_red_triangle_down: You can change the washing time and set it as a percentage
:small_red_triangle_down: You can change all the colors of the ui with some knowledge of css
:small_red_triangle_down: The ui is animated


:pen: Configs

๐Ÿ–Š๏ธconfig.lua ( Click Here to see the Config )
Config = {}

Config.Locale = 'en' -- Language to use
Config.ESXLegacy = true -- Is your server running ESX Legacy?

Config.BlacklistedJobs = {
    "police",
    "swat"
}

--Does the system you use for grabbing coordinates require subracting from the z axis?
--If so, set this to true. You'll have to adjust the coordinates for defaults down - 1 if you set false.
Config.MinusOne = true

Config.NPCRenderDistance = 25 -- NPC Render Distance
Config.DrawMarkerDistance = 10 -- Marker Draw Distance

-- Method to use for notifications (Client-Side)
-- IMPORTANT: DO NOT CHANGE THE METHODS NAME LEAVE IT AS 'sendNotifications(type, message)'
-- Example: TriggerEvent('swt_notifications:Success', message)
function sendNotifications(type, message)
    if type == 'success' then
        TriggerEvent('esx:showNotification', message)
    elseif type == 'error' then
        TriggerEvent('esx:showNotification', message)
    end
end

-- Method to use for calculation of wash time. (Client-Side)
-- IMPORTANT: DO NOT CHANGE THE METHODS NAME LEAVE IT AS 'WashTimeCalculation(type, message)'
-- Example: return (amount / 2) * 0.02
function WashTimeCalculation(amount)
    return (amount / 2) * 0.01
end

-- Locations for NPCs
Config.Locations = {
    {
        name = 'NPC | Money Washer - Sam',
        model = 'g_m_m_chemwork_01', -- Ped Model Look here for full list: https://docs.fivem.net/docs/game-references/ped-models
        location = vector3(1006.563, -3039.178, 5.892334), -- Location to spawn the NPC
        heading = 222, -- Heading of NPC
        marker = {
            type = -1, -- Use -1 to not show any marker
            size = {x = 1.0, y = 1.0, z = 1.0}, -- Size of Marker
            color = {r = 255, g = 255, b = 255} -- Colour of Marker
        },
        isRendered = false, -- DO NOT CHANGE THIS VALUE
        ped = nil -- DO NOT CHANGE THIS VALUE
    },
    {
        name = 'NPC | Money Washer - Manual',
        model = 'csb_brucie2', -- Ped Model Look here for full list: https://docs.fivem.net/docs/game-references/ped-models
        location = vector3(3311.037, 5176.114, 19.60803), -- Location to spawn the NPC
        heading = 226.7717, -- Heading of NPC
        marker = {
            type = -1, -- Use -1 to not show any marker
            size = {x = 1.0, y = 1.0, z = 1.0}, -- Size of Marker
            color = {r = 255, g = 255, b = 255} -- Colour of Marker
        },
        isRendered = false, -- DO NOT CHANGE THIS VALUE
        ped = nil -- DO NOT CHANGE THIS VALUE
    }
}

-- Building Locations (You can disable it by set to Config.BuildingLocations = {})
Config.BuildingLocations = {
    {
        name = 'Building | Washing Mall',
        Cutscene = true, -- Use a little cutscene when entering the building camera positions can be set below!
        enter = vector3(582.3428, -2722.866, 7.172852),
        enterMarker = {
            type = 1, -- Use -1 to not show any marker
            size = {x = 1.0, y = 1.0, z = 1.0}, -- Size of Marker
            color = {r = 0, g = 0, b = 255} -- Colour of Marker
        },
        enterOutputPosition = vector3(1137.917, -3198.699, -39.68504),
        machine = vector3(1122.343, -3194.611, -39.41101),
        machineMarker = {
            type = 29, -- Use -1 to not show any marker
            size = {x = 1.0, y = 1.0, z = 1.0}, -- Size of Marker
            color = {r = 0, g = 255, b = 0} -- Colour of Marker
        },
        exit = vector3(1137.917, -3198.699, -39.68504),
        exitMarker = {
            type = 1, -- Use -1 to not show any marker
            size = {x = 1.0, y = 1.0, z = 1.0}, -- Size of Marker
            color = {r = 255, g = 0, b = 0} -- Colour of Marker
        },
        exitOutputPosition = vector3(582.3428, -2722.866, 7.172852),
        camera = {
            incam = {
                position = vector3(1116.712036, -3196.417480, -37.411011),
                heading = vector3(0, 0, 90)
            },
            middlecam = {
                position = vector3(1136.597778, -3195.916504, -37.580200),
                heading = vector3(0, 0, 90)
            }
        }
    }
}
๐Ÿ–Š๏ธ sv_config.lua (serverconfig) | ( Click Here to see the Config )
ServerConfig = {}

ServerConfig.UpdateNotice = true -- If you want to be notified in your Server Console if an update is available.

ServerConfig.RateMethod = 'dynamic' -- If the rate should be static or dynamic
ServerConfig.RateInterval = 1 -- How many minutes after the rate changes if setting above is on 'dynamic'
ServerConfig.RandomRateOnStart = true -- Should a random start exchange rate be set when the script is being started?
ServerConfig.Rate = 65 -- If setting RateMethod is dynamic this will be the start exchange rate.

ServerConfig.RateMin = 15 -- Minimum Exchange Rate
ServerConfig.RateMax = 80 -- Maximum Exchange Rate

-- Method to use for notifications (Server-Side)
-- IMPORTANT: DO NOT CHANGE THE METHODS NAME LEAVE IT AS 'sendServerNotification(source, type, message)'
-- Example: TriggerClientEvent('esx:showNotification', source, message)
function sendServerNotification(source, type, message)
    if type == 'success' then
        TriggerClientEvent('esx:showNotification', source, message)
    elseif type == 'error' then
        TriggerClientEvent('esx:showNotification', source, message)
    end
end

ServerConfig.WebhookLogging = false -- Discord Logging

ServerConfig.Webhooks = { -- Discord Webhooks
    MenuOpened = '',
    WashStarted = '',
    WashFailed = '',
    WashFinished = '',
    BuildingEntered = '',
    BuildingExited = '',
    RateChanged = ''
}

-- What Identifiers should be posted inside the log embed on Discord.
ServerConfig.IdentifiersLogging = {
    name = true,
    steam = true,
    license = true,
    xbl = true,
    live = true,
    discord = true,
    fivem = true,
    license2 = true,
    ip = true
}

:camera_flash: Screenshot


Code is accessible No
Subscription-based No
Lines (approximately) 700+ ~
Requirements ESX
Support Yes Discord