π¦ Installation Instructions β Police HR Tablet System
To ensure the proper functioning of the Police HR Tablet System, please follow these installation steps carefully. This system relies on specific dependencies, SQL structure, and optional integration points like K9 features.
π οΈ Dependencies
This system requires the following:
β QBCore, ESX, or Standalone base
β oxmysql (database wrapper)
β ox_target or qb-target (for optional tablet access zones)
β Inventory system (qb-inventory, qs-inventory, or codem)
Make sure these dependencies are installed and properly working before continuing.
ποΈ Database Setup
Run the following SQL commands in your database (e.g., via phpMyAdmin or HeidiSQL):
π Includes all core tables:
Employees
Divisions & Members
Forms & Submissions
Audit Logs
Status Tags
It also contains an optional addition for K9 integration (adds awards and service_time to evo_k9_dogs).
π See the SQL dump at the bottom of this page for full table structure.
-- --------------------------------------------------------
-- Database: evo_hr (you can change DB name if needed)
-- --------------------------------------------------------
-- Table: evo_hr_audit_log
DROP TABLE IF EXISTS `evo_hr_audit_log`;
CREATE TABLE IF NOT EXISTS `evo_hr_audit_log` (
`id` INT NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(255) NOT NULL,
`full_name` VARCHAR(255) NOT NULL,
`job` VARCHAR(255) NOT NULL,
`category` VARCHAR(255) NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`action` VARCHAR(255) NOT NULL,
`description` TEXT NOT NULL,
`flag` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_hr_divisions
DROP TABLE IF EXISTS `evo_hr_divisions`;
CREATE TABLE IF NOT EXISTS `evo_hr_divisions` (
`id` INT NOT NULL AUTO_INCREMENT,
`creator_identifier` VARCHAR(50) NOT NULL,
`job` VARCHAR(50) NOT NULL,
`division_name` VARCHAR(50) NOT NULL,
`division_description` TEXT DEFAULT NULL,
`division_icon` TEXT DEFAULT NULL,
`division_color` VARCHAR(10) DEFAULT '#FFFFFF',
`division_ranks` TEXT DEFAULT NULL,
`division_tags` TEXT DEFAULT NULL,
`division_head` VARCHAR(50) NOT NULL DEFAULT '',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `division_name` (`division_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_hr_division_members
DROP TABLE IF EXISTS `evo_hr_division_members`;
CREATE TABLE IF NOT EXISTS `evo_hr_division_members` (
`id` INT NOT NULL AUTO_INCREMENT,
`player_identifier` VARCHAR(50) NOT NULL,
`division_id` INT DEFAULT NULL,
`rank_name` VARCHAR(50) NOT NULL,
`rank_number` INT NOT NULL,
`status` VARCHAR(50) NOT NULL,
`job` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_hr_employees
DROP TABLE IF EXISTS `evo_hr_employees`;
CREATE TABLE IF NOT EXISTS `evo_hr_employees` (
`id` INT NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(50) NOT NULL,
`full_name` VARCHAR(100) DEFAULT NULL,
`job` VARCHAR(50) DEFAULT NULL,
`division` VARCHAR(50) DEFAULT NULL,
`callsign` VARCHAR(10) DEFAULT NULL,
`status` TEXT DEFAULT NULL,
`strikes` TEXT DEFAULT NULL,
`rewards` TEXT DEFAULT NULL,
`duty_time` INT DEFAULT 0,
`last_activity` DATETIME DEFAULT NULL,
`profile_picture` TEXT DEFAULT NULL,
`permissions` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (JSON_VALID(`permissions`)),
`description` TEXT DEFAULT NULL,
`statuscolor` VARCHAR(20) DEFAULT NULL,
`rank` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `identifier` (`identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_hr_form_submissions
DROP TABLE IF EXISTS `evo_hr_form_submissions`;
CREATE TABLE IF NOT EXISTS `evo_hr_form_submissions` (
`id` INT NOT NULL AUTO_INCREMENT,
`date` DATETIME NOT NULL,
`status` VARCHAR(20) NOT NULL,
`first_name` VARCHAR(50) NOT NULL,
`last_name` VARCHAR(50) NOT NULL,
`title_form` VARCHAR(100) NOT NULL,
`approved_by` VARCHAR(50) DEFAULT NULL,
`denied_by` VARCHAR(50) DEFAULT NULL,
`summary` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (JSON_VALID(`summary`)),
`form_data` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (JSON_VALID(`form_data`)),
`job` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_hr_forum_forms
DROP TABLE IF EXISTS `evo_hr_forum_forms`;
CREATE TABLE IF NOT EXISTS `evo_hr_forum_forms` (
`id` INT NOT NULL AUTO_INCREMENT,
`form_name` VARCHAR(255) NOT NULL,
`theme_mode` ENUM('light','dark') NOT NULL DEFAULT 'light',
`access` ENUM('public','private') NOT NULL DEFAULT 'public',
`show_status` ENUM('active','deactive') NOT NULL DEFAULT 'active',
`fields` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (JSON_VALID(`fields`)),
`creator` VARCHAR(255) NOT NULL,
`date_created` DATETIME NOT NULL,
`location` TEXT DEFAULT NULL,
`job` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_hr_tag
DROP TABLE IF EXISTS `evo_hr_tag`;
CREATE TABLE IF NOT EXISTS `evo_hr_tag` (
`id` INT NOT NULL AUTO_INCREMENT,
`statusname` VARCHAR(255) NOT NULL,
`statuscolor` VARCHAR(7) NOT NULL,
`job` VARCHAR(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
-- Table: evo_k9_dogs
-- insert this if you are using k9 dogs, you can use this to add the new columns to the table
-- Add 'awards' column if it does not exist
ALTER TABLE `evo_k9_dogs`
ADD COLUMN IF NOT EXISTS `awards` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '[]' CHECK (JSON_VALID(`awards`));
-- Add 'service_time' column if it does not exist
ALTER TABLE `evo_k9_dogs`
ADD COLUMN IF NOT EXISTS `service_time` DATE DEFAULT CURDATE();
If you're using the evo-k9 system, this HR script will automatically support:
K9 Medal & Award System
K9 Service Time Tracking
Dog Profile Display in Tablet UI
Make sure the evo_k9_dogs table includes:
ALTER TABLE `evo_k9_dogs`
ADD COLUMN IF NOT EXISTS `awards` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '[]' CHECK (JSON_VALID(`awards`));
ALTER TABLE `evo_k9_dogs`
ADD COLUMN IF NOT EXISTS `service_time` DATE DEFAULT CURDATE();
π§ Configuration
Inside config.lua:
Choose tablet open methods: command, item, target zone
Define default uniforms for photo booth
Set allowed jobs, permissions, and tablet theme
Customize division tag colors, rank names, and structure
β Final Checklist
β All dependencies are installed
β Database is created and SQL executed
β Tablet access method is chosen and working
β (Optional) K9 integration columns added
β Config is customized to your serverβs job and division structure