📦Installation

How to install and setup

Requirements

Step 1 - Place resource in [qb] folder

Place the folder qb-pos inside your folder with all the other qb scripts. This is most likely called [qb]

Step 2 - Add Items

Add the following items to your qb-core items.lua file:

-- Boosting Items
boostlaptop                  = { name = 'boostlaptop', label = 'Laptop', weight = 100, type = 'item', image = 'pixellaptop.png', unique = true, useable = true, shouldClose = true, description = 'A laptop' },
hacking_device               = { name = 'hacking_device', label = 'Hacking Device', weight = 100, type = 'item', image = 'disabler.png', unique = true, useable = true, shouldClose = true, description = 'A device' },
boostfile                    = { name = 'boostfile', label = 'File', weight = 100, type = 'item', image = 'file.png', unique = true, useable = true, shouldClose = true, description = 'A nail file' },

Step 3 - Images

Open up the images folder and add the images to your inventory addon. For most people this will be called qb-inventory.

Drag and drop the images into the html/images folder.

Step 4 - Adding Vehicles

The vehicles used for the boosting system are configured by you. Each tier has a different set of vehicles, this means that you need to configure this in your qb-core vehicles.lua. This is so you have more control over what vehicles players will be boosting.

An example of a default vehicle is shown below

{ model = 'blista',        name = 'Blista',                        brand = 'Dinka',           price = 13000,   category = 'compacts',       type = 'automobile', shop = 'pdm' },

Here is the modified vehicle, at the end you can see we added the tier part

{ model = 'blista',        name = 'Blista',                        brand = 'Dinka',           price = 13000,   category = 'compacts',       type = 'automobile', shop = 'pdm', tier = 'D' },

Then, add the bottom of your vehicles.lua file you should see something like this:

for i=1, #Vehicles do
    QBShared.Vehicles[Vehicles[i].model] = {
        spawncode = Vehicles[i].model,
        name = Vehicles[i].name,
        brand = Vehicles[i].brand,
        model = Vehicles[i].model,
        price = Vehicles[i].price,
        category = Vehicles[i].categoryLabel:gsub("%s+", ""):lower(),
        categoryLabel = Vehicles[i].categoryLabel,
        hash = joaat(Vehicles[i].model),
        shop = Vehicles[i].shop,
    }
end

Change to:

for i=1, #Vehicles do
    QBShared.Vehicles[Vehicles[i].model] = {
        spawncode = Vehicles[i].model,
        name = Vehicles[i].name,
        brand = Vehicles[i].brand,
        model = Vehicles[i].model,
        price = Vehicles[i].price,
        category = Vehicles[i].categoryLabel:gsub("%s+", ""):lower(),
        categoryLabel = Vehicles[i].categoryLabel,
        hash = joaat(Vehicles[i].model),
        shop = Vehicles[i].shop,
        tier = Vehicles[i].tier,
    }
end

The line tier = Vehicles[i].tier, must be added.

Step 5 - Database

Execute the following code in your database

CREATE TABLE `car_boosting` (
  `id` int(11) NOT NULL,
  `citizenid` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `vehicle` varchar(255) NOT NULL,
  `value` double NOT NULL,
  `success` int(11) NOT NULL,
  `enemy_killed` int(11) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

ALTER TABLE `car_boosting`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `car_boosting`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
  
CREATE TABLE `car_boosting_messages` (
  `id` int(11) NOT NULL,
  `citizenid` varchar(255) NOT NULL,
  `message` varchar(255) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

ALTER TABLE `car_boosting_messages`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `car_boosting_messages`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE player_vehicles 
ADD COLUMN vinnumber VARCHAR(50) DEFAULT NULL,
ADD COLUMN vinscratch INT(2) DEFAULT 0;

Step 6 - dpemotes Setup

You need to make a slight modification to the dpemotes resource to make the player animations work correctly.

In the resource, open up the file Client/Emote.lua , and look for the function called EmoteCommandStart

Right below the function, after the end , add in the following:

exports('EmoteCommandStart', EmoteCommandStart)

It should now look like the following:

function EmoteCommandStart(source, args, raw)
    if #args > 0 then
    local name = string.lower(args[1])
    if name == "c" then
        if IsInAnimation then
            EmoteCancel()
        else
            EmoteChatMessage(Config.Languages[lang]['nocancel'])
        end
      return
    elseif name == "help" then
      EmotesOnCommand()
    return end

    if DP.Emotes[name] ~= nil then
      if OnEmotePlay(DP.Emotes[name]) then end return
    elseif DP.Dances[name] ~= nil then
      if OnEmotePlay(DP.Dances[name]) then end return
    elseif DP.PropEmotes[name] ~= nil then
      if OnEmotePlay(DP.PropEmotes[name]) then end return
    else
      EmoteChatMessage("'"..name.."' "..Config.Languages[lang]['notvalidemote'].."")
    end
  end
end
exports('EmoteCommandStart', EmoteCommandStart)

Next, you need to open up the fxmanifest.lua file for dpemotes. At the bottom of the file, add in the following line:

export 'EmoteCommandStart'

Step 7 - Configuration

The configuration file is setup with some locations already. Feel free to add more and tweak the rest to your likings.

Last updated