Skip to content

Installation

Dependencies

Ensure the following resources are installed and running before sd-yacht:

DependencyOptions
Librarysd_lib
UI Libraryox_lib
Interactionox_target / qb-target / qtarget (or use TextUI)
SoundInteractSound (optional)

Step 1: Add the Resource

  1. Download sd-yacht from Keymaster
  2. Extract it into your server's resources directory
  3. Add ensure sd-yacht to your server.cfg after all dependencies
ini
ensure sd_lib
ensure ox_lib
ensure ox_target
ensure sd-yacht

Step 2: Add Items

Register the required items in your inventory system:

lua
-- Add to ox_inventory/data/items.lua

['yachtcodes'] = {
    label = 'Yacht Access Codes',
    weight = 200,
    stack = false,
    close = true,
    description = 'The first half of codes for the Yacht',
},
['casinocodes'] = {
    label = 'Casino Access Codes',
    weight = 200,
    stack = false,
    close = true,
    description = 'The first half of codes for the Casino',
},
['secured_safe'] = {
    label = 'Safe',
    weight = 200,
    stack = false,
    close = true,
    description = 'Meant to protect valuables',
},
['expensive_champagne'] = {
    label = 'Champagne',
    weight = 200,
    stack = true,
    close = true,
    description = 'A sparkling wine from France',
},
['default_gateway_override'] = {
    label = 'Gateway Override',
    weight = 200,
    stack = false,
    close = true,
    description = 'A default gateway override on a usb',
},
['revivekit'] = {
    label = 'Revival Kit',
    weight = 3000,
    stack = false,
    close = true,
    description = 'When your pal needs that pick me up',
},
lua
-- Add to qb-core/shared/items.lua

['yachtcodes']               = { name = 'yachtcodes',               label = 'Yacht Access Codes',  weight = 200,  type = 'item', image = 'yachtcodes.png',               unique = true,  useable = true,  shouldClose = true,  description = 'The first half of codes for the Yacht' },
['casinocodes']              = { name = 'casinocodes',              label = 'Casino Access Codes', weight = 200,  type = 'item', image = 'casinocodes.png',              unique = true,  useable = true,  shouldClose = true,  description = 'The first half of codes for the Casino' },
['secured_safe']             = { name = 'secured_safe',             label = 'Safe',                weight = 200,  type = 'item', image = 'secured_safe.png',             unique = true,  useable = true,  shouldClose = true,  description = 'Meant to protect valuables' },
['expensive_champagne']      = { name = 'expensive_champagne',      label = 'Champagne',           weight = 200,  type = 'item', image = 'expensive_champagne.png',      unique = false, useable = true,  shouldClose = true,  description = 'A sparkling wine from France' },
['default_gateway_override'] = { name = 'default_gateway_override', label = 'Gateway Override',    weight = 200,  type = 'item', image = 'default_gateway_override.png', unique = true,  useable = true,  shouldClose = true,  description = 'A default gateway override on a usb' },
['revivekit']                = { name = 'revivekit',                label = 'Revival Kit',         weight = 3000, type = 'item', image = 'revivekit.png',                unique = true,  useable = true,  shouldClose = false, description = 'When your pal needs that pick me up' },
sql
-- Import sd-yacht/[SQL]/ESX/items.sql or run manually:

INSERT INTO `items` (`name`, `label`, `weight`) VALUES
  ('yachtcodes', 'Yacht Access Codes', 2),
  ('casinocodes', 'Casino Access Codes', 2),
  ('secured_safe', 'Safe', 2),
  ('expensive_champagne', 'Champagne', 2),
  ('default_gateway_override', 'Gateway Override', 2),
  ('revivekit', 'Revival Kit', 30);

Step 3: Copy Item Images

Copy the item images from sd-yacht/images/ to your inventory's image folder:

InventoryImage Path
ox_inventoryox_inventory/web/images/
qb-inventory / ps-inventory<inventory>/html/images/
qs-inventoryqs-inventory/html/images/
codem-inventorycodem-inventory/html/itemimages/
origen_inventoryorigen_inventory/ui/images/
Yacht Item Images6 images
Casino Codes
casinocodes.png
Gateway Override
default_gateway_override.png
Expensive Champagne
expensive_champagne.png
Revive Kit
revivekit.png
Secured Safe
secured_safe.png
Yacht Codes
yachtcodes.png

TIP

If you are using a custom inventory, place the images wherever your inventory loads item icons from.

Step 4: Start and Verify

  1. Start your server
  2. Check the server console for any errors
  3. Look for the Secured Yacht blip on the map (if enabled)
  4. Ensure the minimum police requirement is met (default: 4 cops)
  5. You need yachtcodes item to start the heist

WARNING

Make sure sd_lib is started before sd-yacht in your server.cfg, or the resource will fail to load.

TIP

No database tables are required. All heist state is managed in memory and resets on server restart.