Nouveau : la Piwi 80 débarque sur FiveM →
La FactorY Discord
Documentation des scripts

YF-Fleeca : documentation

YF-Fleeca est un braquage en équipe complet : on achète un plan, on neutralise les caméras, on ouvre le coffre avec les vrais mini-jeux de GTA, on vide la table et on sème la police. Tout est tenu par le serveur et partagé entre les joueurs.

v1.0.0ESX · QBCore · Qboxsans frameworkox_inventoryox_target

YF-Fleeca – 36 €

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

RessourceRôle
ox_libNotifications, menus, échanges client-serveur.
ox_inventoryPlans, outils, clé USB, et le liquide en mode sans framework.
ox_targetVendeur 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.

Build de jeu 2189 minimum

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.

  1. Déposer la ressource

    Récupérez YF-Fleeca sur le portail Cfx.re (voir Récupérer ses achats). Copiez le dossier YF-Fleeca dans vos ressources, sans le renommer : la version protégée est liée à ce nom. Ajoutez-le à votre server.cfg, après ses dépendances et votre framework.

    server.cfg
    ensure ox_lib
    ensure ox_inventory
    ensure ox_target
    # ensure es_extended / qb-core / qbx_core
    ensure YF-Fleeca
  2. Déclarer les objets

    Ajoutez le bloc de la section Objets à la fin de ox_inventory/data/items.lua, avant la dernière accolade.

  3. Copier les images

    Copiez les 11 images yf_*.png du dossier install/images dans ox_inventory/web/images.

  4. Donner les permissions

    Les commandes staff passent par une permission ACE. En mode sans framework, la police aussi.

    server.cfg
    add_ace group.admin yf-fleeca.admin allow
    # sans framework seulement :
    add_ace group.police yf-fleeca.police allow
  5. Ré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 dans server/dispatch_custom.lua. Détail dans Configuration.

  6. 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.

ox_inventory/data/items.lua
-- 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.",
},
ObjetRôlePoids
Plan d'attaque [Intimidation]
yf_plan_teller
Plan : intimidation50 g
Plan d'attaque [Piratage]
yf_plan_laptop
Plan : piratage50 g
Plan d'attaque [Crochetage]
yf_plan_safecrack
Plan : crochetage50 g
Plan d'attaque [Explosifs]
yf_plan_bomb
Plan : explosifs50 g
Plan d'attaque [Perceuse]
yf_plan_thermaldrill
Plan : perceuse50 g
Ordinateur de piratage
yf_fleeca_laptop
Outil : piratage2 500 g
Kit de crochetage de coffre
yf_fleeca_crackkit
Outil : crochetage1 000 g
Charge explosive
yf_fleeca_charge
Outil : explosifs (×2)1 000 g
Perceuse thermique
yf_fleeca_drill
Outil : perceuse6 000 g
Perceuse à coffrets
yf_fleeca_boxdrill
Bonus : perçage du coffret3 000 g
Clé USB compromettante
yf_fleeca_usb
Bonus : à livrer au contact50 g

Déroulé d'un braquage

Valeurs par défaut du config.

3 200 $le planacheté au vendeurapproche tirée au sort
[E]le lancementà la porteéquipe à moins de 15 m
5camérasà détruirerepérées sur la carte
1coffreouvert selon l'approchedu plan
8–12 k$la tableune pileramassée par le chef
150 mla fuitetoute l'équipeloin de l'agence

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.

yf_plan_teller

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.
yf_plan_laptop · yf_fleeca_laptop

Piratage

  • Ordinateur posé sur le boîtier de la porte.
  • Mini-jeu Hacking_PC du jeu : ouvrir le bon programme, puis la connexion et le mot de passe.
  • Un essai raté ramène au bureau.
yf_plan_safecrack · yf_fleeca_crackkit

Crochetage

  • Cadran posé sur la porte du coffre.
  • Tournez à droite puis à gauche, cran par cran, à l'écoute du déclic.
  • E pour abandonner.
yf_plan_bomb · yf_fleeca_charge ×2

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.
yf_plan_thermaldrill · yf_fleeca_drill

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.
Otages

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églageDéfautEffet
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.minOnDuty4Policiers en service requis pour lancer un braquage. Mettez 0 pour tester seul.
Config.loot8000 – 12000min 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.planVendorLe 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.chance25Pourcentage de braquages avec le coffret bonus, de 0 (jamais) à 100 (toujours).
Config.contactlocations : 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 $).
Relever une position

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.

shared/config.lua
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 :

FrameworkPolicier en service
ESXMétier de Config.police.jobs, et en service si votre ESX gère le service.
QBCore · QboxMétier de Config.police.jobs avec onduty.
Sans frameworkJoueur 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 alertTypeContenu
titlestringTitre traduit, « Braquage Fleeca ».
messagestringTexte traduit avec le nom de l'agence.
bankstringNom de l'agence, par exemple 'Legion Square'.
coordsvector3Position de l'agence.
codestringCode radio, '10-90'.
durationnumberDurée de vie conseillée de l'alerte, en secondes (600).
bliptable{ sprite = 118, color = 1, scale = 1.2 } : blip braquage de banque, rouge.
jobstableMétiers police de Config.police.jobs.
policetableIds 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.

server/dispatch_custom.lua
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
end

Modèle pour un autre script, à adapter à son export :

server/dispatch_custom.lua
if GetResourceState('mon-dispatch') == 'started' then
    exports['mon-dispatch']:SendAlert({
        title = alert.title,
        message = alert.message,
        coords = alert.coords,
        jobs = alert.jobs,
    })
    return true
end

Commandes staff

Disponibles en console serveur et en jeu pour les joueurs ayant la permission yf-fleeca.admin.

CommandeEffet
fleecastatusPoliciers en service, et état de chaque agence : libre, en cours (durée, taille de l'équipe) ou en recharge.
fleecaresetAnnule 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.lua en locales/de.lua ;
  • remplacez Locales['en'] par Locales['de'] et traduisez les phrases ;
  • gardez les %s et %d dans 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.

  1. Rejoignez le Discord La FactorY.
  2. Ouvrez un ticket en indiquant le produit.
  3. L'équipe vous répond rapidement pour finaliser l'achat.
Ouvrir Discord