Présentation
- Les 6 agences Fleeca de la carte, sans MLO à installer.
- 5 approches : intimidation, piratage, crochetage, explosifs, perceuse thermique.
- Mini-jeux du jeu (piratage
Hacking_PC, cadran de coffre, perceuse), aucune barre de progression. - Guichetier, otages paniqués, caméras à détruire, porte du coffre animée.
- Bonus aléatoire : un coffret à percer, une clé USB à livrer à un contact.
- ESX, QBCore, Qbox ou sans framework, détecté tout seul.
- Dispatch police branchable sur votre script, alerte intégrée sinon.
- Français et anglais inclus, sous-titres anglais pour les voix.
Prérequis
| Ressource | Rôle |
|---|---|
ox_lib | Notifications, menus, échanges client-serveur. |
ox_inventory | Plans, outils, clé USB, et le liquide en mode sans framework. |
ox_target | Vendeur de plans, table d'argent, otages, contact. |
| Framework (facultatif) | es_extended, qb-core ou qbx_core : liquide et métier de police. Sans framework, voir Police et dispatch. |
Aucune base de données n'est nécessaire : rien n'est enregistré en SQL.
La pile d'argent et l'animation de ramassage viennent du DLC Cayo Perico Heist. Réglez sv_enforceGameBuild 2189 ou plus dans votre server.cfg.
OneSync doit être activé : le serveur vérifie la position des joueurs à chaque étape.
Installation
Six étapes, dans cet ordre.
Déposer la ressource
Récupérez YF-Fleeca sur le portail Cfx.re (voir Récupérer ses achats). Copiez le dossier
YF-Fleecadans vos ressources, sans le renommer : la version protégée est liée à ce nom. Ajoutez-le à votreserver.cfg, après ses dépendances et votre framework.server.cfgensure ox_lib ensure ox_inventory ensure ox_target # ensure es_extended / qb-core / qbx_core ensure YF-FleecaDéclarer les objets
Ajoutez le bloc de la section Objets à la fin de
ox_inventory/data/items.lua, avant la dernière accolade.Copier les images
Copiez les 11 images
yf_*.pngdu dossierinstall/imagesdansox_inventory/web/images.Donner les permissions
Les commandes staff passent par une permission ACE. En mode sans framework, la police aussi.
server.cfgadd_ace group.admin yf-fleeca.admin allow # sans framework seulement : add_ace group.police yf-fleeca.police allowRégler le config
Ouvrez
shared/config.lua: langue, métiers de police, nombre de policiers requis, vendeur de plans, lieux du contact. Branchez votre dispatch dansserver/dispatch_custom.lua. Détail dans Configuration.Redémarrer le serveur
Un redémarrage complet est nécessaire la première fois, pour charger les nouveaux objets. La console affiche le framework détecté :
[yf-fleeca] framework : esx.
Objets
11 objets : les cinq plans d'attaque, les outils remis au lancement, et la clé USB du bonus.
-- YF-Fleeca
['yf_plan_teller'] = {
label = "Plan d'attaque [Intimidation]",
weight = 50,
stack = true,
close = true,
description = "Plan d'un braquage Fleeca par intimidation du guichetier. Consommé au lancement.",
},
['yf_plan_laptop'] = {
label = "Plan d'attaque [Piratage]",
weight = 50,
stack = true,
close = true,
description = "Plan d'un braquage Fleeca par piratage du coffre. Remis au lancement contre l'ordinateur de piratage.",
},
['yf_plan_safecrack'] = {
label = "Plan d'attaque [Crochetage]",
weight = 50,
stack = true,
close = true,
description = "Plan d'un braquage Fleeca par crochetage du coffre. Remis au lancement contre le kit de crochetage.",
},
['yf_plan_bomb'] = {
label = "Plan d'attaque [Explosifs]",
weight = 50,
stack = true,
close = true,
description = "Plan d'un braquage Fleeca aux explosifs. Remis au lancement contre les charges.",
},
['yf_plan_thermaldrill'] = {
label = "Plan d'attaque [Perceuse]",
weight = 50,
stack = true,
close = true,
description = "Plan d'un braquage Fleeca à la perceuse thermique. Remis au lancement contre la perceuse.",
},
['yf_fleeca_laptop'] = {
label = "Ordinateur de piratage",
weight = 2500,
stack = false,
close = true,
description = "Sert à pirater la porte du coffre d'une Fleeca.",
},
['yf_fleeca_crackkit'] = {
label = "Kit de crochetage de coffre",
weight = 1000,
stack = false,
close = true,
description = "Sert à crocheter la porte du coffre d'une Fleeca.",
},
['yf_fleeca_charge'] = {
label = "Charge explosive",
weight = 1000,
stack = true,
close = true,
description = "Se pose sur la porte du coffre d'une Fleeca.",
},
['yf_fleeca_drill'] = {
label = "Perceuse thermique",
weight = 6000,
stack = false,
close = true,
description = "Se monte sur la porte du coffre d'une Fleeca.",
},
['yf_fleeca_boxdrill'] = {
label = "Perceuse à coffrets",
weight = 3000,
stack = false,
close = true,
description = "Perce les coffrets du mur de coffres d'une Fleeca.",
},
['yf_fleeca_usb'] = {
label = "Clé USB compromettante",
weight = 50,
stack = true,
close = true,
description = "Clé USB sortie d'un coffret de la Fleeca. Un contact paie cher pour la récupérer.",
},| Objet | Rôle | Poids |
|---|---|---|
Plan d'attaque [Intimidation]yf_plan_teller | Plan : intimidation | 50 g |
Plan d'attaque [Piratage]yf_plan_laptop | Plan : piratage | 50 g |
Plan d'attaque [Crochetage]yf_plan_safecrack | Plan : crochetage | 50 g |
Plan d'attaque [Explosifs]yf_plan_bomb | Plan : explosifs | 50 g |
Plan d'attaque [Perceuse]yf_plan_thermaldrill | Plan : perceuse | 50 g |
Ordinateur de piratageyf_fleeca_laptop | Outil : piratage | 2 500 g |
Kit de crochetage de coffreyf_fleeca_crackkit | Outil : crochetage | 1 000 g |
Charge explosiveyf_fleeca_charge | Outil : explosifs (×2) | 1 000 g |
Perceuse thermiqueyf_fleeca_drill | Outil : perceuse | 6 000 g |
Perceuse à coffretsyf_fleeca_boxdrill | Bonus : perçage du coffret | 3 000 g |
Clé USB compromettanteyf_fleeca_usb | Bonus : à livrer au contact | 50 g |
Déroulé d'un braquage
Valeurs par défaut du config.
L'alarme part 30 s après le lancement. Une agence braquée se recharge en 60 min ; un seul braquage Fleeca à la fois en ville.
Le chef
Celui qui lance le braquage en est le chef : il consomme son plan, reçoit les outils, ramasse l'argent de la table et perce le coffret bonus. Toute l'équipe voit les objectifs. Si le chef se déconnecte, un autre membre prend sa place.
L'échec
Le braquage échoue si plus aucun membre n'est en état d'agir à moins de 35 m de l'entrée pendant 15 s, avant que la table soit vidée. Il est aussi clos d'office au bout de 30 min. Une carte discrète en haut de l'écran annonce la réussite ou l'échec, sans gêner la conduite.
Les approches
Le plan d'attaque décide comment s'ouvre le coffre. Si le chef porte plusieurs plans, il choisit au lancement.
Intimidation
- Aucun outil : il faut braquer le guichetier.
- Viser et tirer font monter la jauge d'intimidation.
- Plus il a peur, plus vite il ouvre le coffre. Suivez-le en le gardant en joue.
Piratage
- Ordinateur posé sur le boîtier de la porte.
- Mini-jeu
Hacking_PCdu jeu : ouvrir le bon programme, puis la connexion et le mot de passe. - Un essai raté ramène au bureau.
Crochetage
- Cadran posé sur la porte du coffre.
- Tournez à droite puis à gauche, cran par cran, à l'écoute du déclic.
- E pour abandonner.
Explosifs
- Deux charges à poser sur la porte, clic gauche.
- Mettez-vous à couvert dans le hall, puis E pour déclencher.
- Les bips accélèrent pendant 6 s, puis la porte saute. L'équipe ne prend pas de dégâts.
Perceuse thermique
- La perceuse se monte sur la porte et fore pendant 60 s.
- Pendant ce temps, gardez les otages en joue : si la jauge d'intimidation tombe, un otage déclenche l'alarme.
- Démontez la perceuse à la fin (E) pour ouvrir le coffre.
Trois clients sont présents dans chaque agence. L'équipe peut les libérer avec ox_target : ils sortent mains en l'air puis s'enfuient, de quoi négocier avec la police.
Bonus et contact
Une fois sur quatre, un renseignement signale un coffret sensible dans le mur de coffres. Le chef reçoit une perceuse à coffrets au lancement.
- Percer le coffret : clic gauche maintenu pour le moteur, souris vers le haut pour pousser.
- Le coffret contient une clé USB compromettante, marquée au nom du chef : lui seul peut la livrer.
- Un contact apparaît sur un lieu tiré au sort parmi ceux du config. L'équipe reçoit l'itinéraire GPS dès le perçage.
- Le contact paie 5 000 $ par clé, en liquide, avec une courte cinématique de remise.
Le contact n'existe que pendant un braquage avec bonus, ou tant qu'une clé n'a pas été livrée. Il reste au même endroit jusque-là, puis le prochain tirage évite le même lieu.
Configuration
shared/config.lua est le seul fichier de réglages à modifier, commenté en français et en anglais. Une valeur invalide est signalée en console au démarrage et remplacée par sa valeur par défaut.
| Réglage | Défaut | Effet |
|---|---|---|
Config.locale | 'fr' | Langue des textes affichés : 'fr' ou 'en'. Voir Langues. |
Config.framework | 'auto' | 'auto' détecte qbx_core, puis qb-core, puis es_extended, sinon passe en sans framework. Pour forcer : 'esx', 'qb', 'qbx', 'standalone'. |
Config.money.item | 'money' | Sans framework seulement : l'objet ox_inventory qui sert de liquide. Avec un framework, c'est le liquide du framework. |
Config.admin.ace | 'yf-fleeca.admin' | Permission ACE qui donne accès aux commandes staff. |
Config.police.jobs | { 'police', 'sheriff' } | Noms techniques des métiers comptés comme police, avec ESX, QBCore ou Qbox. Ils reçoivent l'alerte intégrée et comptent pour le minimum de policiers. |
Config.police.ace | 'yf-fleeca.police' | Sans framework seulement : un joueur ayant cette permission ACE compte comme policier en service. |
Config.police.minOnDuty | 4 | Policiers en service requis pour lancer un braquage. Mettez 0 pour tester seul. |
Config.loot | 8000 – 12000 | min et max du liquide de la table. Le montant est tiré par le serveur et n'est jamais envoyé au client avant le ramassage. |
Config.planVendor | Le PNJ qui vend les plans, à une seule position : coords en vec4(x, y, z, cap), et price, le prix d'un plan en liquide (3 200 $). Son siège suit sa position tout seul. Aucun blip : l'adresse se transmet entre joueurs. | |
Config.bonus.chance | 25 | Pourcentage de braquages avec le coffret bonus, de 0 (jamais) à 100 (toujours). |
Config.contact | locations : lieux possibles du contact qui rachète la clé USB, en vec4(x, y, z, cap) ; 12 fournis, ajoutez ou retirez-en librement. reward : paiement par clé livrée, tiré entre min et max (5 000 $). |
Placez-vous debout à l'endroit voulu, tourné dans la direction souhaitée, puis lisez vos coordonnées et votre cap avec votre menu admin (ou GetEntityCoords(PlayerPedId()) et GetEntityHeading(PlayerPedId())). La hauteur z attendue est celle d'un joueur debout.
Fichier livré
Le fichier complet avec ses valeurs par défaut. Recopiez-le pour revenir à la configuration d'origine.
Config = {}
Config.locale = 'fr'
Config.framework = 'auto'
Config.money = { item = 'money' }
Config.admin = { ace = 'yf-fleeca.admin' }
Config.police = {
jobs = { 'police', 'sheriff' },
ace = 'yf-fleeca.police',
minOnDuty = 4,
}
Config.planVendor = {
coords = vec4(-358.2050, 16.1889, 46.3549, 258.7397),
price = 3200,
}
Config.loot = {
min = 8000,
max = 12000,
}
Config.bonus = {
chance = 25,
}
Config.contact = {
locations = {
vec4(1085.0905, -2287.8787, 30.2286, 262.7219),
vec4(143.0727, -3075.3372, 5.8963, 180.3207),
vec4(-564.8896, -2322.7942, 13.9146, 318.2265),
vec4(176.4104, -686.3036, 33.1230, 158.1722),
vec4(-372.4448, -92.6789, 45.6637, 254.9622),
vec4(-1024.3159, 828.6182, 172.3921, 4.4594),
vec4(2340.9258, 3140.4905, 48.2087, 261.8160),
vec4(1536.9336, 3589.5247, 38.7665, 123.9719),
vec4(-510.1786, 4366.8784, 67.6254, 170.0338),
vec4(1979.6206, 5176.8965, 47.6391, 219.5273),
vec4(1711.2861, 6432.3477, 32.7621, 332.8784),
vec4(2.6436, 6279.2295, 31.3743, 217.8062),
},
reward = { min = 5000, max = 5000 },
}Police et dispatch
Qui compte comme policier dépend du framework :
| Framework | Policier en service |
|---|---|
| ESX | Métier de Config.police.jobs, et en service si votre ESX gère le service. |
| QBCore · Qbox | Métier de Config.police.jobs avec onduty. |
| Sans framework | Joueur ayant la permission ACE yf-fleeca.police. |
Brancher votre dispatch
server/dispatch_custom.lua n'est pas chiffré. La fonction CustomDispatch(alert) est appelée à chaque alarme : envoyez l'alerte avec votre script et rendez true. Si elle rend false, ou si votre code plante, l'alerte intégrée prend le relais : notification et blip clignotant aux policiers en service.
La fonction tourne côté serveur, 30 s après le lancement du braquage. Utilisez l'export serveur de votre script de dispatch.
Champ de alert | Type | Contenu |
|---|---|---|
title | string | Titre traduit, « Braquage Fleeca ». |
message | string | Texte traduit avec le nom de l'agence. |
bank | string | Nom de l'agence, par exemple 'Legion Square'. |
coords | vector3 | Position de l'agence. |
code | string | Code radio, '10-90'. |
duration | number | Durée de vie conseillée de l'alerte, en secondes (600). |
blip | table | { sprite = 118, color = 1, scale = 1.2 } : blip braquage de banque, rouge. |
jobs | table | Métiers police de Config.police.jobs. |
police | table | Ids serveur des policiers en service à cet instant. |
Fichier livré
Il contient un exemple prêt à l'emploi pour lb-tablet, utilisé seulement si lb-tablet est démarré. Ajoutez votre dispatch sur le même modèle, avant le return false final.
function CustomDispatch(alert)
if GetResourceState('lb-tablet') == 'started' then
for _, job in ipairs(alert.jobs) do
exports['lb-tablet']:AddDispatch({
priority = 'high',
code = alert.code,
title = alert.title,
description = alert.message,
location = { label = alert.bank, coords = vec2(alert.coords.x, alert.coords.y) },
time = alert.duration,
job = job,
blip = {
sprite = alert.blip.sprite,
size = alert.blip.scale,
color = alert.blip.color,
shortRange = true,
label = alert.title,
flashes = true,
},
})
end
return true
end
return false
endModèle pour un autre script, à adapter à son export :
if GetResourceState('mon-dispatch') == 'started' then
exports['mon-dispatch']:SendAlert({
title = alert.title,
message = alert.message,
coords = alert.coords,
jobs = alert.jobs,
})
return true
endCommandes staff
Disponibles en console serveur et en jeu pour les joueurs ayant la permission yf-fleeca.admin.
| Commande | Effet |
|---|---|
fleecastatus | Policiers en service, et état de chaque agence : libre, en cours (durée, taille de l'équipe) ou en recharge. |
fleecareset | Annule les braquages en cours et remet toutes les agences à zéro. |
fleecareset <n> | Une seule agence : 1 Great Ocean Highway, 2 Boulevard Del Perro, 3 Hawick Avenue, 4 Alta Street, 5 Route 68, 6 Legion Square. |
Langues
Tous les textes affichés aux joueurs sont dans locales/, lisible et modifiable. Pour ajouter une langue :
- copiez
locales/en.luaenlocales/de.lua; - remplacez
Locales['en']parLocales['de']et traduisez les phrases ; - gardez les
%set%ddans le même ordre ; - mettez
Config.locale = 'de'.
Le vendeur de plans parle en français : dans les autres langues, ses répliques s'affichent en sous-titres. Les noms des objets, eux, se traduisent dans items.lua.
Dépannage
« Pas assez de policiers en service »
Vérifiez Config.police.jobs (noms exacts des métiers) et minOnDuty. Sans framework, les policiers doivent avoir la permission yf-fleeca.police. fleecastatus affiche le nombre compté. Pour tester seul, mettez minOnDuty = 0.
Un message jaune « config.lua : … » au démarrage
Une valeur de shared/config.lua est invalide : le message la nomme et indique la valeur utilisée à la place. Causes courantes : un prix écrit entre guillemets, une position qui n'est pas un vec4, une virgule oubliée entre deux lieux. Si plus aucun lieu de contact n'est valide, le bonus est désactivé.
Le mauvais framework est détecté
La console affiche [yf-fleeca] framework : … au démarrage. Démarrez YF-Fleeca après votre framework, ou forcez-le avec Config.framework.
« Accès refusé » sur les commandes staff
Il manque la permission ACE. Ajoutez add_ace group.admin yf-fleeca.admin allow (adaptez le groupe à votre serveur) puis redémarrez. Vérifiez avec test_ace player.<id> yf-fleeca.admin en console.
La pile d'argent ou l'animation de ramassage manque
Le build de jeu est trop ancien. Réglez sv_enforceGameBuild 2189 ou plus.
Les objets n'ont pas d'image dans l'inventaire
Vérifiez que les 11 fichiers yf_*.png sont dans ox_inventory/web/images, puis videz le cache de FiveM : ox_inventory garde souvent les anciennes images.
Pas d'alerte dans ma tablette police
Branchez votre dispatch dans server/dispatch_custom.lua. En cas d'erreur dans votre code, la console affiche erreur dans CustomDispatch et l'alerte intégrée est envoyée à la place.
Le contact n'est nulle part
C'est normal hors bonus : il n'apparaît que pendant un braquage avec coffret, ou tant qu'une clé USB n'a pas été livrée. Son PNJ n'est créé qu'à moins de 60 m ; suivez l'itinéraire GPS donné au perçage.
« You lack the required entitlement »
La ressource n'est pas liée au compte Cfx.re de votre clé de serveur, ou le dossier a été renommé. Téléchargez-la depuis le portail Cfx.re avec le compte qui l'a achetée (voir Récupérer ses achats) et gardez le nom YF-Fleeca.