๐Ÿ’ฟInstallation

Requirements

  • 0bug-core (Latest Version)

  • ESX/QBCore/QBox Framework

  • Default framework multicharacter tables

Installation Steps

1. Dependencies First

ensure oxmysql 
ensure qb-core/es_extended/qbx_core
ensure 0bug-core

2. Resource Installation

  • Download 0bug-multicharacter-v2

  • Place in your [0bug] folder

  • Add to your server.cfg:

ensure 0Bug_Multicharacter
  1. Database Setup

Keep the same players/users table that your framework has.

4. Load Order

server.cfg load order

ensure mysql-async/oxmysql
ensure es_extended/qb-core/qbx_core
ensure 0bug-core
ensure 0Bug_Multicharacter

5. Required Discord Setup

  1. Create a Discord Bot at Discord Developer Portal

  2. Get your Bot Token

  3. Enable required bot permissions

  4. Get your Discord Server (Guild) ID

  5. Add these to server_Config.lua

  6. Check this tutoriel and take it as an example

6. Core Configuration

Configure 0bug-core/config.lua

WIZ_CONFIG = {
    Framework = "QBCore",         -- Options: QBCore, QBox, ESX
    MySQL = "oxmysql",           -- Your MySQL handler
    Notification = "qb-core",     -- Options: qb-core, esx-notification, mythic_notify
    DefaultAvatar = "https://w0.peakpx.com/wallpaper/163/205/HD-wallpaper-street-fivem-gta-gta-v-roleplay.jpg",
    Lang = "en",                 -- Available: en, fr, es, de, pl, sv, nl, it, pt-BR, ja, zh-CN, zh-TW, ru, cs
    ClothingScript = "qb-clothing"  -- Available: illenium-appearance, rcore, skinchanger, qb-clothing, tgiann-clothing, bl_appearance, etc.
}

Path to adapt clothing system: 0bug-core/client/tools/clothesSystem.lua

Configure 0bug-core/server_Config.lua

WIZ_SERVER_CONFIG = {
    DISCORD = {
        Discord_Token = "YOUR_DISCORD_BOT_TOKEN",    -- Required
        Discord_Guild_ID = "YOUR_DISCORD_SERVER_ID", -- Required
        Discord_Log_Webhook = "",                    -- Optional
    }
}

7. Visit Script Configuration Page.

Tebex Slot Purchase Integration

1. First enable Tebex integration in your config:

Customize = {
    Tebex_Buy_Slot_Enable = true,
    Tebex_Buy_Slot_Command = "buySlot",  -- This is the command that will be executed
}
  1. In your Tebex store:

  • Create the character slot package

  • Go to the package settings

  • Choose Game Server Commands as deliverables for this package

  • Under "Game Command", add:

buySlot {transaction}

The {transaction} parameter will automatically be replaced with the transaction ID

  1. When a player purchases a slot:

  • They will receive an email with the transaction ID

  • They can enter this ID in the "Extra Slot" menu in-game

  • The system will verify the purchase and grant the additional slot

Important Notes

  • Make sure your Tebex store is properly connected to your FiveM server

  • The command must match exactly what you set in Tebex_Buy_Slot_Command

  • Keep Tebex_Buy_Slot_Enable = true to allow this functionality

Verify Installation

  1. Start your server

  2. Create new character

  3. Check if all features work properly

Important for ESX Users

Go to es_extended configuration and make sure you have these 2 options set to 'true'

Config.Multichar                 = true
Config.Identity                  = true

DATABASE FOR QBCORE

CREATE TABLE IF NOT EXISTS `players` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `citizenid` varchar(50) NOT NULL,
  `cid` int(11) DEFAULT NULL,
  `license` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `money` text NOT NULL,
  `charinfo` text,
  `job` text NOT NULL,
  `gang` text,
  `position` text NOT NULL,
  `metadata` text NOT NULL,
  `inventory` longtext,
  `last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`citizenid`),
  KEY `id` (`id`),
  KEY `last_updated` (`last_updated`),
  KEY `license` (`license`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
COMMIT;

DATABASE FOR ESX

CREATE TABLE IF NOT EXISTS `users` (
  `identifier` varchar(46) NOT NULL,
  `accounts` longtext,
  `group` varchar(50) DEFAULT 'user',
  `inventory` longtext,
  `job` varchar(20) DEFAULT 'unemployed',
  `job_grade` int(11) DEFAULT '0',
  `loadout` longtext,
  `position` varchar(255) DEFAULT '{"x":-269.4,"y":-955.3,"z":31.2,"heading":205.8}',
  `firstname` varchar(16) DEFAULT NULL,
  `lastname` varchar(16) DEFAULT NULL,
  `dateofbirth` varchar(10) DEFAULT NULL,
  `sex` varchar(1) DEFAULT NULL,
  `height` int(11) DEFAULT NULL,
  `skin` longtext,
  `status` longtext,
  `is_dead` tinyint(1) DEFAULT '0',
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `disabled` tinyint(1) DEFAULT '0',
  `last_property` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `last_seen` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `phone_number` int(11) DEFAULT NULL,
  `pincode` int(11) DEFAULT NULL,
  PRIMARY KEY (`identifier`),
  UNIQUE KEY `id` (`id`),
  UNIQUE KEY `index_users_phone_number` (`phone_number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
COMMIT;

Last updated