🚨Ez-PoliceJob

Configuration :

Ce script est très simple a installer sur votre serveur FiveM, que vous soyez en localhost, sur un VPS ou bien sur une machine dédiée FiveM !

Configurez d'abord le nom de votre serveur ! - Ligne #8 :

ServerNameInRP = "WestSide",

Vous utilisez esx_identity ? - Ligne #16 :

EnableESXIdentity = true,

Vous êtes en capacité de changer le nom du job : - Ligne #22 :

JobName = "police",
SocietyName = "society_police",

Configurez l'ésthetique du Menu F6 : - Ligne #25 à #44 :

--------------------------
-- menu Interactions/F6 --
--------------------------

	MenuServiceEnOX = true, -- possibilités de passer le menu d'acceuil dédié aux citoyens en Ox ou en Rageui (false = RageUI - true =  Menu OX)

	TypeOfProgress = 'Circle', -- Customisation du OX_Progress (progress bar), 
	-- Trois choix possible :
	-- - 'Bar' = ProgressBar rectangulaire avec description
	-- - 'Circle' = ProgressBar ronde sans description mais avec pourcentage !
	-- - 'Aucune' = Aucune ProgressBar 
	
	ToucheParDefautMenuInteraction = 'F7',
	MenuTitle = 'POLICE',
	MenuColor = '6A6EFF', -- https://htmlcolorcodes.com/fr/ | Prendre les couleurs en #FF0000 !
	TempsPourLireLesDroit = 10000, -- temps pendant lequel les droit miranda sont affichés ! (en ms)
	
	-- Customisation du système de crochetage de véhicule by Benderoooo :D --
	SkillCheckForLockpick = {'easy', {areaSize = 40, speedMultiplier = 0.75}, {areaSize = 55, speedMultiplier = 1.2}, {areaSize = 40, speedMultiplier = 1.4},}, 
	-- ^^ ce referer a la documentation ox sur les skill check ! https://overextended.dev/ox_lib/Modules/Interface/Client/skillcheck

Configurez les grades de certaines fonctionnalités : - Ligne #46 & #100 :

----------------------------------------------------------
-- Grade pour acceder a certaines fonctionalités du Job --
----------------------------------------------------------
    
GradePointBoss = 7, 
GradePointArmurerie = 1, 
GradePointBracelet = 0,
-- Perms Camera
GradePointCamera = 0,
-- Perms Casier Perso
GradePointCasier = 1,
-- Perms Coffre
GradePointCoffre = 1, 
-- Perms Casier Judiciaire
GradeForCasierJudiciaire = 1, 
-- Perms Camera
GradeForSecurityCamera = 1,
-- Config Vestiaire
GradePointVestiaire = 0, 
-- Perms A.D.R
GradePourAvisDeRecherche = 1, -- grade gestion ADR
-- Grade Garage
GradePointGarage = 0,
-- Grade Garage Hélico 
GradePointGarageHeli = 1,
-- Grade Garage Bateaux
GradePointGarageBateau = 1,
-- Grade Gestion des permis
GradePointGestionPermis = 1,
-- Grade BDD 
GradePointBaseDeDonne = 1,
-- Grade ??? 
GradePointExtra = 1,
-- Grade Menu Props
GradeMenuObjets = 0,
-- Grade Menu Chien
GradeMenuChien = 1,
-- Chien Custom (chop par défaut) 
HashOfCustomDog = 351016938,
-- Grade Pour gestion interventions
GradeMenuIntervention = 7, 
GradeMenuLicences = 1,
GradeEnvoieFacture = 1, -- effectuer des factures 
-- Poser des radars
GradeMenuRadar = 0,
GradeMenuFourriere = 0, -- envoyer les véhicules en fourrière
-- Crochetage des véhicules fermés
GradeMenuCrocheter = 0, -- crocheter les véhicules fermer
GradeRecherchePlaque = 0, -- NEW CONFIG
GradePourTargetFouille = 0,
	
-- Other
GradePourCameraHelico = 1,
-- Message d'erreur si le joueur n'a pas le grade necessaires :
ErrorForGrade = "Vous n'avez pas le grade requis pour vérifier ce genre de choses, veuillez vous réferer à quelqu'un de plus haute gradés !",

Configurez les liens des webhooks Discord pour les logs : - Ligne #103 à #129:

    --------------------------------------------------
    --------- Config Logs
    --------------------------------------------------
	
    logs = {

        ---- Point menu

        Armurerie = "",
        Boss = "",
        Camera = "",
        Casier = "",
        Coffre = "",
        AcceuilPolice = "",
        GestionPermis = "",
        CasierPolice = "",
		-- 
        PriseTenueGAV = "", 
		-- ^^ -- Logs prise de tenue de G.A.V
		
        ---------------- F6 & Co

        PriseFinService = "",
        AvisDeRecherche = "",
        FactureAmende = "",

    },

Configurez la totalité des positions : - Ligne #221 à #239:

Config.pos = {
	adrmenu = vector3(840.52789306641, -1305.5543212891, 28.188259124756), -- tcheck [RAGEUI]
    menuPermisInfo = vector3(838.41033935547, -1299.1547851563, 28.187459945679), -- tchek [RAGEUI]
	armurerie = vector3(836.05755615234, -1286.8448486328, 28.281639099121), -- tcheck [RAGEUI]
	bossmenu = vector3(856.07171630859, -1300.8112792969, 28.127754211426), -- tchek [RAGEUI]
	coffreperso = vector3(852.66827392578, -1312.4132080078, 28.369386672974), -- tchek [OX]
	coffrecommun = vector3(840.61254882813, -1286.1125488281, 28.375410079956), -- tchek [OX]
    casierjudiciaire = vector3(852.87744140625, -1292.4477539063, 28.14342880249), -- tchek [RAGEUI]
    cameraview = vector3(842.84423828125, -1299.3912353516, 28.188060760498), -- tcheck [RAGEUI] 
	tenueGav = vector3(834.71368408203, -1295.3033447266, 28.244918823242), -- tchek [RAGEUI]
	vestiaire = vector3(845.10925292969, -1286.3443603516, 28.248874664307), -- tchek [OX]
    plainterdv = vector3(836.57336425781, -1289.0986328125, 28.299808502197), -- tchek [RAGEUI/OX]

	garagevoiture = vector3(870.8583984375, -1350.4412841797, 26.306943893433),
	garageheli = vector3(827.48046875, -1407.9948730469, 25.555910491943),
    garagebateau = vector3(-778.62042236328, -1494.8626708984, 1.9765459299088),

    extrascustom = { position = {x = 823.81317138672, y = -1372.2250976563, z = 26.138072967529} }
}

Configurez les tenues dédiée aux job police : - Ligne #247 à #598 :

Config.TenueName = {
    Tenue1 = '1ére Tenue',
	Tenue2 = '2ème Tenue',
	Tenue3 = '3ème Tenue',
	Tenue4 = '4ème Tenue',
	Tenue5 = '5ème Tenue',
	Tenue6 = '6ème Tenue',
	Tenue7 = '7ème Tenue',
	TenueCivile = 'Remettre votre tenue Civile',
	GPBAdd = 'Mettre un Gilet Pare-Balles',
    GPBRemove = 'Enlever le Gillet Pare-Balles'
}

Config.TenueGrade = {
    Tenue1 = 0,
	Tenue2 = 7,
	Tenue3 = 7,
	Tenue4 = 7,
	Tenue5 = 7,
	Tenue6 = 7,
	Tenue7 = 7,
	TenueCivile = 7,
	GPBAdd = 7,
    GPBRemove = 7
}

TenueCivile = function()
    ESX.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin, jobSkin)
        TriggerEvent('skinchanger:loadSkin', skin)
    end)
end

TenueSansGPB = function()
	local model = GetEntityModel(PlayerPedId())
	TriggerEvent('skinchanger:getSkin', function(skin)
		if model == GetHashKey("mp_m_freemode_01") then
			clothesSkin = {
              ['bproof_1'] = 0,
			}
		else
			clothesSkin = {
				['bproof_1'] = 0,
			}
		end
		TriggerEvent('skinchanger:loadClothes', skin, clothesSkin)
	end)
end

TenueAvecGPB = function()
	local model = GetEntityModel(PlayerPedId())
	TriggerEvent('skinchanger:getSkin', function(skin)
		if model == GetHashKey("mp_m_freemode_01") then
			clothesSkin = {
              ['bproof_1'] = 80,
			}
		else
			clothesSkin = {
				['bproof_1'] = 0,
			}
		end
		TriggerEvent('skinchanger:loadClothes', skin, clothesSkin)
	end)
end

Tenue1 = function()
	local model = GetEntityModel(PlayerPedId())
	TriggerEvent('skinchanger:getSkin', function(skin)
		if model == GetHashKey("mp_m_freemode_01") then
			clothesSkin = {
              ['tshirt_1'] = 127,  ['tshirt_2'] = 0,
              ['torso_1'] = 311,   ['torso_2'] = 0,
              ['decals_1'] = 0,    ['decals_2'] = 0,
              ['arms'] = 1,
              ['pants_1'] = 136,   ['pants_2'] = 0,
              ['shoes_1'] = 119,   ['shoes_2'] = 0,
              ['helmet_1'] = -1,   ['helmet_2'] = 0,
              ['bags_1'] = 71,      ['bags_2'] = 0,
              ['mask_1'] = 129, ['mask_2'] = 0,
              ['chain_1'] = 8,     ['chain_2'] = 0,
              ['bproof_1'] = 0,						
              ['ears_1'] = -1,      ['ears_2'] = 0,
			}
		else
			clothesSkin = {
				['bags_1'] = 0, ['bags_2'] = 0,
				['tshirt_1'] = 15,['tshirt_2'] = 2,
				['torso_1'] = 65, ['torso_2'] = 2,
				['arms'] = 36, ['arms_2'] = 0,
				['pants_1'] = 38, ['pants_2'] = 2,
				['shoes_1'] = 12, ['shoes_2'] = 6,
				['mask_1'] = 0, ['mask_2'] = 0,
				['bproof_1'] = 0,
				['chain_1'] = 0,
				['helmet_1'] = -1, ['helmet_2'] = 0,
			}
		end
		TriggerEvent('skinchanger:loadClothes', skin, clothesSkin)
	end)
end

Configurez les voitures/hélicoptères/bateaux : - Ligne #604 à #625 :

police = {
    vehicles = {                                                         -- category = Separator en rageui 
car = {                                                           -- Label = nom ig qui apparaitra sur le bouton 
    {model = "police2", label = "Dodge Charger ", minimum_grade = 0, restockprice = 1000}, 
    {model = "police3", label = "Ford Explorer ", minimum_grade = 0, restockprice = 1000}, 
    {model = "police4", label = "Vapid Cruiser (Banalisé) ", minimum_grade = 0, restockprice = 1000}, 
    {model = "police5", label = "Dodge Charger (Banalisé) ", minimum_grade = 0, restockprice = 1000}, 
    {model = "police6", label = "Chevrolet Tahoe (K9) ", minimum_grade = 0, restockprice = 1000}, 
    {model = "police7", label = "Ford Crown Vitoria ", minimum_grade = 0, restockprice = 1000}, 
    {model = "policeb", label = "Police Moto v2 (Traffic Units)", minimum_grade = 3, restockprice = 1000},	
    {model = "Riot", label = "Blinder", minimum_grade = 2, restockprice = 12000},
	},
helico = {
    {category = "↓ ~b~Hélicoptère(s) ~s~↓"},                           -- Model = nom de spawn du véhicule
    {model = "polmav", label = "Hélico du LSPD", minimum_grade = 0, restockprice = 1000}
		},
bateaux = {
    {category = "↓ ~b~Bateau(x) ~s~↓"},                           -- Model = nom de spawn du véhicule
    {model = "predator", label = "Predator du LSPD", minimum_grade = 0, restockprice = 1000}
		}
	}
}

Configurez les chiens de l'unité K9 : - Ligne #630 à #644 :

Config.Dog = {
    Job = 'police',
    Model = 351016938,
    TpDistance = 50.0,
    Sit = {
        dict = 'creatures@rottweiler@amb@world_dog_sitting@base',
        anim = 'base'
    },
    Drugs = {'coke1g', 'coke10g', 'cokebrick', 'opium1g', 'opium10g', 'opiumbrick', 'weed4g', 'weed20g', 'weedbrick', 'crack1g', 'crack10g', 'crackbrick', 'heroine1g', 'heroine10g', 'heroinebrick', 'ketamine1g', 'ketamine10g', 'ketaminebrick', 'lsd1g', 'lsd10g', 'lsdbrick', 'meth1g', 'meth10g', 'methbrick', 'morphine1g', 'morphine10g', 'morphinebrick', 'leanflacon', 'lean10g', 'lean1g', 'shitplaque', 'shit10g', 'shit1g'}, -- ajouter la drogue détectable ici ! (sous forme de nom item)
}

Strings = {
    ['no_drugs'] = 'Aucun indice de drogues trouvé.', 
    ['drugs_found'] = 'Votre chien a trouvé une trace de drogues !'
}

Configurez le système d'intéractions en ox_target : - Ligne #662 à #690 :

EzConfig                            = {}

EzConfig.EnableHandcuffTimer        = true -- Enable handcuff timer? will unrestrain player after the time ends.
EzConfig.HandcuffTimer              = 10 * 60000 -- 10 minutes.
EzConfig.NormalColor				= '6AEFFF'
EzConfig.PoliceColor				= '6A6EFF'
EzConfig.ShowNotificationText       = "La personne doit être menottée où lever les bras"
EzConfig.RequiredItem               = "Vous avez besoin de menotte ou d'une corde"
EzConfig.Unrestrained_timer         = "Vous sentez que vos menottes deviennent fragiles"
EzConfig.search                     = "Fouiller l'individu"
EzConfig.searchcops					= "Fouiller de force"
EzConfig.search_img                 = "fa-solid fa-person"
EzConfig.handcuff                   = "Menotter"
EzConfig.handcuff_img               = "fa-solid fa-handcuffs"
EzConfig.escort                     = "Escorter"
EzConfig.escort_img                 = "fa-solid fa-people-pulling"
EzConfig.putveh                     = "Mettre dans véhicule"
EzConfig.putveh_img                 = "fa-solid fa-people-pulling"
EzConfig.ID                         = "Regarder carte identité"
EzConfig.ID_img                     = "fa-solid fa-id-card"
EzConfig.ID_driver                  = "Regarder permis de conduire"
EzConfig.ID_driver_img              = "fa-solid fa-id-card-clip"
EzConfig.outveh                     = "Sortir du véhicule"
EzConfig.outveh_img                 = "fa-solid fa-people-pulling"
EzConfig.billing_title              = "Facture"
EzConfig.input                      = "Entrer une valeur"
EzConfig.billing                    = "Faire une facture"
EzConfig.billing_img                = "fa-solid fa-euro-sign"
EzConfig.Unemployed                 = "Vous êtes pas dans une entreprise"

Configurez le système d'intéractions en ox_target : - Ligne #698 à #727 :

Config.discordwebhooklink = "" -- lien logs

Config.CentreDeLaPrison = vector3(831.84643554688, -1299.0463867188, 28.245313644409) -- position du millieu de la prison pour eviter les évasions !
Config.PosRetraitDetention = vector3(835.42822265625, -1295.5721435547, 27.244916915894) -- position de Unjail
Config.PosMiseEnDetention = vector3(831.73614501953, -1301.5067138672, 27.244915008545) -- position de Jail
Config.JailTimeSyncInterval = 60000 * 1  -- pas touche
Config.NotMenuForTenueGav = false -- si false, menu ox pour ce mettre en tenue gav, si true, pas de menu et application de la tenue a la mise en détention ;)

Config.Uniforms = { -- Pour changer la tenue en prison 
	prison_wear = {
		male = {
			['tshirt_1'] = 15,  ['tshirt_2'] = 0,
			['torso_1']  = 146, ['torso_2']  = 0,
			['decals_1'] = 0,   ['decals_2'] = 0,
			['arms']     = 0,   ['pants_1']  = 3,
			['pants_2']  = 7,   ['shoes_1']  = 12,
			['shoes_2']  = 12,  ['chain_1']  = 50,
			['chain_2']  = 0
		},
		female = {
			['tshirt_1'] = 3,   ['tshirt_2'] = 0,
			['torso_1']  = 38,  ['torso_2']  = 3,
			['decals_1'] = 0,   ['decals_2'] = 0,
			['arms']     = 2,   ['pants_1']  = 3,
			['pants_2']  = 15,  ['shoes_1']  = 66,
			['shoes_2']  = 5,   ['chain_1']  = 0,
			['chain_2']  = 2
		}
	}
}

Dernière mise à jour