Installation Guide

Welcome to the **Z-Store** setup guide for your FiveM server using QBCore. Follow the steps carefully to ensure everything works smoothly

⚠️ Important Notice

Do not rename the resource folder! Renaming the resource from z-notaryjob will break functionality

πŸ“¦ Required Items

Add the following items to your qb-core/shared/items.lua:

["notary_tablet"] = {
    name = "notary_tablet",
    label = "Notary Tablet",
    weight = 500,
    type = "item",
    image = "notary_tablet.png",
    unique = false,
    useable = true,
    description = "A tablet used for notary purposes."
},
["vehicle_contract"] = {
    name = "vehicle_contract",
    label = "Vehicle Contract Document",
    weight = 50,
    type = "item",
    image = "contract.png",
    unique = true,
    useEvent = "notary:getDocument",
    description = "A notarized vehicle transfer document."
},

["house_contract"] = {
    name = "house_contract",
    label = "House Contract",
    weight = 50,
    type = "item",
    image = "contract.png",
    unique = true,
    useEvent = "notary:gethouseDocument",
    description = "A notarized house transfer document."
},

🏒 Add Notary Job

Insert this job configuration into qb-core/shared/jobs.lua:

['notary'] = {
    label = 'Notary',
    defaultDuty = false,
    offDutyPay = false,
    grades = {
        ['0'] = { name = 'Stagiaire', payment = 280 },
        ['1'] = { name = 'Worker', payment = 300 },
        ['2'] = { name = 'Conseille', payment = 320 },
        ['3'] = { name = 'Superviseur', payment = 340 },
        ['4'] = { name = 'Manager', isboss = true, payment = 360 },
        ['5'] = { name = 'Owner', isboss = true, payment = 400 },
        ['6'] = { name = 'Admin', isboss = true, payment = 0 },
    },
},

πŸ–ΌοΈ Inventory Images

Copy all images from the resource folder : html/inv_imgs β†’ Paste them into your inventory script’s image folder.

Make sure filenames match the image names defined in the items above

πŸ”§ Required Dependencies

Install the following required resources: https://github.com/overextended/ox_lib https://github.com/citizenfx/screenshot-basic Make sure these are up-to-date for best compatibility

πŸ“₯ Installation Steps

Once dependencies are installed: 1. Run the SQL file included in the resource :

CREATE TABLE IF NOT EXISTS `notary_rental_stock` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle_model` varchar(50) NOT NULL,
  `count` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `rented_vehicles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `citizenid` varchar(50) DEFAULT NULL,
  `vehicle_model` varchar(50) DEFAULT NULL,
  `rent_time` int(11) DEFAULT NULL,
  `end_time` int(11) DEFAULT NULL,
  `rented_by` varchar(50) DEFAULT NULL,
  `plate` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `notary_vehicles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle_model` varchar(50) NOT NULL,
  `count` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_vehicle_model` (`vehicle_model`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE transferred_vehicles (
    id INT AUTO_INCREMENT PRIMARY KEY,             
    contract_id VARCHAR(50) NOT NULL UNIQUE,       
    plate VARCHAR(15) NOT NULL,                    
    seller_cid VARCHAR(50) NOT NULL,              
    buyer_cid VARCHAR(50) NOT NULL,             
    seller_name VARCHAR(100) NOT NULL,        
    buyer_name VARCHAR(100) NOT NULL,            
    notary_name VARCHAR(100) NOT NULL,           
    sale_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    payment_method VARCHAR(50) NOT NULL,         
     vehicle_model VARCHAR(100) NOT NULL,           
    sell_price DECIMAL(10, 2) NOT NULL,           
    tax_amount DECIMAL(10, 2) NOT NULL             
);

CREATE TABLE IF NOT EXISTS `transferred_houses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `house_contract_id` VARCHAR(50) NOT NULL UNIQUE,
  `house_name` varchar(255) NOT NULL,
  `seller_cid` varchar(255) NOT NULL,
  `buyer_cid` varchar(255) NOT NULL,
  `seller_name` varchar(100) NOT NULL,
  `buyer_name` varchar(100) NOT NULL,
  `notary_name` varchar(100) NOT NULL,
  `payment_method` varchar(50) NOT NULL,
  `sale_price` decimal(15,2) NOT NULL,
  `tax` decimal(15,2) NOT NULL,
  `transfer_date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `house_name` (`house_name`),
  KEY `seller_cid` (`seller_cid`),
  KEY `buyer_cid` (`buyer_cid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE vehicle_sale_contracts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    plate VARCHAR(15) NOT NULL,
    seller_cid VARCHAR(50) NOT NULL,
    buyer_cid VARCHAR(50) NOT NULL,
    seller_name VARCHAR(100) NOT NULL,
    buyer_name VARCHAR(100) NOT NULL,
    notary_name VARCHAR(100) NOT NULL,
    sale_date DATETIME NOT NULL,
    payment_method VARCHAR(50) NOT NULL,
    sell_price DECIMAL(10, 2) NOT NULL,
    tax_amount DECIMAL(10, 2) NOT NULL,
    contract_html TEXT NOT NULL 
);

CREATE TABLE vehicle_registrations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    citizen_id VARCHAR(50) NOT NULL,
    seller_name VARCHAR(255) NOT NULL,
    seller_phone VARCHAR(50) NOT NULL,
    vehicle_model VARCHAR(255) NOT NULL,
    vehicle_upgrades TEXT NOT NULL,
    vehicle_type VARCHAR(50) NOT NULL,
    price DECIMAL(15, 2) NOT NULL,
    notary_name VARCHAR(255) NOT NULL,
    image_url VARCHAR(255) NOT NULL,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. Configure Config.lua for basic settings

  2. Edit server/sv_utils.lua to customize your server functions if needed

  3. Set Discord webhooks inside server/webhooks.lua

  4. In your server.cfg, ensure the resources are loaded in this order: ensure qb-core ensure ox_lib ensure z-notaryjob Place ensure z-notaryjob at the end to ensure all dependencies are loaded first

Last updated