Dynamic Vending Machine & Job System
A Fully Interactive Loop of Jobs, Purchases & Crime
The Dynamic Vending Machine System creates a gameplay loop that ties together restocking, buying drinks, and lockpicking into one immersive experience. Players can take up a city job to refill vending machines β directly influencing drink availability across the map. Neglected machines run dry, while the bold may try to break in and earn black money instead.
Key Features
1.
Vending Machine Job System
A city-based delivery job where players restock vending machines, ensuring theyβre operational for public use.
Job Workflow:
- Players begin at a designated job center.
- Upon starting, they automatically receive a work uniform.
- A job vehicle becomes available once the uniform is equipped.
- Players collect supply boxes from the vehicle and deliver them to various vending machines.
Routes & Checkpoints:
- Six default delivery routes included.
- Fully expandable via the config file.
- Each route includes multiple vending machine checkpoints that must be restocked.
Reward System:
- Earn money for every machine successfully refilled.
- Total payout per route is configurable (e.g., $150β$200).
- Partial completions provide proportional rewards, but no bonus items and donβt count toward machine stock refresh.
Bonus Items:
- Completing the full route gives a chance to earn drink items (e.g., Cola, Sprunk).
- Bonus drop chances are configurable via percentage values.
2.
Drink Purchasing System
Vending machine drink purchases are dynamically tied to how well players perform their restocking duties.
Buying Drinks:
- Players can purchase drinks from machines (e.g., Cola: $5, Sprunk: $5).
- All prices are fully customizable.
Stock Depletion Mechanism:
- Machines become empty if not refilled regularly.
- Availability check runs at configurable intervals.
- Example:
Config.RequiredJobsPerTimer = 2β Two completed jobs required.Config.Timer = 60β Every 60 minutes, the system checks job completion.
If requirements arenβt met, machines are automatically emptied.
Once the minimum number of jobs is completed, vending machines return to active status.
3.
Lockpicking & Black Money
Add some high-risk, high-reward criminal gameplay with vending machine break-ins.
Lockpicking Mini-Game:
- Attempt to crack vending machines to obtain black money.
- Includes a skill-based mini-game with adjustable difficulty.
- Players must time key presses correctly to succeed.
Rewards:
- Successful attempts yield 10β30 black money (fully customizable).
Risks:
- Lockpicks can break on failure.
- Police alerts may be triggered on failed attempts.
- Both are configurable (e.g., 45% chance to break pick, 25% chance for alert).
Cooldown System:
- Each machine has an individual cooldown timer (default: 5 minutes).
- Prevents repeated abuse, but other machines can still be targeted.
4.
Full Customization & Framework Compatibility
Framework Support:
- Built for QBCore and ESX frameworks.
Interaction Compatibility:
- Supports both ox_target and qb-target.
Notification Systems:
- Choose from multiple options:
- ox_lib
- tnotify
- okoknotify
- Framework default (ESX/QBCore)
- print (for testing)
Highly Configurable:
- Add custom job locations.
- Define custom work uniforms.
- Enable Discord webhook integration for event logging.
Preview
Screenshots
Install
- Download the Keymaster.
- Add the azakit_vendingsystem to your resources folder.
- Add
ensure azakit_vendingsystemto your server.cfg.
OX Inventory Items
['ecola'] = {
label = 'ecola',
weight = 350,
--degrade = 4320,
stack = true,
close = true,
description = nil
--client = {
-- status = { thirst = 200000 },
-- anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
-- prop = { model = `prop_ecola_can`, pos = vec3(0.01, 0.01, 0.06), rot = vec3(5.0, 5.0, -180.5) },
-- usetime = 2500,
-- notification = 'You quenched your thirst with cola'
--}
},
['sprunk'] = {
label = 'Sprunk',
weight = 350,
--degrade = 4320,
stack = true,
close = true,
--client = {
-- status = { thirst = 200000 },
-- anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
-- prop = { model = `prop_ld_can_01`, pos = vec3(0.01, 0.01, 0.06), rot = vec3(5.0, 5.0, -180.5) },
-- usetime = 2500,
-- notification = 'You quenched your thirst with a sprunk'
--}
},
['lockpick'] = {
label = 'lockpick',
weight = 160,
consume = 0,
stack = true,
close = true,
description = nil
},
Requirements
- QBCore or ESX
- ox_lib
- OX Target or QB Target
Tebex: Introductory price β limited time only.
https://azakit-development.tebex.io/package/6690800
Help:
You need help, join my Discord server
https://discord.com/invite/DmsF6DbCJ9
| Code is accessible | No (only config.lua) |
| Subscription-based | No |
| Lines (approximately) | 1450 |
| Requirements | ESX or QBCore, ox_lib, OX Target or QB Target |
| Support | Yes |
My other works:
Paid:
[PAID][ESX/QBCore] Backpack System for ox_inventory β Wearable, Transferable, Fully Customizable
[PAID][ESX/QBCore] Repu System | Dynamic Dealers, Missions & Trust-Based Black Market
[PAID][ESX/QBCore] Gate Control System | Swing & Prop-Based Gates
[PAID][ESX/QBCore] Ghost Summoner: Buster Edition | Ghost Summoning & Capture System
[PAID][ESX/QBCore] Blood Bank & Reward System
[PAID][ESX/QBCore] Clothing Store Robbery | Steal & Sell Clothes
[PAID][ESX/QBCore] Parachute System | Wear & Tear | Skill-Based Folding | NPC Shop | 8 Styles
Free:
[FREE] [STANDALONE] AutoMove
[FREE] [ESX & QBCore] Milking a cow
[FREE] [ESX] Vehicle key and lock
[FREE] [ESX & QBCore] Collecting eggs from hens
[FREE] [ESX & QBCore] Moneywash with tickets, licenses, tax levels, transport
[FREE] [ESX] Sell item with delivery
[FREE] [ESX] Scrap metal from old air conditioners
[FREE] [ESX] NPC for launching events



