[ESX] [FREE] BX-CustomJob ๐Ÿ—‚๏ธ


Create Your Own Custom Job!

Provide your players with an immersive experience with a 100% customizable script.

Features

:loudspeaker: Configurable Notifications: Supports OX / OKOK or ESX notifications.

:wrench: Configurable Job System: Easily create a job by simply adding the job name to the configuration and configure everything from A to Z.

:ear_of_rice: Dynamic Harvesting Points: Define multiple harvesting points with unique items, props, and animations.

:video_game: Delivery Missions: Create custom delivery missions for your job.

:scroll: Custom Billing System: Includes an in-built billing system via BX-Billing (with Discord Webhooks) or custom billing events.

:red_car: Advanced Vehicle Management: Manage keys with CustomEvent in Config.lua for complete control over your companyโ€™s vehicles.

:tshirt: Customizable Clothing System: Offer job-specific outfits with custom events. Outfits can be configured by rank, ensuring your employees always look the part.

:hammer: Crafting System: Add multiple dedicated crafting tables to allow players to create unique items using predefined recipes.

:handbag: Boss Menu: Access a management menu allowing the boss to easily oversee the company and its employees.

:convenience_store: Customizable Shop: A shop reserved for job members, offering the ability to buy the required items for the job.

:red_car: Customizable Vehicle Plates: Vehicle plates can be customized according to preferences.

:green_circle: Maximum Optimization: Designed for minimal performance impact (0.00 ms).

:arrows_counterclockwise: Automated Updates: Automatic update checks to ensure users always have the latest version.


Dependencies

  • ESX
  • OX_lib
  • Ox_Inventory
  • Ox_target

Configuration

Config.lua
--[[
$$$$$$$\  $$\   $$\         $$$$$$\  $$\   $$\  $$$$$$\ $$$$$$$$\  $$$$$$\  $$\      $$\    $$$$$\  $$$$$$\  $$$$$$$\  
$$  __$$\ $$ |  $$ |       $$  __$$\ $$ |  $$ |$$  __$$\\__$$  __|$$  __$$\ $$$\    $$$ |   \__$$ |$$  __$$\ $$  __$$\ 
$$ |  $$ |\$$\ $$  |       $$ /  \__|$$ |  $$ |$$ /  \__|  $$ |   $$ /  $$ |$$$$\  $$$$ |      $$ |$$ /  $$ |$$ |  $$ |
$$$$$$$\ | \$$$$  /$$$$$$\ $$ |      $$ |  $$ |\$$$$$$\    $$ |   $$ |  $$ |$$\$$\$$ $$ |      $$ |$$ |  $$ |$$$$$$$\ |
$$  __$$\  $$  $$< \______|$$ |      $$ |  $$ | \____$$\   $$ |   $$ |  $$ |$$ \$$$  $$ |$$\   $$ |$$ |  $$ |$$  __$$\ 
$$ |  $$ |$$  /\$$\        $$ |  $$\ $$ |  $$ |$$\   $$ |  $$ |   $$ |  $$ |$$ |\$  /$$ |$$ |  $$ |$$ |  $$ |$$ |  $$ |
$$$$$$$  |$$ /  $$ |       \$$$$$$  |\$$$$$$  |\$$$$$$  |  $$ |    $$$$$$  |$$ | \_/ $$ |\$$$$$$  | $$$$$$  |$$$$$$$  |
\_______/ \__|  \__|        \______/  \______/  \______/   \__|    \______/ \__|     \__| \______/  \______/ \_______/                                                                                                                                                                                                                                                                                                                                                                
]]--

--- Check installation folder for installation --


Config = {}


--[[


 $$$$$$\  $$$$$$$$\ $$$$$$$$\ $$$$$$$$\ $$$$$$\ $$\   $$\  $$$$$$\  
$$  __$$\ $$  _____|\__$$  __|\__$$  __|\_$$  _|$$$\  $$ |$$  __$$\ 
$$ /  \__|$$ |         $$ |      $$ |     $$ |  $$$$\ $$ |$$ /  \__|
\$$$$$$\  $$$$$\       $$ |      $$ |     $$ |  $$ $$\$$ |$$ |$$$$\ 
 \____$$\ $$  __|      $$ |      $$ |     $$ |  $$ \$$$$ |$$ |\_$$ |
$$\   $$ |$$ |         $$ |      $$ |     $$ |  $$ |\$$$ |$$ |  $$ |
\$$$$$$  |$$$$$$$$\    $$ |      $$ |   $$$$$$\ $$ | \$$ |\$$$$$$  |
 \______/ \________|   \__|      \__|   \______|\__|  \__| \______/ 
                                                                    
                                                                    
                                                                                                           
]]--

Config.Notify = 'ox' -- 'ox' / 'okok' / 'esx'

Config.CheckUpdate = true -- checking uptade

Config.jobMenu = 'F6'

Config.DistanceOxTarget = 2.0

Config.job_name = "pizza"

Config.job_label = "Police"

Config.Blip = { -- Blip society
	Pos     = { x = 283.2792, y = -977.9730, z = 29.4334}, 
	Sprite  = 106,
	Display = 4,
	Scale   = 0.7,
	Colour  = 2,
}


Config.BossPos = vector3(288.4131, -990.0044, 29.3260) -- rank must be "boss"

Config.WashMoney = true -- boss can wash money

Config.Percentage = 0.80 -- Percentage received from WashMoney, 0.80 corresponds to 80%

Config.BossGrade = 4 -- boss rank

Config.MaxSalary = 50000

Config.JobAnnonce = {  -- Job Announce
      
       icon = "CHAR_JOSH", -- for esx
       iconType = "native", -- for esx
       messageLabel = "~g~Announce Job_Label~w~ ", -- for esx / ox / okok
       style = "info" -- for ox / okok
  
} 



--[[
$$$$$$$\  $$$$$$\ $$\       $$\       $$$$$$\ $$\   $$\  $$$$$$\  
$$  __$$\ \_$$  _|$$ |      $$ |      \_$$  _|$$$\  $$ |$$  __$$\ 
$$ |  $$ |  $$ |  $$ |      $$ |        $$ |  $$$$\ $$ |$$ /  \__|
$$$$$$$\ |  $$ |  $$ |      $$ |        $$ |  $$ $$\$$ |$$ |$$$$\ 
$$  __$$\   $$ |  $$ |      $$ |        $$ |  $$ \$$$$ |$$ |\_$$ |
$$ |  $$ |  $$ |  $$ |      $$ |        $$ |  $$ |\$$$ |$$ |  $$ |
$$$$$$$  |$$$$$$\ $$$$$$$$\ $$$$$$$$\ $$$$$$\ $$ | \$$ |\$$$$$$  |
\_______/ \______|\________|\________|\______|\__|  \__| \______/ 
                                                                                                                                                                                                  
]]--

Config.Billing = true

Config.BillingUseCustomEvent = false -- if false use BX-billing system ( inclued on this script )  / if true edit Config.BillingCustomEvent

-- If Config.BillingUseCustomEvent = false --

-- Check installation to add item to use BX-billing system

Config.UseDiscordLogs = true

Config.JobWebhooks = "https://discord.com/api/webhooks/1166343002277552220/uYHUSV-TqdsaVS0FHPoOzC-yO9OucRAyNWSZ7OFHzBnT5EV76RQkYraPB9NIF5sCjZ7y"
   
Config.IsTheFirstScript = true -- set true for the first BX-CutstomJob, if you dulicate the script, turn off

Config.BillingItem = "facture" -- item to pay bill

Config.MetadataOnItem = true


-- If Config.BillingUseCustomEvent = true --

Config.BillingCustomEvent = function() -- if Config.Billing = true

    print("cc")
	-- EDIT THIS
end



--[[
 $$$$$$\  $$$$$$$\   $$$$$$\  $$$$$$$$\ $$$$$$$$\ 
$$  __$$\ $$  __$$\ $$  __$$\ $$  _____|\__$$  __|
$$ /  \__|$$ |  $$ |$$ /  $$ |$$ |         $$ |   
$$ |      $$$$$$$  |$$$$$$$$ |$$$$$\       $$ |   
$$ |      $$  __$$< $$  __$$ |$$  __|      $$ |   
$$ |  $$\ $$ |  $$ |$$ |  $$ |$$ |         $$ |   
\$$$$$$  |$$ |  $$ |$$ |  $$ |$$ |         $$ |   
 \______/ \__|  \__|\__|  \__|\__|         \__|                                                                                                       
]]--



Config.fridges = {
    [1] = { coords = vector3(283.2792, -977.9730, 29.4334), stashName = 'stock_fridge1' },
    [2] = { coords = vector3(282.6384, -984.6865, 29.4141), stashName = 'stock_fridge2' }
    -- Tu peux en ajouter d'autres...
}


Config.CraftItems = {
    [1] = {
        coords = vector3(289.4341, -983.7943, 29.4348),
        { -- Coordonnรฉes pour cet item de craft
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿ… name_item',
            description = 'name_item x 5',
        },
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿฅซ name_item',
            description = 'name_item x 4',
        },
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿž name_item',
            description = 'name_item + name_item + name_item + name_item',
        }
    },
    [2] = {
        coords = vector3(286.4845, -983.3007, 29.0066),
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿ… name_item',
            description = 'name_item x 5',
        },
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿฅซ name_item',
            description = 'name_item x 4',
        },
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿž name_item',
            description = 'name_item + name_item + name_item + name_item',
        }
    },
    [3] = {
        coords = vector3(287.8782, -980.8476, 30.4614),
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿ… name_item',
            description = 'name_item x 5',
        },
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿฅซ name_item',
            description = 'name_item x 4',
        },
        {
            craftItems = {'name_item', 'name_item', 'name_item', 'name_item'},
            rewardItem = 'name_item',
            title = '๐Ÿž name_item',
            description = 'name_item + name_item + name_item + name_item',
        }
    }
    
    -- You can add more here
    -- dont forgot to add translation :
    -- ['craft**Number**'] = ' Make ***',
	-- ['craft_use**Number**'] = ' Use ***',
}


--[[
$$\   $$\  $$$$$$\  $$$$$$$\  $$\    $$\ $$$$$$$$\  $$$$$$\ $$$$$$$$\ 
$$ |  $$ |$$  __$$\ $$  __$$\ $$ |   $$ |$$  _____|$$  __$$\\__$$  __|
$$ |  $$ |$$ /  $$ |$$ |  $$ |$$ |   $$ |$$ |      $$ /  \__|  $$ |   
$$$$$$$$ |$$$$$$$$ |$$$$$$$  |\$$\  $$  |$$$$$\    \$$$$$$\    $$ |   
$$  __$$ |$$  __$$ |$$  __$$<  \$$\$$  / $$  __|    \____$$\   $$ |   
$$ |  $$ |$$ |  $$ |$$ |  $$ |  \$$$  /  $$ |      $$\   $$ |  $$ |   
$$ |  $$ |$$ |  $$ |$$ |  $$ |   \$  /   $$$$$$$$\ \$$$$$$  |  $$ |   
\__|  \__|\__|  \__|\__|  \__|    \_/    \________| \______/   \__|   
                                                                                                                                                                                                                  
]]--


Config.BlipHarvestPoints = { --- blip BlipHarvestPoints --- 
    coords = vector3(2490.7817, 4841.7964, 35.5231), 
    sprite = 280,   -- Blip icon 
    scale = 0.7,  -- Blip size
    color = 2,    -- Blip color
    name = "~g~Business ~w~ | Farm",
    visible = true -- Visible or not -- If true( only visible when player are on duty )
}



Config.HarvestTime = 5000 -- in ms

Config.TimeToNextHarvest = 10000   -- in ms



Config.HarvestPoints = {
    { x = 2494.7446, y = 4833.2573, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'WORLD_HUMAN_GARDENER_PLANT', prop = 'sf_prop_sf_apple_01a' }, 
    { x = 2489.7446, y = 4838.2573, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'WORLD_HUMAN_GARDENER_PLANT', prop = 'sf_prop_sf_apple_01a' },  
    { x = 2492.7446, y = 4841.2573, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'WORLD_HUMAN_GARDENER_PLANT', prop = 'sf_prop_sf_apple_01a' }, 
    { x = 2484.7446, y = 4835.4697, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'WORLD_HUMAN_GARDENER_PLANT', prop = 'sf_prop_sf_apple_01a' }, 
    { x = 2499.7446, y = 4841.2573, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'PROP_HUMAN_BUM_BIN', prop = 'prop_plant_fern_02a' }, 
    { x = 2494.7446, y = 4848.2573, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'PROP_HUMAN_BUM_BIN', prop = 'prop_plant_fern_02a' }, 
    { x = 2492.7446, y = 4843.2573, z = 35.4294, item = 'name_item', label = 'Take name_item', animation = 'PROP_HUMAN_BUM_BIN', prop = 'prop_plant_fern_02a' },

    -- Find prop here :

    -- Find animation here :
   
}




--[[
 $$$$$$\   $$$$$$\  $$$$$$$\   $$$$$$\   $$$$$$\  $$$$$$$$\ 
$$  __$$\ $$  __$$\ $$  __$$\ $$  __$$\ $$  __$$\ $$  _____|
$$ /  \__|$$ /  $$ |$$ |  $$ |$$ /  $$ |$$ /  \__|$$ |      
$$ |$$$$\ $$$$$$$$ |$$$$$$$  |$$$$$$$$ |$$ |$$$$\ $$$$$\    
$$ |\_$$ |$$  __$$ |$$  __$$< $$  __$$ |$$ |\_$$ |$$  __|   
$$ |  $$ |$$ |  $$ |$$ |  $$ |$$ |  $$ |$$ |  $$ |$$ |      
\$$$$$$  |$$ |  $$ |$$ |  $$ |$$ |  $$ |\$$$$$$  |$$$$$$$$\ 
 \______/ \__|  \__|\__|  \__|\__|  \__| \______/ \________|                                                                                                                                                                                   
]]--

Config.target_garage = vector3(298.8515, -994.1096, 29.3037) -- pos garage

Config.garage_ped = vector3(298.8515, -994.1096, 28.3037) -- pos ped garage

Config.PedHeadingG = 171.83

Config.PedStyle = "csb_burgerdrug"

Config.car_pos = vector3(300.9442, -1000.1035, 29.2698) -- pos spawn vehicle

Config.car_posHeading = 210.0

Config.GarageVehicles = {
    { model = 't20', title = '๐Ÿ›ต Scooter', description = 'Take scooter' },
    { model = 'carname', title = '๐Ÿš› Truck', description = 'Take truck' },
    -- Add more
}

Config.vehiclePlate = "BXDEV-"

Config.CutomVehicleKey = true -- if false no keys.

-- Give Keys
Config.CustomVehicleFunction = function(vehicle, plate, model) -- if Config.CutomVehicleKey = true
    print("Custom event triggered for vehicle: " .. model)
    print("Vehicle plate: " .. plate)
	-- EDIT THIS
end

-- Delete Keys
Config.CustomVehicleFunctionBack = function(vehicle, plate, model) -- if Config.CutomVehicleKey = true
    if plate then


	print("Custom event triggered for vehicle: " .. model)
    print("Vehicle plate: " .. plate)


    else
    end

	-- EDIT THIS
end


--[[
 $$$$$$\  $$\   $$\ $$$$$$$$\ $$$$$$$$\ $$$$$$\ $$$$$$$$\ 
$$  __$$\ $$ |  $$ |\__$$  __|$$  _____|\_$$  _|\__$$  __|
$$ /  $$ |$$ |  $$ |   $$ |   $$ |        $$ |     $$ |   
$$ |  $$ |$$ |  $$ |   $$ |   $$$$$\      $$ |     $$ |   
$$ |  $$ |$$ |  $$ |   $$ |   $$  __|     $$ |     $$ |   
$$ |  $$ |$$ |  $$ |   $$ |   $$ |        $$ |     $$ |   
 $$$$$$  |\$$$$$$  |   $$ |   $$ |      $$$$$$\    $$ |   
 \______/  \______/    \__|   \__|      \______|   \__|   
                                                                                                                                                                              
]]--


Config.CustomCloth = "standalone" -- If "custom" you must edit Config.CustomClothEvent / If "standalone" edit Config.JobOutfit  / IF "off" no JobOutfit

Config.ClothRoom = vector3(291.2554, -990.8323, 29.9411)

Config.CustomOutfitEvent = function() -- if CustomCloth = "custom"

    print("cc")
	-- EDIT THIS
end


Config.JobOutfit = { -- if CustomCloth = "standalone"
    [0] = { -- Grade 1
        ["tshirt_1"] = 1, ["tshirt_2"] = 0, ["shoes_1"] = 11,
        ["torso_1"] = 4, ["torso_2"] = 0, ["pants_1"] = 23,
        ["pants_2"] = 0, ["shoes_2"] = 12, ["decals_1"] = 60,
        ["decals_2"] = 0, ["sex"] = 0
    },
    [1] = { -- Grade 2
        ["tshirt_1"] = 1, ["tshirt_2"] = 0, ["shoes_1"] = 11,
        ["torso_1"] = 4, ["torso_2"] = 0, ["pants_1"] = 23,
        ["pants_2"] = 0, ["shoes_2"] = 12, ["decals_1"] = 60,
        ["decals_2"] = 0, ["sex"] = 0
    },
    [2] = { -- Grade 3
        ["tshirt_1"] = 1, ["tshirt_2"] = 0, ["shoes_1"] = 11,
        ["torso_1"] = 4, ["torso_2"] = 0, ["pants_1"] = 23,
        ["pants_2"] = 0, ["shoes_2"] = 12, ["decals_1"] = 60,
        ["decals_2"] = 0, ["sex"] = 0
    },
    [3] = { -- Grade 4
        ["tshirt_1"] = 1, ["tshirt_2"] = 0, ["shoes_1"] = 11,
        ["torso_1"] = 4, ["torso_2"] = 0, ["pants_1"] = 23,
        ["pants_2"] = 0, ["shoes_2"] = 12, ["decals_1"] = 60,
        ["decals_2"] = 0, ["sex"] = 0
    },
    [4] = { -- Grade 5
        ["tshirt_1"] = 51, ["tshirt_2"] = 0, ["shoes_1"] = 11,
        ["torso_1"] = 50, ["torso_2"] = 0, ["pants_1"] = 60,
        ["pants_2"] = 0, ["shoes_2"] = 12, ["decals_1"] = 20,
        ["decals_2"] = 0, ["sex"] = 0
    }
    -- Ajoutez d'autres grades si nรฉcessaire
}




--[[
 $$$$$$\  $$\   $$\  $$$$$$\  $$$$$$$\  
$$  __$$\ $$ |  $$ |$$  __$$\ $$  __$$\ 
$$ /  \__|$$ |  $$ |$$ /  $$ |$$ |  $$ |
\$$$$$$\  $$$$$$$$ |$$ |  $$ |$$$$$$$  |
 \____$$\ $$  __$$ |$$ |  $$ |$$  ____/ 
$$\   $$ |$$ |  $$ |$$ |  $$ |$$ |      
\$$$$$$  |$$ |  $$ | $$$$$$  |$$ |      
 \______/ \__|  \__| \______/ \__|      
]]--




Config.ShopOn = true

Config.BlipShop = { --- blip BlipShop --- 
    coords = vector3(-2966.3254, 391.5275, 15.0433), 
    sprite = 52,   -- Blip icon 
    scale = 0.7,  -- Blip size
    color = 2,    -- Blip color
    name = "~g~Business ~w~ | Shop",
    visible = true -- Visible or not -- If true( only visible when player are on duty )
}



Config.PedPosition = { x = -2966.13, y = 391.32, z = 14.0 } -- NPC pos 
Config.PedHeading = 89.50 -- NPC heading
Config.PedModel = 'a_m_m_business_01' -- NPC model



Config.JobPed = {
    { label = "name_item", name = "name_item", price = 2 },
    { label = "name_item", name = "name_item", price = 5 },
    { label = "name_item", name = "name_item", price = 5 },
    { label = "name_item", name = "name_item", price = 7 },
    { label = "name_item", name = "name_item", price = 7 }
}






--[[
$$\      $$\ $$$$$$\  $$$$$$\   $$$$$$\  $$$$$$\  $$$$$$\  $$\   $$\  $$$$$$\  
$$$\    $$$ |\_$$  _|$$  __$$\ $$  __$$\ \_$$  _|$$  __$$\ $$$\  $$ |$$  __$$\ 
$$$$\  $$$$ |  $$ |  $$ /  \__|$$ /  \__|  $$ |  $$ /  $$ |$$$$\ $$ |$$ /  \__|
$$\$$\$$ $$ |  $$ |  \$$$$$$\  \$$$$$$\    $$ |  $$ |  $$ |$$ $$\$$ |\$$$$$$\  
$$ \$$$  $$ |  $$ |   \____$$\  \____$$\   $$ |  $$ |  $$ |$$ \$$$$ | \____$$\ 
$$ |\$  /$$ |  $$ |  $$\   $$ |$$\   $$ |  $$ |  $$ |  $$ |$$ |\$$$ |$$\   $$ |
$$ | \_/ $$ |$$$$$$\ \$$$$$$  |\$$$$$$  |$$$$$$\  $$$$$$  |$$ | \$$ |\$$$$$$  |
\__|     \__|\______| \______/  \______/ \______| \______/ \__|  \__| \______/ 
]]--

Config.Mission = true


Config.BlipMissionPoint = { --- blip BlipHarvestPoints --- 
    coords = vector3(284.1525, -976.2911, 29.4334),  
    sprite = 616,   -- Blip icon 
    scale = 0.5,  -- Blip size
    color = 2,    -- Blip color
    name = "~g~Business ~w~ | Mission",
    visible = false -- Visible or not -- If true( only visible when player are on duty )
}


Config.MissionPedPosition = { x = 284.1525, y = -976.2911, z = 28.3849 } -- NPC pos
Config.MissionPedHeading = 352.0 -- NPC heading
Config.MissionPedModel = 'a_m_m_business_01' -- NPC model

Config.MissionItem = 'name_item' -- Item to sell
Config.RewardMoney = 50 -- Reward Money
Config.CompanyRewardPercentage = 10 -- % for the society


Config.NPCPositions = {
    {x = 251.1446, y = -1004.38, z = 29.37, h = 100.0}, 
    {x = 271.62, y = -1141.17, z = 29.37, h = 100.0},
    {x = 386.86, y = -1112.85, z = 29.37, h = 100.0}, 
    {x = -40.86, y = -240.85, z = 45.37, h = 250.0}, 
    -- Add more positions
}



--[[
 $$$$$$\  $$$$$$$\  $$$$$$$\  $$$$$$\ $$$$$$$$\ $$$$$$\  $$$$$$\  $$\   $$\  $$$$$$\  $$\       
$$  __$$\ $$  __$$\ $$  __$$\ \_$$  _|\__$$  __|\_$$  _|$$  __$$\ $$$\  $$ |$$  __$$\ $$ |      
$$ /  $$ |$$ |  $$ |$$ |  $$ |  $$ |     $$ |     $$ |  $$ /  $$ |$$$$\ $$ |$$ /  $$ |$$ |      
$$$$$$$$ |$$ |  $$ |$$ |  $$ |  $$ |     $$ |     $$ |  $$ |  $$ |$$ $$\$$ |$$$$$$$$ |$$ |      
$$  __$$ |$$ |  $$ |$$ |  $$ |  $$ |     $$ |     $$ |  $$ |  $$ |$$ \$$$$ |$$  __$$ |$$ |      
$$ |  $$ |$$ |  $$ |$$ |  $$ |  $$ |     $$ |     $$ |  $$ |  $$ |$$ |\$$$ |$$ |  $$ |$$ |      
$$ |  $$ |$$$$$$$  |$$$$$$$  |$$$$$$\    $$ |   $$$$$$\  $$$$$$  |$$ | \$$ |$$ |  $$ |$$$$$$$$\ 
\__|  \__|\_______/ \_______/ \______|   \__|   \______| \______/ \__|  \__|\__|  \__|\________|                                                                                              
]]--




Config.TakeObject = true -- Can take object


Config.TakeObjectCustomEvent = function() -- if Config.TakeObject = true

    ExecuteCommand("e carrypizza")
	-- EDIT THIS
end




Config.PlaceObject = true -- Can place object


Config.Props = { -- IF Config.PlaceObject = true

    {
        title = '๐Ÿ—ƒ๏ธ Table', -- Label
        description = '', -- Description (optional)
        model = `prop_table_01`
    },
    {
        title = '๐Ÿ—ƒ๏ธ Chair',
        description = '',
        model = `v_res_trev_framechair`
    },
    {
        title = '๐Ÿ—ƒ๏ธ Light',
        description = '',
        model = `prop_streetlight_07b`
    },
    {
        title = '๐Ÿ—ƒ๏ธ Pizza',
        description = '',
        model = `v_res_tt_pizzaplate`
    },

}




--[[
$$$$$$$$\ $$$$$$$\   $$$$$$\  $$\   $$\  $$$$$$\  $$\        $$$$$$\ $$$$$$$$\ $$$$$$\  $$$$$$\  $$\   $$\ 
\__$$  __|$$  __$$\ $$  __$$\ $$$\  $$ |$$  __$$\ $$ |      $$  __$$\\__$$  __|\_$$  _|$$  __$$\ $$$\  $$ |
   $$ |   $$ |  $$ |$$ /  $$ |$$$$\ $$ |$$ /  \__|$$ |      $$ /  $$ |  $$ |     $$ |  $$ /  $$ |$$$$\ $$ |
   $$ |   $$$$$$$  |$$$$$$$$ |$$ $$\$$ |\$$$$$$\  $$ |      $$$$$$$$ |  $$ |     $$ |  $$ |  $$ |$$ $$\$$ |
   $$ |   $$  __$$< $$  __$$ |$$ \$$$$ | \____$$\ $$ |      $$  __$$ |  $$ |     $$ |  $$ |  $$ |$$ \$$$$ |
   $$ |   $$ |  $$ |$$ |  $$ |$$ |\$$$ |$$\   $$ |$$ |      $$ |  $$ |  $$ |     $$ |  $$ |  $$ |$$ |\$$$ |
   $$ |   $$ |  $$ |$$ |  $$ |$$ | \$$ |\$$$$$$  |$$$$$$$$\ $$ |  $$ |  $$ |   $$$$$$\  $$$$$$  |$$ | \$$ |
   \__|   \__|  \__|\__|  \__|\__|  \__| \______/ \________|\__|  \__|  \__|   \______| \______/ \__|  \__|
]]--


Config.CustomIconMenu = false

CustomIconMenu = {
    
    ['mission'] = 'fa-solid fa-box',
    ['buy_object'] = 'fa-solid fa-box',
    ['fridge'] = 'fa-solid fa-box',
    ['craft_use1'] = 'fa-solid fa-box',
    ['craft_use2'] = 'fa-solid fa-box',
    ['craft_use3'] = ' fa-solid fa-box',
    ['delivery'] = 'fa-solid fa-box',
    ['garage'] = 'fa-solid fa-box',
    ['menu_name1'] = 'fa-solid fa-box',
    ['menu_name3'] = 'fa-solid fa-box',
    ['menu_name4'] = 'fa-solid fa-box',
    ['menu_name5'] = 'fa-solid fa-box',
    ['outfit_job'] = 'fa-solid fa-box',
    ['outfit_job_w'] = 'fa-solid fa-box',
    ['outfit_job_c'] = 'fa-solid fa-box',
    ['hand'] = 'fa-solid fa-box',
    ['vendor'] = 'fa-solid fa-box',
    ['title_boss_menu'] = 'fa-solid fa-box',
    
    -- You can add more, you just have to take the same name as in [STRINGS] to make the icon appear in the menu of the same [STRINGS]
    
    
}



Strings = { 
    

    ['Society_Name'] = '~g~Business ~w~ | pizza',

    -- MENU -- 

    ['mission'] = '๐Ÿ’ฅ Start a mission',
    ['buy_object'] = '๐Ÿช Shop wholesaler',
    ['fridge'] = 'โ„๏ธ Fridge',
    ['craft_use1'] = '๐Ÿง‚ Make food',
    ['craft_use2'] = '๐Ÿ• Make pizza',
    ['craft_use3'] = ' Make ***',
    ['delivery'] = '๐Ÿ“ฆ Delivery the pizza',
    ['garage'] = '๐Ÿš— Garage',
    ['menu_name1'] = '๐Ÿ“ข Announcement',
    ['menu_name3'] = '๐Ÿช‘ Object',
    ['menu_name4'] = '๐Ÿงพ Invoice',
    ['menu_name5'] = '๐ŸŽซ Duty',
    ['outfit_job'] = '๐Ÿฆบ Job Outfit ',
    ['outfit_job_w'] = '๐Ÿฆบ See Job Outfit',
    ['outfit_job_c'] = '๐Ÿ‘• Civilian',
    ['hand'] = '๐Ÿ“ฆ Take an object',
    
    
    ['title_boss_menu'] = '๐Ÿ‘‘ Boss Menu',
    ['your_society'] = 'Your company: ',
    ['management'] = 'Company Management',
    ['recruit'] = 'Recruit',
    ['desc_recruit'] = '(Closest player)',
    ['no_one_nearby'] = 'No one nearby',
    ['recruit_allow'] = 'Are you sure you want to recruit this person?',
    ['cancel_change'] = 'Change canceled',
    ['grade_options'] = 'Grade Management',
    ['grade_options_desc'] = 'Create/Delete/Remove grades',
    ['salary'] = ' (Salary: ',
    ['rework_name'] = 'Change name',
    ['rework_salary'] = 'Change salary',
    ['actually_salary'] = 'Current salary: ',
    ['actually_label'] = 'Current label: ',
    ['error_max_salary'] = 'The salary you entered is too high, maximum ',
    ['rework_disabled'] = 'Modification disabled',
    ['rework_enabled'] = 'Click to modify',
    ['be_recrut'] = 'Citizen recruited',
    ['have_recrut'] = 'You have been recruited',
    ['employee_options'] = 'Employee Management',
    ['employee_options_desc'] = 'Fire/demote/promote an employee',
    ['rework_employee'] = 'Click to manage the employee',
    ['not_in_city'] = 'The employee is not in the city',
    ['promote'] = 'Promote',
    ['retro'] = 'Demote',
    ['fired'] = 'Fired',
    ['dob'] = 'Date of birth',
    ['sex'] = 'Sex',
    ['height'] = 'Height',
    ['grade'] = 'Grade',
    ['no_grade'] = 'There are no grades beyond this one',
    ['money_options'] = 'Funds Management',
    ['money_options_desc'] = 'Allows withdrawal/deposit/laundering of money',
    ['society_not_enough_money'] = 'The company does not have enough funds',
    ['deposit_money'] = 'Deposit money',
    ['deposit_money_desc'] = 'Allows you to add funds to your company',
    ['withdraw_money'] = 'Withdraw money',
    ['withdraw_money_desc'] = 'Allows you to withdraw funds from your company',
    ['wash_money'] = 'Launder money',
    ['desc_wash_money'] = 'Convert dirty money into clean money',
    ['not_enough_money'] = 'You donโ€™t have enough money',
    ['rework'] = 'Modifications',
    ['error'] = 'Error',
    ['confirm'] = 'Confirm',
    ['not_confirmed'] = 'You did not confirm',
    ['amount'] = 'Amount',
    ['not_value'] = 'Please enter all values.',
    
    

    --- Notification 
    ['anounce'] = 'Announcement',
    ['anounce_desc'] = 'Make an announcement',
    ['craft_ok'] = 'Product made',
    ['buy'] = 'Product purchased',
    ['no_money'] = 'You don\'t have enough money.',
    ['in_reload'] = 'This point is reloading, please wait.',
    ['no_item'] = 'You don\'t have the required item.',
    ['mission_cancel'] = 'Delivery mission canceled.',
    ['no_job'] = 'You don\'t have the required job.',
    ['in_mission'] = 'You are already on a delivery mission.',
    ['no_in_mission'] = 'You are not on a delivery mission.',
    ['need_ingrรฉdient'] = 'Not enough ingredients',
    ['no_service'] = 'You must be on duty',

    --- Menu Job --
    ['shop_name'] = 'Wholesaler',
    ['put_in'] = 'Store Vehicle',
    ['put_in_desc'] = 'Store your last vehicle',
    ['apply'] = 'Apply',
    ['back'] = 'Back',
    ['menu_desc1'] = 'Announcement panel',
    ['menu_name2'] = 'Delivery',
    ['menu_desc2'] = 'Start deliveries',
    ['menu_desc3'] = 'Place panel',
    ['menu_desc4'] = 'Create an invoice',
    ['menu_desc5'] = 'Go on duty',
    ['duty_on'] = 'ON',
    ['duty_off'] = 'OFF',
    ['quit_duty'] = ' left',
    ['start_duty'] = ' is now on duty. ',
    ['price'] = 'Price : ',
    ['shop'] = 'Shop',

    --- Prop ---
    ['place_object'] = 'Place an object',
    ['take_prop'] = '[G] - Pick up, [E] - Place.',
    ['move_prop'] = '[E] - Move the object, [G] - Pick up.',

    --- other
    ['craft_menu1'] = 'craft menu',
    ['craft1'] = ' Make food',
    ['craft2'] = ' Make pizza',
    ['craft3'] = ' Make ***',
    ['delivery_notification'] = 'Customer found, head to the delivery point.',
    ['delivery_complete'] = 'Delivery completed, proceed to the next point.',
    ['start'] = 'Start Mission',
    ['stop'] = 'Stop Mission',
    
    
    
    ['sell_price'] = 'Sell Price',
    ['amount_input'] = 'Amount',
    ['inventory'] = 'Inventory',
    ['success'] = 'Success',
    ['item_stocked_desc'] = 'You stocked an item for $%s!'
   
    
}





--- Billing system , If Config.BillingUseCustomEvent = true

Config.BillingTranslation = {
    mreason      = ">> Reason",
    msociety     = ">> Society",
    mfrom        = ">> From",
    mamount      = ">> Amount",
    mdate        = ">> Creation Date",
    mstatus      = ">> Status",
    mPaidDate    = ">> Paid On",

    billingTitle = "Create Invoice",
    reason       = "Reason",
    amount       = "Amount",
    sign         = "Signature",

    confermBill  = "Confirm Billing Details",
    creatingBill = "Creating Invoice",
    billCreated  = "Invoice created for ",
    billCanceled = "[Error] Invoice creation canceled",
    noSign       = "[Error] Please sign the invoice",
    noReason     = "[Error] Please provide a reason",
    noAmount     = "[Error] Please enter a valid amount",
    noPlayer     = "[Error] No player nearby",

    noMoney      = "[Error] You do not have enough money",
    xnoMoney     = "The client does not have enough money",
    billPaid     = "The invoice has been paid for $",

    notPaid      = "Not Paid",
    bill         = "Invoice",

    createdFrom  = "Created by: ",
    fSociety     = "  \n  Society: ",
    fAmount      = "  \n Amount: ",
    fReason      = "  \n  Reason: ",
    fDate        = "  \n  *Date: *",

    checkingDetails = "Checking Details",
    paymentMethod   = "Payment Method",
    selectMethod    = "Select Method",
    payCash         = "Pay Cash",
    payBank         = "Pay by Bank Transfer",
    noMethod        = "Please select a payment method",
    conferPayment   = "Confirm payment of $",
    wrong           = "Something went wrong!?",
    paid            = "Paid",
    alreadyPaid     = "This invoice is already paid",
    
    
    createbilldiscord     = "BX-BILLING",
    createbilldiscord2     = "Log",
    created_by     = "created by",
    paidBill     = "Paid the bill of $",
    billfor = "for",
    createbill     = "Create a bill of $",
    
    

    
    url = "https://discord.com/invite/Rnezhz8DVZ",
    png = "https://forum.cfx.re/user_avatar/forum.cfx.re/bx-dev/144/4289709_2.png",
}





Live Preview


Installation

:warning: Check Installation folder :warning:

Download

TEBEX ( FOR SUPPORT )

OR

GITHUB


BX-DOCUMENTATION

DOCUMENTATION



Logo BX icon

5 Likes

great work bro

1 Like

wow nice work :100::+1:

1 Like

Are there any pictures of the item?

Hi ! No, you have to add pictures

1 Like
Citizen.CreateThread(function()
	exports.ox_inventory:RegisterStash("stock_" .. Config.job_name, "Stock", 100, 100000, false, Config.job_name)
end)

You do not need a thread for thatโ€ฆ

True, sorry

Il pourra faire la maj pour y remรฉdier

1 Like

UPDATE V 1.3 :hammer_and_wrench:

  • :hammer: Add a third crafting table
  • :nazar_amulet: Can ajust distance of Ox_target
  • :wrench: Some fixs

@Wata23 @fellow25

1 Like

UPDATE V 1.5 :hammer_and_wrench:

:convenience_store: Edit the shop (you can choose the quantity of item to purchase)

:briefcase: New Boss Menu

:red_car: Custom Vehicle plate

NEW UPDATE
BX-CustomJob
New Version :white_check_mark:
V 1.5.2
Patch Note :hammer_and_wrench:
:gear: Add Config.CustomIconMenu = false / true โ†’ if true can edit CustomIconMenu ( Icon Menu on Ox Menu )

:speech_balloon: Can custom Config.JobAnnonce with Config.Notify

:credit_card: Fix Prop with BX-Billing

:earth_asia: Not longer need to add sql, new way to install any job via config only ( check Bx-documentation / or installation folder