Installation
Install STG Ice Cream on your FiveM server, add the seven treat items to your inventory and start it.

STG Ice Cream
Download the script
Sign in to the Cfx.re portal with the account you used at checkout and download stg-icecream from Granted Assets.
Move the resource
Extract the zip and place the stg-icecream folder inside the [STG] category folder in your resources directory.
resources/
└── [STG]/
├── stg_lib/
└── stg-icecream/Install the dependencies
Ice Cream needs ox_lib, oxmysql and stg_lib. Skip this step if your server already runs them. The database table stg_icecream_vehicles is created on the first start.
Add the items
Every flavor is an item that customers receive and eat. Pick the tab for your inventory. QBOX servers, and any ESX or QBCore server running ox_inventory, use the ox_inventory tab.
Add these entries to ox_inventory/data/items.lua:
["stg_ice_cream_rocket"] = {
label = "Rocket Pop",
weight = 100,
stack = true,
close = true,
description = "Red, white and blue. A summer classic.",
client = {
export = 'stg-icecream.eatIceCream'
}
},
["stg_ice_cream_taco"] = {
label = "Cocoa Taco",
weight = 100,
stack = true,
close = true,
description = "Vanilla ice cream in a chocolate shell.",
client = {
export = 'stg-icecream.eatIceCream'
}
},
["stg_ice_cream_berry"] = {
label = "Berry Crunch Bar",
weight = 100,
stack = true,
close = true,
description = "Berry ice cream rolled in a crunchy coating.",
client = {
export = 'stg-icecream.eatIceCream'
}
},
["stg_ice_cream_orange"] = {
label = "Orange Cream Bar",
weight = 100,
stack = true,
close = true,
description = "Orange sherbet wrapped around vanilla cream.",
client = {
export = 'stg-icecream.eatIceCream'
}
},
["stg_ice_cream_fudge"] = {
label = "Fudge Pop",
weight = 100,
stack = true,
close = true,
description = "Rich chocolate fudge on a stick.",
client = {
export = 'stg-icecream.eatIceCream'
}
},
["stg_ice_cream_sandwich"] = {
label = "Cream Sandwich",
weight = 100,
stack = true,
close = true,
description = "Vanilla ice cream between two chocolate wafers.",
client = {
export = 'stg-icecream.eatIceCream'
}
},
["stg_ice_cream_cone"] = {
label = "Sundae Cone",
weight = 100,
stack = true,
close = true,
description = "Waffle cone topped with chocolate and nuts.",
client = {
export = 'stg-icecream.eatIceCream'
}
},Add these lines to QBShared.Items in qb-core/shared/items.lua:
stg_ice_cream_rocket = { name = 'stg_ice_cream_rocket', label = 'Rocket Pop', weight = 100, type = 'item', image = 'stg_ice_cream_rocket.png', unique = false, useable = true, shouldClose = true, description = 'Red, white and blue. A summer classic.' },
stg_ice_cream_taco = { name = 'stg_ice_cream_taco', label = 'Cocoa Taco', weight = 100, type = 'item', image = 'stg_ice_cream_taco.png', unique = false, useable = true, shouldClose = true, description = 'Vanilla ice cream in a chocolate shell.' },
stg_ice_cream_berry = { name = 'stg_ice_cream_berry', label = 'Berry Crunch Bar', weight = 100, type = 'item', image = 'stg_ice_cream_berry.png', unique = false, useable = true, shouldClose = true, description = 'Berry ice cream rolled in a crunchy coating.' },
stg_ice_cream_orange = { name = 'stg_ice_cream_orange', label = 'Orange Cream Bar', weight = 100, type = 'item', image = 'stg_ice_cream_orange.png', unique = false, useable = true, shouldClose = true, description = 'Orange sherbet wrapped around vanilla cream.' },
stg_ice_cream_fudge = { name = 'stg_ice_cream_fudge', label = 'Fudge Pop', weight = 100, type = 'item', image = 'stg_ice_cream_fudge.png', unique = false, useable = true, shouldClose = true, description = 'Rich chocolate fudge on a stick.' },
stg_ice_cream_sandwich = { name = 'stg_ice_cream_sandwich', label = 'Cream Sandwich', weight = 100, type = 'item', image = 'stg_ice_cream_sandwich.png', unique = false, useable = true, shouldClose = true, description = 'Vanilla ice cream between two chocolate wafers.' },
stg_ice_cream_cone = { name = 'stg_ice_cream_cone', label = 'Sundae Cone', weight = 100, type = 'item', image = 'stg_ice_cream_cone.png', unique = false, useable = true, shouldClose = true, description = 'Waffle cone topped with chocolate and nuts.' },Run this query on your database:
INSERT INTO items (name, label)
VALUES
('stg_ice_cream_rocket', 'Rocket Pop'),
('stg_ice_cream_taco', 'Cocoa Taco'),
('stg_ice_cream_berry', 'Berry Crunch Bar'),
('stg_ice_cream_orange', 'Orange Cream Bar'),
('stg_ice_cream_fudge', 'Fudge Pop'),
('stg_ice_cream_sandwich', 'Cream Sandwich'),
('stg_ice_cream_cone', 'Sundae Cone');With Config.ItemStock = true (the default) the owner carries the stock as real items, so every flavor must exist in your inventory. On ox_inventory the server console lists any missing flavor item a few seconds after start.
Add the item images
Copy every image from stg-icecream/[SETUP]/item-images into your inventory's image folder, for example ox_inventory/web/images or qb-inventory/html/images.
Start the script
Make sure [STG] starts after your framework, your inventory, oxmysql and ox_lib in server.cfg:
ensure oxmysql
ensure ox_lib
# your framework: es_extended, qb-core or qbx_core
# your inventory, for example ox_inventory
ensure stg_lib
ensure [STG]Then restart the whole server.
Nothing happens or the console shows an error? See Common Errors.
Next steps
Configuration
Truck, depot, flavors, prices, NPC customers and jingle
Dependencies
What needs to start before Ice Cream
Still having trouble?
Open a ticket on our Discord. Our team answers around 15 hours a day.
Ice Cream
Buy an ice cream truck, stock it with seven treats and soft serve, set your own prices and serve players and walk-up NPC customers at the window.
Configuration
Every option in STG Ice Cream config/config.lua and config/functions.lua, from truck price and depot to flavors, prices, NPC customers, mods, stash and jingle.