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