Installation
How to install and set up legacy-shops
Dependencies#
| Resource | Purpose |
|---|---|
| ox_lib | Callbacks, UI utilities |
| oxmysql | Database operations |
| legacy-lib | Framework 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