From c963f1980ef13069c63cd320d30096b5e93494f2 Mon Sep 17 00:00:00 2001
From: bitpredator <67551273+bitpredator@users.noreply.github.com>
Date: Sat, 15 Jun 2024 11:05:52 +0200
Subject: [PATCH 1/5] fix: bpt_boat\fxmanifest.lua fix version
---
server-data/resources/[bpt_addons]/bpt_boat/fxmanifest.lua | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server-data/resources/[bpt_addons]/bpt_boat/fxmanifest.lua b/server-data/resources/[bpt_addons]/bpt_boat/fxmanifest.lua
index a59a75b1e..5f85f06a7 100644
--- a/server-data/resources/[bpt_addons]/bpt_boat/fxmanifest.lua
+++ b/server-data/resources/[bpt_addons]/bpt_boat/fxmanifest.lua
@@ -4,7 +4,7 @@ game("gta5")
description("Allows players to buy a boat")
lua54("yes")
-version("1.0")
+version("1.0.0")
shared_script("@es_extended/imports.lua")
From 3dc109da404cc9259a2da2b34c0300f42f333764 Mon Sep 17 00:00:00 2001
From: bitpredator <67551273+bitpredator@users.noreply.github.com>
Date: Sat, 15 Jun 2024 11:06:53 +0200
Subject: [PATCH 2/5] convert: esx_dmvschool > bpt_dmvschool
---
.../bpt_dmvschool}/LICENSE | 14 +-
.../[bpt_addons]/bpt_dmvschool/README.md | 19 +
.../bpt_dmvschool/bpt_dmvschool.sql} | 0
.../bpt_dmvschool/client/main.lua | 361 +++++++++++++++
.../[bpt_addons]/bpt_dmvschool/config.lua | 184 ++++++++
.../[bpt_addons]/bpt_dmvschool/fxmanifest.lua | 41 ++
.../bpt_dmvschool/html/debounce.min.js | 9 +
.../bpt_dmvschool}/html/dmv.png | Bin
.../bpt_dmvschool}/html/questions.js | 2 +-
.../bpt_dmvschool}/html/questions_it.js | 2 +-
.../bpt_dmvschool}/html/scripts.js | 8 +-
.../bpt_dmvschool}/html/styles.css | 0
.../[bpt_addons]/bpt_dmvschool/html/ui.html | 122 +++++
.../bpt_dmvschool/html/ui_it.html | 121 +++++
.../[bpt_addons]/bpt_dmvschool/locales/en.lua | 29 ++
.../[bpt_addons]/bpt_dmvschool/locales/it.lua | 29 ++
.../localization/it_bpt_dmvschool.sql} | 2 +-
.../[esx_addons]/esx_dmvschool/README.md | 15 -
.../esx_dmvschool/client/main.lua | 427 ------------------
.../[esx_addons]/esx_dmvschool/config.lua | 186 --------
.../esx_dmvschool/esx_dmvschool.sql | 6 -
.../[esx_addons]/esx_dmvschool/fxmanifest.lua | 42 --
.../esx_dmvschool/html/debounce.min.js | 9 -
.../esx_dmvschool/html/questions_de.js | 91 ----
.../esx_dmvschool/html/questions_en.js | 91 ----
.../esx_dmvschool/html/questions_es.js | 91 ----
.../esx_dmvschool/html/questions_fi.js | 91 ----
.../esx_dmvschool/html/questions_fr.js | 91 ----
.../esx_dmvschool/html/questions_nl.js | 91 ----
.../esx_dmvschool/html/questions_pl.js | 91 ----
.../esx_dmvschool/html/questions_sr.js | 92 ----
.../esx_dmvschool/html/questions_sv.js | 91 ----
.../[esx_addons]/esx_dmvschool/html/ui.html | 120 -----
.../esx_dmvschool/html/ui_de.html | 121 -----
.../esx_dmvschool/html/ui_en.html | 120 -----
.../esx_dmvschool/html/ui_es.html | 119 -----
.../esx_dmvschool/html/ui_fi.html | 122 -----
.../esx_dmvschool/html/ui_fr.html | 119 -----
.../esx_dmvschool/html/ui_hu.html | 120 -----
.../esx_dmvschool/html/ui_it.html | 119 -----
.../esx_dmvschool/html/ui_pl.html | 120 -----
.../esx_dmvschool/html/ui_sr.html | 119 -----
.../esx_dmvschool/html/ui_sv.html | 121 -----
.../[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_addons]/esx_dmvschool/locales/tr.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/hu_esx_dmvschool.sql | 6 -
.../localization/nl_esx_dmvschool.sql | 6 -
.../localization/sr_esx_dmvschool.sql | 6 -
.../localization/sv_esx_dmvschool.sql | 6 -
.../localization/tr_esx_dmvschool.sql | 6 -
65 files changed, 929 insertions(+), 3270 deletions(-)
rename server-data/resources/{[esx_addons]/esx_dmvschool => [bpt_addons]/bpt_dmvschool}/LICENSE (98%)
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/README.md
rename server-data/resources/{[esx_addons]/esx_dmvschool/localization/fr_esx_dmvschool.sql => [bpt_addons]/bpt_dmvschool/bpt_dmvschool.sql} (100%)
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/client/main.lua
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/config.lua
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/fxmanifest.lua
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/html/debounce.min.js
rename server-data/resources/{[esx_addons]/esx_dmvschool => [bpt_addons]/bpt_dmvschool}/html/dmv.png (100%)
rename server-data/resources/{[esx_addons]/esx_dmvschool => [bpt_addons]/bpt_dmvschool}/html/questions.js (99%)
rename server-data/resources/{[esx_addons]/esx_dmvschool => [bpt_addons]/bpt_dmvschool}/html/questions_it.js (99%)
rename server-data/resources/{[esx_addons]/esx_dmvschool => [bpt_addons]/bpt_dmvschool}/html/scripts.js (94%)
rename server-data/resources/{[esx_addons]/esx_dmvschool => [bpt_addons]/bpt_dmvschool}/html/styles.css (100%)
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui.html
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui_it.html
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/locales/en.lua
create mode 100644 server-data/resources/[bpt_addons]/bpt_dmvschool/locales/it.lua
rename server-data/resources/{[esx_addons]/esx_dmvschool/localization/it_esx_dmvschool.sql => [bpt_addons]/bpt_dmvschool/localization/it_bpt_dmvschool.sql} (98%)
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/README.md
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/client/main.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/config.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/fxmanifest.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/debounce.min.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_de.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_en.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_es.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fi.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fr.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_pl.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sr.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sv.js
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_de.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_en.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_es.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fi.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_hu.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_it.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_pl.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_sr.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/html/ui_sv.html
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/de.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/en.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/es.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/fi.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/fr.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/hu.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/it.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/nl.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/pl.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/sr.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/sv.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/tr.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/locales/zh-cn.lua
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/de_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/en_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/es_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/fi_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/hu_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/nl_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/sr_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/sv_esx_dmvschool.sql
delete mode 100644 server-data/resources/[esx_addons]/esx_dmvschool/localization/tr_esx_dmvschool.sql
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/LICENSE b/server-data/resources/[bpt_addons]/bpt_dmvschool/LICENSE
similarity index 98%
rename from server-data/resources/[esx_addons]/esx_dmvschool/LICENSE
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/LICENSE
index 15cc6189a..6d9577f6a 100644
--- a/server-data/resources/[esx_addons]/esx_dmvschool/LICENSE
+++ b/server-data/resources/[bpt_addons]/bpt_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.
- esx_dmvschool
- Copyright (C) 2015-2023 Jérémie N'gadi
+
+ Copyright (C) 2022-2024 bitpredator
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:
- esx_dmvschool Copyright (C) 2015-2023 Jérémie N'gadi
+ Copyright (C) 2022-2024 bitpredator
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/[bpt_addons]/bpt_dmvschool/README.md b/server-data/resources/[bpt_addons]/bpt_dmvschool/README.md
new file mode 100644
index 000000000..4fef9f3a7
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/README.md
@@ -0,0 +1,19 @@
+
bpt_dmvschool
+
Discord
+
+Copyright (C) 2022-2024 bitpredator
+
+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.
+
+ATTENTION:
+You are not authorized to change the name of the resource and the resources within it.
+
+If you want to contribute you can open a pull request.
+
+You are not authorized to sell this software (this is free project).
+
+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 http://www.gnu.org/licenses/.
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/localization/fr_esx_dmvschool.sql b/server-data/resources/[bpt_addons]/bpt_dmvschool/bpt_dmvschool.sql
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_dmvschool/localization/fr_esx_dmvschool.sql
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/bpt_dmvschool.sql
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/client/main.lua b/server-data/resources/[bpt_addons]/bpt_dmvschool/client/main.lua
new file mode 100644
index 000000000..17e5cfde1
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/client/main.lua
@@ -0,0 +1,361 @@
+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 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("bpt_dmvschool:addLicense", "dmv")
+ ESX.ShowNotification(TranslateCap("passed_test"))
+ else
+ ESX.ShowNotification(TranslateCap("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("bpt_dmvschool:addLicense", CurrentTestType)
+ ESX.ShowNotification(TranslateCap("passed_test"))
+ else
+ ESX.ShowNotification(TranslateCap("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 = TranslateCap("driving_school") },
+ }
+
+ if not ownedLicenses["dmv"] then
+ elements[#elements + 1] = {
+ icon = "fas fa-car",
+ title = (('%s: %s'):format(TranslateCap("theory_test"), TranslateCap("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(TranslateCap("road_test_car"), TranslateCap("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(TranslateCap("road_test_bike"), TranslateCap("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(TranslateCap("road_test_truck"), TranslateCap("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("bpt_dmvschool:canYouPay", function(haveMoney)
+ if haveMoney then
+ ESX.CloseContext()
+ StartTheoryTest()
+ else
+ ESX.ShowNotification(TranslateCap("not_enough_money"))
+ end
+ end, "dmv")
+ elseif element.value == "drive_test" then
+ ESX.TriggerServerCallback("bpt_dmvschool:canYouPay", function(haveMoney)
+ if haveMoney then
+ ESX.CloseContext()
+ StartDriveTest(element.type)
+ else
+ ESX.ShowNotification(TranslateCap("not_enough_money"))
+ end
+ end, element.type)
+ end
+ end, function(menu)
+ CurrentAction = "dmvschool_menu"
+ CurrentActionMsg = TranslateCap("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("bpt_dmvschool:hasEnteredMarker", function(zone)
+ if zone == "DMVSchool" then
+ CurrentAction = "dmvschool_menu"
+ CurrentActionMsg = TranslateCap("press_open_menu")
+ CurrentActionData = {}
+ end
+end)
+
+AddEventHandler("bpt_dmvschool:hasExitedMarker", function(zone)
+ CurrentAction = nil
+ ESX.CloseContext()
+end)
+
+RegisterNetEvent("bpt_dmvschool:loadLicenses")
+AddEventHandler("bpt_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)
+ SetBlipColour(blip, 0)
+ SetBlipDisplay(blip, 4)
+ SetBlipScale(blip, 1.2)
+ SetBlipAsShortRange(blip, true)
+
+ BeginTextCommandSetBlipName("STRING")
+ AddTextComponentSubstringPlayerName(TranslateCap("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(TranslateCap("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("bpt_dmvschool:hasEnteredMarker", currentZone)
+ end
+
+ if not isInMarker and HasAlreadyEnteredMarker then
+ HasAlreadyEnteredMarker = false
+ TriggerEvent("bpt_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
+ for k, v in pairs(Config.SpeedLimits) do
+ if CurrentZoneType == k and speed > v then
+ DriveErrors += 1
+ ESX.ShowNotification(TranslateCap("driving_too_fast", v))
+ ESX.ShowNotification(TranslateCap("errors", DriveErrors, Config.MaxErrors))
+ sleep = (Config.SpeedingErrorDelay < 5000) and 5000 or Config.SpeedingErrorDelay
+ end
+ end
+ end
+ end
+ Wait(sleep)
+ end
+end)
+
+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 health = GetEntityHealth(vehicle)
+ if health < LastVehicleHealth then
+ DriveErrors += 1
+ ESX.ShowNotification(TranslateCap("you_damaged_veh"))
+ ESX.ShowNotification(TranslateCap("errors", DriveErrors, Config.MaxErrors))
+
+ -- avoid stacking faults
+ LastVehicleHealth = health
+ sleep = 1500
+ end
+ end
+ end
+ Wait(sleep)
+ end
+end)
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/config.lua b/server-data/resources/[bpt_addons]/bpt_dmvschool/config.lua
new file mode 100644
index 000000000..3205c368f
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/config.lua
@@ -0,0 +1,184 @@
+Config = {}
+Config.DrawDistance = 10.0
+Config.MaxErrors = 5
+Config.SpeedMultiplier = 3.6
+Config.SpeedingErrorDelay = 5000 --Min: 5000ms
+Config.Locale = GetConvar("esx: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(TranslateCap("next_point_speed", Config.SpeedLimits["residence"]), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = 271.874, y = -1370.574, z = 30.932 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = 234.907, y = -1345.385, z = 29.542 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ CreateThread(function()
+ DrawMissionText(TranslateCap("stop_for_ped"), 5000)
+ PlaySound(-1, "RACE_PLACED", "HUD_AWARDS", false, 0, true)
+ FreezeEntityPosition(vehicle, true)
+ Wait(4000)
+
+ FreezeEntityPosition(vehicle, false)
+ DrawMissionText(TranslateCap("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(TranslateCap("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(TranslateCap("good_turn_right"), 5000)
+ end)
+ end,
+ },
+
+ {
+ Pos = { x = 178.550, y = -1401.755, z = 27.725 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("watch_traffic_lightson"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = 113.160, y = -1365.276, z = 27.725 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = -73.542, y = -1364.335, z = 27.789 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("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(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = -439.148, y = -1417.100, z = 27.704 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = -453.790, y = -1444.726, z = 27.665 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ setCurrentZoneType("freeway")
+
+ DrawMissionText(TranslateCap("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(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = -900.647, y = -1986.28, z = 26.109 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = 1225.759, y = -1948.792, z = 38.718 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("go_next_point"), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = 1225.759, y = -1948.792, z = 38.718 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ setCurrentZoneType("town")
+ DrawMissionText(TranslateCap("in_town_speed", Config.SpeedLimits["town"]), 5000)
+ end,
+ },
+
+ {
+ Pos = { x = 1163.603, y = -1841.771, z = 35.679 },
+ Action = function(playerPed, vehicle, setCurrentZoneType)
+ DrawMissionText(TranslateCap("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,
+ },
+}
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/fxmanifest.lua b/server-data/resources/[bpt_addons]/bpt_dmvschool/fxmanifest.lua
new file mode 100644
index 000000000..fac470cd1
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/fxmanifest.lua
@@ -0,0 +1,41 @@
+fx_version("adamant")
+
+game("gta5")
+
+description("A DMV School for players to get their drivers license")
+
+version("1.0.0")
+
+lua54("yes")
+
+shared_script("@es_extended/imports.lua")
+
+server_scripts({
+ "@es_extended/locale.lua",
+ "locales/*.lua",
+ "config.lua",
+ "server/main.lua",
+})
+
+client_scripts({
+ "@es_extended/locale.lua",
+ "locales/*.lua",
+ "config.lua",
+ "client/main.lua",
+})
+
+ui_page("html/ui.html")
+
+files({
+ "html/ui.html",
+ "html/dmv.png",
+ "html/styles.css",
+ "html/questions.js",
+ "html/scripts.js",
+ "html/debounce.min.js",
+})
+
+dependencies({
+ "es_extended",
+ "esx_license",
+})
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/html/debounce.min.js b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/debounce.min.js
new file mode 100644
index 000000000..9b70688f1
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/debounce.min.js
@@ -0,0 +1,9 @@
+/*
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function (b, c) { var $ = b.jQuery || b.Cowboy || (b.Cowboy = {}), a; $.throttle = a = function (e, f, j, i) { var h, d = 0; if (typeof f !== "boolean") { i = j; j = f; f = c } function g() { var o = this, m = +new Date() - d, n = arguments; function l() { d = +new Date(); j.apply(o, n) } function k() { h = c } if (i && !h) { l() } h && clearTimeout(h); if (i === c && m > e) { l() } else { if (f !== true) { h = setTimeout(i ? k : l, i === c ? e - m : e) } } } if ($.guid) { g.guid = j.guid = j.guid || $.guid++ } return g }; $.debounce = function (d, e, f) { return f === c ? a(d, e, false) : a(d, f, e !== false) } })(this);
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/dmv.png b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/dmv.png
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_dmvschool/html/dmv.png
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/html/dmv.png
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/questions.js
similarity index 99%
rename from server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/html/questions.js
index 0cc0d572f..faff7195e 100644
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions.js
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/questions.js
@@ -88,4 +88,4 @@ var tableauQuestion = [
propositionD: "Increase your speed",
reponse: "D"
},
-]
+]
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/questions_it.js
similarity index 99%
rename from server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/html/questions_it.js
index 8944d8b53..f395efec4 100644
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_it.js
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/questions_it.js
@@ -88,4 +88,4 @@ var tableauQuestion = [
propositionD: "Aumentare la tua velocità",
reponse: "D"
},
-]
+]
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/scripts.js b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/scripts.js
similarity index 94%
rename from server-data/resources/[esx_addons]/esx_dmvschool/html/scripts.js
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/html/scripts.js
index 56d700973..551f3bfb2 100644
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/scripts.js
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/scripts.js
@@ -86,11 +86,11 @@ window.addEventListener('message', function (event) {
// Handle Button Presses
$(".btnQuestion").click(function () {
- $.post('http://esx_dmvschool/question', JSON.stringify({}));
+ $.post('http://bpt_dmvschool/question', JSON.stringify({}));
});
$(".btnClose").click(function () {
- $.post('http://esx_dmvschool/close', JSON.stringify({}));
+ $.post('http://bpt_dmvschool/close', JSON.stringify({}));
userAnswer = [];
goodAnswer = [];
questionUsed = [];
@@ -98,7 +98,7 @@ $(".btnClose").click(function () {
});
$(".btnKick").click(function () {
- $.post('http://esx_dmvschool/kick', JSON.stringify({}));
+ $.post('http://bpt_dmvschool/kick', JSON.stringify({}));
userAnswer = [];
goodAnswer = [];
questionUsed = [];
@@ -134,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_dmvschool/html/styles.css b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/styles.css
similarity index 100%
rename from server-data/resources/[esx_addons]/esx_dmvschool/html/styles.css
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/html/styles.css
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui.html b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui.html
new file mode 100644
index 000000000..966c4b0b4
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
Driving School
+
+
+
+
+
+
+
+
+
Welcome to Driving School
+
+
+
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.
+
+ 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.
+
+ 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!
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui_it.html b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui_it.html
new file mode 100644
index 000000000..ba1dea593
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/html/ui_it.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
Scuola Guida
+
+
+
+
+
+
+
+
+
Benvenuto alla Scuola Guida
+
+
+
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.
+
+ 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 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!
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/locales/en.lua b/server-data/resources/[bpt_addons]/bpt_dmvschool/locales/en.lua
new file mode 100644
index 000000000..9a3756cee
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/locales/en.lua
@@ -0,0 +1,29 @@
+Locales["en"] = {
+ ["you_paid"] = "you paid $%s to the DMV school",
+ ["go_next_point"] = "go to the next point!",
+ ["in_town_speed"] = "entered town, pay attention to your speed! Speed Limit: %s km/h",
+ ["next_point_speed"] = "go to the next point! Speed Limit: %s km/h",
+ ["stop_for_ped"] = "~r~Stop for the pedestrian crossing",
+ ["good_lets_cont"] = "Good, continue.",
+ ["stop_look_left"] = "~r~Stop and look left. Speed Limit: %s km/h",
+ ["good_turn_right"] = "Good, turn right and follow the line",
+ ["watch_traffic_lightson"] = "watch the traffic and turn on your lights!",
+ ["stop_for_passing"] = "~r~Stop for passing vehicles!",
+ ["hway_time"] = "it's time to drive on the highway! Speed Limit: %s km/h",
+ ["gratz_stay_alert"] = "i'm impressed, but don't forget to stay ~r~alert whilst driving!",
+ ["passed_test"] = "you passed the test, congratulations!",
+ ["failed_test"] = "you ~r~failed the test, better luck next time!",
+ ["theory_test"] = "theoretical Driving Test",
+ ["road_test_car"] = "driving Test",
+ ["road_test_bike"] = "motorcycle Skills Test",
+ ["road_test_truck"] = "truck Skills Test",
+ ["school_item"] = "$%s",
+ ["driving_school"] = "driving School",
+ ["press_open_menu"] = "press [E] to open the menu",
+ ["driving_school_blip"] = "driving School",
+ ["driving_test_complete"] = "driving test completed",
+ ["driving_too_fast"] = "~r~You're driving too fast, the current speed limit is: %s km/h!",
+ ["errors"] = "mistakes: ~r~%s/%s",
+ ["you_damaged_veh"] = "you damaged the vehicle",
+ ["not_enough_money"] = "You don't have enough money",
+}
diff --git a/server-data/resources/[bpt_addons]/bpt_dmvschool/locales/it.lua b/server-data/resources/[bpt_addons]/bpt_dmvschool/locales/it.lua
new file mode 100644
index 000000000..da87cab90
--- /dev/null
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/locales/it.lua
@@ -0,0 +1,29 @@
+Locales["it"] = {
+ ["you_paid"] = "hai pagato $%s alla scuola guida",
+ ["go_next_point"] = "vai al punto successivo!",
+ ["in_town_speed"] = "sei entrato in città, fai attenzione alla tua velocità! Limite di velocità: %s km/h",
+ ["next_point_speed"] = "vai al punto successivo! Limite di velocità: %s km/h",
+ ["stop_for_ped"] = "~r~Stop per il passaggio pedonale",
+ ["good_lets_cont"] = "Bene, continua.",
+ ["stop_look_left"] = "~r~Fermati e guarda a sinistra. Limite di velocità: %s km/h",
+ ["good_turn_right"] = "Bene, gira a destra e segui la linea",
+ ["watch_traffic_lightson"] = "guarda il traffico e accendi le luci!",
+ ["stop_for_passing"] = "~r~Fermati per i veicoli in transito!",
+ ["hway_time"] = "è ora di guidare in autostrada! Limite di velocità: %s km/h",
+ ["gratz_stay_alert"] = "sono impressionato, ma non dimenticare di stare in ~r~allerta mentre guidi!",
+ ["passed_test"] = "hai superato il test, congratulazioni!",
+ ["failed_test"] = "~r~non hai superato il test, buona fortuna per la prossima volta!",
+ ["theory_test"] = "Quiz teorico",
+ ["road_test_car"] = "Test pratico auto",
+ ["road_test_bike"] = "Test pratico moto",
+ ["road_test_truck"] = "Test pratico camion",
+ ["school_item"] = "$%s",
+ ["driving_school"] = "scuola guida",
+ ["press_open_menu"] = "premi [E] per aprire il menu",
+ ["driving_school_blip"] = "scuola guida",
+ ["driving_test_complete"] = "test di guida completato",
+ ["driving_too_fast"] = "~r~stai guidando troppo veloce, il limite di velocità attuale è: %s km/h!",
+ ["errors"] = "errori: ~r~%s/%s",
+ ["you_damaged_veh"] = "hai danneggiato il veicolo",
+ ["not_enough_money"] = "non hai abbastanza soldi",
+}
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/localization/it_esx_dmvschool.sql b/server-data/resources/[bpt_addons]/bpt_dmvschool/localization/it_bpt_dmvschool.sql
similarity index 98%
rename from server-data/resources/[esx_addons]/esx_dmvschool/localization/it_esx_dmvschool.sql
rename to server-data/resources/[bpt_addons]/bpt_dmvschool/localization/it_bpt_dmvschool.sql
index a506c59cd..62b054dc6 100644
--- a/server-data/resources/[esx_addons]/esx_dmvschool/localization/it_esx_dmvschool.sql
+++ b/server-data/resources/[bpt_addons]/bpt_dmvschool/localization/it_bpt_dmvschool.sql
@@ -3,4 +3,4 @@ INSERT INTO `licenses` (`type`, `label`) VALUES
('drive', 'Patente Auto'),
('drive_bike', 'Patente Moto'),
('drive_truck', 'Patente Camion')
-;
+;
\ 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
deleted file mode 100644
index 36574d1ea..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
[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
deleted file mode 100644
index 155879c2e..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/client/main.lua
+++ /dev/null
@@ -1,427 +0,0 @@
-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 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(TranslateCap("passed_test"))
- else
- ESX.ShowNotification(TranslateCap("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(TranslateCap("passed_test"))
- else
- ESX.ShowNotification(TranslateCap("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 = TranslateCap("driving_school") },
- }
-
- if not ownedLicenses["dmv"] then
- elements[#elements + 1] = {
- icon = "fas fa-car",
- title = (('%s: %s'):format(
- TranslateCap("theory_test"),
- TranslateCap("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(
- TranslateCap("road_test_car"),
- TranslateCap("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(
- TranslateCap("road_test_bike"),
- TranslateCap("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(
- TranslateCap("road_test_truck"),
- TranslateCap("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(TranslateCap("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(TranslateCap("not_enough_money"))
- end
- end, element.type)
- end
- end, function(menu)
- CurrentAction = "dmvschool_menu"
- CurrentActionMsg = TranslateCap("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 = TranslateCap("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)
- SetBlipColour(blip, 0)
- SetBlipDisplay(blip, 4)
- SetBlipScale(blip, 1.2)
- SetBlipAsShortRange(blip, true)
-
- BeginTextCommandSetBlipName("STRING")
- AddTextComponentSubstringPlayerName(TranslateCap("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(TranslateCap("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
-
- for k, v in pairs(Config.SpeedLimits) do
- if CurrentZoneType == k and speed > v then
- DriveErrors += 1
- ESX.ShowNotification(TranslateCap("driving_too_fast", v))
- ESX.ShowNotification(TranslateCap("errors", DriveErrors, Config.MaxErrors))
- sleep = (Config.SpeedingErrorDelay < 5000) and 5000 or Config.SpeedingErrorDelay
- end
- end
- end
- end
- Wait(sleep)
- end
-end)
-
-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 health = GetEntityHealth(vehicle)
- if health < LastVehicleHealth then
- DriveErrors += 1
-
- ESX.ShowNotification(TranslateCap("you_damaged_veh"))
- ESX.ShowNotification(TranslateCap("errors", DriveErrors, Config.MaxErrors))
-
- -- avoid stacking faults
- LastVehicleHealth = health
- sleep = 1500
- end
- end
- end
- Wait(sleep)
- end
-end)
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/config.lua b/server-data/resources/[esx_addons]/esx_dmvschool/config.lua
deleted file mode 100644
index 0a8c6c790..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/config.lua
+++ /dev/null
@@ -1,186 +0,0 @@
-Config = {}
-Config.DrawDistance = 10.0
-Config.MaxErrors = 5
-Config.SpeedMultiplier = 3.6
-Config.SpeedingErrorDelay = 5000 --Min: 5000ms
-Config.Locale = GetConvar('esx: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(TranslateCap('next_point_speed', Config.SpeedLimits['residence']), 5000)
- end
- },
-
- {
- Pos = {x = 271.874, y = -1370.574, z = 30.932},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = 234.907, y = -1345.385, z = 29.542},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- CreateThread(function()
- DrawMissionText(TranslateCap('stop_for_ped'), 5000)
- PlaySound(-1, 'RACE_PLACED', 'HUD_AWARDS', false, 0, true)
- FreezeEntityPosition(vehicle, true)
- Wait(4000)
-
- FreezeEntityPosition(vehicle, false)
- DrawMissionText(TranslateCap('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(TranslateCap('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(TranslateCap('good_turn_right'), 5000)
- end)
- end
- },
-
- {
- Pos = {x = 178.550, y = -1401.755, z = 27.725},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('watch_traffic_lightson'), 5000)
- end
- },
-
- {
- Pos = {x = 113.160, y = -1365.276, z = 27.725},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = -73.542, y = -1364.335, z = 27.789},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('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(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = -439.148, y = -1417.100, z = 27.704},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = -453.790, y = -1444.726, z = 27.665},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- setCurrentZoneType('freeway')
-
- DrawMissionText(TranslateCap('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(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = -900.647, y = -1986.28, z = 26.109},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = 1225.759, y = -1948.792, z = 38.718},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('go_next_point'), 5000)
- end
- },
-
- {
- Pos = {x = 1225.759, y = -1948.792, z = 38.718},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- setCurrentZoneType('town')
- DrawMissionText(TranslateCap('in_town_speed', Config.SpeedLimits['town']), 5000)
- end
- },
-
- {
- Pos = {x = 1163.603, y = -1841.771, z = 35.679},
- Action = function(playerPed, vehicle, setCurrentZoneType)
- DrawMissionText(TranslateCap('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
- }
-
-}
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql b/server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql
deleted file mode 100644
index 85257ab9b..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/esx_dmvschool.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-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_dmvschool/fxmanifest.lua b/server-data/resources/[esx_addons]/esx_dmvschool/fxmanifest.lua
deleted file mode 100644
index 106604ddc..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/fxmanifest.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-fx_version 'adamant'
-
-game 'gta5'
-
-description "A DMV School for players to get their drivers license"
-
-version '1.0'
-legacyversion '1.9.1'
-
-lua54 'yes'
-
-shared_script '@es_extended/imports.lua'
-
-server_scripts {
- '@es_extended/locale.lua',
- 'locales/*.lua',
- 'config.lua',
- 'server/main.lua'
-}
-
-client_scripts {
- '@es_extended/locale.lua',
- 'locales/*.lua',
- 'config.lua',
- 'client/main.lua'
-}
-
-ui_page 'html/ui.html'
-
-files {
- 'html/ui.html',
- 'html/dmv.png',
- 'html/styles.css',
- 'html/questions.js',
- 'html/scripts.js',
- 'html/debounce.min.js'
-}
-
-dependencies {
- 'es_extended',
- 'esx_license'
-}
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/debounce.min.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/debounce.min.js
deleted file mode 100644
index 648fe5d3c..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/debounce.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- * jQuery throttle / debounce - v1.1 - 3/7/2010
- * http://benalman.com/projects/jquery-throttle-debounce-plugin/
- *
- * Copyright (c) 2010 "Cowboy" Ben Alman
- * Dual licensed under the MIT and GPL licenses.
- * http://benalman.com/about/license/
- */
-(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
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
deleted file mode 100644
index dc0ae63fc..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_de.js
+++ /dev/null
@@ -1,91 +0,0 @@
-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
deleted file mode 100644
index 0cc0d572f..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_en.js
+++ /dev/null
@@ -1,91 +0,0 @@
-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
deleted file mode 100644
index efd705700..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_es.js
+++ /dev/null
@@ -1,91 +0,0 @@
-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_dmvschool/html/questions_fi.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fi.js
deleted file mode 100644
index 58aa65f60..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fi.js
+++ /dev/null
@@ -1,91 +0,0 @@
-var tableauQuestion = [
- {
- question: "Jos ajat 80km/h ja vastaan on tulossa asutus alue mitä teet ?",
- propositionA: "Painat kaasua että pääset mahollisimman nopeaa pois",
- propositionB: "Voit ajaa samaa vauhtia jos alueella ei ole muita autoja",
- propositionC: "Sinun pitää hidastaa",
- propositionD: "Voit jatkaa samaan malliin",
- reponse: "C"
- },
-
- {
- question: "Kun olet kääntymässä vasemmalle vihreistä valoista, näet jalankulkian jalkakäytävällä. Kummalla on lupa mennä ensin.",
- propositionA: "Jalankulkijalla koska he voivat mennä tien yli millä valoilla tahansa",
- propositionB: "Sinulla koska valo oli vihreä",
- propositionC: "Jalankulkijalla, koska hänellä palaa vihreä valo",
- propositionD: "Sinulla koska ajoneuvolla on aina oikeus ensin",
- reponse: "C"
- },
-
- {
- question: "Muualla ilmoittamatta, sallittu nopeus asutusalueella on ____ km/h.",
- propositionA: "50",
- propositionB: "55",
- propositionC: "65",
- propositionD: "70",
- reponse: "A"
- },
-
- {
- question: "Ennen jokaista kaistan vaihtoa, sinun pitäisi?",
- propositionA: "Katsoa peilit",
- propositionB: "Katsoa kuolleet kulmat",
- propositionC: "Näyttää vilkuilla mitä aijot tehdä",
- propositionD: "Kaikki yllä mainitut",
- reponse: "D"
- },
-
- {
- question: "Minkä veren alkoholipitoisuus luokitellaan päihtyneeksi?",
- propositionA: "0.2 promillea",
- propositionB: "0.8 promillea",
- propositionC: "0.5 promillea",
- propositionD: "0.4 promillea",
- reponse: "C"
- },
-
- {
- question: "Sinun on vedettävä sivuun ja pysähtyä, kunnes hälyytysajoneuvo on ajanut ohi sireenit päällä, ellei:",
- propositionA: "Sinulla ole kiirre",
- propositionB: "Jos hälyytysajoneuvolla on toisella kaistalla tilaa",
- propositionC: "Olet koulunalueella",
- propositionD: "Olet risteyksessä",
- reponse: "D"
- },
-
- {
- question: "Täytyykö poliisin vilkkuviin valoihin pysähtyä jos ne seuraavat sinua?",
- propositionA: "Ei, jos poliisilla ei ole sireenejä päällä",
- propositionB: "Kyllä",
- propositionC: "Riippuu tilanteesta",
- propositionD: "Ei",
- reponse: "B"
- },
-
- {
- question: "Mikä seuraavista on sallittua kun aloitat ohittaan ajoneuvoa?",
- propositionA: "Ajaminen lähellä ennen ohitusta",
- propositionB: "Koitat ajaa katukivetyksen kautta",
- propositionC: "Ajaminen vastakkaisella kaistalla",
- propositionD: "Nopeusrajoituksen ylittäminen",
- reponse: "A"
- },
-
- {
- question: "Ajat moottoritiellä, jonka nopeus on 120 km/h. Suurinosa liikenteestä ajaa 130km/h, joten sinun ei pitäisi ajaa nopeampaa kuin",
- propositionA: "80 kmh",
- propositionB: "40 kmh",
- propositionC: "50 kmh",
- propositionD: "120 kmh",
- reponse: "D"
- },
-
- {
- question: "Kun sinut ohittaa toinen ajoneuvo, mitä sinun EI pitäisi tehdä?",
- propositionA: "Hiljentää",
- propositionB: "Tarkistaa peilit",
- propositionC: "Katsot toista kuskia",
- propositionD: "Kiihdyttää",
- reponse: "D"
- },
-]
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
deleted file mode 100644
index 6f7f0c8ba..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_fr.js
+++ /dev/null
@@ -1,91 +0,0 @@
-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_nl.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js
deleted file mode 100644
index c141c878f..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_nl.js
+++ /dev/null
@@ -1,91 +0,0 @@
-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_dmvschool/html/questions_pl.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_pl.js
deleted file mode 100644
index cfbf8e036..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_pl.js
+++ /dev/null
@@ -1,91 +0,0 @@
-var tableauQuestion = [
- {
- question: "Jeśli masz 80 km/h, a zbliżasz się do terenu zabudowanego, musisz:",
- propositionA: "Przyspieszyć",
- propositionB: "Zahamować po czym jechać 50 km/h",
- propositionC: "Zwolnić",
- propositionD: "Zachować prędkość",
- reponse: "C"
- },
-
- {
- question: "Jeśli skręcasz w prawo na światłach bezkolizyjnych, ale widzisz przejście dla pieszych, co robisz:",
- propositionA: "Przepuszczam pieszego",
- propositionB: "Sprawdzam, czy w pobliżu nie ma innych pojazdów",
- propositionC: "Zachowuje szczególną ostrożność i przejeżdżam",
- propositionD: "Strzelam do pieszego i jadę dalej",
- reponse: "C"
- },
-
- {
- question: "Bez wcześniejszego wskazania prędkość w obszarze zabudowanym wynosi: __ km/h",
- propositionA: "40",
- propositionB: "50",
- propositionC: "60",
- propositionD: "70",
- reponse: "B"
- },
-
- {
- question: "Przed każdą zmianą pasa ruchu należy:",
- propositionA: "Spojżeć w lusterka",
- propositionB: "Sprawdź swoje martwe pole",
- propositionC: "Zasygnalizuj swoje zamiary",
- propositionD: "Wszystkie powyższe",
- reponse: "D"
- },
-
- {
- question: "Jaki poziom alkoholu we krwi NIE jest klasyfikowany jako jazda po pijanemu?",
- propositionA: "0.02%",
- propositionB: "0.19%",
- propositionC: "0.05%",
- propositionD: "0.04%",
- reponse: "A"
- },
-
- {
- question: "Kiedy możesz kontynuować jazdę na światłach?",
- propositionA: "Kiedy zaświeci się zielone",
- propositionB: "Kiedy nie ma nikogo na skrzyżowaniu",
- propositionC: "Kiedy zaświeci się żółte",
- propositionD: "Kiedy jest zielony lub czerwony ale skręcasz w prawo",
- reponse: "A"
- },
-
- {
- question: "Przewożąc ładunek gabarytowy możesz poruszać się tylko:",
- propositionA: "Drogami do tego przeznaczonymi",
- propositionB: "Nocami",
- propositionC: "Drogami ekspresowymi",
- propositionD: "Skrzyżowaniami o ruchu okrężnym",
- reponse: "B"
- },
-
- {
- question: "Posiadając prawo jazdy kategorii B możesz prowadzić :",
- propositionA: "Pojazd samochodowy o dopuszczalnej masie całkowitej nieprzekraczającej 3.5 t, z wyjątkiem autobusu i motocykla",
- propositionB: "Zespołem pojazdów złożonym z pojazdu, o którym mowa wyżej, oraz z przyczepy lekkiej",
- propositionC: "Zespołem pojazdów złożonym z pojazdu, o którym mowa wyżej, oraz z przyczepy innej niż lekka, o ile łączna dopuszczalna masa całkowita zespołu tych pojazdów nie przekracza 4250 kg",
- propositionD: "Wszystkie powyższe",
- reponse: "D"
- },
-
- {
- question: "Jedziesz autostradą, która wskazuje maksymalną prędkość 120 km/h. Większość aut jedzie z prędkością 140km/h, więc nie powinieneś jechać szybciej niż:",
- propositionA: "120 km/h",
- propositionB: "130 km/h",
- propositionC: "140 km/h",
- propositionD: "150 km/h",
- reponse: "A"
- },
-
- {
- question: "Wyprzedzając inne pojazdy należy:",
- propositionA: "Zwolnić",
- propositionB: "Trąbić na wyprzedzany pojazd",
- propositionC: "Oglądać wyprzedzany pojazd",
- propositionD: "Zwiększ prędkość",
- reponse: "D"
- },
-]
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
deleted file mode 100644
index 3413bf80d..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sr.js
+++ /dev/null
@@ -1,92 +0,0 @@
-
-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_dmvschool/html/questions_sv.js b/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sv.js
deleted file mode 100644
index 00761ddde..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/questions_sv.js
+++ /dev/null
@@ -1,91 +0,0 @@
-var tableauQuestion = [
- {
- question: "Om du ligger i 80 km/h, och kommer in i ett bostadsområde måste du:",
- propositionA: "Du accelererar",
- propositionB: "Du behåller din hastighet, om du inte passerar andra fordon",
- propositionC: "Du saktar ner",
- propositionD: "Du behåller hastigheten",
- reponse: "C"
- },
-
- {
- question: "Om du svänger höger vid ett trafikljus, men ser en fotgängare gå över vägen. Vad gör du?:",
- propositionA: "Du passerar fotgängaren",
- propositionB: "Du ser omkring dig att det inte finns några andra fordon i närheten",
- propositionC: "Du väntar tills fotgängaren passerat",
- propositionD: "Du skjuter fotgängaren och kör över han",
- reponse: "C"
- },
-
- {
- question: "Utan någon förhandsindikation, hastigheten i ett bostadsområde är: __ km/h",
- propositionA: "30 km/h",
- propositionB: "50 km/h",
- propositionC: "40 km/h",
- propositionD: "60 km/h",
- reponse: "B"
- },
-
- {
- question: "Innan varje filbyte måste du:",
- propositionA: "Kolla dina speglar",
- propositionB: "Kontrollera dina döda vinklar",
- propositionC: "Signalera dina avsikter",
- propositionD: "Alla uppskrivna",
- reponse: "D"
- },
-
- {
- question: "Vilken alkoholhalt i blodet klassas som rattfylleri?",
- propositionA: "0.05%",
- propositionB: "0.18%",
- propositionC: "0.08%",
- propositionD: "0.06%",
- reponse: "C"
- },
-
- {
- question: "När kan du fortsätta att köra vid ett trafikljus?",
- propositionA: "När det är grönt",
- propositionB: "När det inte finns någon i korsningen",
- propositionC: "Du befinner dig i en skolzon",
- propositionD: "När det är grönt och / eller rött och du svänger höger",
- reponse: "D"
- },
-
- {
- question: "En fotgängare har inte en grön gubbe lysandes, men går ändå. Vad gör du?",
- propositionA: "Du låter de passera",
- propositionB: "Du observerar innan du fortsätter",
- propositionC: "Du vinkar för att säga åt dem att gå över",
- propositionD: "Du fortsätter eftersom ditt trafikljus är grönt",
- reponse: "D"
- },
-
- {
- question: "Vad är tillåtet när man passerar ett annat fordon?",
- propositionA: "Du följer den noga för att passera den snabbare",
- propositionB: "Du passerar den utan att lämna vägbanan",
- propositionC: "Du kör på motsatt sida av vägen för att passera",
- propositionD: "Du överskrider hastighetsgränsen för att passera dem",
- reponse: "C"
- },
-
- {
- question: "Du kör på en motorväg som anger en maxhastighet på 120 km/h. Men de flesta trafikanter kör i 125 km/h, så du ska inte köra fortare än:",
- propositionA: "120 km/h",
- propositionB: "125 km/h",
- propositionC: "130 km/h",
- propositionD: "110 km/h",
- reponse: "A"
- },
-
- {
- question: "När du blir omkörd av ett annat fordon är det viktigt att INTE göra det:",
- propositionA: "Sakta ned",
- propositionB: "Kolla dina backspeglar",
- propositionC: "Titta på andra förare",
- propositionD: "Öka din hastighet",
- reponse: "D"
- },
-]
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html
deleted file mode 100644
index 1c841c2fd..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui.html
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Driving School
-
-
-
-
-
-
-
-
-
Welcome to Driving School
-
-
-
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.
-
- 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.
-
- 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!
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_de.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_de.html
deleted file mode 100644
index d21f5b3d0..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_de.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Fahrschule
-
-
-
-
-
-
-
-
-
Willkommen zur Fahrschule!
-
-
-
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!
-
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.
-
- 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.
-
- 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!
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_es.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_es.html
deleted file mode 100644
index ce2cf51c2..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_es.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Escuela de Conducción
-
-
-
-
-
-
-
-
-
Bienvenido a la Escuela de Conducción
-
-
-
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_dmvschool/html/ui_fi.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fi.html
deleted file mode 100644
index 5e6793888..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fi.html
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Autokoulu
-
-
-
-
-
-
-
-
-
Tervetuloa autokouluun
-
-
-
Vaadimme kaikilta kansalaisilta että pääset läpi teoriaoppitestin ennen kuin voit saada voimassa olevan
- ajokortin.
- Varaa aikaa ja vastaa maalaisjärjellä, älä yritä vastata tuurilla.
-
-
-
- Teoriakoe
- - Teoriakoe maksaa 200 € ja siitä ei voi saada rahoja takaisin jos epäonnistut
- - Älä huoli, Autokoulu antaa maksaa luotolla, mutta älä ota liian paljon luottoa
- - Jos epäonnistut testissä, et voi ottaa sitä heti uudelleen, palaa takaisin toisella kertaa yrittään
- uudelleen.
-
- Inssi
- - Ajokortti vaihtoehtoja on useita ja hinnat vaihtelee niitten mukaan.
- - Inssin päätavote on kiinittää huomiota yksityiskohtiin, ympäristöön ja liikenteeseen. Älä myöskään kolaroi!
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html
deleted file mode 100644
index 725cc3dea..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_fr.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Auto-école
-
-
-
-
-
-
-
-
-
Bienvenue à l’école de conduite
-
-
-
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!
-
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.
-
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.
-
- 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 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!
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_pl.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_pl.html
deleted file mode 100644
index 653ab9cd9..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_pl.html
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Szkoła Jazdy
-
-
-
-
-
-
-
-
-
Witaj w szkole jazdy.
-
-
-
Wszyscy mieszkańcy naszej wyspy muszą zdać egzamin zanim zaczną jeździć po ulicach.
- Nie spiesz się, odpowiadaj zgodnie z polskimi przepisami i nie odpowiadaj losowo.
-
- Egzamin teoretyczny
- - Test teoretyczny kosztuje 200 $, kwota uiszczana za każde podejście.
- - Jeśli nie zdasz za pierwszym razem możesz przystąpić ponownie
- - Nie obawiaj się, szkoła jazdy akceptuje kredyt, ale uważaj, aby nie zadłużać się za bardzo.
- - Jeśli nie zaliczysz egzaminu teoretycznego, nie możesz przystąpić do egzaminu praktycznego.
-
- Egzamin praktycznyt
- - Egzamin praktyczny kosztuje 500 $, tak jak w przypadku praktyki kwota uiszczana jest za każde podejście.
- - Zachowaj czujność podczas jazdy i unikaj wypadków!
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_sr.html b/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_sr.html
deleted file mode 100644
index 429f16791..000000000
--- a/server-data/resources/[esx_addons]/esx_dmvschool/html/ui_sr.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Škola Vožnje
-
-
-
-
-
-
-
-
-
Dobrodošli u Auto Školu
-
-
-
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!
-
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.
-
- 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.
-
- 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!
-