- There are 15 licences you can give to players with this job.
- if there is a update read the update.md, maby you need to change something.
- To bill a player for a licence use
/bill [id] [amount]
- you can also add some objects on the road as drive test obstacles, so the student can show his/her driving skills ;)
- when spawning a vehicle, you must go insite this vehicle drivers seat and use
/givekeys [id]
- with this you give the vehicle keys to the student so he/she can use the vehicle.
- When you give the keys, you get into the co-driver's seat and take the exam.
- When a student passes the exam, use
/give-licence [id] [N/A/AM/B/BE/C/CE/D/DE/P/T/H]
Ex:/give-licence 1 BE
- The fist licence you must always give the licence N this is the theory.
- The
N licence
this is only when a player does not have the N licence so you know you this player is a starter) - To take a the licence from a player use /take-licence [id] (this player is no longer licensed) Ex:
/take-licence 1
- The police can use this commands
/give-licence 1 N
and/take-licence 1
- Edit
qb-smallresources/config.lua
and remove or set true to false for vehicles you don't want to be blacklisted - if you don't do this, the vehicle will spawn, but will also removeed after spawning, or it does not spawn at all.
- So don't forget this part if you use the airplane or helikopter license.
- To use one of this vehicles in that list, than just set it to false restart the server, and your done.
- Create a folder
[mh]
inresources
. - Put
mh-drivingteacherjob
in toresources/[mh]
. - Load this script after target and polyzone.
- in sever.sfg after
[standalone]
add ->ensure [mh]
- After you done with the instructions below, you can restart the server.
PlayerData.metadata['licences'] = PlayerData.metadata['licences'] or {
['N'] = false, -- theory
['AM'] = false, -- scooter
['A'] = false, -- motorcycle
['B'] = false, -- car
['BE'] = false, -- car
['C'] = false, -- truck
['CE'] = false, -- truck + trailer
['D'] = false, -- bus
['DE'] = false, -- bus + trailer
['P'] = false, -- plane or heli pilot
['T'] = false, -- boat
['H'] = false, -- Helikopter
['R'] = false, -- race
['AMB'] = false, -- Ambulance
['POL'] = false, -- Police
['business'] = false,
['weapon'] = false
}
- why? cause if people join the server and create a new character,
- they get a driver_license, and we don't want that.
QBShared.StarterItems = {
['phone'] = { amount = 1, item = 'phone' },
['id_card'] = { amount = 1, item = 'id_card' },
--['driver_license'] = { amount = 1, item = 'driver_license' },
}
- This is the bossmenu location
['drivingteacher'] = {
vector3(215.24, -1401.76, 30.58) -- (Bossmenu)
},
- This is the bossmenu zone
['drivingteacher'] = {
{ coords = vector3(215.24, -1401.76, 30.58), length = 1.15, width = 2.6, heading = 307.07, minZ = 43.59, maxZ = 44.99 },
},
['drivingteacher'] = {
name = 'drivingteacher',
label = 'Driving school',
type = 'driveschool',
defaultDuty = false,
offDutyPay = false,
grades = {
['0'] = {
name = 'Teorie instructeur',
payment = 250
},
['1'] = {
name = 'Drive instructeur',
payment = 255
},
['2'] = {
name = 'Fly instructeur',
payment = 500
},
['3'] = {
name = 'Examen instructeur',
payment = 500
},
['4'] = {
name = 'Boss',
isboss = true,
payment = 1000
},
},
},
["drivingteacher"] = {
{
id = 'playerlicinceoptions2',
title = 'Licince Options',
icon = 'plus',
items = {
{
id = 'givelicince1',
title = 'Give',
icon = 'plus',
type = 'client',
event = 'mh-drivingteacherjob:client:giveLicinceMenu',
shouldClose = true
},
}
},
{
id = 'instructorobjects',
title = 'Objects',
icon = 'road',
items = {
{
id = 'deleteobject1',
title = 'Remove Object',
icon = 'trash',
type = 'client',
event = 'police:client:deleteObject',
shouldClose = false
}, {
id = 'spawnhek1',
title = 'Gate',
icon = 'torii-gate',
type = 'client',
event = 'police:client:spawnBarrier',
shouldClose = false
}, {
id = 'spawnpion1',
title = 'Cone',
icon = 'triangle-exclamation',
type = 'client',
event = 'police:client:spawnCone',
shouldClose = false
}, {
id = 'spawntent1',
title = 'Tent',
icon = 'campground',
type = 'client',
event = 'police:client:spawnTent',
shouldClose = false
}, {
id = 'spawnverlichting1',
title = 'lighting',
icon = 'lightbulb',
type = 'client',
event = 'police:client:spawnLight',
shouldClose = false
},
}
},
},
- Change the Command bill with this code below
QBCore.Commands.Add('bill', 'Bill A Player', {{name = 'id', help = 'Player ID'}, {name = 'amount', help = 'Fine Amount'}}, false, function(source, args)
local biller = QBCore.Functions.GetPlayer(source)
local billed = QBCore.Functions.GetPlayer(tonumber(args[1]))
local amount = tonumber(args[2])
if biller.PlayerData.job.name == "police" or biller.PlayerData.job.name == 'ambulance' or biller.PlayerData.job.name == 'mechanic' or biller.PlayerData.job.name == 'drivingteacher' then
if billed ~= nil then
if biller.PlayerData.citizenid ~= billed.PlayerData.citizenid then
if amount and amount > 0 then
MySQL.insert('INSERT INTO phone_invoices (citizenid, amount, society, sender, sendercitizenid) VALUES (?, ?, ?, ?, ?)', {billed.PlayerData.citizenid, amount, biller.PlayerData.job.name, biller.PlayerData.charinfo.firstname, biller.PlayerData.citizenid})
TriggerClientEvent('qb-phone:RefreshPhone', billed.PlayerData.source)
TriggerClientEvent('QBCore:Notify', source, 'Invoice Successfully Sent', 'success')
TriggerClientEvent('QBCore:Notify', billed.PlayerData.source, 'New Invoice Received')
else
TriggerClientEvent('QBCore:Notify', source, 'Must Be A Valid Amount Above 0', 'error')
end
else
TriggerClientEvent('QBCore:Notify', source, 'You Cannot Bill Yourself', 'error')
end
else
TriggerClientEvent('QBCore:Notify', source, 'Player Not Online', 'error')
end
else
TriggerClientEvent('QBCore:Notify', source, 'No Access', 'error')
end
end)
- You can add
or biller.PlayerData.job.name == 'drivingteacher'
- to the job check if statement and add this to the end before
then
- example:
if biller.PlayerData.job.name == "police" or biller.PlayerData.job.name == 'ambulance' or biller.PlayerData.job.name == 'mechanic' or biller.PlayerData.job.name == 'drivingteacher' then
- to call a driving teacher (if this player is online)
- you can change the colers in rgb()
var drivingteacher = [];
if (lawyer.typejob == "drivingteacher") {
drivingteacher.push(lawyer);
}
$(".lawyers-list").append('<br><h1 style="font-size:1.641025641025641vh; padding:1.0256410256410255vh; color:#fff; margin-top:0; width:100%; display:block; background-color: rgb(155, 15, 120);">Driving Teacher (' + drivingteacher.length + ')</h1>');
if (drivingteacher.length > 0) {
$.each(drivingteacher, function(i, lawyer10) {
var element = '<div class="lawyer-list" id="lawyerid10-' + i + '"> <div class="lawyer-list-firstletter" style="background-color: #0d1218c0;">' + (lawyer10.name).charAt(0).toUpperCase() + '</div> <div class="lawyer-list-fullname">' + lawyer10.name + '</div> <div class="lawyer-list-call"><i class="fas fa-phone"></i></div> </div>'
$(".lawyers-list").append(element);
$("#lawyerid1-" + i).data('LawyerData', lawyer10);
});
} else {
var element = '<div class="lawyer-list"><div class="no-lawyers">There are no driving teachers online.</div></div>'
$(".lawyers-list").append(element);
}
$(".lawyers-list").append('<br><h1 style="font-size:1.641025641025641vh; padding:1.0256410256410255vh; color:#fff; margin-top:0; width:100%; display:block; background-color: rgb(155, 15, 120);">Driving Teacher (' + drivingteacher.length + ')</h1>');
var element = '<div class="lawyer-list"><div class="no-lawyers">There are no driving teachers.</div></div>'
$(".lawyers-list").append(element);