🛠️Installation

Database Installation

Before you install manually, you can active the option Config.InstallDatabase on config.lua.

CREATE TABLE IF NOT EXISTS `trucker_players` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `display_name` VARCHAR(32) DEFAULT NULL,
    `company_tag` VARCHAR(20) DEFAULT NULL,
    `avatar_url` VARCHAR(255) DEFAULT NULL,
    `level` INT(11) DEFAULT 1,
    `xp` INT(11) DEFAULT 0,
    `total_jobs` INT(11) DEFAULT 0,
    `total_distance` FLOAT DEFAULT 0.0,
    `total_revenue` INT(11) DEFAULT 0,
    `total_time_played` INT(11) DEFAULT 0, 
    `skillpoints` INT(11) DEFAULT 0,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `citizenid` (`citizenid`),
    KEY `level` (`level`),
    KEY `total_jobs` (`total_jobs`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_skills` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `skill_type` VARCHAR(50) NOT NULL,
    `skill_level` INT(11) DEFAULT 0,
    `skill_data` TEXT DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `citizenid_skill` (`citizenid`, `skill_type`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_active_jobs` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `job_type` VARCHAR(20) NOT NULL,
    `company` VARCHAR(50) NOT NULL,
    `category` VARCHAR(50) NOT NULL,
    `from_location` VARCHAR(100) NOT NULL,
    `to_location` VARCHAR(100) NOT NULL,
    `distance` FLOAT NOT NULL,
    `reward` INT(11) NOT NULL,
    `deposit` INT(11) DEFAULT 0,
    `vehicle_model` VARCHAR(50) DEFAULT NULL,
    `vehicle_plate` VARCHAR(20) DEFAULT NULL,
    `progress` INT(11) DEFAULT 0,
    `started_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `citizenid` (`citizenid`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_job_history` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `job_type` VARCHAR(20) NOT NULL,
    `company` VARCHAR(50) NOT NULL,
    `category` VARCHAR(50) NOT NULL,
    `from_location` VARCHAR(100) NOT NULL,
    `to_location` VARCHAR(100) NOT NULL,
    `distance` FLOAT NOT NULL,
    `reward` INT(11) NOT NULL,
    `base_reward` INT(11) NOT NULL,
    `damage_penalty` FLOAT DEFAULT 0.0,
    `speeding_penalty` FLOAT DEFAULT 0.0,
    `perfect_bonus` FLOAT DEFAULT 0.0,
    `speeding_violations` INT(11) DEFAULT 0,
    `vehicle_damage` FLOAT DEFAULT 0.0,
    `time_taken` INT(11) DEFAULT 0,
    `completed_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `citizenid` (`citizenid`),
    KEY `completed_at` (`completed_at`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_achievements` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `achievement_id` VARCHAR(50) NOT NULL,
    `progress` INT(11) DEFAULT 0,
    `completed` TINYINT(1) DEFAULT 0,
    `completed_at` TIMESTAMP NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `citizenid_achievement` (`citizenid`, `achievement_id`),
    KEY `citizenid` (`citizenid`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_statistics` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `stat_date` DATE NOT NULL,
    `daily_revenue` INT(11) DEFAULT 0,
    `daily_jobs` INT(11) DEFAULT 0,
    `daily_distance` FLOAT DEFAULT 0.0,
    `perfect_deliveries` INT(11) DEFAULT 0,
    `failed_deliveries` INT(11) DEFAULT 0,
    `avg_delivery_time` INT(11) DEFAULT 0,
    PRIMARY KEY (`id`),
    UNIQUE KEY `citizenid_date` (`citizenid`, `stat_date`),
    KEY `citizenid` (`citizenid`),
    KEY `stat_date` (`stat_date`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_parties` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `party_id` VARCHAR(50) NOT NULL,
    `leader_citizenid` VARCHAR(50) NOT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `active` TINYINT(1) DEFAULT 1,
    PRIMARY KEY (`id`),
    UNIQUE KEY `party_id` (`party_id`),
    KEY `leader` (`leader_citizenid`),
    FOREIGN KEY (`leader_citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_party_members` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `party_id` VARCHAR(50) NOT NULL,
    `citizenid` VARCHAR(50) NOT NULL,
    `joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `is_leader` TINYINT(1) DEFAULT 0,
    PRIMARY KEY (`id`),
    UNIQUE KEY `party_member` (`party_id`, `citizenid`),
    KEY `citizenid` (`citizenid`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_hired_drivers` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `driver_id` VARCHAR(50) NOT NULL,
    `driver_type` VARCHAR(50) DEFAULT 'rookie',
    `driver_name` VARCHAR(100) NOT NULL,
    `experience` INT(11) DEFAULT 20,
    `total_jobs` INT(11) DEFAULT 0,
    `total_revenue` INT(11) DEFAULT 0,
    `hired_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `last_job_at` TIMESTAMP NULL,
    `last_salary_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `assigned_vehicle` VARCHAR(50) NULL,
    `vehicle_condition` INT(11) DEFAULT 100,
    `active` TINYINT(1) DEFAULT 1,
    PRIMARY KEY (`id`),
    UNIQUE KEY `driver_id` (`driver_id`),
    KEY `owner` (`citizenid`),
    KEY `active_drivers` (`citizenid`, `active`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_driver_jobs` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `driver_id` VARCHAR(50) NOT NULL,
    `job_type` VARCHAR(50) NOT NULL,
    `cargo_type` VARCHAR(50) NOT NULL,
    `distance` DECIMAL(10,2) DEFAULT 0.00,
    `revenue` INT(11) DEFAULT 0,
    `experience_gained` INT(11) DEFAULT 2,
    `completed_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `success` TINYINT(1) DEFAULT 1,
    PRIMARY KEY (`id`),
    KEY `driver` (`driver_id`),
    KEY `completed` (`completed_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_driver_salaries` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `driver_id` VARCHAR(50) NOT NULL,
    `amount` INT(11) NOT NULL,
    `paid_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `payment_type` VARCHAR(50) DEFAULT 'daily',
    PRIMARY KEY (`id`),
    KEY `employer` (`citizenid`),
    KEY `driver` (`driver_id`),
    KEY `paid_at` (`paid_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `trucker_vehicles` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `citizenid` VARCHAR(50) NOT NULL,
    `vehicle_model` VARCHAR(50) NOT NULL,
    `vehicle_plate` VARCHAR(20) NOT NULL,
    `vehicle_name` VARCHAR(100) NOT NULL,
    `purchase_price` INT(11) DEFAULT 0,
    `current_condition` INT(11) DEFAULT 100,
    `total_distance` FLOAT DEFAULT 0.0,
    `total_jobs` INT(11) DEFAULT 0,
    `out` TINYINT(1) DEFAULT 0,
    `location` VARCHAR(100) DEFAULT 'garage',
    `purchased_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `last_used` TIMESTAMP NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `vehicle_plate` (`vehicle_plate`),
    KEY `owner` (`citizenid`),
    KEY `out_status` (`citizenid`, `out`),
    FOREIGN KEY (`citizenid`) REFERENCES `trucker_players`(`citizenid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE INDEX idx_leaderboard ON trucker_players(total_jobs DESC, total_distance DESC);
CREATE INDEX idx_recent_jobs ON trucker_job_history(citizenid, completed_at DESC);
CREATE INDEX idx_achievements ON trucker_achievements(citizenid, completed);
CREATE INDEX idx_statistics ON trucker_statistics(citizenid, stat_date DESC);
CREATE INDEX idx_active_parties ON trucker_parties(active, created_at DESC);
CREATE INDEX idx_active_drivers ON trucker_hired_drivers(citizenid, active, last_job_at);
CREATE INDEX idx_garage_vehicles ON trucker_vehicles(citizenid, out, last_used DESC);

Last updated