Skip to main content

License Manager

Dependencies

Optional

Installation

  1. Import sql file licensemanager.sql
  2. Put bcs_licensemanager inside your resources
  3. Ensure/start in your server.cfg
  4. Configure the config.lua to your liking
  5. Optionally if you want to use licenses as items you can take example from license_items.sql For QBCore users may want to add these examples in your shared/items.lua
    qb-core/shared/items.lua
    ['identification']               = {['name'] = 'identification',                ['label'] = 'ID Card',                  ['weight'] = 0,         ['type'] = 'item',      ['image'] = 'id_card.png',              ['unique'] = true,      ['useable'] = true,     ['shouldClose'] = false,   ['combinable'] = nil,   ['description'] = 'A card containing all your information to identify yourself'},
    ['weapon'] = {['name'] = 'weapon', ['label'] = 'Weapon License', ['weight'] = 0, ['type'] = 'item', ['image'] = 'weapon_license.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A card containing all your information to identify yourself'},
    ['dmv'] = {['name'] = 'dmv', ['label'] = 'Drivers License', ['weight'] = 0, ['type'] = 'item', ['image'] = 'driver_license.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A card containing all your information to identify yourself'},
    ['driver_car'] = {['name'] = 'driver_car', ['label'] = 'Car License', ['weight'] = 0, ['type'] = 'item', ['image'] = 'driver_license.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Permit to show you can drive a vehicle'},
    ['driver_truck'] = {['name'] = 'driver_truck', ['label'] = 'Truck License', ['weight'] = 0, ['type'] = 'item', ['image'] = 'driver_license.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Permit to show you can drive a vehicle'},
    ['driver_bike'] = {['name'] = 'driver_bike', ['label'] = 'Truck License', ['weight'] = 0, ['type'] = 'item', ['image'] = 'driver_license.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Permit to show you can drive a vehicle'},
  6. If you have esx_license still in your resources folder, remove them as it will autostart as dependencies. This script will replace esx_license.
  7. If you want to use Discord Screenshot as the card picture instead of using mugshot resource, copy and paste setr SCREENSHOT_WEBHOOK your_dsc_webhook to your server.cfg. Then change the your_dsc_webhook to your discord webhook.

Screenshot Upload Server

If you want to use the upload service to get high quality image you can choose one. Please see this to set it up.

For ox_inventory users

Further installation for ox_inventory here.

Converting from esx_license

Data removal

Enabling this will remove the old data from user_licenses table to the new licenses table. Make sure to make backup of user_licenses if you want to be safe.

If you want to convert the old data of user_licenses you can use Config.ConvertMode = true. You also need to rename es_extended to your database name in bcs_licensemanager/server/convert.lua

bcs_licensemanager/server/convert.lua
SELECT * FROM information_schema.tables WHERE table_schema = 'es_extended' AND table_name = 'old_licenses' LIMIT 1

This will convert the data once the user logs in. It will delete the data from user_licenses for that user and make a new one in licenses table. This ConvertMode will also rename the table of licenses to old_licenses and create a new table of licenses.

Adding images

You can add more images for licenses in the html/images folder. It is also images for background of license managers.

Adding more locations

You can add more locations for managing the license or for the license shop in config/manager.lua.

There are two types of manager locations, shop and job.

To create a shop manager use this template:

   shopname = { -- This is an example of a shop type
type = 'shop', -- type either shop or job this is for non-qtarget server
ped = "s_m_y_hwaycop_01", -- if you use ped
disableBuy = false, -- set to true if you want the shop to only be for renewing and retrieving lost license
coord = {
vector4(383.3286, -1612.733, 29.29193, 225.1938),
-- vector4(383.3286, -1612.733, 29.29193, 225.1938) -- you can use multiple locations
},
target = { -- if you are using qtarget and the type is shop
{
event = "LicenseManager:openLicenseShop",
icon = "fas fa-box-circle-check",
label = "License Request",
name = 'shopname',
}
}
},

To create a job manager use this template:

    managername = {
type = 'job',
job = {
['ambulance'] = 0,
},
ped = "s_m_m_paramedic_01",
background = 'lsfd',
coord = {
vector4(340.7231, -590.1428, 43.28407, 76.19474),
-- vector4(450.2244, -978.7199, 30.68951, 261.2998),
-- vector4(450.2244, -978.7199, 30.68951, 261.2998)
},
options = {
creation = true,
management = true,
history = true,
},
target = {
{
event = "LicenseManager:openManagerMenu",
icon = "fas fa-box-circle-check",
label = "Manage Licenses",
name = 'managername',
background = 'lsfd',
job = {
['ambulance'] = 0,
},
},
}
},

Adding Licenses

You can add your own licenses in the config/licenses.lua. This is the template for adding licenses

    licensename = {
id_length = 8, -- The ID length generated e.g. 51286293
label = "Car Driving License", -- Label can be anything
manager = 'dmv', -- must belong to one of Config.Manager list
job = 'police', -- the job that manages the license
validFor = 31, -- expiry date
price = 2500, -- The price of the license on creation
lostPrice = 1000 -- the price when retrieving lost license (item)
},

Adding Badges

You can add your own badge in the config/badges.lua Here is a template for it

    -- If you use an item, by default you need to add the item name as `lspd_badge`
{
department = "LSPD",
ped = 's_m_y_hwaycop_01',
coords = {
vec4(390.5062, -1006.0359, 29.6896, 174.7202)
},
color = '#3693ed',
permissions = {
viewManager = {
['police'] = 2
['sheriff'] = 3
},
creator = {
['sheriff'] = 3
['police'] = 2
},
edit = {
['police'] = 3,
},
delete = {
['police'] = 3
}
}
}

Badge Image

You can also add the badge logo image in the html/images for example in this case LPSDbadge.png If you want to add another department for example SSPD

  1. add the item as sspd_badge
  2. the image SSPDbadge.png

Badge Background

We have provided the template within the badge.psd file. This will be your background image for the badge, an example is already provided in the html/images folder called LSPDbackground.png.

The format of the image is [departmentname]background.png

Backwards Compability with esx_license

  • 'esx_license:removeLicense' (server event)
  • 'esx_license:getLicense', function(table) (client & server callback)
  • 'esx_license:getLicenses', function(table) (client & server callback)
  • 'esx_license:checkLicense', function(boolean) (client & server callback)
  • 'esx_license:getLicensesList', function(table) (client & server callback)

Troubleshooting

The mugshot/photo does not appear in the card?

Do follow step 7 for discord screenshot webhook. If you want to use mugshot instead please follow the guide in installing the mugshot. Make sure you are using the correct screenshot-basic from TasoOneAsia. Don't forget to create the Imgur API and paste the client ID to 'mugshot/client.js'.