Vue d'ensemble
La boutique premium de Socle s'ouvre en jeu avec F1. Les joueurs y dépensent deux monnaies :
| Monnaie | Clé | Comment on l'obtient |
|---|---|---|
| Coins | coins | Achat Tebex, récompenses quotidiennes, ajustement par le staff |
| Points de fidélité | fidelity | Achats en coins, bonus de connexion du jour, récompenses quotidiennes, ajustement par le staff |
Avec ces coins, ils achètent ce que tu as mis en rayon : armes, véhicules, argent (versé en banque), objets, animaux de compagnie, propriétés, packs, articles de la boutique journalière.
Tebex encaisse l'argent réel. Pour FiveM, Tebex livre un achat en faisant exécuter des commandes par ton serveur de jeu : une commande à l'achat, à l'expiration, au renouvellement, à la rétrofacturation, au remboursement (doc Tebex : les commandes).
Socle fournit quatre commandes console pour ça :
| Commande | Ce qu'elle fait |
|---|---|
socle_tebex_coins | Crédite des coins |
socle_tebex_coins_remove | Retire des coins (remboursement, rétrofacturation) |
socle_tebex_vip | Donne un palier VIP pour une durée |
socle_tebex_vip_remove | Retire le VIP |
Tebex vend donc directement des coins et du VIP. Pour un véhicule, un animal ou une arme, vends des coins : c'est la boutique en jeu qui sait livrer ces articles (plaque générée, animal rangé dans « Mes animaux », arme dans l'inventaire). Il n'existe pas de caisse mystère.
Comment Socle livre
Commandes réservées à la console
Les quatre commandes ne fonctionnent que lancées par la console du serveur (c'est ce que fait Tebex). Un joueur qui les tape en jeu n'obtient rien, même administrateur.
Une seule livraison par transaction
Chaque livraison est enregistrée avec son numéro de transaction, son action (coins, coins_remove, vip, vip_remove) et une période facultative. Un même trio ne s'applique qu'une fois : si Tebex renvoie la commande (ou si tu la relances), la console répond déjà traitée : ignorée et rien ne change. C'est pour ça que le numéro de transaction est obligatoire dans chaque commande.
La période est un dernier argument facultatif ([période]), sans espace, qui sert à distinguer les échéances d'un abonnement quand Tebex réutilise le même {transaction} à chaque renouvellement (voir Abonnement VIP). Sans période, rien ne change par rapport aux commandes existantes.
Joueur absent : livraison en attente
Socle cherche le joueur parmi ceux connectés. S'il ne le trouve pas, la livraison est mise en attente et s'applique automatiquement quelques secondes après qu'il a chargé un personnage à sa prochaine connexion. Le joueur n'a donc pas besoin d'être en ligne au moment de l'achat.
Pour un VIP en attente, la durée démarre au moment de la livraison, pas au moment de l'achat.
Remboursement d'une livraison pas encore faite
Si un retrait (socle_tebex_coins_remove ou socle_tebex_vip_remove) arrive pour une transaction dont la livraison est encore en attente, Socle annule la livraison au lieu de retirer quoi que ce soit. La console affiche livraison en attente annulée.
Comment <joueur> est reconnu
L'argument <joueur> est comparé aux joueurs connectés :
| Forme | Exemple |
|---|---|
| ID serveur (seulement si le joueur est connecté à ce moment-là) | 12 |
| Identifiant complet | license:3a9f…, fivem:123456, steam:1100001…, discord:2468… |
| Valeur de l'identifiant sans son préfixe | 123456 (correspond à fivem:123456) |
La comparaison ignore les majuscules. Un argument ne peut pas contenir d'espace (la console découpe sur les espaces).
Relier ta boutique Tebex au serveur
1. Créer la boutique
- Crée ton compte et ta boutique sur Tebex, avec FiveM comme jeu.
- Dans le panneau de contrôle Tebex, va dans Integrations › Game Servers, clique Connect Game Server et choisis Plugin. Il n'y a rien à télécharger pour FiveM.
- Tebex t'affiche la clé secrète du serveur. Garde-la pour toi : elle authentifie ton serveur auprès de Tebex.
Source : doc Tebex — FiveM.
2. Ajouter la clé dans server.cfg
Ouvre server.cfg et ajoute la ligne (Tebex conseille de la mettre vers le bas du fichier) :
sv_tebexSecret "TA_CLE_SECRETE_TEBEX"sv_tebexSecret est une convar de FiveM lui-même (doc FiveM — commandes serveur).
3. Vérifier la connexion
- Redémarre le serveur de jeu.
- Retourne dans le panneau Tebex et clique Continue. Si c'est bon, le serveur est relié à la boutique.
- Si Continue reste grisé, regarde la console du serveur : une erreur liée à Tebex y apparaît (clé mal copiée, guillemets manquants…).
Créer les paquets
Les variables Tebex
Dans une commande de paquet, Tebex remplace ces variables par les infos de l'achat (doc Tebex : les commandes) :
| Variable | Ce que c'est |
|---|---|
{id} | Identifiant principal du joueur, propre au jeu |
{username} | Pseudo utilisé lors de l'achat (connexion à la boutique) |
{transaction} | Identifiant unique de la transaction |
{hexid} | Identifiant Steam en hexadécimal (steam:1100…), pour les commandes à joueur en ligne |
Quel identifiant pour <joueur> ?
Utilise {id} : Socle le compare aux identifiants du joueur (license, fivem, steam, discord…), avec ou sans préfixe. Socle ne reconnaît jamais un joueur par son pseudo : un joueur peut changer de pseudo et récupérer les achats d'un autre. Ce que Tebex met exactement dans {id} dépend de la façon dont tes joueurs se connectent à ta boutique : vérifie-le avec un achat test.
Vérifie avec un achat test (voir Tester un achat) : la console doit afficher livré à … avec le bon joueur. Si la livraison reste en attente alors que l'acheteur est connecté, change de variable. Évite {hexid} : il suppose que le joueur a Steam ouvert et qu'il est en ligne.
Dans les exemples ci-dessous, on utilise {id}.
Désactiver « Require the customer to be online »
Par défaut, Tebex attend que le joueur soit connecté pour exécuter une commande (réglage Require the customer to be online, bouton de réglages à côté de chaque commande — doc Tebex : dépannage des commandes). Désactive-le sur toutes les commandes Socle : Socle gère lui-même l'attente du joueur, au niveau du personnage.
Paquet de coins
Commande à l'achat (onglet Initial) :
socle_tebex_coins {id} 2750 {transaction}Commande des onglets Chargeback et Refund (même montant) :
socle_tebex_coins_remove {id} 2750 {transaction}Exemples de paliers, à adapter à ton économie (les prix sont des exemples, pas des recommandations) :
| Paquet | Montant dans les commandes | Prix d'exemple |
|---|---|---|
| Petit sac | 1000 | 5 € |
| Sac moyen (2 500 + 250 offerts) | 2750 | 10 € |
| Gros sac (6 000 + 1 000 offerts) | 7000 | 25 € |
| Coffre (13 000 + 3 000 offerts) | 16000 | 50 € |
Pour te repérer, quelques prix livrés par défaut dans la boutique en jeu : Couteau 1 500 coins, Pistolet de combat 8 000, Bravado Bison 18 000, Pfister 811 45 000, Pack Débutant 5 000, Pack Premium 60 000.
Paliers VIP
Trois paliers sont livrés (socle/configs/vip.lua). Dans les commandes, utilise le nom technique : un palier inconnu est refusé (palier VIP inconnu).
| Palier (nom technique) | Libellé | Drift | Teinte | Accessoires | Argent |
|---|---|---|---|---|---|
bronze | Bronze | Non | Non | Non | 5 000 $ |
silver | Argent | Oui | Non | Non | 15 000 $ |
gold | Or | Oui | Oui | Oui | 50 000 $ |
Si tu ajoutes ou renommes des paliers dans l'administration de la boutique, utilise leurs nouveaux noms techniques.
Paquet VIP à durée fixe (ex. VIP Or 30 jours)
| Onglet Tebex | Commande |
|---|---|
| Initial | socle_tebex_vip {id} gold 30 {transaction} |
| Expiry | socle_tebex_vip_remove {id} {transaction} |
| Chargeback | socle_tebex_vip_remove {id} {transaction} |
| Refund | socle_tebex_vip_remove {id} {transaction} |
Le VIP expire de toute façon seul au bout des 30 jours (la date est enregistrée à la livraison) : la commande d'expiration est une sécurité.
Pour un VIP permanent, mets 0 jour (socle_tebex_vip {id} gold 0 {transaction}) et pas de commande d'expiration.
socle_tebex_vip_remove ne retire le VIP que s'il a été accordé par cette transaction (même palier, même échéance). Si le joueur a acheté un autre VIP depuis (autre transaction Tebex, boutique en jeu, staff), l'expiration ou le remboursement du premier paquet ne touche pas au VIP actuel : la console affiche VIP actuel non accordé par cette transaction, conservé, la livraison passe au statut skipped et un log « Retrait VIP Tebex ignoré » est écrit.
Abonnement VIP (paquet récurrent)
Tebex sait vendre des paquets récurrents (doc Tebex — paiements récurrents). Pour un VIP Or mensuel :
| Onglet Tebex | Commande |
|---|---|
| Initial | socle_tebex_vip {id} gold 30 {transaction} |
| Renewal | socle_tebex_vip {id} gold 30 {transaction} <période> |
| Expiry | socle_tebex_vip_remove {id} {transaction} |
| Chargeback | socle_tebex_vip_remove {id} {transaction} |
| Refund | socle_tebex_vip_remove {id} {transaction} |
À chaque renouvellement, le VIP repart pour 30 jours à compter de la livraison.
Gestion manuelle par le staff
L'administration de la boutique (F1 › Administration) reste le secours : livraison ratée, mauvais personnage, geste commercial.
| Permission | Ce qu'elle donne |
|---|---|
boutique.manage | Affiche l'onglet Administration dans F1 : rayons, articles, packs, VIP, fidélité |
boutique.players | Chercher un joueur, ajuster ses coins et sa fidélité, attribuer ou retirer un palier VIP |
Le staff qui livre a besoin des deux. Voir Administration pour attribuer les permissions.
- Ouvre F1 › Administration.
- Cherche le personnage par son identifiant (
char1:…) ou son nom (prénom nom). La recherche renvoie un seul résultat, le premier qui correspond : vérifie le nom affiché. - Ajuste les coins ou la fidélité (montant ajouté, négatif pour retirer), attribue un palier VIP avec un nombre de jours (
0= permanent, maximum3650), ou retire le VIP.
Le joueur n'a pas besoin d'être connecté. Un solde ne descend jamais sous 0. Chaque ajustement est écrit dans l'historique de la boutique.
Rétrofacturations et remboursements
Avec les commandes des onglets Chargeback et Refund ci-dessus :
| Cas | Ce qui se passe |
|---|---|
| Livraison encore en attente | Annulée, rien n'est retiré |
| Coins non dépensés | Retirés |
| Coins déjà dépensés | Le solde s'arrête à 0 : les articles achetés avec ne sont pas repris |
| VIP | Retiré s'il vient de cette transaction ; conservé (statut skipped) si le joueur a un VIP d'une autre origine |
Pour un joueur qui a dépensé des coins ensuite remboursés, la reprise des articles (véhicule, arme, propriété…) se fait avec les outils staff habituels ; une sanction éventuelle se pose depuis le menu staff (Administration).
Tester un achat
Depuis la console du serveur
Lance la commande à la main dans la console du serveur (ou celle de txAdmin), avec ton nom de joueur et un faux numéro de transaction :
socle_tebex_coins TonPseudo 100 TEST-0001- Connecté en jeu, la console affiche
[Tebex] coins TEST-0001 livré à TonPseudoet ton solde augmente dans F1. - Relance exactement la même commande : la console affiche
coins TEST-0001 déjà traitée : ignorée, le solde ne bouge pas. - Retire le test :
socle_tebex_coins_remove TonPseudo 100 TEST-0001. - Teste l'attente : déconnecte-toi, lance
socle_tebex_coins TonPseudo 100 TEST-0002(la console diten attente : TonPseudo n'est pas connecté), reconnecte-toi et charge ton personnage : les coins arrivent. - Teste l'annulation :
socle_tebex_vip TonPseudo gold 30 TEST-0003hors ligne, puissocle_tebex_vip_remove TonPseudo TEST-0003: la console ditlivraison en attente annulée.
Depuis Tebex
Tebex propose deux façons de tester (doc Tebex — tester un paquet) :
- Store Test Mode (paramètres de paiement) : simule un vrai paiement sans débiter le testeur. À utiliser tant que la boutique est privée, à couper avant l'ouverture.
- Manual Payment (onglet Payments) : simule la livraison d'un paquet sans passer par le paiement.
Fais au moins un achat test pour vérifier que {id} reconnaît tes joueurs.
Où lire les traces
| Où | Ce que tu y vois |
|---|---|
| Console du serveur | Une ligne [Tebex] par commande : livré, en attente, déjà traitée, annulée, palier inconnu, usage incorrect |
Serveur › Logs du panel, catégorie tebex | « Livraison Tebex » et « Livraison Tebex en attente », avec l'action, la transaction et le personnage (Panel) |
| F1 › Historique | Les crédits et retraits de coins, libellés Tebex <transaction> |
Table socle_tebex_deliveries | Chaque livraison : transaction, action, période, cible, statut (pending, done, cancelled, skipped), personnage livré |
Table socle_tebex_vip_grants | Pour chaque personnage, la transaction Tebex qui a accordé son VIP actuel (palier, échéance) |
| Panneau Tebex › Payments | Les paiements reçus |
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
| Continue reste grisé dans Tebex | Clé absente ou mal copiée, ligne encore commentée | Vérifie la ligne sv_tebexSecret (sans #), redémarre, lis la console |
| Commande inconnue dans la console | Serveur pas redémarré après la mise à jour | Redémarre le serveur de jeu |
| Rien ne se passe quand un admin tape la commande en jeu | Normal : commandes réservées à la console | Lance-la depuis la console du serveur ou de txAdmin |
en attente alors que l'acheteur est connecté | La variable ne correspond à aucun identifiant du joueur | Regarde la commande reçue en console et compare-la aux identifiants du joueur (license:, fivem:…) ; livre à la main en attendant |
| Livraison en attente jamais appliquée | Le joueur ne s'est pas reconnecté, ou ne correspond pas à la cible | Regarde target dans socle_tebex_deliveries ; livre à la main |
| Rien n'arrive après l'achat | Tebex peut mettre jusqu'à 5 minutes à envoyer, ou « Require the customer to be online » est resté activé | Patiente, puis désactive l'option sur la commande |
déjà traitée : ignorée | Numéro de transaction déjà utilisé pour cette action | Normal pour un renvoi ; en test, change de numéro |
palier VIP inconnu | Nom de palier faux dans la commande | Utilise le nom technique (bronze, silver, gold…) |
numéro de transaction manquant ou usage : … | Argument oublié, ou montant à 0 | Revois la commande avec le récapitulatif |
| Coins sur le mauvais personnage | Le joueur était sur un autre personnage | Ajustement à la main : négatif sur l'un, positif sur l'autre |
| Renouvellement VIP ignoré | Même {transaction} (et même période) à chaque échéance | Ajoute une période qui change à chaque échéance (voir Abonnement VIP) ; en attendant, prolonge à la main |
VIP actuel non accordé par cette transaction, conservé | Le joueur a un VIP d'une autre origine (autre achat, boutique, staff) | Normal : le VIP récent est protégé. Retire-le à la main si c'est voulu |
Récapitulatif
Configuration
| Où | Ligne | Rôle |
|---|---|---|
server.cfg | sv_tebexSecret "TA_CLE_SECRETE_TEBEX" | Relie le serveur FiveM à ta boutique Tebex |
Commandes console
Toutes : console uniquement, une seule exécution par transaction, action et période, mise en attente si le joueur n'est pas connecté. Chaque commande accepte un dernier argument facultatif [période]. Désactive « Require the customer to be online » dans Tebex.
| Commande | Arguments | Exemple Tebex | Onglets Tebex |
|---|---|---|---|
socle_tebex_coins | <joueur> <montant> <transaction> [période] | socle_tebex_coins {id} 2750 {transaction} | Initial |
socle_tebex_coins_remove | <joueur> <montant> <transaction> [période] | socle_tebex_coins_remove {id} 2750 {transaction} | Chargeback, Refund |
socle_tebex_vip | <joueur> <palier> <jours> <transaction> [période] (0 jour = permanent, max 3650) | socle_tebex_vip {id} gold 30 {transaction} | Initial, Renewal |
socle_tebex_vip_remove | <joueur> <transaction> [période] (ne retire que le VIP accordé par cette transaction) | socle_tebex_vip_remove {id} {transaction} | Expiry, Chargeback, Refund |
<joueur> : ID serveur, identifiant complet (license:, fivem:, steam:, discord:…), sa valeur sans préfixe, ou nom du joueur.
Réglages du panel (Panel › Boutique)
| Réglage | Clé | Défaut |
|---|---|---|
| Boutique activée | boutique.enabled | activé |
| Webhook Discord des achats en jeu (privé) | boutique.webhookUrl | vide |
| Zone de test réservée aux zones sûres | boutique.testSafeZone | activé |
| Durée d'un essai | boutique.testDuration | 60 s |
| Délai entre deux essais | boutique.testCooldown | 30 s |
| Délai entre deux sorties d'animal | boutique.petCooldown | 5 s |