Vue d'ensemble
L'argent circule par trois comptes : le liquide (money), la banque (bank) et l'argent sale (black_money). Les entreprises ont leur propre compte société, qui encaisse les ventes et les factures et paie les salaires.
| Brique | Ce qu'elle fait | Où ça se règle |
|---|---|---|
| Banque | Comptes, cartes et codes PIN, virements, DAB, compte d'entreprise | Panel › Banque, F10 › Économie & braquages › Banque |
| Factures | Factures et amendes, payées depuis le portefeuille | Panel › Menu F6 entreprises, page Factures du panel |
| Salaires | Paie automatique selon le grade | Panel › Salaires |
| Entreprises | Menu patron, coffre, vestiaire, recrutement | Panel › Entreprises, F10 › Sociétés, F10 › Métiers & grades |
| Supérettes LTD | Caisses tenues par des joueurs, stock, réassort, libre-service | Panel › Supérettes LTD, F10 › Commerces |
| Bars et restaurants | Commandes, préparation, retrait au comptoir | Panel › Bars & restaurants, F10 › Commerces |
| Petits jobs | Tournées payées (livreur, bus, taxi…) | Panel › Petits jobs, F10 › Petits jobs |
| Auto-école et documents | Code, examen de conduite, cartes d'identité et permis | Panel › Auto-école, Panel › Documents |
| Garages d'entreprise | Véhicules de service par métier et par grade | Panel › Garages d'entreprise, F10 › Métiers & grades |
Les menus F10 cités ici sont dans F10 › Gestion du serveur et demandent d'être en service. Pour ce que vivent les joueurs au quotidien, voir aussi Vie quotidienne.
Banque
Ce que font les joueurs
- Aux guichets de banque, touche E « Accéder à la banque » : solde, dépôt, retrait, virement vers un autre compte (IBAN), historique, contacts.
- Aux distributeurs (DAB), avec le ciblage : mêmes opérations, protégées par le code PIN de la carte.
- Au guichet entreprise (E « Banque d'entreprise ») : consultation du compte société, dépôt, retrait et versement des salaires, selon le grade.
Mise en place
Les montants et les droits se règlent dans Panel › Banque :
| Réglage | Clé | Défaut |
|---|---|---|
| Dépôt minimum / maximum | banking.minDeposit, banking.maxDeposit | 1 $ / 999 999 $ |
| Retrait minimum / maximum | banking.minWithdraw, banking.maxWithdraw | 1 $ / 999 999 $ |
| Virement minimum / maximum | banking.minTransfer, banking.maxTransfer | 1 $ / 999 999 $ |
| Transactions par page | banking.transactionsPerPage | 7 |
| Code PIN par défaut (privé) | banking.defaultPin | 0000 |
| Préfixe des IBAN | banking.ibanPrefix | LS |
| Grades : accès au compte société | banking.companyAccessGrades | boss, sousboss |
| Grades : retrait société | banking.companyWithdrawGrades | boss |
| Grades : versement des salaires | banking.companySalaryGrades | boss, sousboss |
Dans le jeu, F10 › Gestion du serveur › Économie & braquages › Banque (permission admin.economy) affiche les limites en vigueur, la liste des comptes d'entreprise avec leur IBAN et leur solde, et permet de réinitialiser un code PIN à partir de l'IBAN.
Pièges
- Noms de grades. Les trois listes de grades comparent le nom technique du grade (pas son numéro ni son libellé). Les entreprises créées depuis le menu admin reçoivent par défaut les grades
novice,employed,sous-bossetboss: avec le réglage livré (sousbosssans tiret), le Responsable n'a pas accès au compte société. Ajoutesous-bossaux listes si tu veux lui donner ce droit. banking.maxTransferest le garde-fou principal contre le vidage d'un compte volé : ne le monte pas sans raison.
Factures et amendes
Ce que font les joueurs
Un employé envoie une facture à un joueur proche (menu F6 de son entreprise, ou outil du métier : soins EMS, réparation mécano, amende police…). Le destinataire reçoit une notification avec Y pour payer et N pour refuser ; il retrouve ses factures en attente dans son portefeuille (F5). Une fois payée, la somme va sur le compte de la société émettrice.
Mise en place
Tout passe par la ressource esx_billing. Côté code, une seule fonction crée une facture :
-- cible, émetteur, société, type (« amende » = amende, sinon facture), libellé, montant
Core.createBill(targetSource, senderSource, "mecano", "mecano", "Réparation", 450)
-- depuis une autre ressource :
exports.core:createBill(targetSource, senderSource, "mecano", "mecano", "Réparation", 450)Pour un joueur hors ligne (tablette police ou EMS), Core.createOfflineBill(identifier, société, type, libellé, montant) écrit la facture directement : il la voit à sa reconnexion. Si esx_billing est arrêté, les factures sont rangées dans une table de repli (core_bills). Détails techniques : API développeur.
Les règles de la facturation du menu F6 sont dans Panel › Menu F6 entreprises :
| Réglage | Clé | Défaut |
|---|---|---|
| Montant max d'une facture | businessmenu.maxBill | 1 000 000 $ |
| Distance de facturation | businessmenu.billDistance | 5 m |
| Service requis pour facturer | businessmenu.requireService | activé |
La page Factures du panel
Communauté › Factures montre, par société, le total encaissé, le total en attente et le nombre de factures, puis la liste détaillée (libellé, joueur, société ou émetteur, montant, état). Filtres : Tout / Factures / Amendes, et En attente / Payées. Un clic sur le joueur ouvre sa fiche.
Salaires et grades
Ce que font les joueurs
À chaque intervalle, chaque joueur connecté touche sur sa banque le salaire de son grade. Hors service, il ne touche qu'une partie du salaire. Un joueur sans emploi touche l'aide sociale.
Mise en place
Les grades et leurs salaires se règlent dans F10 › Gestion du serveur › Métiers & grades (permission admin.job) : créer un métier (nom interne, nom affiché, whitelist), puis Grades & salaires (nom interne, nom affiché, rang hiérarchique, salaire). Le patron d'une entreprise peut aussi modifier les salaires depuis son menu patron, dans la limite de society.maxSalary.
Panel › Salaires :
| Réglage | Clé | Défaut |
|---|---|---|
| Paie automatique | paycheck.enabled | activé |
| Intervalle de paie | paycheck.interval | 15 min |
| Salaire hors service | paycheck.offDutyMultiplier | 50 % |
| Débiter le compte société | paycheck.fromSociety | activé |
| Aide sociale (sans emploi) | paycheck.welfare | 200 $ |
| Métiers payés par l'État | paycheck.stateJobs | police, saspn, gouvernement, ambulance, ambulancesandy |
Exemple : pour une paie toutes les 30 minutes, entièrement versée même hors service, mets paycheck.interval à 30 et paycheck.offDutyMultiplier à 100.
Pièges
- Avec Débiter le compte société activé, une entreprise sans argent ne paie pas : l'employé reçoit « Votre entreprise n'a pas pu verser votre salaire ». Les métiers de
paycheck.stateJobsne sont jamais concernés. - Désactiver Débiter le compte société crée l'argent de rien : surveille l'inflation.
- Les salaires automatiques n'apparaissent pas dans les logs d'argent (raison
Paycheckignorée par défaut, voir Logs).
Entreprises et coffres
Ce que font les joueurs
Chaque entreprise a trois points :
- Menu patron : compte de la société (déposer, retirer, transactions), employés (recruter le joueur le plus proche, promouvoir, rétrograder, licencier), grades (créer, renommer, salaires, permissions), statut ouvert / fermé.
- Coffre : un inventaire ox_inventory partagé.
- Vestiaire : enregistrer la tenue portée, la réserver à certains grades, l'enfiler.
Le menu F6 générique donne la prise de service, le statut, la facturation et les annonces (le type « club » ajoute les annonces d'ouverture, de fermeture et de soirée).
Mise en place
- F10 › Gestion du serveur › Sociétés › Créer une société (permission
admin.society) : nom interne (le métier), nom affiché, position du menu patron, du coffre, du vestiaire, blip et logo. Le métier et ses grades par défaut sont créés en même temps. - Ou depuis Métiers & grades : fiche du métier › Créer l'entreprise ici.
- Pour le menu F6, ajoute le métier à Panel › Menu F6 entreprises › Entreprises du menu F6 (
businessmenu.jobs) avec son type (basic,store,clubourestaurant).
Réglages utiles de Panel › Entreprises :
| Réglage | Clé | Défaut |
|---|---|---|
| Emplacements du coffre | society.stashSlots | 60 |
| Poids max du coffre | society.stashWeight | 1 000 000 g |
| Grades à la création | society.defaultGrades | Novice, Employé, Responsable, Patron |
| Nombre max de grades | society.maxGrades | 15 |
| Salaire max d'un grade | society.maxSalary | 5 000 $ |
| Grades verrouillés (métiers) | society.lockedGradeJobs | police |
| Métiers protégés du débauchage | society.protectedJobs | police, saspn, ambulance, ambulancesandy, gouvernement |
| Grade minimum pour ouvrir/fermer | society.statusMinGrade | 1 |
Pièges
- Un métier qui n'est pas dans
businessmenu.jobsn'a pas de menu F6, donc pas de prise de service : ses employés ne peuvent ni facturer, ni vendre si le service est obligatoire. - La taille du coffre s'applique au prochain rechargement des entreprises.
- Ne renomme pas le nom technique des grades d'un métier dont d'autres scripts dépendent : ajoute-le plutôt à
society.lockedGradeJobs.
Supérettes LTD
Ce que font les joueurs
Avec un employé. L'employé, en service (F6), cible une caisse de son magasin : Ouvrir la caisse. Il compose le panier du client, qui reçoit une demande de paiement (espèces ou carte bancaire). Une fois accepté, le client reçoit les articles et la recette va sur le compte de l'entreprise. Un responsable peut aussi Commander du stock, payé par le compte de la société.
Sans employé : le libre-service. Quand aucun employé autorisé n'est en service, un PNJ de caisse apparaît derrière le comptoir. Le joueur s'approche, appuie sur E Faire ses courses, remplit son panier et paie lui-même (espèces ou banque). La recette va aussi sur le compte de l'entreprise. Dès qu'un employé prend son service, le PNJ disparaît (l'état est recalculé toutes les 5 secondes).
Créer une supérette
Tout se fait dans F10 › Gestion du serveur › Commerces (permission admin.business) :
- Magasins LTD › Créer un magasin (ta position) : identifiant interne (unique, sans espaces), nom affiché, métiers autorisés (séparés par des virgules). Une première caisse est posée à ta position.
- Si le métier n'existe pas encore, il est créé automatiquement avec les grades par défaut (
society.defaultGrades), en métier whitelist. Gère ensuite ses grades dans Métiers & grades. Les magasins créés avant cette fonction récupèrent leur métier manquant au démarrage du serveur. - Dans la fiche du magasin : Caisses (ajouter à ta position, déplacer, taille de la zone, supprimer), Stock (quantités en rayon), nom affiché, métiers autorisés.
- PNJ libre-service : placer ici : place-toi à la place du vendeur, tourné vers les clients, et valide. Modèle du PNJ change son apparence (vide = modèle par défaut du panel). Retirer le PNJ supprime le libre-service de ce magasin.
- Catalogue LTD : catégories (nom, icône), puis produits (identifiant de l'objet ox_inventory, nom affiché, prix, image). Le catalogue est commun à toutes les supérettes.
- Ajoute le métier à
businessmenu.jobs(typestore) pour que les employés aient le menu F6.
Recharger les commerces (ou /reloadbusiness) applique les changements sans redémarrer.
Réglages : Panel › Supérettes LTD
| Réglage | Clé | Défaut |
|---|---|---|
| Service obligatoire pour vendre (Panel › Commerces) | business.requireDuty | activé |
| Distance maximale de la caisse | ltd.registerDistance | 3 m |
| Distance employé ↔ client | ltd.billDistance | 5 m |
| Quantité maximale par article | ltd.maxQuantity | 50 |
| Articles différents par panier | ltd.maxLines | 20 |
| Délai de réponse du client | ltd.requestTimeout | 60 s |
| Stock limité par magasin | ltd.useStock | désactivé (stock illimité) |
| Coût du réassort | ltd.restockCostPercent | 60 % du prix de vente |
| Grade minimum pour le réassort | ltd.restockMinGrade | 2 |
| Réassort maximal par commande | ltd.restockMax | 500 |
| Stock maximal par article | ltd.stockMax | 2 000 |
| Libre-service sans employé | ltd.selfService | activé |
| Modèle du PNJ par défaut | ltd.selfServicePed | mp_m_shopkeep_01 |
| Prix en libre-service | ltd.selfServicePercent | 100 % |
| Distance du PNJ de caisse | ltd.selfServiceDistance | 3 m |
Exemple : pour rendre les courses sans vendeur 20 % plus chères et pousser au recrutement, mets Prix en libre-service (ltd.selfServicePercent) à 120. Les bornes vont de 50 % à 300 %.
Pièges
- Pas de PNJ placé et personne en service = magasin fermé. Le libre-service n'existe que dans les magasins où un PNJ a été placé.
- Un produit doit être un objet ox_inventory existant : sinon l'enregistrement est refusé (« Objet inconnu d'ox_inventory »). Voir Objets.
- Avec le stock limité, un produit à 0 n'est plus proposé, y compris en libre-service. Le réassort n'est possible que si
ltd.useStockest activé. - Le fichier
config.luade la ressourceltdne sert qu'au tout premier démarrage : ensuite la base fait foi, modifie tout depuis le menu Commerces.
Bars et restaurants
Ce que font les joueurs
L'employé en service prend la commande au point de commande et envoie la note au client, qui la règle (avec un pourboire s'il le souhaite). Les plats se préparent aux postes de préparation (une animation par étape). Le client récupère sa commande au comptoir de retrait ; une commande payée et jamais retirée est annulée et remboursée.
Établissements livrés : Burgershot, Pops Diner, Pearls, Beach Club, Unicorn, Pacific et Tequila.
Mise en place
- La carte (plats, prix, catégories, image) : F10 › Commerces › Bars & Restaurants, puis l'établissement. Chaque plat est un objet ox_inventory.
- Les règles : Panel › Bars & restaurants.
- Les positions des points de commande, postes et comptoirs, et les étapes de préparation, sont décrites dans le fichier
config.luade la ressourceorder-system.
| Réglage | Clé | Défaut |
|---|---|---|
| Distance employé ↔ client | orders.billDistance | 5 m |
| Distance du point de commande | orders.counterDistance | 3,5 m |
| Distance des postes de préparation | orders.craftDistance | 3,5 m |
| Distance du comptoir de retrait | orders.pickupDistance | 3,5 m |
| Quantité maximale par plat | orders.maxQuantity | 20 |
| Plats maximum par commande | orders.maxItems | 40 |
| Délai de retrait | orders.pickupTimeout | 30 min |
| Plats pris dans le coffre | orders.useJobStock | désactivé |
| Consommer les ingrédients | orders.consumeIngredients | désactivé |
| Recettes (ingrédients par plat) | orders.recipes | vide |
| Pourboires / Pourboire maximal | orders.tipEnabled, orders.tipMax | activé / 500 $ |
Exemple de recette : pour qu'un burger du Burgershot consomme un pain et un steak du coffre, active orders.consumeIngredients et ajoute deux lignes à orders.recipes : établissement restau_burgershot, plat <objet du burger>, ingrédient bread, quantité 1 ; puis la même ligne avec l'ingrédient steak.
Pièges
- Avec
orders.useJobStockouorders.consumeIngredients, le paiement échoue si le coffre de la société ne contient pas de quoi servir : pense au réapprovisionnement. - Une étape de préparation validée trop vite est refusée (
orders.stepTolerance, 80 % de la durée de l'animation par défaut).
Petits jobs
Ce que font les joueurs
Au Pôle emploi, un conseiller présente les petits jobs : livreur, éboueur, taxi, chauffeur de bus, livreur de pizzas, jardinier, agent de propreté. Le joueur choisit, le GPS le mène au dépôt. Il y paie une caution, reçoit son véhicule de travail et suit les arrêts tirés au sort. Chaque arrêt validé paie ; au retour au dépôt, véhicule rendu, il récupère sa caution et touche une prime de fin de tournée.
| Type | Déroulement |
|---|---|
À pied (onfoot) | Descendre du véhicule et faire l'action (colis, pizza, poubelle, jardinage, nettoyage), véhicule à proximité |
Taxi (taxi) | Prendre un client puis le déposer, payé à la course et au kilomètre |
Bus (bus) | Suivre la ligne dans l'ordre, marquer chaque arrêt véhicule immobile |
Mise en place
Chaque job est une ligne de Panel › Petits jobs › Jobs (starterjobs.jobs) : identifiant, type, animation, nom affiché, présentation, véhicule, icône du dépôt, caution, paie par arrêt, prime, $ par km (taxi), dépôt, sortie du véhicule.
Les positions se posent en jeu dans F10 › Gestion du serveur › Petits jobs (permission admin.job) : choisis le job, puis Dépôt ici, Sortie du véhicule ici, Ajouter un arrêt ici, Effacer les arrêts.
Le scanner d'abribus. Le bus n'a pas d'arrêt par défaut. Dans la fiche du job bus, Ajouter les abribus autour de moi repère les vrais abribus visibles autour de toi (environ 150 m) et les ajoute dans l'ordre du trajet ; un abribus déjà connu (à moins de 15 m) n'est pas ajouté deux fois. Roule en ville et recommence à plusieurs endroits pour construire la ligne.
| Réglage | Clé | Défaut |
|---|---|---|
| Petits jobs actifs | starterjobs.enabled | activé |
| Réservés aux sans-emploi | starterjobs.onlyUnemployed | désactivé |
| Arrêts par tournée | starterjobs.stopsPerRun | 6 |
| Pause entre deux tournées | starterjobs.cooldown | 2 min |
| Distance de validation d'un arrêt | starterjobs.stopDistance | 10 m |
| Vitesse de référence anti-triche | starterjobs.maxSpeed | 45 m/s |
| Pôle emploi : position du PNJ | starterjobs.jobCenter | -268.5, -956.4, 31.2 |
| Recrutement obligatoire | starterjobs.jobCenterRequired | activé |
| Bus : durée d'un arrêt | starterjobs.busWait | 6 s |
| Dépôts sur la carte | starterjobs.showBlips | activé |
Pièges
- Un job n'est proposé qu'avec un dépôt, une sortie et au moins trois arrêts. Le menu admin indique « prêt » ou « incomplet » pour chaque job.
- La caution est prélevée sur la banque ; si le véhicule n'est pas rendu, elle est perdue.
- Un arrêt atteint plus vite que la vitesse de référence est refusé : ne la baisse pas trop pour le taxi.
Auto-école et documents
Ce que font les joueurs
- Auto-école : au secrétariat (E), le joueur passe le code (questionnaire payant), puis l'examen de conduite du permis choisi sur un parcours, avec un véhicule de l'auto-école. Les fautes (excès de vitesse, collision, stop grillé) sont comptées ; au-delà du maximum, l'examen est échoué.
- Documents : à la mairie, le PNJ « Administration » imprime les documents officiels (carte d'identité, permis de port d'arme…) sous forme d'objet
license_card.
Mise en place
Panel › Auto-école : position et modèle du PNJ du secrétariat, plaque des véhicules, prix du code (driveschool.writtenPrice, 500 $), erreurs autorisées au code (driveschool.quizMaxErrors, 3), tolérance de vitesse, Permis disponibles (driveschool.licenses : voiture 2 500 $, moto 2 000 $, poids lourd 5 000 $), Parcours d'examen (driveschool.routes : permis, véhicule, prix, fautes max, rayon ; un prix renseigné ici remplace celui du permis) et Questions du code (driveschool.questions, 15 questions livrées).
Les points du parcours se posent en jeu dans F10 › Gestion du serveur › Auto-école (permission admin.job) : Départ ici (remet à zéro), Ajouter un passage ici, Ajouter un stop ici (le candidat doit s'y arrêter complètement), Limite des prochains points, Retirer le dernier point, Voir le parcours sur la carte.
Panel › Documents : position et modèle du PNJ (licenses.ped, licenses.pedModel), Documents disponibles (licenses.cards : clé, type identite / licence / job, libellé, prix, badge, métier, couleur) et objet carte (licenses.item, license_card). Les licences d'un joueur se voient et s'attribuent avec la permission admin.licenses.
Pièges
- La clé d'un permis (
key) doit être la même dans Permis disponibles et dans Parcours d'examen (license) : sinon pas d'examen pour ce permis. - Les questions du code sont privées (jamais envoyées aux joueurs) ;
goodest le numéro de la bonne réponse (1 à 4).
Garages d'entreprise
Ce que font les joueurs
Un employé (en service si le garage l'exige) ouvre le garage de son métier : les véhicules de service s'affichent par catégorie, présentés devant le garage (caméra fixe, rotation à la souris, barres de vitesse, freinage, accélération, adhérence). Seuls les véhicules autorisés à son grade sont proposés. Il le range au point de rangement.
Mise en place
Le plus simple : F10 › Gestion du serveur › Métiers & grades › fiche du métier › Garage (permission admin.job) :
- Créer un garage ici, puis Point d'ouverture ici, Exposition du véhicule ici (dans le sens voulu), Point de rangement ici, Ajouter une sortie ici (plusieurs possibles : la première libre est utilisée).
- Véhicules › Ajouter un véhicule : modèle, nom affiché, catégorie (onglet), grade minimum, livrée, couleurs principale et secondaire (index GTA).
- Prendre les photos des véhicules : chaque véhicule est photographié à l'emplacement d'exposition (pose-le d'abord).
- Options du garage : couleur, bannière, Service obligatoire.
Tout reste modifiable dans Panel › Garages d'entreprise (jobgarage.garages, jobgarage.spawns, jobgarage.vehicles), avec :
| Réglage | Clé | Défaut |
|---|---|---|
| Véhicules sortis par employé | jobgarage.maxOut | 1 |
| Distance du point d'ouverture | jobgarage.interactDistance | 2 m |
| Distance du point de rangement | jobgarage.storeDistance | 6 m |
| Préfixe des plaques | jobgarage.platePrefix | vide (4 premières lettres du métier) |
| Supprimer à la déconnexion | jobgarage.deleteOnLeave | activé |
Exemple de ligne de Véhicules pour une voiture de patrouille réservée au grade 2 :
{ "garage": "police_mrpd", "model": "police3", "label": "Interceptor", "category": "Patrouille", "grade": 2, "livery": -1, "primary": -1, "secondary": -1 }Pièges
- Le champ
garaged'une sortie ou d'un véhicule doit reprendre exactement l'identifiant du garage. - Sans sortie libre, le véhicule ne peut pas sortir : pose plusieurs sorties sur les parkings fréquentés.