From 967bcc44813fdf21ce3b9534fde106b314ce6c2c Mon Sep 17 00:00:00 2001 From: Romain Lanz Date: Sat, 14 Oct 2017 14:11:18 +0200 Subject: [PATCH] chore: initial commit --- .editorconfig | 9 +++++ README.md | 15 +++++++ __resource.lua | 16 ++++++++ client/main.lua | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ config.lua | 2 + locales/en.lua | 4 ++ locales/fr.lua | 4 ++ locales/ge.lua | 4 ++ 8 files changed, 157 insertions(+) create mode 100644 .editorconfig create mode 100644 README.md create mode 100644 __resource.lua create mode 100644 client/main.lua create mode 100644 config.lua create mode 100644 locales/en.lua create mode 100644 locales/fr.lua create mode 100644 locales/ge.lua diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..4bfca33b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_size = 2 +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/README.md b/README.md new file mode 100644 index 00000000..0cc1249f --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +## ESX CruiseControl + +CruiseControl System for ESX Framework. + +Press **Y** to activate it. + +### Installation + +**Using [fvm](https://github.com/qlaffont/fvm-installer).** +```bash +fvm install --save esx_cruisecontrol +``` + +**Using Git Releases** +Download the latest release : https://github.com/ESX-Org/esx_cruisecontrol/releases diff --git a/__resource.lua b/__resource.lua new file mode 100644 index 00000000..8800d582 --- /dev/null +++ b/__resource.lua @@ -0,0 +1,16 @@ +description 'CruiseControl System for ESX' + +version '1.0.0' + +dependencies { + 'es_extended' +} + +client_scripts { + '@es_extended/locale.lua', + 'locales/fr.lua', + 'locales/en.lua', + 'locales/ge.lua', + 'client/main.lua', + 'config.lua', +} diff --git a/client/main.lua b/client/main.lua new file mode 100644 index 00000000..5e62a07c --- /dev/null +++ b/client/main.lua @@ -0,0 +1,103 @@ +local Keys = { + ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, + ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, + ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, + ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, + ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, + ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, + ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, + ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, + ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 +} + +local Player = nil +local CruisedSpeed = 0 +local CruisedSpeedKm = 0 +local VehicleVectorY = 0 + +ESX = nil + +Citizen.CreateThread(function () + while ESX == nil do + TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) + Wait(0) + end +end) + +Citizen.CreateThread(function () + while true do + Wait(0) + if IsControlJustPressed(1, Keys['Y']) and IsDriver() then + Player = GetPlayerPed(-1) + TriggerCruiseControl() + end + end +end) + +function TriggerCruiseControl () + if CruisedSpeed == 0 and IsDriving() then + if GetVehiculeSpeed() > 0 then + CruisedSpeed = GetVehiculeSpeed() + CruisedSpeedKm = TransformToKm(CruisedSpeed) + + ESX.ShowNotification(_U('activated') .. ': ~b~ ' .. CruisedSpeedKm .. ' km/h') + + Citizen.CreateThread(function () + while CruisedSpeed > 0 and IsInVehicle() == Player do + Wait(0) + + if not IsTurningOrHandBraking() and GetVehiculeSpeed() < (CruisedSpeed - 1.5) then + CruisedSpeed = 0 + ESX.ShowNotification(_U('deactivated')) + Wait(2000) + break + end + + if not IsTurningOrHandBraking() and IsVehicleOnAllWheels(GetVehicle()) and GetVehiculeSpeed() < CruisedSpeed then + SetVehicleForwardSpeed(GetVehicle(), CruisedSpeed) + end + + if IsControlJustPressed(1, Keys['Y']) then + CruisedSpeed = GetVehiculeSpeed() + CruisedSpeedKm = TransformToKm(CruisedSpeed) + end + + if IsControlJustPressed(2, 72) then + CruisedSpeed = 0 + ESX.ShowNotification(_U('deactivated')) + Wait(2000) + break + end + end + end) + end + end +end + +function IsTurningOrHandBraking () + return IsControlPressed(2, 76) or IsControlPressed(2, 63) or IsControlPressed(2, 64) +end + +function IsDriving () + return IsPedInAnyVehicle(Player, false) +end + +function GetVehicle () + return GetVehiclePedIsIn(Player, false) +end + +function IsInVehicle () + return GetPedInVehicleSeat(GetVehicle(), -1) +end + +function IsDriver () + return GetPedInVehicleSeat(GetVehiclePedIsIn(GetPlayerPed(-1), false), -1) == GetPlayerPed(-1) +end + +function GetVehiculeSpeed () + return GetEntitySpeed(GetVehicle()) +end + +function TransformToKm (speed) + return math.floor(speed * 3.6 + 0.5) +end diff --git a/config.lua b/config.lua new file mode 100644 index 00000000..85987034 --- /dev/null +++ b/config.lua @@ -0,0 +1,2 @@ +Config = {} +Config.Locale = 'fr' \ No newline at end of file diff --git a/locales/en.lua b/locales/en.lua new file mode 100644 index 00000000..6420075b --- /dev/null +++ b/locales/en.lua @@ -0,0 +1,4 @@ +Locales['en'] = { + ['activated'] = 'activated', + ['deactivated'] = 'deactivated', +} diff --git a/locales/fr.lua b/locales/fr.lua new file mode 100644 index 00000000..5d89d1a8 --- /dev/null +++ b/locales/fr.lua @@ -0,0 +1,4 @@ +Locales['fr'] = { + ['activated'] = 'activé', + ['deactivated'] = 'désactivé', +} diff --git a/locales/ge.lua b/locales/ge.lua new file mode 100644 index 00000000..c7f55a73 --- /dev/null +++ b/locales/ge.lua @@ -0,0 +1,4 @@ +Locales['ge'] = { + ['activated'] = 'aktiviert', + ['deactivated'] = 'deaktiviert', +}