Installation#
Follow these steps to successfully install frkn-cakejob on your server.
1. Download & Add Stream Files (Important ⚠️)
To keep the script size optimized, the bakery asset files (stream folder containing cake props, decorations, and bakery models) are provided separately. You must install them for the script to work.
- Download the stream files from the link provided with your purchase.
- Extract the downloaded
.zipor.rarfile. - Drag and drop the
streamfolder directly into yourfrkn-cakejobfolder. (Make sure the folder is named exactlystream)
2. Database Setup
The script automatically creates the required database table (frkn_cakejob) on first start. No manual SQL execution is needed — just make sure your database connection is working properly (via oxmysql).
3. Add Items to Inventory
Add the following items to your framework's item configuration file.
QB-Core Example (qb-core/shared/items.lua):
frkn_cake_box = { name = 'frkn_cake_box', label = 'Cake Box', weight = 200, type = 'item', image = 'cake_box.png', unique = true, useable = true, shouldClose = true, description = 'A packed cake box ready for delivery or opening.' },
frkn_cake = { name = 'frkn_cake', label = 'Cake', weight = 500, type = 'item', image = 'cake.png', unique = true, useable = true, shouldClose = true, description = 'A delicious looking full cake.' },
frkn_cake_slice_white = { name = 'frkn_cake_slice_white', label = 'Vanilla Cake Slice', weight = 100, type = 'item', image = 'cake_slice_white.png', unique = true, useable = true, shouldClose = true, description = 'A delicious slice of white vanilla cake.' },
frkn_cake_slice_brown = { name = 'frkn_cake_slice_brown', label = 'Chocolate Cake Slice', weight = 100, type = 'item', image = 'cake_slice_brown.png', unique = true, useable = true, shouldClose = true, description = 'A delicious slice of brown chocolate cake.' },
frkn_cake_slice_pink = { name = 'frkn_cake_slice_pink', label = 'Strawberry Cake Slice', weight = 100, type = 'item', image = 'cake_slice_pink.png', unique = true, useable = true, shouldClose = true, description = 'A delicious slice of pink strawberry cake.' },
frkn_cake_slice_yellow = { name = 'frkn_cake_slice_yellow', label = 'Caramel Cake Slice', weight = 100, type = 'item', image = 'cake_slice_yellow.png', unique = true, useable = true, shouldClose = true, description = 'A delicious slice of yellow caramel cake.' },
frkn_cake_slice_purple = { name = 'frkn_cake_slice_purple', label = 'Pattern Cake Slice', weight = 100, type = 'item', image = 'cake_slice_purple.png', unique = true, useable = true, shouldClose = true, description = 'A delicious slice of purple pattern cake.' },
OX-Inventory Example (data/items.lua):
['frkn_cake_box'] = {
label = 'Cake Box',
weight = 200,
stack = false,
client = {
image = 'cake_box.png',
}
},
['frkn_cake'] = {
label = 'Cake',
weight = 500,
stack = false,
client = {
image = 'cake.png',
}
},
['frkn_cake_slice_white'] = {
label = 'Vanilla Cake Slice',
weight = 100,
stack = false,
client = { image = 'cake_slice_white.png' }
},
['frkn_cake_slice_brown'] = {
label = 'Chocolate Cake Slice',
weight = 100,
stack = false,
client = { image = 'cake_slice_brown.png' }
},
['frkn_cake_slice_pink'] = {
label = 'Strawberry Cake Slice',
weight = 100,
stack = false,
client = { image = 'cake_slice_pink.png' }
},
['frkn_cake_slice_yellow'] = {
label = 'Caramel Cake Slice',
weight = 100,
stack = false,
client = { image = 'cake_slice_yellow.png' }
},
['frkn_cake_slice_purple'] = {
label = 'Pattern Cake Slice',
weight = 100,
stack = false,
client = { image = 'cake_slice_purple.png' }
},
Make sure to put
cake_box.png,cake.png, and all 5 specific slice images (cake_slice_white.png,cake_slice_brown.png,cake_slice_pink.png,cake_slice_yellow.png,cake_slice_purple.png) into your inventory images directory. These images are provided in theitemimagesfolder.
4. Add Job to Framework (If Job Restriction is Enabled)
If you enable jobRestriction in your config, add this job to your framework:
QB-Core (qb-core/shared/jobs.lua):
bakeryjob = {
label = 'Bakery',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Apprentice', payment = 50 },
['1'] = { name = 'Baker', payment = 75 },
['2'] = { name = 'Decorator', payment = 100 },
['3'] = { name = 'Co-Owner', payment = 125 },
['4'] = { name = 'Owner', isboss = true, payment = 150 },
},
},
Qbox (qbx_core/shared/jobs.lua):
bakeryjob = {
label = 'Bakery',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Apprentice', payment = 50 },
['1'] = { name = 'Baker', payment = 75 },
['2'] = { name = 'Decorator', payment = 100 },
['3'] = { name = 'Co-Owner', payment = 125 },
['4'] = { name = 'Owner', isboss = true, payment = 150 },
},
},
ESX (Execute in your SQL Database):
INSERT INTO `jobs` (`name`, `label`) VALUES
('bakeryjob', 'Bakery')
;
INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES
('bakeryjob', 0, 'apprentice', 'Apprentice', 50, '{}', '{}'),
('bakeryjob', 1, 'baker', 'Baker', 75, '{}', '{}'),
('bakeryjob', 2, 'decorator', 'Decorator', 100, '{}', '{}'),
('bakeryjob', 3, 'co_owner', 'Co-Owner', 125, '{}', '{}'),
('bakeryjob', 4, 'boss', 'Owner', 150, '{}', '{}')
;
5. Adding to Server
- Place the
frkn-cakejobfolder in yourresourcesdirectory (preferably inside[qb]or[standalone]). - Make sure the folder name is exactly
frkn-cakejob. - Open your
server.cfgand add the following line:
ensure frkn-cakejob