From 7226aafab5ca88f838df046c32ef3580dc8bf5a1 Mon Sep 17 00:00:00 2001
From: bitpredator <67551273+bitpredator@users.noreply.github.com>
Date: Wed, 1 Nov 2023 10:38:45 +0100
Subject: [PATCH 1/2] chore: replace esx_drivingschooljob with esx_dmvschool
---
.github/CHANGELOG.md | 3 +-
.../LICENSE | 14 +-
.../[esx_addons]/esx_dmvschool/README.md | 15 +
.../esx_dmvschool/client/main.lua | 364 +++++++++++
.../[esx_addons]/esx_dmvschool/config.lua | 185 ++++++
.../esx_dmvschool/esx_dmvschool.sql | 6 +
.../fxmanifest.lua | 22 +-
.../html/debounce.min.js | 0
.../html/dmv.png | Bin
.../esx_dmvschool/html/questions.js | 91 +++
.../esx_dmvschool/html/questions_de.js | 91 +++
.../esx_dmvschool/html/questions_en.js | 91 +++
.../esx_dmvschool/html/questions_es.js | 91 +++
.../html/questions_fi.js | 0
.../esx_dmvschool/html/questions_fr.js | 91 +++
.../esx_dmvschool/html/questions_it.js | 91 +++
.../esx_dmvschool/html/questions_nl.js | 91 +++
.../html/questions_pl.js | 0
.../esx_dmvschool/html/questions_sr.js | 92 +++
.../html/scripts.js | 12 +-
.../html/styles.css | 0
.../html/ui.html | 6 +-
.../esx_dmvschool/html/ui_de.html | 121 ++++
.../html/ui_en.html} | 49 +-
.../esx_dmvschool/html/ui_es.html | 119 ++++
.../html/ui_fi.html | 0
.../html/ui_fr.html | 38 +-
.../esx_dmvschool/html/ui_hu.html | 120 ++++
.../html/ui_it.html | 33 +-
.../html/ui_pl.html | 0
.../esx_dmvschool/html/ui_sr.html | 119 ++++
.../[esx_addons]/esx_dmvschool/locales/de.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/en.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/es.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/fi.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/fr.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/hu.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/it.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/nl.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/pl.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/sr.lua | 29 +
.../[esx_addons]/esx_dmvschool/locales/sv.lua | 29 +
.../esx_dmvschool/locales/zh-cn.lua | 29 +
.../localization/de_esx_dmvschool.sql | 6 +
.../localization/en_esx_dmvschool.sql | 6 +
.../localization/es_esx_dmvschool.sql | 6 +
.../localization/fi_esx_dmvschool.sql | 6 +
.../localization/fr_esx_dmvschool.sql | 6 +
.../localization/hu_esx_dmvschool.sql | 6 +
.../localization/it_esx_dmvschool.sql | 6 +
.../localization/nl_esx_dmvschool.sql | 6 +
.../localization/sr_esx_dmvschool.sql | 6 +
.../localization/sv_esx_dmvschool.sql | 6 +
.../esx_drivingschooljob/README.md | 15 -
.../esx_drivingschooljob/client/main.lua | 579 ------------------
.../esx_drivingschooljob/config.lua | 53 --
.../esx_drivingschooljob.sql | 19 -
.../esx_drivingschooljob/html/questions.js | 91 ---
.../esx_drivingschooljob/html/questions_fr.js | 91 ---
.../esx_drivingschooljob/html/questions_it.js | 91 ---
.../esx_drivingschooljob/html/questions_sv.js | 91 ---
.../esx_drivingschooljob/locales/bg.lua | 35 --
.../esx_drivingschooljob/locales/en.lua | 35 --
.../esx_drivingschooljob/locales/it.lua | 35 --
.../localization/esx_drivingschooljobBG.sql | 19 -
.../localization/esx_drivingschooljobIT.sql | 19 -
.../esx_drivingschooljob/server/main.lua | 35 --
67 files changed, 2278 insertions(+), 1293 deletions(-)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/LICENSE (98%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/README.md
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/client/main.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/config.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/fxmanifest.lua (59%)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/debounce.min.js (100%)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/dmv.png (100%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_de.js
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_en.js
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_es.js
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/questions_fi.js (100%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fr.js
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/questions_pl.js (100%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sr.js
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/scripts.js (94%)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/styles.css (100%)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/ui.html (93%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_de.html
rename server-data/resources/[esx_addons]/{esx_drivingschooljob/html/ui_sv.html => esx_dmvschool/html/ui_en.html} (63%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_es.html
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/ui_fi.html (100%)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/ui_fr.html (68%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_hu.html
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/ui_it.html (76%)
rename server-data/resources/[esx_addons]/{esx_drivingschooljob => esx_dmvschool}/html/ui_pl.html (100%)
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_sr.html
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/de.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/en.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/es.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/fi.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/fr.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/hu.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/it.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/nl.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/pl.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/sr.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/sv.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/zh-cn.lua
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/de_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/en_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/es_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/fi_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/fr_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/hu_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/it_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/nl_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/sr_esx_dmvschool.sql
create mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/sv_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/README.md
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/client/main.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/config.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/esx_drivingschooljob.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions.js
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_fr.js
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_it.js
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_sv.js
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/locales/bg.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/locales/en.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/locales/it.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/localization/esx_drivingschooljobBG.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/localization/esx_drivingschooljobIT.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_drivingschooljob/server/main.lua
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index f21bdad1e..3d7cce08b 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -30,4 +30,5 @@
[voice-ui/pnpm-lock.yaml]: chore(deps-dev): bump follow-redirects in /voice-ui
[voice-ui/pnpm-lock.yaml]: chore(deps-dev): bump browserify-sign from 4.2.1 to 4.2.2 in /voice-ui
7. [npwd + es_extended]: chore: removed support for npwd_crypto @bitpredator
-8. [ox_lib]: chore: ox_lib update to version '3.11.0' @bitpredator
\ No newline at end of file
+8. [ox_lib]: chore: ox_lib update to version '3.11.0' @bitpredator
+9. [esx_addons]: chore: replace esx_drivingschooljob with esx_dmvschool @bitpredator
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/LICENSE b/server-data/resources/[esx_addons]/esx_dmvschool/LICENSE
similarity index 98%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/LICENSE
rename to server-data/resources/[esx_addons]/esx_dmvschool/LICENSE
index f288702d2..15cc6189a 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/LICENSE
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/LICENSE
@@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
-
- Copyright (C)
+ esx_dmvschool
+ Copyright (C) 2015-2023 Jérémie N'gadi
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see .
+ along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
- Copyright (C)
+ esx_dmvschool Copyright (C) 2015-2023 Jérémie N'gadi
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-.
+.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-.
+.
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/README.md b/server-data/resources/[esx_addons]/esx_dmvschool/README.md
new file mode 100644
index 000000000..36574d1ea
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/README.md
@@ -0,0 +1,15 @@
+
[ESX] DMV School
Discord - Documentation
+
+Tired of waiting for your local DMV to be free so you can get your driving licence? well today is your day! This amazingly Realistic DMV schools allows you to sit a tough theory test and a Rage fueled , high-stakes Practial Driving Test for Cars, motocycles and Trucks, all from the comfort of FiveM!
+
+# Legal
+
+esx_dmvschool - realistic DMV school for ESX
+
+Copyright (C) 2015-2023 Jérémie N'gadi
+
+This program Is free software: you can redistribute it And/Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option) any later version.
+
+This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License For more details.
+
+You should have received a copy Of the GNU General Public License along with this program. If Not, see .
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/client/main.lua b/server-data/resources/[esx_addons]/esx_dmvschool/client/main.lua
new file mode 100644
index 000000000..5945cf979
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/client/main.lua
@@ -0,0 +1,364 @@
+local CurrentAction = nil
+local CurrentActionMsg = nil
+local CurrentActionData = nil
+local Licenses = {}
+local CurrentTest = nil
+local CurrentTestType = nil
+local CurrentVehicle = nil
+local CurrentCheckPoint, DriveErrors = 0, 0
+local LastCheckPoint = -1
+local CurrentBlip = nil
+local CurrentZoneType = nil
+local IsAboveSpeedLimit = false
+local LastVehicleHealth = nil
+
+function DrawMissionText(msg, time)
+ ClearPrints()
+ BeginTextCommandPrint('STRING')
+ AddTextComponentSubstringPlayerName(msg)
+ EndTextCommandPrint(time, true)
+end
+
+function StartTheoryTest()
+ CurrentTest = 'theory'
+
+ SendNUIMessage({
+ openQuestion = true
+ })
+
+ ESX.SetTimeout(200, function()
+ SetNuiFocus(true, true)
+ end)
+end
+
+function StopTheoryTest(success)
+ CurrentTest = nil
+
+ SendNUIMessage({
+ openQuestion = false
+ })
+
+ SetNuiFocus(false)
+
+ if success then
+ TriggerServerEvent('esx_dmvschool:addLicense', 'dmv')
+ ESX.ShowNotification(_U('passed_test'))
+ else
+ ESX.ShowNotification(_U('failed_test'))
+ end
+end
+
+function StartDriveTest(type)
+ ESX.Game.SpawnVehicle(Config.VehicleModels[type], vector3(Config.Zones.VehicleSpawnPoint.Pos.x, Config.Zones.VehicleSpawnPoint.Pos.y, Config.Zones.VehicleSpawnPoint.Pos.z), Config.Zones.VehicleSpawnPoint.Pos.h, function(vehicle)
+ CurrentTest = 'drive'
+ CurrentTestType = type
+ CurrentCheckPoint = 0
+ LastCheckPoint = -1
+ CurrentZoneType = 'residence'
+ DriveErrors = 0
+ IsAboveSpeedLimit = false
+ CurrentVehicle = vehicle
+ LastVehicleHealth = GetEntityHealth(vehicle)
+
+ local playerPed = PlayerPedId()
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+ SetVehicleFuelLevel(vehicle, 100.0)
+ DecorSetFloat(vehicle, "_FUEL_LEVEL", GetVehicleFuelLevel(vehicle))
+ end)
+end
+
+function StopDriveTest(success)
+ if success then
+ TriggerServerEvent('esx_dmvschool:addLicense', CurrentTestType)
+ ESX.ShowNotification(_U('passed_test'))
+ else
+ ESX.ShowNotification(_U('failed_test'))
+ end
+
+ CurrentTest = nil
+ CurrentTestType = nil
+end
+
+function SetCurrentZoneType(type)
+CurrentZoneType = type
+end
+
+function OpenDMVSchoolMenu()
+ local ownedLicenses = {}
+
+ for i=1, #Licenses, 1 do
+ ownedLicenses[Licenses[i].type] = true
+ end
+
+ local elements = {
+ {unselectable = true, icon = "fas fa-car", title = _U("driving_school")}
+ }
+
+ if not ownedLicenses['dmv'] then
+ elements[#elements+1] = {
+ icon = "fas fa-car",
+ title = (('%s: %s'):format(_U('theory_test'), _U('school_item', ESX.Math.GroupDigits(Config.Prices['dmv'])))),
+ value = "theory_test"
+ }
+ end
+
+ if ownedLicenses['dmv'] then
+ if not ownedLicenses['drive'] then
+ elements[#elements+1] = {
+ icon = "fas fa-car",
+ title = (('%s: %s'):format(_U('road_test_car'), _U('school_item', ESX.Math.GroupDigits(Config.Prices['drive'])))),
+ value = "drive_test",
+ type = "drive"
+ }
+ end
+
+ if not ownedLicenses['drive_bike'] then
+ elements[#elements+1] = {
+ icon = "fas fa-car",
+ title = (('%s: %s'):format(_U('road_test_bike'), _U('school_item', ESX.Math.GroupDigits(Config.Prices['drive_bike'])))),
+ value = "drive_test",
+ type = "drive_bike"
+ }
+ end
+
+ if not ownedLicenses['drive_truck'] then
+ elements[#elements+1] = {
+ icon = "fas fa-car",
+ title = (('%s: %s'):format(_U('road_test_truck'), _U('school_item', ESX.Math.GroupDigits(Config.Prices['drive_truck'])))),
+ value = "drive_test",
+ type = "drive_truck"
+ }
+ end
+ end
+
+ ESX.OpenContext("right", elements, function(menu,element)
+ if element.value == "theory_test" then
+ ESX.TriggerServerCallback('esx_dmvschool:canYouPay', function(haveMoney)
+ if haveMoney then
+ ESX.CloseContext()
+ StartTheoryTest()
+ else
+ ESX.ShowNotification(_U('not_enough_money'))
+ end
+ end, 'dmv')
+ elseif element.value == "drive_test" then
+ ESX.TriggerServerCallback('esx_dmvschool:canYouPay', function(haveMoney)
+ if haveMoney then
+ ESX.CloseContext()
+ StartDriveTest(element.type)
+ else
+ ESX.ShowNotification(_U('not_enough_money'))
+ end
+ end, element.type)
+ end
+ end, function(menu)
+ CurrentAction = 'dmvschool_menu'
+ CurrentActionMsg = _U('press_open_menu')
+ CurrentActionData = {}
+ end)
+end
+
+RegisterNUICallback('question', function(data, cb)
+ SendNUIMessage({
+ openSection = 'question'
+ })
+ cb()
+end)
+
+RegisterNUICallback('close', function(data, cb)
+ StopTheoryTest(true)
+ cb()
+end)
+
+RegisterNUICallback('kick', function(data, cb)
+ StopTheoryTest(false)
+ cb()
+end)
+
+AddEventHandler('esx_dmvschool:hasEnteredMarker', function(zone)
+ if zone == 'DMVSchool' then
+ CurrentAction = 'dmvschool_menu'
+ CurrentActionMsg = _U('press_open_menu')
+ CurrentActionData = {}
+ end
+end)
+
+AddEventHandler('esx_dmvschool:hasExitedMarker', function(zone)
+ CurrentAction = nil
+ ESX.CloseContext()
+end)
+
+RegisterNetEvent('esx_dmvschool:loadLicenses')
+AddEventHandler('esx_dmvschool:loadLicenses', function(licenses)
+ Licenses = licenses
+end)
+
+-- Create Blips
+CreateThread(function()
+ local blip = AddBlipForCoord(Config.Zones.DMVSchool.Pos.x, Config.Zones.DMVSchool.Pos.y, Config.Zones.DMVSchool.Pos.z)
+
+ SetBlipSprite (blip, 408)
+ SetBlipDisplay(blip, 4)
+ SetBlipScale (blip, 1.2)
+ SetBlipAsShortRange(blip, true)
+
+ BeginTextCommandSetBlipName("STRING")
+ AddTextComponentSubstringPlayerName(_U('driving_school_blip'))
+ EndTextCommandSetBlipName(blip)
+end)
+
+-- Display markers
+CreateThread(function()
+ while true do
+ local sleep = 1500
+ local playerPed = PlayerPedId()
+ local coords = GetEntityCoords(playerPed)
+
+ for k,v in pairs(Config.Zones) do
+ local Pos = vector3(v.Pos.x, v.Pos.y, v.Pos.z)
+ if(v.Type ~= -1 and #(coords - Pos) < Config.DrawDistance) then
+ sleep = 0
+ DrawMarker(v.Type, v.Pos.x, v.Pos.y, v.Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, v.Size.x, v.Size.y, v.Size.z, v.Color.r, v.Color.g, v.Color.b, 100, false, true, 2, false, false, false, false)
+ end
+ end
+
+ if CurrentTest == 'theory' then
+
+ sleep = 0
+ DisableControlAction(0, 1, true) -- LookLeftRight
+ DisableControlAction(0, 2, true) -- LookUpDown
+ DisablePlayerFiring(playerPed, true) -- Disable weapon firing
+ DisableControlAction(0, 142, true) -- MeleeAttackAlternate
+ DisableControlAction(0, 106, true) -- VehicleMouseControlOverride
+ end
+
+ if CurrentTest == 'drive' then
+ sleep = 0
+ local nextCheckPoint = CurrentCheckPoint + 1
+
+ if Config.CheckPoints[nextCheckPoint] == nil then
+ if DoesBlipExist(CurrentBlip) then
+ RemoveBlip(CurrentBlip)
+ end
+
+ CurrentTest = nil
+
+ ESX.ShowNotification(_U('driving_test_complete'))
+
+ if DriveErrors < Config.MaxErrors then
+ StopDriveTest(true)
+ else
+ StopDriveTest(false)
+ end
+ else
+ if CurrentCheckPoint ~= LastCheckPoint then
+ if DoesBlipExist(CurrentBlip) then
+ RemoveBlip(CurrentBlip)
+ end
+
+ CurrentBlip = AddBlipForCoord(Config.CheckPoints[nextCheckPoint].Pos.x, Config.CheckPoints[nextCheckPoint].Pos.y, Config.CheckPoints[nextCheckPoint].Pos.z)
+ SetBlipRoute(CurrentBlip, 1)
+
+ LastCheckPoint = CurrentCheckPoint
+ end
+
+ local Pos = vector3(Config.CheckPoints[nextCheckPoint].Pos.x,Config.CheckPoints[nextCheckPoint].Pos.y,Config.CheckPoints[nextCheckPoint].Pos.z)
+ local distance = #(coords - Pos)
+
+ if distance <= Config.DrawDistance then
+ DrawMarker(1, Config.CheckPoints[nextCheckPoint].Pos.x, Config.CheckPoints[nextCheckPoint].Pos.y, Config.CheckPoints[nextCheckPoint].Pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 1.5, 1.5, 1.5, 102, 204, 102, 100, false, true, 2, false, false, false, false)
+ end
+
+ if distance <= 3.0 then
+ Config.CheckPoints[nextCheckPoint].Action(playerPed, CurrentVehicle, SetCurrentZoneType)
+ CurrentCheckPoint = CurrentCheckPoint + 1
+ end
+ end
+ end
+
+ if CurrentAction then
+ sleep = 0
+ ESX.ShowHelpNotification(CurrentActionMsg)
+
+ if (IsControlJustReleased(0, 38)) and (CurrentAction == 'dmvschool_menu') then
+ OpenDMVSchoolMenu()
+ CurrentAction = nil
+ end
+ end
+
+ local isInMarker = false
+ local currentZone = nil
+
+ for k,v in pairs(Config.Zones) do
+ local Pos = vector3(v.Pos.x, v.Pos.y, v.Pos.z)
+ if(#(coords - Pos) < v.Size.x) then
+ sleep = 0
+ isInMarker = true
+ currentZone = k
+ end
+ end
+
+ if (isInMarker and not HasAlreadyEnteredMarker) or (isInMarker and LastZone ~= currentZone) then
+ HasAlreadyEnteredMarker = true
+ LastZone = currentZone
+ TriggerEvent('esx_dmvschool:hasEnteredMarker', currentZone)
+ end
+
+ if not isInMarker and HasAlreadyEnteredMarker then
+ HasAlreadyEnteredMarker = false
+ TriggerEvent('esx_dmvschool:hasExitedMarker', LastZone)
+ end
+ Wait(sleep)
+ end
+end)
+
+-- Speed / Damage control
+CreateThread(function()
+ while true do
+ local sleep = 1500
+
+ if CurrentTest == 'drive' then
+ sleep = 0
+ local playerPed = PlayerPedId()
+
+ if IsPedInAnyVehicle(playerPed, false) then
+
+ local vehicle = GetVehiclePedIsIn(playerPed, false)
+ local speed = GetEntitySpeed(vehicle) * Config.SpeedMultiplier
+ local tooMuchSpeed = false
+
+ for k,v in pairs(Config.SpeedLimits) do
+ if CurrentZoneType == k and speed > v then
+ tooMuchSpeed = true
+
+ if not IsAboveSpeedLimit then
+ DriveErrors = DriveErrors + 1
+ IsAboveSpeedLimit = true
+
+ ESX.ShowNotification(_U('driving_too_fast', v))
+ ESX.ShowNotification(_U('errors', DriveErrors, Config.MaxErrors))
+ end
+ end
+ end
+
+ if not tooMuchSpeed then
+ IsAboveSpeedLimit = false
+ end
+
+ local health = GetEntityHealth(vehicle)
+ if health < LastVehicleHealth then
+
+ DriveErrors = DriveErrors + 1
+
+ ESX.ShowNotification(_U('you_damaged_veh'))
+ ESX.ShowNotification(_U('errors', DriveErrors, Config.MaxErrors))
+
+ -- avoid stacking faults
+ LastVehicleHealth = health
+ Wait(1500)
+ end
+ end
+ end
+ Wait(sleep)
+ end
+end)
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/config.lua b/server-data/resources/[esx_addons]/esx_dmvschool/config.lua
new file mode 100644
index 000000000..c7e3aca69
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/config.lua
@@ -0,0 +1,185 @@
+Config = {}
+Config.DrawDistance = 10.0
+Config.MaxErrors = 5
+Config.SpeedMultiplier = 3.6
+Config.Locale = 'en'
+
+Config.Prices = {
+ dmv = 500,
+ drive = 2500,
+ drive_bike = 3000,
+ drive_truck = 5000
+}
+
+Config.VehicleModels = {
+ drive = 'blista',
+ drive_bike = 'sanchez',
+ drive_truck = 'mule3'
+}
+
+Config.SpeedLimits = {
+ residence = 50,
+ town = 80,
+ freeway = 120
+}
+
+Config.Zones = {
+
+ DMVSchool = {
+ Pos = {x = 239.471, y = -1380.960, z = 32.741},
+ Size = {x = 1.5, y = 1.5, z = 1.0},
+ Color = {r = 204, g = 204, b = 0},
+ Type = 1
+ },
+
+ VehicleSpawnPoint = {
+ Pos = {x = 249.409, y = -1407.230, z = 30.4094, h = 317.0},
+ Size = {x = 1.5, y = 1.5, z = 1.0},
+ Color = {r = 204, g = 204, b = 0},
+ Type = -1
+ }
+
+}
+
+Config.CheckPoints = {
+
+ {
+ Pos = {x = 255.139, y = -1400.731, z = 29.537},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('next_point_speed', Config.SpeedLimits['residence']), 5000)
+ end
+ },
+
+ {
+ Pos = {x = 271.874, y = -1370.574, z = 30.932},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = 234.907, y = -1345.385, z = 29.542},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ CreateThread(function()
+ DrawMissionText(_U('stop_for_ped'), 5000)
+ PlaySound(-1, 'RACE_PLACED', 'HUD_AWARDS', false, 0, true)
+ FreezeEntityPosition(vehicle, true)
+ Wait(4000)
+
+ FreezeEntityPosition(vehicle, false)
+ DrawMissionText(_U('good_lets_cont'), 5000)
+ end)
+ end
+ },
+
+ {
+ Pos = {x = 217.821, y = -1410.520, z = 28.292},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ setCurrentZoneType('town')
+
+ CreateThread(function()
+ DrawMissionText(_U('stop_look_left', Config.SpeedLimits['town']), 5000)
+ PlaySound(-1, 'RACE_PLACED', 'HUD_AWARDS', false, 0, true)
+ FreezeEntityPosition(vehicle, true)
+ Wait(6000)
+
+ FreezeEntityPosition(vehicle, false)
+ DrawMissionText(_U('good_turn_right'), 5000)
+ end)
+ end
+ },
+
+ {
+ Pos = {x = 178.550, y = -1401.755, z = 27.725},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('watch_traffic_lightson'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = 113.160, y = -1365.276, z = 27.725},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = -73.542, y = -1364.335, z = 27.789},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('stop_for_passing'), 5000)
+ PlaySound(-1, 'RACE_PLACED', 'HUD_AWARDS', false, 0, true)
+ FreezeEntityPosition(vehicle, true)
+ Wait(6000)
+ FreezeEntityPosition(vehicle, false)
+ end
+ },
+
+ {
+ Pos = {x = -355.143, y = -1420.282, z = 27.868},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = -439.148, y = -1417.100, z = 27.704},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = -453.790, y = -1444.726, z = 27.665},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ setCurrentZoneType('freeway')
+
+ DrawMissionText(_U('hway_time', Config.SpeedLimits['freeway']), 5000)
+ PlaySound(-1, 'RACE_PLACED', 'HUD_AWARDS', false, 0, true)
+ end
+ },
+
+ {
+ Pos = {x = -463.237, y = -1592.178, z = 37.519},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = -900.647, y = -1986.28, z = 26.109},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = 1225.759, y = -1948.792, z = 38.718},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('go_next_point'), 5000)
+ end
+ },
+
+ {
+ Pos = {x = 1225.759, y = -1948.792, z = 38.718},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ setCurrentZoneType('town')
+ DrawMissionText(_U('in_town_speed', Config.SpeedLimits['town']), 5000)
+ end
+ },
+
+ {
+ Pos = {x = 1163.603, y = -1841.771, z = 35.679},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(_U('gratz_stay_alert'), 5000)
+ PlaySound(-1, 'RACE_PLACED', 'HUD_AWARDS', false, 0, true)
+ end
+ },
+
+ {
+ Pos = {x = 235.283, y = -1398.329, z = 28.921},
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ ESX.Game.DeleteVehicle(vehicle)
+ end
+ }
+
+}
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql b/server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql
new file mode 100644
index 000000000..85257ab9b
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql
@@ -0,0 +1,6 @@
+INSERT INTO `licenses` (`type`, `label`) VALUES
+ ('dmv', 'Code de la route'),
+ ('drive', 'Permis de conduire'),
+ ('drive_bike', 'Permis moto'),
+ ('drive_truck', 'Permis camion')
+;
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/fxmanifest.lua b/server-data/resources/[esx_addons]/esx_dmvschool/fxmanifest.lua
similarity index 59%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/fxmanifest.lua
rename to server-data/resources/[esx_addons]/esx_dmvschool/fxmanifest.lua
index f2d90d3de..6797584b3 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/fxmanifest.lua
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/fxmanifest.lua
@@ -2,20 +2,25 @@ fx_version 'adamant'
game 'gta5'
-description 'ESX Driving School Job - refactor by: bitpredator'
+description 'ESX DMV School'
+
+version '1.0.0'
+
+lua54 'yes'
+
+shared_script '@es_extended/imports.lua'
server_scripts {
- '@mysql-async/lib/MySQL.lua',
'@es_extended/locale.lua',
- 'locales/*.lua',
- 'config.lua',
+ 'locales/*.lua',
+ 'config.lua',
'server/main.lua'
}
client_scripts {
'@es_extended/locale.lua',
- 'locales/*.lua',
- 'config.lua',
+ 'locales/*.lua',
+ 'config.lua',
'client/main.lua'
}
@@ -28,4 +33,9 @@ files {
'html/questions.js',
'html/scripts.js',
'html/debounce.min.js'
+}
+
+dependencies {
+ 'es_extended',
+ 'esx_license'
}
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/debounce.min.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/debounce.min.js
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/debounce.min.js
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/debounce.min.js
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/dmv.png b/server-data/resources/[esx_addons]/esx_dmvschool/html/dmv.png
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/dmv.png
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/dmv.png
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js
new file mode 100644
index 000000000..0cc0d572f
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "If you're going 80 km/h, and you're approaching a residential area you must:",
+ propositionA: "You accelerate",
+ propositionB: "You keep your speed, if you do not pass other vehicles",
+ propositionC: "You slow down",
+ propositionD: "You keep your speed",
+ reponse: "C"
+ },
+
+ {
+ question: "If you're turning right at a traffic light, but see a pedestrian crossing what do you do:",
+ propositionA: "You pass the pedestrian",
+ propositionB: "You check that there is no other vehicles around",
+ propositionC: "You wait until the pedestrian has crossed",
+ propositionD: "You shoot the pedestrian and continue to drive",
+ reponse: "C"
+ },
+
+ {
+ question: "Without any prior indication, the speed in a residential area is: __ km/h",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Before every lane change you must:",
+ propositionA: "Check your mirrors",
+ propositionB: "Check your blind spots",
+ propositionC: "Signal your intentions",
+ propositionD: "All of the above",
+ reponse: "D"
+ },
+
+ {
+ question: "What blood alcohol level is classified as driving while intoxicated?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "When can you continue to drive at a traffic light?",
+ propositionA: "When it is green",
+ propositionB: "When there is nobody in the intersection",
+ propositionC: "You are in a school zone",
+ propositionD: "When it is green and / or red and you're turning right",
+ reponse: "D"
+ },
+
+ {
+ question: "A pedestrian has a do not cross signal, what do you do?",
+ propositionA: "You let them pass",
+ propositionB: "You observe before continuing",
+ propositionC: "You wave to tell them to cross",
+ propositionD: "You continue because your traffic light is green",
+ reponse: "D"
+ },
+
+ {
+ question: "What is allowed when passing another vehicle",
+ propositionA: "You follow it closely to pass it faster",
+ propositionB: "You pass it without leaving the roadway",
+ propositionC: "You drive on the opposite side of the road to pass",
+ propositionD: "You exceed the speed limit to pass them",
+ reponse: "C"
+ },
+
+ {
+ question: "You are driving on a highway which indicates a maximum speed of 120 km/h. But most trafficers drive at 125 km/h, so you should not drive faster than:",
+ propositionA: "120 km/h",
+ propositionB: "125 km/h",
+ propositionC: "130 km/h",
+ propositionD: "110 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "When you are overtaken by another vehicle it is important NOT to:",
+ propositionA: "Slow Down",
+ propositionB: "Check your mirrors",
+ propositionC: "Watch other drivers",
+ propositionD: "Increase your speed",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_de.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_de.js
new file mode 100644
index 000000000..dc0ae63fc
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_de.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "Wenn du 80km/h fährst, und dich einer Wohngegend näherst musst du:",
+ propositionA: "Beschleunigen",
+ propositionB: "Geschwindigkeit halten, und keine anderen Fahrzeuge überholen",
+ propositionC: "Verlangsamen",
+ propositionD: "Geschwindigkeit beibehalten",
+ reponse: "C"
+ },
+
+ {
+ question: "Wenn du an einer Ampel nach rechts abbiegen möchtest, und einen Fußgänger überqueren siehst, was tust du dann?:",
+ propositionA: "Den Fußgänger überfahren",
+ propositionB: "Überprüfen das kein anderes Fahrzeug in der nähe ist",
+ propositionC: "Du wartest bis der Fußgänger die Straße überquert hat",
+ propositionD: "Du erschießt den Fußgänger und fährst weiter",
+ reponse: "C"
+ },
+
+ {
+ question: "Ohne einen vorherigen Hinweis, in einer Wohngegend musst du : __ km/h fahren:",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Bevor einem Spurwechsel musst du:",
+ propositionA: "Deine Spiegel überprüfen",
+ propositionB: "Deine Blinden Stellen überprüfen",
+ propositionC: "Den Spurwechsel signalisieren",
+ propositionD: "Alles von oben",
+ reponse: "D"
+ },
+
+ {
+ question: "Welcher Blutalkoholspiegel zählt als Betrunken?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "Wann kannst du an einer Ampel weiterfahren?",
+ propositionA: "Wenn die Ampel Grün ist",
+ propositionB: "Wenn niemand in dem bereich ist",
+ propositionC: "Wenn du in einer Schulzone bist",
+ propositionD: "Wenn es grün ist und niemand in dem bereich ist",
+ reponse: "D"
+ },
+
+ {
+ question: "Ein Fußgänger hat ein nicht überqueren Signal, was tust du?",
+ propositionA: "Du lässt ihn gehen",
+ propositionB: "Du beobachtest ihn bevor du weiterfährst",
+ propositionC: "Du winkst ihn rüber",
+ propositionD: "Du fährst weiter, weil deine Ampel grün ist.",
+ reponse: "D"
+ },
+
+ {
+ question: "Was ist erlaubt wenn du ein anderes Fahrzeug überholst?",
+ propositionA: "Du folgst ihm nahe um ihn zu überholen",
+ propositionB: "Du überholst es ohne die Straße zu verlassen",
+ propositionC: "Du fährst auf der anderen Straßenseite um ihn zu überholen",
+ propositionD: "Du fährst schneller als erlaubt um ihn zu überholen",
+ reponse: "C"
+ },
+
+ {
+ question: "Du bist auf einer Autobahn und fährst 120km/h jedoch fahren die anderen Autofahrer 125km/h also fährst du nicht schneller als:",
+ propositionA: "120 km/h",
+ propositionB: "125 km/h",
+ propositionC: "130 km/h",
+ propositionD: "110 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "Wenn du von einem anderen Fahrzeug überholt wirst, ist es Wichtig das du NICHT:",
+ propositionA: "Verlangsamst",
+ propositionB: "Deine Spiegel überprüfst",
+ propositionC: "Andere Autofahrer beobachtest",
+ propositionD: "Schneller wirst",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_en.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_en.js
new file mode 100644
index 000000000..0cc0d572f
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_en.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "If you're going 80 km/h, and you're approaching a residential area you must:",
+ propositionA: "You accelerate",
+ propositionB: "You keep your speed, if you do not pass other vehicles",
+ propositionC: "You slow down",
+ propositionD: "You keep your speed",
+ reponse: "C"
+ },
+
+ {
+ question: "If you're turning right at a traffic light, but see a pedestrian crossing what do you do:",
+ propositionA: "You pass the pedestrian",
+ propositionB: "You check that there is no other vehicles around",
+ propositionC: "You wait until the pedestrian has crossed",
+ propositionD: "You shoot the pedestrian and continue to drive",
+ reponse: "C"
+ },
+
+ {
+ question: "Without any prior indication, the speed in a residential area is: __ km/h",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Before every lane change you must:",
+ propositionA: "Check your mirrors",
+ propositionB: "Check your blind spots",
+ propositionC: "Signal your intentions",
+ propositionD: "All of the above",
+ reponse: "D"
+ },
+
+ {
+ question: "What blood alcohol level is classified as driving while intoxicated?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "When can you continue to drive at a traffic light?",
+ propositionA: "When it is green",
+ propositionB: "When there is nobody in the intersection",
+ propositionC: "You are in a school zone",
+ propositionD: "When it is green and / or red and you're turning right",
+ reponse: "D"
+ },
+
+ {
+ question: "A pedestrian has a do not cross signal, what do you do?",
+ propositionA: "You let them pass",
+ propositionB: "You observe before continuing",
+ propositionC: "You wave to tell them to cross",
+ propositionD: "You continue because your traffic light is green",
+ reponse: "D"
+ },
+
+ {
+ question: "What is allowed when passing another vehicle",
+ propositionA: "You follow it closely to pass it faster",
+ propositionB: "You pass it without leaving the roadway",
+ propositionC: "You drive on the opposite side of the road to pass",
+ propositionD: "You exceed the speed limit to pass them",
+ reponse: "C"
+ },
+
+ {
+ question: "You are driving on a highway which indicates a maximum speed of 120 km/h. But most trafficers drive at 125 km/h, so you should not drive faster than:",
+ propositionA: "120 km/h",
+ propositionB: "125 km/h",
+ propositionC: "130 km/h",
+ propositionD: "110 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "When you are overtaken by another vehicle it is important NOT to:",
+ propositionA: "Slow Down",
+ propositionB: "Check your mirrors",
+ propositionC: "Watch other drivers",
+ propositionD: "Increase your speed",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_es.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_es.js
new file mode 100644
index 000000000..efd705700
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_es.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "Si vas a 80 km / h, y te aproximas a una zona residencial, debes:",
+ propositionA: "Acelerar",
+ propositionB: "Mantienes tu velocidad, si no pasas otros vehículos.",
+ propositionC: "Frenas",
+ propositionD: "Mantienes la velocidad",
+ reponse: "C"
+ },
+
+ {
+ question: "Si está girando a la derecha en un semáforo, pero ve un cruce de peatones, ¿qué hace?",
+ propositionA: "Pasas del peaton",
+ propositionB: "Comprueba que no hay otros vehículos alrededor.",
+ propositionC: "Esperas hasta que el peatón haya cruzado.",
+ propositionD: "Disparas al peatón y sigues conduciendo.",
+ reponse: "C"
+ },
+
+ {
+ question: "Sin ninguna indicación previa, la velocidad en una zona residencial es de: __ km / h",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Antes de cada cambio de carril debe:",
+ propositionA: "Mirar por los espejos",
+ propositionB: "Comprobar los puntos muertos del vehiculo",
+ propositionC: "Señalizar tu intención de girar",
+ propositionD: "Todas las anteriores",
+ reponse: "D"
+ },
+
+ {
+ question: "¿Qué nivel de alcohol en la sangre se clasifica como conducir bajo los efectos del alcohol?",
+ propositionA: "0,5",
+ propositionB: "0,1",
+ propositionC: "0,8",
+ propositionD: "0,0",
+ reponse: "C"
+ },
+
+ {
+ question: "¿Cuándo puedes continuar conduciendo en un semáforo?",
+ propositionA: "Cuando esta verde",
+ propositionB: "Cuando no esta cruzando nadie",
+ propositionC: "Cuando estas en una zona de colegio",
+ propositionD: "Cuando estas entre un 60 u 80 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "Un peatón tiene una señal de no cruzar, ¿qué haces?",
+ propositionA: "Le dejas cruzar",
+ propositionB: "Te quedas mirandolo",
+ propositionC: "Le dices que cruce para que lo puedas atropellar",
+ propositionD: "Continuas porque tu señal de tráfico esta en verde",
+ reponse: "D"
+ },
+
+ {
+ question: "¿Que esta permitido cuando adelantas a otro vehículo?",
+ propositionA: "Lo sigues de cerca para pasarlo más rápido.",
+ propositionB: "Lo adelantas por la acera si es necesario.",
+ propositionC: "Conduce por el lado opuesto de la carretera para adelantarlo.",
+ propositionD: "Lo adelantas rapido",
+ reponse: "C"
+ },
+
+ {
+ question: "Usted está conduciendo en una carretera que indica una velocidad máxima de 120 km / h. Pero la mayoría de los conductores conducen a 125 km / h, por lo que no debe conducir más rápido que:",
+ propositionA: "120 km/h",
+ propositionB: "125 km/h",
+ propositionC: "130 km/h",
+ propositionD: "110 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "Cuando es superado por otro vehículo, es importante NO:",
+ propositionA: "Seguir con la misma velocidad",
+ propositionB: "Comprobar los espejos",
+ propositionC: "Mirar a otros conductores",
+ propositionD: "Aumentar la velocidad",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_fi.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fi.js
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_fi.js
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fi.js
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fr.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fr.js
new file mode 100644
index 000000000..6f7f0c8ba
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fr.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "Si vous allez à 80 km/h, et vous vous approchez d'une zone résidentiel vous devez:",
+ propositionA: "Vous accélérez",
+ propositionB: "Vous gardez votre vitesse, si vous ne voyez pas d'autre voitures",
+ propositionC: "Vous ralentissez",
+ propositionD: "Voud gardez votre vitesse",
+ reponse: "C"
+ },
+
+ {
+ question: "Si vous étiez entrain de tourner à droite à une lumière, mais vous voyez quelqu'un traverser que faites-vous:",
+ propositionA: "Vous passez le piéton",
+ propositionB: "Vous regardez qu'il n'y ai plus de véhicles aux alentours",
+ propositionC: "Vous attendez que le piéton ai passé",
+ propositionD: "Vous tirez le piéton et continuez à conduire",
+ reponse: "C"
+ },
+
+ {
+ question: "Sans aucune indication, la vitesse permise dans une zone résidentielle est de: __ km/h",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Avant chaque changement de ligne vous devez:",
+ propositionA: "Regardez vos mirroires",
+ propositionB: "Regardez vos angles mort",
+ propositionC: "Signalez vos intentions",
+ propositionD: "Toutes c'esr réponses",
+ reponse: "D"
+ },
+
+ {
+ question: "Quel est le taux d’alcoolémie qui est considéré comme conduite avec des facultés affaiblies?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "Quand pouvez-vous continuer à conduire à un feu de signalisation?",
+ propositionA: "Lorsque il est vert",
+ propositionB: "Lorsque personne n'est à l'intersection",
+ propositionC: "Lorsque vous êtes dans une zone écolière",
+ propositionD: "Lorsqie c'est vert et / ou rouge et que vous tourner à droite",
+ reponse: "D"
+ },
+
+ {
+ question: "Un piéton a un signal indiquant de ne pas traverser, que faites-vous?",
+ propositionA: "Vous les laisser passer",
+ propositionB: "Vous observez avant de continuer",
+ propositionC: "Vous lui faites signe de traverser",
+ propositionD: "Vous continuez car la lumière est verte",
+ reponse: "D"
+ },
+
+ {
+ question: "Qu'est-ce qui est permis pour dépasser un autre véhicule",
+ propositionA: "Vous le suivez de près pour le dépasser plus rapidement",
+ propositionB: "Vous le passez sans quitter la chaussée",
+ propositionC: "Vous conduisez sur la route opposée pour le dépasser",
+ propositionD: "Vous dépassez la limite permise pour le dépasser",
+ reponse: "C"
+ },
+
+ {
+ question: "Vous conduisez sur une autoroute qui indique une vitesse maximale de 120 km/h. Mais la plupart des conducteurs conduisent à 125 km/h, donc vous ne devriez pas conduire plus vite que:",
+ propositionA: "120 km/h",
+ propositionB: "125 km/h",
+ propositionC: "130 km/h",
+ propositionD: "110 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "Lorsque vous êtes dépassé par un autre véhicule il est important de NE pas:",
+ propositionA: "Ralentir",
+ propositionB: "Vérifier vos rétroviseurs",
+ propositionC: "Regarder les autres conducteurs",
+ propositionD: "Augmenter votre vitesse",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js
new file mode 100644
index 000000000..8944d8b53
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "Se stai andando a 80 km/h, e ti stai avvicinando a una zona residenziale devi::",
+ propositionA: "Accellerare",
+ propositionB: "Mantieni la velocità, se non sorpassi altri veicoli",
+ propositionC: "Ralenti",
+ propositionD: "Mantieni la velocità",
+ reponse: "C"
+ },
+
+ {
+ question: "Se al semaforo stai svoltaando a destra, ma vedi un pedone cosa fai:",
+ propositionA: "Superi il pedone",
+ propositionB: "Controlli che non ci siano altri veicoli in giro",
+ propositionC: "Aspetti che il pedone abbia attraversato",
+ propositionD: "Spari al pedone e continui a guidare",
+ reponse: "C"
+ },
+
+ {
+ question: "Senza alcuna indicazione preventiva, la velocità in una zona residenziale è: __ km/h",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Prima di ogni cambio si corsia devi:",
+ propositionA: "Controllare gli specchietti",
+ propositionB: "Controllare i punti ciechi",
+ propositionC: "Segnalare le tue intenzioni",
+ propositionD: "Tutte le risposte sono esatte",
+ reponse: "D"
+ },
+
+ {
+ question: "Quale livello di alcol nel sangue è classificato come guida in stato di ebbrezza?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "Quando puoi continuare a guidare a un semaforo?",
+ propositionA: "Quando è verde",
+ propositionB: "Quando non c'è nessuno all'incrocio",
+ propositionC: "Quando sei in una zona scolastca",
+ propositionD: "Quando è verde e/o rosso e stai girando a destra",
+ reponse: "D"
+ },
+
+ {
+ question: "Un pedone ha un segnale di non attraversare, cosa fai?",
+ propositionA: "Li lasci passare",
+ propositionB: "Osservi prima di continuare",
+ propositionC: "Fai la mano per dire loro di attraversare",
+ propositionD: "Continui perchè il tuo semaforo è verde",
+ reponse: "D"
+ },
+
+ {
+ question: "Cosa è consentito quando si supera un'altro veicolo",
+ propositionA: "Lo segui da vicino per superarlo velocemente",
+ propositionB: "Lo passi senza lasciare la carreggiata",
+ propositionC: "Si guida sul lato opposto della strada per passare",
+ propositionD: "Si supera il limite di velocità per superarli",
+ reponse: "C"
+ },
+
+ {
+ question: "Stai guidando su un'autostrada che indica una velocità massima di 120 km/h. Ma la maggior parte dei trafficanti guida a 125 km/h, quindi non dovresti guidare più veloce di:",
+ propositionA: "120 km/h",
+ propositionB: "125 km/h",
+ propositionC: "130 km/h",
+ propositionD: "110 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "Quando vieni sorpassato da un altro veicolo è importane NON:",
+ propositionA: "Rallentare",
+ propositionB: "Controllare gli specchietti",
+ propositionC: "Guardare gli altri automobilisti",
+ propositionD: "Aumentare la tua velocità",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js
new file mode 100644
index 000000000..c141c878f
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js
@@ -0,0 +1,91 @@
+var tableauQuestion = [
+ {
+ question: "Je rijd 80 km/u maar je nadert een woonwijk, wat doe je ?:",
+ propositionA: "Je geeft gas bij",
+ propositionB: "Je behoudt je snelheid, zo lang je niemand inhaalt",
+ propositionC: "Je behoudt je snelheid",
+ propositionD: "Je remt af",
+ reponse: "D"
+ },
+
+ {
+ question: "Je gaat rechts bij een stoplicht maar je ziet iemand oversteken, wat doe je ?:",
+ propositionA: "Je wacht totdat de voetganger is overgestoken",
+ propositionB: "Je passeert de voetganger",
+ propositionC: "Je kijkt of er geen voertuigen om je heen zijn",
+ propositionD: "Je rijdt de voetganger aan en maakt dat je weg komt",
+ reponse: "A"
+ },
+
+ {
+ question: "Zonder enige indicatie, de snelheid in een woonwijk is: __ km/h",
+ propositionA: "30 km/u",
+ propositionB: "50 km/u",
+ propositionC: "40 km/u",
+ propositionD: "60 km/u",
+ reponse: "A"
+ },
+
+ {
+ question: "Voordat je van rijstrook veranderd moet je:",
+ propositionA: "Kijken in je spiegels",
+ propositionB: "Kijken in je blinde hoek",
+ propositionC: "Gebruik je knipperlicht naar de correcte rijbaan",
+ propositionD: "Alles hierboven",
+ reponse: "D"
+ },
+
+ {
+ question: "Welk alcoholgehalte word gezien als rijden onder invloed?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "Wanneer kan je doorrijden bij een verkeerslicht?",
+ propositionA: "Wanneer het groen is",
+ propositionB: "Wanneer er niemand bij het kruispunt is",
+ propositionC: "Als je in een school zone bent",
+ propositionD: "Als je boven de 100km/u rijdt.",
+ reponse: "A"
+ },
+
+ {
+ question: "Een voetganger heeft een rood licht om over te steken, wat doe je ?",
+ propositionA: "Je laat diegene passeren",
+ propositionB: "Je observeert wat diegene doet en gaat vervolgens door omdat het groen is.",
+ propositionC: "Je signaleert diegene om over te steken",
+ propositionD: "Je gaat door want je hebt groen licht.",
+ reponse: "D"
+ },
+
+ {
+ question: "Wat is toegestaan als je een voertuig inhaalt",
+ propositionA: "Je gaat bumper kleven om sneller voorbij te gaan",
+ propositionB: "Je passeert zonder de weg te verlaten",
+ propositionC: "Je rijdt aan de andere kant van de weg om in te halen",
+ propositionD: "Je gaat te snel rijden.",
+ reponse: "C"
+ },
+
+ {
+ question: "Je rijdt op de snelweg wat een maxiumum snelheid van 120 km/u hanteert maar iedereen rijdt gemiddeld 125 km/u, hoe hard mag je maximaal gaan:",
+ propositionA: "120 km/u",
+ propositionB: "125 km/u",
+ propositionC: "130 km/u",
+ propositionD: "110 km/u",
+ reponse: "A"
+ },
+
+ {
+ question: "Wat moet je NIET doen als je word ingehaald door een ander voertuig:",
+ propositionA: "Verslomen",
+ propositionB: "Je spiegels bekijken",
+ propositionC: "Andere bestuurders bekijken",
+ propositionD: "Snelheid verhogen",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_pl.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_pl.js
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/questions_pl.js
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/questions_pl.js
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sr.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sr.js
new file mode 100644
index 000000000..3413bf80d
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sr.js
@@ -0,0 +1,92 @@
+
+var tableauQuestion = [
+ {
+ question: "Ako vozite 80 km/h i prilazite naseljenom mestu, vi ćete:",
+ propositionA: "Dodati gas i ubrzati",
+ propositionB: "Nastaviti voziti 80 km/h, ako ne pretičete",
+ propositionC: "Usporiti",
+ propositionD: "Zadržati brzinu od 80 km/h",
+ reponse: "C"
+ },
+
+ {
+ question: "Ako skrećete desno na semafor i vidite pešaka koji prelazi pešački prelaz, vi ćete:",
+ propositionA: "Proći pored pešaka",
+ propositionB: "Pogledati da li ima vozila",
+ propositionC: "Sačekati da pešak pređe put",
+ propositionD: "Udariti pešaka i nastaviti voziti",
+ reponse: "C"
+ },
+
+ {
+ question: "Bez ikakvog znaka, ograničenje brzine u naseljenom mestu je: __ km/h",
+ propositionA: "30 km/h",
+ propositionB: "50 km/h",
+ propositionC: "40 km/h",
+ propositionD: "60 km/h",
+ reponse: "B"
+ },
+
+ {
+ question: "Pre svakog prestrojavanja, vi morate:",
+ propositionA: "Pogledati retrovizore",
+ propositionB: "Proveriti mrtve uglove",
+ propositionC: "Signalizirati vaše namere",
+ propositionD: "Sve od navedenog",
+ reponse: "D"
+ },
+
+ {
+ question: "Koji nivo alkohola u krvi je dozvoljen dok vozite?",
+ propositionA: "0.05%",
+ propositionB: "0.18%",
+ propositionC: "0.08%",
+ propositionD: "0.06%",
+ reponse: "C"
+ },
+
+ {
+ question: "Kada možete nastaviti voziti na semaforu?",
+ propositionA: "Kada je zeleno svetlo",
+ propositionB: "Kada nema nikoga na raskrsnici",
+ propositionC: "Kada ste u zoni škole",
+ propositionD: "Kada je zeleno i/ili vi skrećete desno",
+ reponse: "D"
+ },
+
+ {
+ question: "Pešak stoji na semaforu i njemu je crveno za pešake, šta ćete učiniti?",
+ propositionA: "Pustiti ga da pređe",
+ propositionB: "Gledati dobro pre nego što prođete",
+ propositionC: "Pokazati mu da pređe put",
+ propositionD: "Nastaviti normalno jer je vama zeleno svetlo",
+ reponse: "D"
+ },
+
+ {
+ question: "Šta je dozvoljeno kada pretičete vozilo?",
+ propositionA: "Približavanje preblizu vozila da bi ga brže pretekli",
+ propositionB: "Preticanje bez napuštanja trake",
+ propositionC: "Vožnja suprotnim smerom dok pretičete",
+ propositionD: "Prekoračenje brzine dok pretičete",
+ reponse: "C"
+ },
+
+ {
+ question: "Vozite se autoputem gde je ograničenje 130 km/h, ali svi oko vas voze brže od vas, koliko smete voziti?",
+ propositionA: "130 km/h",
+ propositionB: "145 km/h",
+ propositionC: "120 km/h",
+ propositionD: "135 km/h",
+ reponse: "A"
+ },
+
+ {
+ question: "Kada vas pretiče drugo vozilo, ne smete uraditi sledeće:",
+ propositionA: "Usporiti",
+ propositionB: "Proveriti retrovizore",
+ propositionC: "Gledati ostale vozače",
+ propositionD: "Povećati brzinu",
+ reponse: "D"
+ },
+]
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/scripts.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/scripts.js
similarity index 94%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/scripts.js
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/scripts.js
index 17c9ab47d..56d700973 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/scripts.js
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/scripts.js
@@ -10,13 +10,17 @@ var lastClick = 0;
function getRandomQuestion() {
var random = Math.floor(Math.random() * nbPossibleQuestions);
+
while (true) {
if (questionUsed.indexOf(random) === -1) {
break;
}
+
random = Math.floor(Math.random() * nbPossibleQuestions);
}
+
questionUsed.push(random);
+
return random;
}
@@ -82,11 +86,11 @@ window.addEventListener('message', function (event) {
// Handle Button Presses
$(".btnQuestion").click(function () {
- $.post('http://esx_drivingschooljob/question', JSON.stringify({}));
+ $.post('http://esx_dmvschool/question', JSON.stringify({}));
});
$(".btnClose").click(function () {
- $.post('http://esx_drivingschooljob/close', JSON.stringify({}));
+ $.post('http://esx_dmvschool/close', JSON.stringify({}));
userAnswer = [];
goodAnswer = [];
questionUsed = [];
@@ -94,7 +98,7 @@ $(".btnClose").click(function () {
});
$(".btnKick").click(function () {
- $.post('http://esx_drivingschooljob/kick', JSON.stringify({}));
+ $.post('http://esx_dmvschool/kick', JSON.stringify({}));
userAnswer = [];
goodAnswer = [];
questionUsed = [];
@@ -130,4 +134,4 @@ $("#question-form").submit(function (e) {
}
return false;
-});
\ No newline at end of file
+});
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/styles.css b/server-data/resources/[esx_addons]/esx_dmvschool/html/styles.css
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/styles.css
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/styles.css
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html
similarity index 93%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui.html
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html
index 0a5c9643c..1c841c2fd 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui.html
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html
@@ -30,8 +30,8 @@
Driving School
date.
Driving Test
- - The Driving Test is arranged by your driving instructor after reaching the minimal amount ot classes.
- - You will be tested by examiner who is going to sit next to you.
+ - The Driving Test costs $500, just like the theory test, this payment will not be refunded if you fail.
+ - Make sure you stay alert whilst driving, and avoid accidents!
@@ -80,7 +80,7 @@
Progress
You did well during the examination.
- You can close this window, and talk to your instructor.
+ You can close this window, and go take your road test(s).
Alle Bürger von Los Santos müssen diesen Test bestehen um Fahren zu können!
+ Nehme dir zeit, und beantworte keine Fragen Zufällig.
+
+ Theorie Test
+ - Der Theorie Test kostet 200€, das Geld wird dir wenn du den Test nicht bestehst rückerstattet!
+ - Habe keine angst, die Fahrschule akzeptiert Kreditkarten jedoch gehe nicht zu weit in das Minus.
+ - Wenn du den Test nicht bestehst, kannst du diesen nicht sofort wiederholen! Du musst den Test an einem
+ anderem Datum wiederholen.
+
+ Auto Führerschein
+ - Der Autoführerschein kostet 500€ und wird nicht zurückerstattet genau wie bei dem Theorie Test.
+ - Stelle sicher du bleibst aufmerksam, wenn du am Fahren bist und baue keine Unfälle!
+
+
+
+
+
+
+
+
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_sv.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_en.html
similarity index 63%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_sv.html
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/ui_en.html
index dc1a29391..1c841c2fd 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_sv.html
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_en.html
@@ -8,7 +8,7 @@
-
Körskola
+
Driving School
@@ -17,29 +17,28 @@
Körskola
-
Välkommen till körskolan
+
Welcome to Driving School
-
Alla medborgare i Los Santos måste ha körkort för att få behörigheten att köra fordon
- Ta din tid, svara med sunt förnuft och svara inte slumpmässigt.
+
All citizens of Los Santos must pass their exam before they can drive.
+ Take your time, answer with common sense, and do not answer randomly.
- Kunskapsprov
- - Det teoretiska provet kostar 200 SEK, och kommer ej återbetalas om du misslyckas.
- - Var inte rädd, körskolan accepterar kredit. Var dock försiktig så att du inte får en stor skuld.
- - Om du misslyckas med testet första gången kan du inte omedelbart återta det, du måste ta det på ett senare
- tillfälle.
+ Theory Test
+ - The Theory Test costs $200, this is not refunded if you fail the test.
+ - Don't be afraid, the driving school accepts credit, but be careful not to get into debt.
+ - If you fail your test the first time, you can't retake it immediately, you'll have to take it at a later
+ date.
- Uppkörning
- - Uppkörningen kostar 500 SEK, precis som den teoretiska delen. Denna betalning återbetalas ej om du
- misslyckas.
- - Se till att du är uppmärksam vid körning och försök undvik olyckor!
+ Driving Test
+ - The Driving Test costs $500, just like the theory test, this payment will not be refunded if you fail.
+ - Make sure you stay alert whilst driving, and avoid accidents!
- Du har klarat teoretiska delen av körkortet
+ You did well during the examination.
- Du kan nu stänga det här fönstret och ta uppkörningen!
+ You can close this window, and go take your road test(s).
Todos los ciudadanos de la ciudad deben aprobar su examen antes de poder conducir.
+ Tómese su tiempo, responda con sentido común y no conteste al azar.
+
+ Examen teórico
+ - La prueba teórica cuesta $ 200, esto no se reembolsa si falla la prueba.
+ - No tenga miedo, la escuela de conducción acepta crédito, pero tenga cuidado de no entrar en deuda.
+ - Si falla la prueba la primera vez, no puede volver a tomarla de inmediato, tendrá que realizarla más adelante.
+
+ Examen de Conducir
+ - La prueba de conducir cuesta $500, al igual que la prueba de la teoría, este pago no se devolverá si fallas.
+ - ¡Asegúrate de estar alerta mientras conduces y de evitar accidentes!
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_fi.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fi.html
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_fi.html
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fi.html
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_fr.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html
similarity index 68%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_fr.html
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html
index cfa3094cc..725cc3dea 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_fr.html
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html
@@ -17,30 +17,24 @@
Auto-école
-
Bienvenu à votre Auto-école
+
Bienvenue à l’école de conduite
-
Tous les citoyens de Los Santos doivent réussir leur examen de code avant de pouvoir conduire.
- Prenez votre temps, répondez avec du bon sens, ne répondez pas au hasard.
+
Tous les citoyens de Los Santos doivent passer leur examen avant de pouvoir conduire.
+ Prenez votre temps, répondez avec bon sens, et ne répondez pas au hasard.
+ Test théorique
+ - Le test théorique coûte 200 $. Il n’est pas remboursé si vous échouez au test.
+ - N’ayez pas peur, l’école de conduite accepte le crédit, mais faites attention de ne pas vous endetter.
+ - Si vous échouez à votre test la première fois, vous ne pouvez pas le reprendre immédiatement, vous devrez le reprendre à une date ultérieure.
+ Test de conduite
+ - Le test de conduite coûte 500 $, tout comme le test théorique, ce paiement ne sera pas remboursé si vous échouez.
+ - Restez vigilant en conduisant et évitez les accidents!
- Examen de Code
- - L'examen de code coute 200$, cela n'est pas remboursé si vous échouez.
- - N'ayez pas peur, l'auto-école accepte les crédits, mais faite attention à ne pas vous endetter
- - Si vous loupez votre test une première fois, vous ne pouvez pas le repasser de suite, vous devrez le
- retenter un
- autre jour.
-
- Examen de Conduite
- - L'examen de Conduite coute 500$, comme pour l'examen de code, ce paiement ne vous sera pas remboursé si
- vous échoué.
- - La chose principale pour votre permis c'est de faire attention à ce qui vous entoure et surtout éviter les
- accidents
- !
- Vous avez bien travaillé durant l'examen!
+ Vous vous êtes bien débrouillé pendant l’examen.
- Vous pouvez maintenant fermer cette fenètre et passer à l'examen.
+ Vous pouvez fermer cette fenêtre, et aller faire votre/vos essai routier(s).
@@ -101,7 +95,7 @@
Progrès
Vous avez échoué
- Vous n'êtes pas prêt pour ce test, essayez une nouvelle fois, plus tard...
+ Vous n’étiez pas prêt pour ce test, réessayez plus tard...
@@ -122,4 +116,4 @@
Progrès
-
+
+
+
+
+
Autós Iskola
+
+
+
+
+
+
+
+
+
Köszöntünk az Autós Iskolában
+
+
+
All citizens of Los Santos must pass their exam before they can drive.
+ Take your time, answer with common sense, and do not answer randomly.
+
+ Elméleti Teszt:
+ - A teszt ára $200, sikertelen teszt esetén nem kerül jóváírásra!
+ - Az autós iskola elfogad hitelt (ha nincs elég pénzed is megcsinálhatod De minuszban leszel!)
+ - Ha nem sikerül a teszt készülj fel jobban és próbáld meg később
+ date.
+
+ Vezetési Vizsga:
+ - A vizsga ára $500, sikertelen vizsga esetén nem kerül jóváírásra!
+ - Legyél mindig éber, kövesd az utasításokat és kerüld a baleseteket.
+
Svi građani moraju proći testove pre nego što mogu da voze.
+ Odvojite vremena i odgovorite zdravorazumski na pitanja, nemojte odgovarati nasumično.
+
+ Test Teorije
+ - Test teorije košta 200$ i novac vam neće biti vraćen ako padnete.
+ - Auto Škola prihvata i plaćanja kreditnim karticama.
+ - Ako padnete test, ne možete odmah polagati ponovo, morate sačekati da prođe neko vreme.
+
+ Test Vožnje
+ - Test vožnje košta 500$ i novac vam takođe neće biti vraćen ako padnete.
+ - Ostanite fokusirani tokom vožnje!
+
\ No newline at end of file
+
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_hu.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_hu.html
new file mode 100644
index 000000000..2da6eab40
--- /dev/null
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_hu.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
diff --git a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_it.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_it.html
similarity index 76%
rename from server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_it.html
rename to server-data/resources/[esx_addons]/esx_dmvschool/html/ui_it.html
index 81611afa0..8b1c59bb6 100644
--- a/server-data/resources/[esx_addons]/esx_drivingschooljob/html/ui_it.html
+++ b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_it.html
@@ -8,7 +8,7 @@
-
Scuola guida
+
Scuola Guida
@@ -17,28 +17,27 @@
Scuola guida
-
Benvenuti nella Scuola Guida
+
Benvenuto alla Scuola Guida
-
Tutti i cittadini di Empiretown devono superare l'esame prima di poter guidare.
- Prenditi il tuo tempo, rispondi con buon senso e non rispondere a caso.
+
Tutti i cittadini di Los Santos devono superare l'esame prima di poter governare.
+ Prenditi il tuo tempo, rispondi con il buon senso e non rispondere a caso.
- Test Teorico
- - Il test di teoria costa $ 200, questo non viene rimborsato se fallisci il test.
- - Niente paura, l'autoscuola accetta credito, ma attenzione a non indebitarsi.
- - Se fallisci il test la prima volta, non puoi ripeterlo immediatamente, dovrai sostenerlo in un secondo momento
- data.
+ Prova di teoria
+ - Il test di teoria costa $ 200, questo non viene rimborsato se non superi il test.
+ - Non abbiate paura, la scuola guida accetta crediti, ma attenzione a non indebitarvi.
+ - Se fallisci il test la prima volta, non puoi ripeterlo immediatamente, eseguirlo in un secondo momento.
- Esame di guida
- - L'esame di guida viene organizzato dal tuo istruttore di guida dopo aver raggiunto il numero minimo di lezioni.
- - Sarai testato dall'esaminatore che siederà accanto a te.
+ Esame di guid
+ - L'esame di guida costa $ 500, proprio come l'esame di teoria, questo pagamento non verrà rimborsato in caso di esito negativo.
+ - Assicurati di stare attento durante la guida ed evitare incidenti!
Hai fatto bene durante l'esame.
- Puoi chiudere questa finestra e parlare con il tuo istruttore.
+ Puoi chiudere questa finestra e fare la tua prova su strada.