From 85a8e5d8a1a613214618c89a6816fc9d930cfcbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20N=27gadi?= Date: Mon, 11 May 2020 21:46:04 +0200 Subject: [PATCH] fixes for society and police --- fxmanifest.lua | 2 + modules/job_police/client/module.lua | 54 ++++++++++++++++- modules/job_police/migrations/0.sql | 89 ++++++++++++++++++++++++++++ modules/job_police/server/events.lua | 4 ++ modules/society/client/module.lua | 18 +++--- modules/society/server/events.lua | 4 +- modules/society/server/module.lua | 4 ++ 7 files changed, 162 insertions(+), 13 deletions(-) create mode 100644 modules/job_police/migrations/0.sql diff --git a/fxmanifest.lua b/fxmanifest.lua index 6e912dbd..25c204f7 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -93,6 +93,8 @@ server_exports { } dependencies { + 'spawnmanager', + 'baseevents', 'mysql-async', 'async', 'cron', diff --git a/modules/job_police/client/module.lua b/modules/job_police/client/module.lua index ed9d78dd..2ce79c09 100644 --- a/modules/job_police/client/module.lua +++ b/modules/job_police/client/module.lua @@ -158,7 +158,7 @@ self.Init = function() end - -- Helicopters + -- Helicopters for i=1, #station.Helicopters, 1 do local heli = station.Helicopters[i] @@ -194,6 +194,52 @@ self.Init = function() end + -- Boss actions + for i=1, #station.BossActions, 1 do + + local actions = station.BossActions[i] + local key = 'job_police:' .. stationName .. ':bossactions:' .. tostring(i) + + Interact.Register({ + name = key, + type = 'marker', + distance = self.Config.DrawDistance, + radius = 2.0, + pos = actions, + size = 1.0, + mtype = 22, + color = self.Config.MarkerColor, + rotate = true, + check = self.IsPoliceBoss, + }) + + AddEventHandler('esx:interact:enter:' .. key, function(data) + + ESX.ShowHelpNotification(_U('job_police:open_bossmenu')) + + local bossAction + + bossAction = function() + + TriggerEvent('esx_society:openBossMenu', 'police', function(data, menu) + menu.close() + self.CurrentAction = bossAction + end, { + wash = false + }) + + end + + self.CurrentAction = bossAction + + end) + + AddEventHandler('esx:interact:exit:' .. key, function(data) + self.CurrentAction = nil + end) + + end + end end @@ -207,7 +253,11 @@ self.RegisterControls = function() end self.IsPolice = function(playerPed, coords) - return ESX.PlayerData.job and ESX.PlayerData.job.name == 'police' + return ESX.PlayerData.job and (ESX.PlayerData.job.name == 'police') +end + +self.IsPoliceBoss = function(playerPed, coords) + return self.IsPolice() and (ESX.PlayerData.job.grade_name == 'boss') end self.CleanPlayer = function(playerPed) diff --git a/modules/job_police/migrations/0.sql b/modules/job_police/migrations/0.sql new file mode 100644 index 00000000..b6a06d86 --- /dev/null +++ b/modules/job_police/migrations/0.sql @@ -0,0 +1,89 @@ +USE `es_extended`; + +INSERT INTO `addon_account` (name, label, shared) VALUES + ('society_police', 'Police', 1) +; + +INSERT INTO `datastore` (name, label, shared) VALUES + ('society_police', 'Police', 1) +; + +INSERT INTO `addon_inventory` (name, label, shared) VALUES + ('society_police', 'Police', 1) +; + +INSERT INTO `jobs` (name, label) VALUES + ('police', 'LSPD') +; + +INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES + ('police',0,'recruit','Recrue',20,'{}','{}'), + ('police',1,'officer','Officier',40,'{}','{}'), + ('police',2,'sergeant','Sergent',60,'{}','{}'), + ('police',3,'lieutenant','Lieutenant',85,'{}','{}'), + ('police',4,'boss','Commandant',100,'{}','{}') +; + +CREATE TABLE `fine_types` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `label` varchar(255) DEFAULT NULL, + `amount` int(11) DEFAULT NULL, + `category` int(11) DEFAULT NULL, + + PRIMARY KEY (`id`) +); + +INSERT INTO `fine_types` (label, amount, category) VALUES + ('Usage abusif du klaxon',30,0), + ('Franchir une ligne continue',40,0), + ('Circulation à contresens',250,0), + ('Demi-tour non autorisé',250,0), + ('Circulation hors-route',170,0), + ('Non-respect des distances de sécurité',30,0), + ('Arrêt dangereux / interdit',150,0), + ('Stationnement gênant / interdit',70,0), + ('Non respect de la priorité à droite',70,0), + ('Non-respect à un véhicule prioritaire',90,0), + ('Non-respect d\'un stop',105,0), + ('Non-respect d\'un feu rouge',130,0), + ('Dépassement dangereux',100,0), + ('Véhicule non en état',100,0), + ('Conduite sans permis',1500,0), + ('Délit de fuite',800,0), + ('Excès de vitesse < 5 kmh',90,0), + ('Excès de vitesse 5-15 kmh',120,0), + ('Excès de vitesse 15-30 kmh',180,0), + ('Excès de vitesse > 30 kmh',300,0), + ('Entrave de la circulation',110,1), + ('Dégradation de la voie publique',90,1), + ('Trouble à l\'ordre publique',90,1), + ('Entrave opération de police',130,1), + ('Insulte envers / entre civils',75,1), + ('Outrage à agent de police',110,1), + ('Menace verbale ou intimidation envers civil',90,1), + ('Menace verbale ou intimidation envers policier',150,1), + ('Manifestation illégale',250,1), + ('Tentative de corruption',1500,1), + ('Arme blanche sortie en ville',120,2), + ('Arme léthale sortie en ville',300,2), + ('Port d\'arme non autorisé (défaut de license)',600,2), + ('Port d\'arme illégal',700,2), + ('Pris en flag lockpick',300,2), + ('Vol de voiture',1800,2), + ('Vente de drogue',1500,2), + ('Fabriquation de drogue',1500,2), + ('Possession de drogue',650,2), + ('Prise d\'ôtage civil',1500,2), + ('Prise d\'ôtage agent de l\'état',2000,2), + ('Braquage particulier',650,2), + ('Braquage magasin',650,2), + ('Braquage de banque',1500,2), + ('Tir sur civil',2000,3), + ('Tir sur agent de l\'état',2500,3), + ('Tentative de meurtre sur civil',3000,3), + ('Tentative de meurtre sur agent de l\'état',5000,3), + ('Meurtre sur civil',10000,3), + ('Meurte sur agent de l\'état',30000,3), + ('Meurtre involontaire',1800,3), + ('Escroquerie à l\'entreprise',2000,2) +; diff --git a/modules/job_police/server/events.lua b/modules/job_police/server/events.lua index 4b2d0d87..4a5f42b7 100644 --- a/modules/job_police/server/events.lua +++ b/modules/job_police/server/events.lua @@ -1,5 +1,9 @@ local self = ESX.Modules['job_police'] +AddEventHandler('esx:migrations:ensure', function(register) + register('job_police') +end) + RegisterNetEvent('esx_policejob:confiscatePlayerItem') AddEventHandler('esx_policejob:confiscatePlayerItem', function(target, itemType, itemName, amount) local _source = source diff --git a/modules/society/client/module.lua b/modules/society/client/module.lua index 7e33dd49..c201269a 100644 --- a/modules/society/client/module.lua +++ b/modules/society/client/module.lua @@ -149,9 +149,9 @@ self.OpenBossMenu = function(society, close, options) menu2.close() end) elseif data.current.value == 'manage_employees' then - OpenManageEmployeesMenu(society) + self.OpenManageEmployeesMenu(society) elseif data.current.value == 'manage_grades' then - OpenManageGradesMenu(society) + self.OpenManageGradesMenu(society) end end, function(data, menu) if close then @@ -171,9 +171,9 @@ self.OpenManageEmployeesMenu = function(society) {label = _U('society:recruit'), value = 'recruit'} }}, function(data, menu) if data.current.value == 'employee_list' then - OpenEmployeeList(society) + self.OpenEmployeeList(society) elseif data.current.value == 'recruit' then - OpenRecruitMenu(society) + self.OpenRecruitMenu(society) end end, function(data, menu) menu.close() @@ -206,17 +206,17 @@ self.OpenEmployeeList = function(society) if data.value == 'promote' then menu.close() - OpenPromoteMenu(society, employee) + self.OpenPromoteMenu(society, employee) elseif data.value == 'fire' then ESX.ShowNotification(_U('society:you_have_fired', employee.name)) ESX.TriggerServerCallback('esx_society:setJob', function() - OpenEmployeeList(society) + self.OpenEmployeeList(society) end, employee.identifier, 'unemployed', 0, 'fire') end end, function(data, menu) menu.close() - OpenManageEmployeesMenu(society) + self.OpenManageEmployeesMenu(society) end) end, society) end @@ -254,7 +254,7 @@ self.OpenRecruitMenu = function(society) ESX.ShowNotification(_U('society:you_have_hired', data.current.name)) ESX.TriggerServerCallback('esx_society:setJob', function() - OpenRecruitMenu(society) + self.OpenRecruitMenu(society) end, data.current.identifier, society, 0, 'hire') end end, function(data2, menu2) @@ -324,7 +324,7 @@ self.OpenManageGradesMenu = function(society) if amount == nil then ESX.ShowNotification(_U('society:invalid_amount')) - elseif amount > Config.MaxSalary then + elseif amount > self.Config.MaxSalary then ESX.ShowNotification(_U('society:invalid_amount_max')) else menu2.close() diff --git a/modules/society/server/events.lua b/modules/society/server/events.lua index 3b2c4880..98e4bef1 100644 --- a/modules/society/server/events.lua +++ b/modules/society/server/events.lua @@ -250,7 +250,7 @@ ESX.RegisterServerCallback('esx_society:setJobSalary', function(source, cb, job, local xPlayer = ESX.GetPlayerFromId(source) if xPlayer.job.name == job and xPlayer.job.grade_name == 'boss' then - if salary <= Config.MaxSalary then + if salary <= self.Config.MaxSalary then MySQL.Async.execute('UPDATE job_grades SET salary = @salary WHERE job_name = @job_name AND grade = @grade', { ['@salary'] = salary, ['@job_name'] = job, @@ -306,7 +306,7 @@ ESX.RegisterServerCallback('esx_society:getVehiclesInGarage', function(source, c end) ESX.RegisterServerCallback('esx_society:isBoss', function(source, cb, job) - cb(isPlayerBoss(source, job)) + cb(self.isPlayerBoss(source, job)) end) MySQL.ready(function() diff --git a/modules/society/server/module.lua b/modules/society/server/module.lua index b178ccd1..36cb61c5 100644 --- a/modules/society/server/module.lua +++ b/modules/society/server/module.lua @@ -1,6 +1,10 @@ ESX.Modules['society'] = {} local self = ESX.Modules['society'] +self.Config = ESX.EvalFile(GetCurrentResourceName(), 'modules/society/data/config.lua', { + vector3 = vector3 +})['Config'] + self.Jobs = {} self.RegisteredSocieties = {}