README du dépôt
ox_trash_search
Auteur : CedricPoint — v1.0.0
Showcase (vidéo) : YouTube — démo ox_trash_search
Ressource pour FiveM : ox_target sur de nombreux props poubelles / bennes, inventaire dumpster ox_inventory (fouille + dépôt, non persisté au reboot).
Compteur SQL, paliers, animation + barre de progression avant ouverture.
Animation sur toutes les poubelles (vanilla + extra)
Une petite modification d’ox_inventory est appliquée sur ce dépôt : les 6 modèles vanilla appellent l’export openDumpsterWithSearch de ox_trash_search quand la ressource est démarrée (sinon repli sur OpenDumpster d’origine).
Les props « extra » utilisent déjà l’animation via ce script.
Si tu installes le script ailleurs, reprends les mêmes changements dans :
ox_inventory/modules/inventory/client.lua—onSelectduaddModel(Inventory.Dumpsters, …)ox_inventory/client.lua— raccourci inventaire secondaire sans target (blocDumpsters:includes)
Dépendances
- oxmysql
- ox_lib
- ox_target
- ox_inventory
- ESX Legacy (
es_extended) — identifiant joueur =xPlayer.identifier
Installation
1. Base de données
Exécute une fois le fichier SQL sur la même base que ton serveur :
mysql -u USER -p NOM_BASE < sql/ox_trash_search.sql
Table créée : ox_trash_search_stats
| Colonne | Rôle |
|---|---|
identifier | Identifiant ESX (clé primaire) |
search_count | Nombre total de poubelles ouvertes (comptées) |
claimed_milestones | JSON : liste des seuils déjà réclamés, ex. [10,25,50] |
last_count_at | Horodatage (anti-spam entre deux comptages) |
2. server.cfg
ensure oxmysql
ensure ox_lib
ensure ox_target
## Avant ox_inventory (loot + convars). es_extended sera chargé avant grâce aux dépendances du manifest.
ensure ox_trash_search
ensure ox_inventory
setr inventory:target 1
setr inventory:networkdumpsters 1
Sans inventory:networkdumpsters 1, beaucoup de poubelles map (entités locales) ne s’ouvrent pas. Le script peut forcer ce mode avec Config.ForceNetworkDumpsters.
3. Items optionnels
Les entrées trash_* du butin par défaut nécessitent des définitions dans ox_inventory/data/items.lua : voir install/optional_items.txt.
Fonctionnalités
Animation / fouille
Sur les props enregistrés par ox_trash_search (surtout les modèles « extra » hors des 6 vanilla), le joueur subit une barre de progression + animation (Config.SearchProgress) puis l’inventaire dumpster s’ouvre.
Les 6 poubelles vanilla gérées uniquement par ox_inventory n’ont pas cette animation (comportement inchangé côté OX).
Stats & paliers
À chaque ouverture réussie d’un inventaire dumpster (toutes sources : vanilla + script), le serveur :
- Vérifie un cooldown (
Config.StatsCooldownSeconds, défaut 8 s) pour limiter le spam. - Incrémente
search_countpour l’identifierESX. - Compare aux
Config.Milestones: si le total atteint un seuil pas encore dansclaimed_milestones, donne l’item viaexports.ox_inventory:AddItemet notifie le joueur.
Les paliers sont configurables dans config.lua (threshold, item, count, label). Tu peux remplacer WEAPON_KNIFE par lockpick ou autre selon l’équilibrage RP.
Désactive tout le SQL avec Config.EnableSearchStats = false (pas besoin de retirer la table).
Butin aléatoire (DumpsterLoot)
Toujours géré par ox_inventory (inventory:dumpsterloot). Format : { 'item', min, max, chance_sur_100 }.
Le script peut appliquer le JSON au démarrage si Config.ApplyDumpsterLootConvar = true (ox_trash_search doit démarrer avant ox_inventory).
Modes cible
extra_only: seulement les props en plus des 6 poubelles vanilla OX → pas de double option ox_target.replace_all: toute la liste ; commente alors leaddModel(Inventory.Dumpsters, …)dansox_inventory/modules/inventory/client.luapour éviter un doublon.
Avertissement joueur
Une notification rappelle que le contenu du dumpster n’est pas persisté : restart serveur = vide (y compris objets déposés).
Partage
Tu peux redistribuer ce dossier (GitHub, forum, etc.). Garde le fichier sql/ et le README pour les installations propres.
