Store

Installation

How to install and set up legacy-shops

Dependencies#

ResourcePurpose
ox_libCallbacks, UI utilities
oxmysqlDatabase operations
legacy-libFramework and inventory abstraction

All dependencies must be started before legacy-shops in your server.cfg.

Database Setup#

Run the following SQL in your database. All tables use IF NOT EXISTS so they are safe to re-run.

CREATE TABLE IF NOT EXISTS `legacy_shops` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(100) NOT NULL,
    `ped_model` VARCHAR(100) NOT NULL,
    `coords` JSON NOT NULL,
    `blip_enabled` TINYINT(1) DEFAULT 0,
    `blip_sprite` INT DEFAULT 52,
    `blip_color` INT DEFAULT 2,
    `blip_scale` FLOAT DEFAULT 0.7,
    `created_by` VARCHAR(100) NOT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS `legacy_shops_categories` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `shop_id` INT NOT NULL,
    `name` VARCHAR(100) NOT NULL,
    `sort_order` INT DEFAULT 0,
    FOREIGN KEY (`shop_id`) REFERENCES `legacy_shops`(`id`) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS `legacy_shops_items` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `shop_id` INT NOT NULL,
    `category_id` INT NOT NULL,
    `item_name` VARCHAR(100) NOT NULL,
    `price` INT NOT NULL,
    `stock` INT DEFAULT -1,
    `max_stock` INT DEFAULT -1,
    `sort_order` INT DEFAULT 0,
    FOREIGN KEY (`shop_id`) REFERENCES `legacy_shops`(`id`) ON DELETE CASCADE,
    FOREIGN KEY (`category_id`) REFERENCES `legacy_shops_categories`(`id`) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS `legacy_shops_presets` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `label` VARCHAR(100) NOT NULL,
    `name` VARCHAR(100) NOT NULL,
    `ped_model` VARCHAR(100) NOT NULL,
    `blip_sprite` INT DEFAULT 52,
    `blip_color` INT DEFAULT 2,
    `blip_scale` FLOAT DEFAULT 0.7,
    `categories` TEXT DEFAULT '[]',
    `items` TEXT DEFAULT '[]',
    `created_by` VARCHAR(100) DEFAULT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS `legacy_shops_history` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `shop_id` INT NOT NULL,
    `identifier` VARCHAR(100) NOT NULL,
    `player_name` VARCHAR(100),
    `item_name` VARCHAR(100) NOT NULL,
    `quantity` INT NOT NULL,
    `price_paid` INT NOT NULL,
    `payment_method` VARCHAR(20) NOT NULL,
    `purchased_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

On first startup, the resource automatically seeds 8 default presets (General Store, Digital Den, Hardware Store, Ammunation, Clothing Store, Pharmacy, Bar/Nightclub, Fishing Store) if the legacy_shops_presets table is empty.

server.cfg#

ensure legacy-lib
ensure ox_lib
ensure oxmysql
ensure legacy-shops