diff --git a/[esx_addons]/esx_dmvschool/README.md b/[esx_addons]/esx_dmvschool/README.md index 43af3acc..cfed3b4b 100644 --- a/[esx_addons]/esx_dmvschool/README.md +++ b/[esx_addons]/esx_dmvschool/README.md @@ -1,36 +1,15 @@ # esx_dmvschool + Realistic DMV school for ESX ## Requirements -- [esx_license](https://github.com/ESX-Org/esx_license) -## Download & Installation +- [esx_license](https://github.com/esx-framework/esx-legacy/tree/main/%5Besx_addons%5D/esx_license) -### Using [fvm](https://github.com/qlaffont/fvm-installer) -``` -fvm install --save --folder=esx esx-org/esx_dmvschool -``` +## Legal -### Using Git -``` -cd resources -git clone https://github.com/ESX-Org/esx_dmvschool [esx]/esx_dmvschool -``` - -### Manually -- Download https://github.com/ESX-Org/esx_dmvschool/archive/master.zip -- Put it in the `[esx]` directory - -## Installation -- Import `esx_dmvschool.sql` in your database -- Add this in your `server.cfg`: - -``` -start esx_dmvschool -``` - -# Legal ### License + esx_dmvschool - realistic DMV school for ESX Copyright (C) 2015-2022 Jérémie N'gadi @@ -39,4 +18,4 @@ This program Is free software: you can redistribute it And/Or modify it under th 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 +You should have received a copy Of the GNU General Public License along with this program. If Not, see . diff --git a/[esx_addons]/esx_dmvschool/client/main.lua b/[esx_addons]/esx_dmvschool/client/main.lua index 8f986ba9..6c449b0d 100644 --- a/[esx_addons]/esx_dmvschool/client/main.lua +++ b/[esx_addons]/esx_dmvschool/client/main.lua @@ -215,99 +215,30 @@ end) -- Display markers CreateThread(function() while true do - Wait(0) - - local coords = GetEntityCoords(PlayerPedId()) + 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 - end -end) - --- Enter / Exit marker events -CreateThread(function() - while true do - - Wait(100) - - local coords = GetEntityCoords(PlayerPedId()) - 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 - 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 - end -end) - --- Block UI -CreateThread(function() - while true do - Wait(0) if CurrentTest == 'theory' then - local playerPed = PlayerPedId() - + + 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 - else - Wait(500) end - end -end) - --- Key Controls -CreateThread(function() - while true do - Wait(0) - - if CurrentAction then - ESX.ShowHelpNotification(CurrentActionMsg) - - if IsControlJustReleased(0, 38) then - if CurrentAction == 'dmvschool_menu' then - OpenDMVSchoolMenu() - end - - CurrentAction = nil - end - else - Wait(500) - end - end -end) - --- Drive test -CreateThread(function() - while true do - - Wait(0) if CurrentTest == 'drive' then - local playerPed = PlayerPedId() - local coords = GetEntityCoords(playerPed) + sleep = 0 local nextCheckPoint = CurrentCheckPoint + 1 if Config.CheckPoints[nextCheckPoint] == nil then @@ -325,7 +256,6 @@ CreateThread(function() StopDriveTest(false) end else - if CurrentCheckPoint ~= LastCheckPoint then if DoesBlipExist(CurrentBlip) then RemoveBlip(CurrentBlip) @@ -349,20 +279,51 @@ CreateThread(function() CurrentCheckPoint = CurrentCheckPoint + 1 end end - else - -- not currently taking driver test - Wait(500) 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 - Wait(0) + local sleep = 1500 if CurrentTest == 'drive' then - + sleep = 0 local playerPed = PlayerPedId() if IsPedInAnyVehicle(playerPed, false) then @@ -402,9 +363,7 @@ CreateThread(function() Wait(1500) end end - else - -- not currently taking driver test - Wait(500) end + Wait(sleep) end end) diff --git a/[esx_addons]/esx_dmvschool/config.lua b/[esx_addons]/esx_dmvschool/config.lua index fb0530bf..b817bdf2 100644 --- a/[esx_addons]/esx_dmvschool/config.lua +++ b/[esx_addons]/esx_dmvschool/config.lua @@ -1,5 +1,5 @@ Config = {} -Config.DrawDistance = 100.0 +Config.DrawDistance = 10.0 Config.MaxErrors = 5 Config.SpeedMultiplier = 3.6 Config.Locale = 'en' diff --git a/[esx_addons]/esx_dmvschool/esx_dmvschool.sql b/[esx_addons]/esx_dmvschool/esx_dmvschool.sql index 3f82f9a8..85257ab9 100644 --- a/[esx_addons]/esx_dmvschool/esx_dmvschool.sql +++ b/[esx_addons]/esx_dmvschool/esx_dmvschool.sql @@ -1,5 +1,3 @@ -USE `es_extended`; - INSERT INTO `licenses` (`type`, `label`) VALUES ('dmv', 'Code de la route'), ('drive', 'Permis de conduire'), diff --git a/[esx_addons]/esx_dmvschool/server/main.lua b/[esx_addons]/esx_dmvschool/server/main.lua index db4ee0ad..f360c7fd 100644 --- a/[esx_addons]/esx_dmvschool/server/main.lua +++ b/[esx_addons]/esx_dmvschool/server/main.lua @@ -10,7 +10,6 @@ ESX.RegisterServerCallback('esx_dmvschool:canYouPay', function(source, cb, type) end end) - AddEventHandler('esx:playerLoaded', function(source) TriggerEvent('esx_license:getLicenses', source, function(licenses) TriggerClientEvent('esx_dmvschool:loadLicenses', source, licenses)