Configuration
JustDMV offers highly customizable config
--Config.lua
Config = {}
Config.Framework = "AutoDetect" -- ( "AutoDetect", "ESX", "QBCore", "QBox" )
Config.Target = "AutoDetect" -- ( "AutoDetect", "ox_target", "qb-target", "qtarget", nil if you dont want to use Target System )
Config.VoiceId = "JBFqnCBsd6RMkjVDRZzb" -- Voice ID for JustTTS
Config.DmvSchool = {
Blip = {
Enable = true,
Sprite = 380,
Color = 3,
Scale = 0.8,
Name = "DMV School",
},
Npc = {
Model = "a_m_m_golfer_01",
Location = vector4(-630.0589, -2369.1113, 14.1015, 329.3597),
Talking = {
text = "Hello sir, do you want to enter driving school? Price is 1000 dollars.",
acceptText = "Yes sir, i want to enter.",
refuseText = "No thanks, i'm good.",
acceptResponse = "Great! Please enter room to listen to the rules.",
refuseResponse = "Alright, have a good day!",
notEnoughMoney = "This is not enough money for the driving school.",
}
},
canInteract = function()
if GetEntityHealth(PlayerPedId()) < 50 then
return false
end
end,
Cost = 1000,
}
-- config/lessons.lua
Config.Lessons = {
Instructor = {
Model = "a_m_m_golfer_01",
Location = vector4(-632.1389, -2360.8488, 14.1015, 155.5598),
},
Chair = {
Model = "prop_chair_04b",
Location = vector4(-633.61, -2364.17, 13.10, 149.93),
},
Phrases = {
"Good afternoon, I’m your instructor and I’m here to introduce you to the world of driving.",
"You don’t have to know everything right away—that’s why you’re here.",
"Making mistakes is normal; what matters is learning from them.",
"Drive calmly and think ahead, there’s no rush.",
"Always look around you, not just straight ahead.",
"If something isn’t clear, ask—there are no stupid questions.",
"It’s better to be safe than to try to look brave.",
"Everyone sat behind the wheel for the first time once.",
"Traffic signs and rules are there to help you, not to annoy you.",
"Relax, the car isn’t going anywhere—good driving is calm driving.",
"Lessons finished, please go to PC and take the test"
}
}
-- config/test.lua
Config.Test = {
PC= {
Model = "v_corp_desksetb",
Location = vector4(-634.9589, -2360.9048, 14.9043, 108.9376),
},
Questions = {
{
cameraCoords = vector4(870.19421386719,-126.4236907959,87.251358032227,-10.999973297119),
cameraRot = vector3(1.494103798904706,-12.911254882812,54.0),
question = "Which car has the right of way?",
cars = {
{
model = "blista",
coords = vector4(886.7493, -105.4489, 79.0248, 55.5199),
color = { r = 162, g = 5, b = 5},
direction = {
vector3(881.9662, -102.3846, 79.416),
vector3(877.8561, -99.7242, 79.4333),
vector3(874.4269, -97.4598, 79.4499),
vector3(870.9896, -95.5816, 79.4192),
vector3(866.6732, -93.1096, 79.4012),
vector3(862.6223, -90.3361, 79.4877),
vector3(858.3859, -87.7436, 79.8129),
vector3(853.3390, -84.3691, 80.3187),
vector3(848.9316, -81.5148, 80.5223),
vector3(841.5356, -76.3032, 80.5438),
vector3(837.5152, -72.4660, 80.5357)
}
},
{
model = "sultan",
coords = vector4(878.3390, -85.9666, 78.3407, 149.8424),
color = { r = 4, g = 120, b = 6},
direction = {
vector3(874.9879, -91.2141, 79.3783),
vector3(871.6854, -94.1510, 79.4013),
}
},
},
answers = {
{
text = "Red Car",
correct = true
},
{
text = "Green Car",
correct = false,
}
}
},
{
cameraCoords = vector4(1284.4377441406,-434.36309814453,72.422050476074,-11.498805999756),
cameraRot = vector3(1.707547198748206,-117.58353424072,100.0),
question = "Is this car parked properly?",
cars = {
{
model = "monster",
coords = vector4(1293.3511, -438.7050, 69.2143, 38.6569),
color = { r = 162, g = 5, b = 5},
direction = {
}
}
},
answers = {
{
text = "Yes",
correct = false
},
{
text = "No",
correct = true,
}
}
},
{
cameraCoords = vector4(-1065.8651123047,-1721.9268798828,9.5976505279541,-10.999917984009),
cameraRot = vector3(3.41509439749646,32.525497436523,100.0),
question = "Is this car going in right way?",
cars = {
{
model = "club",
coords = vector4(-1063.9697, -1708.0105, 3.8456, 176.8840),
color = { r = 0, g = 154, b = 251},
direction = {
vector3(-1065.2629, -1712.8986, 4.5513),
vector3(-1067.0416, -1714.6713, 4.5422),
vector3(-1068.9476, -1716.6444, 4.5587),
vector3(-1071.0006, -1718.6659, 4.5748),
vector3(-1073.1384, -1720.6279, 4.5956),
vector3(-1075.0726, -1722.4436, 4.6170)
}
}
},
answers = {
{
text = "Yes",
correct = false
},
{
text = "No",
correct = true,
}
}
},
{
cameraCoords = vector4(-458.68103027344,-617.78283691406,34.174339294434,-17.999965667725),
cameraRot = vector3(2.561320798122306,57.354591369629,100.0),
question = "Is this car parked properly?",
cars = {
{
model = "neon",
coords = vector4(-463.9676, -613.4668, 30.8252, 180.321),
color = { r = 174, g = 255, b = 0},
direction = {
}
}
},
answers = {
{
text = "Yes",
correct = true
},
{
text = "No",
correct = false,
}
}
},
{
cameraCoords = vector4(-2769.9055175781,23.44525718689,16.291578292847,1.0000579357147),
cameraRot = vector3(-1.494103798904706,-55.122146606445,100.0),
question = "What is the maximum allowed speed of this car?",
cars = {
{
model = "elegy2",
coords = vector4(-2756.9717, 24.6341, 14.6347, 60.1418),
color = { r = 255, g = 113, b = 5},
direction = {
vector3(-2762.3752, 27.5896, 14.5877),
vector3(-2768.8323, 30.9548, 14.5297),
vector3(-2775.3259, 34.1699, 14.4691),
vector3(-2782.3037, 37.4730, 14.4039),
vector3(-2788.9980, 40.6224, 14.3376),
vector3(-2795.7332, 43.6990, 14.2718)
}
}
},
answers = {
{
text = "130 KM/H",
correct = true
},
{
text = "250 KM/H",
correct = false,
}
}
},
},
Check = {
NPC = "a_m_m_golfer_01",
Location = vector4(-639.092346, -2370.783936, 13.703505, 262.8798),
Animation = true
}
}
-- config/polygon.lua
Config.PolygonTest = {
Starting = {
Ped = "a_m_m_golfer_01",
PedLocation = vector4(-610.8544, -2354.2637, 13.8280, 48.1160),
Vehicle = "blista",
VehLocation = vector4(-610.7839, -2355.8196, 13.6530, 319.4576)
},
Polygons = {
{
startingCoords = vector4(-586.1743, -2323.7039, 13.6499, 48.8282),
lastCoords = vector4(-630.5002, -2317.0012, 13.6506, 137.8271),
instructorText = "Please, follow your track carefully and go to the end point.",
zone = {
vector2(-586.2219, -2327.2974),
vector2(-611.0168, -2305.7605),
vector2(-613.3068, -2304.8308),
vector2(-616.5734, -2305.6824),
vector2(-630.5674, -2321.5540),
vector2(-634.7798, -2317.7556),
vector2(-621.2513, -2302.3938),
vector2(-618.5351, -2300.3398),
vector2(-615.3296, -2299.5205),
vector2(-610.8510, -2299.9355),
vector2(-608.3294, -2301.1577),
vector2(-582.8751, -2323.5056)
}
},
{
startingCoords = vector4(-587.5494, -2336.1235, 13.6503, 50.3145),
lastCoords = vector4(-605.9598, -2314.6118, 13.6497, 137.6902),
instructorText = "Please, go and park backward into the designated parking spot.",
zone = {
vector2(-587.1721, -2339.1880),
vector2(-607.6761, -2321.2473),
vector2(-608.7347, -2320.7166),
vector2(-609.5745, -2320.8665),
vector2(-610.2227, -2321.6482),
vector2(-612.4139, -2324.2185),
vector2(-614.7451, -2322.0222),
vector2(-605.7334, -2311.8433),
vector2(-603.4302, -2313.9255),
vector2(-606.0254, -2316.9026),
vector2(-584.6275, -2336.0100)
}
},
{
startingCoords = vector4(-587.5729, -2335.9783, 13.6505, 49.3216),
lastCoords = vector4(-602.0579, -2318.2810, 13.6496, 48.8580),
instructorText = "Please go and park paralel into the designated parking spot.",
zone = {
vector2(-587.1721, -2339.1880),
vector2(-613.0125, -2316.8315),
vector2(-610.1420, -2313.5588),
vector2(-606.2495, -2317.1692),
vector2(-603.6151, -2314.1265),
vector2(-598.1202, -2319.1477),
vector2(-600.4988, -2321.8147),
vector2(-584.6275, -2336.0100)
}
}
}
}
-- config/citydrive.lua
Config.CityDrive = {
MaxWarnings = 3, -- for speeding
Route = {
{
Coords = vector4(-649.2213, -2334.9985, 13.6909, 138.9303),
Speedlimit = 30,
Action = function()
PedTalkingInCar("Please, drive within the speed limit which is 30 and obey all traffic rules.")
end
},
{
Coords = vector4(-758.4528, -2474.6467, 13.9050, 62.0101),
Speedlimit = 30,
Action = function()
PedTalkingInCar("Please, drive within the speed limit which is 50 and take care of traffic lights.")
end
},
{
Coords = vector4(-506.5162, -2149.1868, 8.8224, 321.5879),
Speedlimit = 50,
Action = function()
PedTalkingInCar("Let other traffic participants pass by and join the right lane.")
end
},
{
Coords = vector4(-210.5816, -2198.8657, 10.1263, 287.4416),
Speedlimit = 50,
Action = function()
end
},
{
Coords = vector4(-75.9387, -1964.4886, 18.1112, 71.1807),
Speedlimit = 50,
Action = function()
end
},
{
Coords = vector4(-239.9803, -1844.7319, 28.9640, 22.2216),
Speedlimit = 50,
Action = function()
PedTalkingInCar("Wait for the traffic light to turn green and enter the middle lane.")
TrafficLightLogic("prop_traffic_03a", vector3(-237.575745, -1839.359009, 28.335609), vector3(-239.9803, -1844.7319, 28.9640))
end
},
{
Coords = vector4(-361.5873, -1821.5060, 22.5085, 98.7868),
Speedlimit = 50,
Action = function()
PedTalkingInCar("Wait for the traffic light to turn green and continue straight.")
TrafficLightLogic("prop_traffic_01d", vector3(-416.961426, -1832.472290, 19.504337), vector3(-361.5873, -1821.5060, 22.5085))
end
},
{
Coords = vector4(-829.5609, -2223.6921, 17.2111, 130.9887),
Speedlimit = 50,
Action = function()
end
},
{
Coords = vector4(-883.1654, -2672.8044, 19.9113, 331.8872),
Speedlimit = 50,
Action = function()
end
},
{
Coords = vector4(-797.7021, -2526.1621, 13.5857, 336.3343),
Speedlimit = 50,
Action = function()
end
},
{
Coords = vector4(-777.1338, -2482.8132, 13.9590, 330.0798),
Speedlimit = 50,
Action = function()
PedTalkingInCar("Turn right and enter the parking lot of the driving school, the limit is 30 again.")
end
},
{
Coords = vector4(-611.0598, -2355.9001, 13.6502, 139.7427),
Speedlimit = 30,
Action = function()
FinishCityDrive()
end
}
}
}
Last updated