Summary
coffee job is basically a coffee shop system that is a whitelisted job (has a boss and employees) and provides different types of coffee to citizens
Purpose
you can make a purpose for this job, it means you can add effects for drinking coffee
for example you have a stress or happiness system like the hunger and thirst and you want to add products and ways on your city that provides effect on mental health for the citizens, so why not just adding a coffee shop ?
Video
please pay attention that the advanced boss menu you see on video is another script by me
if somehow you are intrested check this link : ESX Society Remastered + More Options
How it Works
-
Coffee workers are in city and available so players will go to the coffee shop and order coffees to workers then barista will cook the coffee
-
Coffee workers are not in city or they are off duty, so players can go to coffeeshop again and buy coffees from a marker but with limited count (to avoid spamming) and a cooldown (by default every 30minutes players can buy 3 coffee maximum when workers are offline)
Cooking Menu
coffee workers or baristas have a very cool and light UI in order to cook
they can see the ingredients for each type of coffee with image, so everything is easy and user friendly for workers, they also can select the amount of coffee (1 to 10)
Customer Menu
there is a marker that citizens can open it and check the menu like real life !
you can put any image or edit the image for your own brand or server name with different prices
Coffee Types
- Cappuccino
- Mocha
- Espressoo
- Black Coffee
- Ice Coffee
- Hot Chocolate
- McCoffee
- Nescafe
- Normal Coffee
Ingredients
- Coffee Powder
- Espresso Powder
- McCoffee Powder
- Nescafe Powder
- Milk
- Chocolate
- Cream
- Ice
- Sugar
Delivery
delivery system provides 2 benefits :
1. delivery to customers
maybe the coffee shop has a number right ? so you will add a number at coffee shop then customers will contact to the workers, they set the order and coffee shop will deliver the coffees to customers
2. delivery missions
when coffee workers are free or they don’t have many customers they can go to delivery missions that will keep the worker busy and not bored also worker will get money for each mission and some money will adds to society too when the mission is done
Features
- fully open source
- usage is 0.01 for non workers and 0.03 - 0.04 for workers
- included 9 types of real coffees around the world
- everything can be changed at config.lua
- workers can do delivery missions when they have no customers
- customers can see the coffee menu like real life
- great UI cooking with recipes
- you can add more ingredients and coffees
- supports billing system
Config File
Config = {}
Config.DrawDistance = 30.0
local second = 1000
local minute = 60 * second
Config.Locale = 'en'
Config.EnableBilling = true
Config.EsxTriggerName = 'esx:getSharedObject' -- change the trigger name if you have an anti cheat that detects this trigger
Config.BillingTriggerName = 'esx_billing:sendBill' -- change the trigger name if you have an anti cheat that detects this trigger
Config.SocietyBossMenu = 'esx_society:openBossMenu' -- change the trigger name if you have an anti cheat that detects this trigger
Config.ActionMenuKey = 'F5'
Config.Blip = {
location = vector3(-634.75, 225.66, 80.88),
size = 1.2,
color = 10,
blipid = 537,
name = 'coffee'
}
-- if coffee workers are offline then players can buy coffee in offline mode from a menu inside the coffeeshop
-- but when a worker is online the offline buy menu gets disabled so players have to order coffee to the worker
-- offline mode for buying coffees will increase your server RP and sometimes workers are not online and player needs coffee
Config.OfflineBuyLimit = 3
Config.OfflineBuyCooldown = 30 * minute
-- for example OfflineBuyLimit is 3 and OfflineBuyCooldown is 30minutes, it means players can only buy 3 coffee each 30 minutes (for avoid spamming)
-- we should not let player to buy unlimited amount of coffee right ? it make sense cus it might hurt the job !
-- Reward for coffee when players buy coffee while workers are offline
Config.OfflineReward = true -- if its true then when a player buys coffee when workers are not online then the payed amount goes to coffee society
Config.OfflineRewardPercentage = 100 -- for example if player buys a coffee for 30$, 30$ will be deposited in boss society
-- Delivery Car
Config.DeliveryCoodown = 5 * minute -- if worker ended the mission then after how long he can again goes for delivery ? default 5min
Config.SocietyRewardDelivery = 30 -- 30 percentage reward for boss when a coffee worker delivers items, it does not decrease the worker reward
Config.PrefixPlate = 'coffee' -- if you spawn a delivery car from coffee parking, the car plate will start with prefix characters, for example the first car you take out would be "coffee1"
Config.AuthorizedVehicles = {
{ name = 'kalahari', label = 'Delivery Car' }
}
Config.HighRankGrade = 4 -- minimum of grade to be highrank, highranks can access stock inventory
Config.Zones = {
Cloakrooms = {
Pos = { x = -634.75, y = 225.66, z = 80.88 },
Size = { x = 1.5, y = 1.5, z = 1.0 },
Color = { r = 255, g = 187, b = 255 },
Type = 1,
},
CustomerMenu = {
Pos = { x = -632.83, y = 235.89, z = 80.88 },
Size = { x = 1.5, y = 1.5, z = 0.5 },
Color = { r = 255, g = 0, b = 255 },
Type = 1,
},
ListMenu = {
Pos = { x = -632.80, y = 233.70, z = 80.88},
Size = { x = 1.5, y = 1.5, z = 0.5 },
Color = { r = 255, g = 0, b = 255 },
Type = 1,
},
BossActions = { --
Pos = { x = -634.66, y = 228.03, z = 80.88 },
Size = { x = 1.5, y = 1.5, z = 1.0 },
Color = { r = 0, g = 100, b = 0 },
Type = 1,
},
Stock = {
Pos = { x = -621.99, y = 311.81, z = 82.93 },
Size = { x = 1.6, y = 1.6, z = 1.0 },
Color = { r = 0, g = 255, b = 255 },
Type = 1,
},
Vehicles = {
Pos = { x = -619.23, y = 285.39, z = 80.62 },
SpawnPoint = { x = -618.64, y = 280.36, z = 80.62 },
Size = { x = 1.8, y = 1.8, z = 1.0 },
Color = { r = 210, g = 105, b = 30 },
Type = 1,
Heading = 166.34,
},
VehicleDeleters = {
Pos = { x = -618.64, y = 280.36, z = 80.62 },
Size = { x = 3.0, y = 3.0, z = 0.2 },
Color = { r = 255, g = 0, b = 0 },
Type = 1,
},
Cooking = {
Pos = { x = -635.24, y = 235.67, z = 80.88 },
Size = { x = 1.5, y = 1.5, z = 0.5 },
Color = { r = 248, g = 248, b = 255 },
Type = 1,
},
-----------------------
-------- SHOPS --------
Shop1 = { --
Pos = { x = -631.56, y = 227.77, z = 80.88 },
Size = { x = 1.2, y = 1.2, z = 0.7 },
Color = { r = 0, g = 0, b = 150 },
Type = 1,
Items = {
{ name = 'milk', label = 'Milk', price = 0 },
{ name = 'chocolate', label = 'Chocolate', price = 0 },
{ name = 'cream', label = 'Cream', price = 0 },
{ name = 'ice', label = 'Ice', price = 0 },
{ name = 'sugar', label = 'Sugar', price = 0 },
},
},
Shop2 = { --
Pos = { x = -631.11, y = 224.14, z = 80.88 },
Size = { x = 1.2, y = 1.2, z = 0.7 },
Color = { r = 238, g = 110, b = 0 },
Type = 1,
Items = {
{ name = 'coffee_powder', label = 'Coffee Powder', price = 0 },
{ name = 'espresso_powder', label = 'Espresso Powder', price = 0 },
{ name = 'mccoffee_powder', label = 'McCoffee Powder', price = 0 },
{ name = 'nescafe_powder', label = 'Nescafe Powder', price = 0 },
},
},
}
-- using 3dme will increase the RP value, when worker starts to make a coffee a text will appear above his head that he is making the coffee
Config.Using3dme = true -- set it true if you are using 3dme
Config.CookingTime = 10 * second
Config.CookingCoords = vector3(-635.24, 235.67, 80.88) -- it must be exact same as Config.Zones.Cooking
Config.CookingHeading = 2.9 -- when starts to cooking which heading ped must be
Config.Uniforms = {
coffee_outfit = {
male = {
['tshirt_1'] = 6, ['tshirt_2'] = 0,
['torso_1'] = 11, ['torso_2'] = 1,
['decals_1'] = 0, ['decals_2'] = 0,
['arms'] = 11,
['pants_1'] = 28, ['pants_2'] = 0,
['shoes_1'] = 10, ['shoes_2'] = 0,
['chain_1'] = 0, ['chain_2'] = 0
},
female = {
['tshirt_1'] = 39, ['tshirt_2'] = 0,
['torso_1'] = 7, ['torso_2'] = 0,
['decals_1'] = 0, ['decals_2'] = 0,
['arms'] = 3,
['pants_1'] = 6, ['pants_2'] = 0,
['shoes_1'] = 6, ['shoes_2'] = 0,
['chain_1'] = 0, ['chain_2'] = 0
}
}
}
-- for each delivery it requires 3 type of coffee in order to make and deliver, you can set the random amount for them
-- it means first item amount would be a number between 10 to 20
-- for example first item would be 15 espresso
Config.MinCoffeeItem1 = 10
Config.MaxCoffeeItem1 = 20
Config.MinCoffeeItem2 = 10
Config.MaxCoffeeItem2 = 20
Config.MinCoffeeItem3 = 10
Config.MaxCoffeeItem3 = 20
-- this one is for out of city location
-- when delivery is out of city then we need to make it worth so worker have enough motivation to deliver the items :))
-- if the location is out city then min and max of items can be increased
Config.MinCoffeeItemsForOutCity = 20 -- for all 3 items
Config.MaxCoffeeItemsForOutCity = 40 -- for all 3 items
-- change the reward price for each coffee at server/delivery.lua
Config.DeliveryListItems = {
[1] = {name = 'cappuccino', label = 'Cappuccino'},
[2] = {name = 'mochacoffee', label = 'Mocha'},
[3] = {name = 'espressoo', label = 'Espressoo'},
[4] = {name = 'blackcoffee', label = 'Black Coffee'},
[5] = {name = 'icecoffee', label = 'Ice Coffee'},
[6] = {name = 'hotchocolate', label = 'Hot Chocolate'},
[7] = {name = 'mccoffee', label = 'Mccoffee'},
[8] = {name = 'nescafe', label = 'Nescafe'},
[9] = {name = 'coffee', label = 'Normal Coffee'},
}
Config.Delivery = {
-------------------------------------------Los Santos
[1] = {
Pos = vector3(118.65, -819.05, 30.30),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[2] = {
Pos = vector3(-743.17, -1128.32, 9.60),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[3] = {
Pos = vector3(-1546.71, -469.60, 34.49),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[4] = {
Pos = vector3(-457.06, -13.64, 44.70),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[5] = {
Pos = vector3(455.50, 126.56, 98.22),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[6] = {
Pos = vector3(964.25, -626.87, 56.43),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[7] = {
Pos = vector3(890.85, -2340.45, 29.35),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[8] = {
Pos = vector3(-964.11, -2072.55, 8.41),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[9] = {
Pos = vector3(-996.14, -2970.40, 12.95),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[10] = {
Pos = vector3(-96.27, 425.67, 112.06),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[11] = {
Pos = vector3(-1239.20, 487.87, 92.34),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[12] = {
Pos = vector3(8.17, -258.68, 46.32),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'incity',
},
[13] = {
Pos = vector3(1907.06, 3704.79, 31.75),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[14] = {
Pos = vector3(1446.51, 3658.13, 33.26),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[15] = {
Pos = vector3(49.00, 3656.79, 38.60),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[16] = {
Pos = vector3(-128.13, 1927.34, 196.07),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[17] = {
Pos = vector3(2565.15, 372.96, 107.46),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[18] = {
Pos = vector3(2539.43, 4639.11, 33.25),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[19] = {
Pos = vector3(1688.20, 4773.45, 40.92),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
[20] = {
Pos = vector3(-3170.53, 1299.68, 13.74),
Color = {r = 204, g = 204, b = 0},
Size = {x = 7.0, y = 7.0, z = 3.0},
Color = {r = 204, g = 204, b = 0},
Type = 'outcity',
},
}
Requirements
- requirements :
- esx (legacy or old esx)
- esx_basicneeds
- esx_society
- progressbar (optional)
- mythic notify (optional)
- esx_billing (optional)
- 3dme (optional)
Tebex Link
you can buy the script from HERE
Also Check my Newest Project
recently I have made one of my biggest project that is esx_society remastered version , in other words I made a huge revolution for esx servers
the link : ESX Society Remastered + More Options
my Other Script
Uber Eats (ESX, QB)
ESX Society Remastered
Realistic Fast Food
Advanced Lock System
ESX Car Bomb
ESX Books + Reading
VIP List + Test Drive
ESX Craft System
ESX Jobs List
ESX Document Robbery
ESX Multiple Simcards
Code is accessible | Yes |
Subscription-based | No |
Lines (approximately) | more than 1000 |
Requirements | esx |
Support | Yes anytime |