Documentation PhoneHub + Pulse
PhoneHub + Pulse Phone — guide d'installation
Édition intégrée 1.4.6 · ZeroDev
Cette édition réunit Pulse Phone, le bâtiment PhoneHub, le PhoneHub OS personnalisé, la borne 3D de téléphones, l'établi de réparation et le système de stock et de livraisons du personnel. C'est un produit distinct de l'édition téléphone seul. Installez le téléphone et la ressource de la boutique ensemble. Ne faites pas tourner deux copies de phone ni deux versions de la map PhoneHub.
1. Avant l'installation
- Sauvegardez votre ressource de téléphone, votre ressource de map, votre configuration et votre base de données existantes.
- Utilisez OneSync et le game build GTA 2699 ou plus récent.
- Démarrez d'abord votre base de données, votre framework, votre inventaire, votre ressource vocale et screenshot-basic.
- Gardez exactement les noms de ressources
phoneetzerodev_phonehub_mlo. - Retirez les anciennes ressources PhoneHub du répertoire des ressources actives et supprimez les lignes
ensureen double. Stockez les sauvegardes en dehors de ce répertoire. - Gardez désactivée toute autre map qui remplace le même bâtiment de Portola Drive.
- Fermez complètement FiveM et arrêtez le serveur avant de remplacer les fichiers de map. Démarrez le serveur, puis relancez FiveM. Déconnectez les clients avant de remplacer ou de redémarrer ce MLO streamé. Un client connecté peut garder la map en mémoire même loin du bâtiment ; le redémarrer à chaud peut faire planter ce client.
Ce package n'inclut ni clé de licence serveur, ni framework, ni inventaire, ni scripts tiers payants. Une fois le traitement Keymaster effectué, la clé du serveur doit appartenir au compte qui détient les droits sur ce nouvel asset combiné. Les droits sur l'ancienne édition téléphone seul ne donnent pas accès à cette nouvelle édition.
2. Copiez les ressources
Copiez les dossiers phone et zerodev_phonehub_mlo de ce téléchargement dans le répertoire des ressources de votre serveur. Vous pouvez les placer dans n'importe quel dossier de catégorie ; gardez exactement les noms des dossiers.
screenshot-basic. L'appareil photo a besoin de screenshot-basic démarré avant phone ; la ressource standard fonctionne. Le téléchargement inclut aussi une copie allégée (elle ne dessine l'image du jeu que pendant la prise d'une photo, avec le même nom, les mêmes exports et les mêmes events). Y passer est facultatif : gardez votre ancien dossier en sauvegarde hors de resources, testez les scripts qui prennent des captures d'écran, et remettez l'ancien dossier si quelque chose change. Le démarrage rapide de Pulse Phone, étape 6, détaille les étapes ; les fichiers modifiés sont listés dans screenshot-basic/ZERODEV-CHANGES.md.
Ajoutez ces lignes après vos dépendances existantes dans server.cfg :
ensure phone
ensure zerodev_phonehub_mloNe copiez pas un ancien moteur de téléphone ou une ancienne interface dans le nouveau package. Lors d'une mise à niveau, migrez les réglages dont vous avez besoin vers les nouveaux fichiers de configuration. Conservez votre base de données, le stockage KVP de la ressource, et les dossiers media et ownermedia. Le nouveau phone/config/phonehub_business.lua contient des réglages de livraison absents de l'édition téléphone seul.
Le comptoir de la boutique configuré se trouve en -749.541, -216.952224, 36.256562, orientation 210. L'emplacement de la boutique est déjà configuré dans l'édition intégrée propre. PhoneHub est la seule boutique de téléphones de cette édition : la boutique de Legion Square du package téléphone seul n'en fait pas partie. Un config.lua conservé de la 1.4.4 ou antérieure liste encore Legion Square ; cette entrée est ignorée et la console l'indique une fois. Appuyez sur la touche PhoneHub (E par défaut), ou utilisez /phonehub, à la borne en magasin, à un établi de réparation, au comptoir de service ou au point de commande du toit pour ouvrir le terminal PhoneHub. La borne ouvre Shop et un établi de réparation ouvre Repair. La touche peut être modifiée dans les assignations de touches de FiveM. La commande exige la même proximité que la touche ; les actions du personnel nécessitent toujours une permission côté serveur.
3. Framework, inventaire et autres scripts
Commencez avec Config.Framework = 'auto' et les réglages de fournisseurs automatiques dans phone/config/config.lua. Le rapport de santé du téléphone au démarrage indique les fournisseurs réellement sélectionnés. Vérifiez ce rapport avant d'effectuer des achats.
| Framework | Configuration |
|---|---|
| ESX Legacy | Démarrez es_extended et l'inventaire avant phone. Importez zerodev_phonehub_mlo/setup/phonehub_esx_jobs.sql ; cela ajoute les grades de métier manquants sans les attribuer à un joueur. |
| QBCore | Ajoutez l'entrée de métier fournie zerodev_phonehub_mlo/setup/phonehub_qb_job.lua à la table des métiers partagés de votre core. Enregistrez les items du téléphone avec le guide des items du téléphone. |
| Qbox | Enregistrez le même métier et les mêmes grades via la configuration des métiers de Qbox installée ou une API d'enregistrement de métiers prise en charge. Utilisez les définitions d'items d'ox_inventory. |
| ox_core / vRP | Configurez l'adaptateur de framework existant du téléphone et un fournisseur de métiers qui renvoie le métier PhoneHub et un grade numérique. Utilisez l'accès au bâtiment contrôlé par ACE si votre système de métiers ne les expose pas. |
| Standalone / personnalisé | Les achats publics sont disponibles via le bridge standalone/personnalisé existant du téléphone. L'accès du personnel nécessite un fournisseur de métiers configuré ou une ACE administrateur de confiance. |
Les adaptateurs d'inventaire couvrent ox_inventory, les fonctions d'inventaire des frameworks pris en charge, et les fournisseurs tiers nommés listés dans phone/guides/integrations.md (ou le guide d'intégration inclus avec votre build du téléphone). Chaque fournisseur a besoin de ses vraies définitions d'items et d'une version d'API compatible. Les items manquants sont signalés par les bilans de santé du téléphone ; ne masquez pas ces erreurs. Des exemples de configuration d'items sont fournis dans phone/config/items/.
Les bridges modifiables du téléphone couvrent la voix, les comptes de société, la banque, les garages, les logements, le dispatch et d'autres intégrations. Gardez exactement un fournisseur sélectionné par fonction. Épinglez les ressources renommées via Config.ResourceNames ; utilisez Config.Providers pour sélectionner un fournisseur explicitement. Les exports tiers arbitraires ne sont pas compatibles automatiquement : implémentez le bridge personnalisé documenté quand votre script n'est pas listé. Les adaptateurs de framework et les tests de contrat automatisés ne signifient pas que chaque version tierce a été testée en conditions réelles.
Configuration testée en conditions réelles pour cette version : ESX Legacy, ox_inventory, oxmysql et pma-voice. Sur un autre framework, lancez les vérifications du premier démarrage de la section 7 avant d'ouvrir la boutique.
4. Boutique publique ou entreprise détenue par un joueur
Lancez l'une ou l'autre commande dans la console du serveur :
phonehubmode public
phonehubmode businessLe mode sélectionné est conservé après les redémarrages. Le mode public garde les achats normaux. Le mode business applique un stock persistant et des réservations aux achats faits au comptoir PhoneHub. Le mode business désactive les reprises au comptoir. Le même paiement du téléphone valide les prix, les paiements et la remise des items.
Définissez le nom du métier et les grades dans phone/config/phonehub_business.lua :
| Grade | Tâches par défaut |
|---|---|
| 0 — stagiaire | Consulter le terminal de gestion, réceptionner les livraisons arrivées, commandes du bâtiment |
| 1 — vente | Tâches du stagiaire plus commandes fournisseur |
| 2 — technicien | Commandes/réception et rôle de réparation configuré |
| 3 — gérant | Toutes les commandes du personnel plus l'annulation/le remboursement des commandes fournisseur en attente |
Attribuez les métiers avec les outils d'administration habituels de votre framework. Ouvrez Services → My Work → PhoneHub → Staff and account sur le téléphone pour la gestion de l'entreprise (Company). Elle utilise les fonctions de personnel/société prises en charge du framework sélectionné. L'édition combinée prend aussi en charge une propriété durable par un joueur, via un achat en jeu dans l'onglet Business ou via la commande d'attribution administrateur décrite ci-dessous. Tous les prix de propriété sont des montants en monnaie du jeu.
Pour ESX avec esx_addonaccount, importez aussi zerodev_phonehub_mlo/setup/phonehub_esx_society.sql avant de démarrer la ressource de comptes, puis redémarrez votre serveur. Cela crée le compte d'entreprise society_phonehub avec un solde à zéro, sans remplacer un solde existant. Si vous avez renommé le métier, mettez à jour le suffixe du compte en conséquence. Les autres fournisseurs bancaires ont besoin de leur configuration habituelle de compte d'entreprise pour le métier configuré. Vérifiez un petit dépôt et un petit retrait dans Company avant d'ouvrir l'entreprise.
Le budget de fonctionnement est un registre interne distinct pour l'achat de stock. Les ventes l'alimentent ; les commandes fournisseur y sont prélevées. Ce n'est pas automatiquement un compte bancaire de société ni un solde en liquide qu'un joueur peut retirer.
5. Commandes fournisseur et livraison du stock
Au comptoir de service, appuyez sur E pour ouvrir le terminal PhoneHub, puis Stock. Choisissez un produit, une configuration et une quantité. Le serveur calcule le devis du fournisseur et vérifie le grade de l'employé, sa proximité et le budget de fonctionnement.
La livraison par défaut prend 120 secondes. Elle reste en transit après les redémarrages. Une fois arrivée, un employé sélectionne Receive delivery au terminal. La valeur par défaut destination='stock' ajoute les marchandises au registre de stock de la boutique utilisé lors du paiement, indépendamment du fournisseur d'inventaire du joueur acheteur. Des demandes de réception répétées ne peuvent pas ajouter deux fois la même livraison. Les gérants peuvent annuler une livraison non réceptionnée pour un remboursement unique du budget.
Configuration :
delivery = {
seconds = 120,
autoReceive = false,
destination = 'stock',
resource = '',
export = '',
}Pour un entrepôt/stash personnalisé, définissez destination='custom' et indiquez un export serveur. Il reçoit (shipment, source) et doit utiliser shipment.id comme clé de déduplication durable. Renvoyez true uniquement quand chaque ligne a été stockée avec succès. Configurez la correspondance item/SKU de votre inventaire dans cet adaptateur. La livraison personnalisée n'ajoute pas aussi les items au registre interne des ventes ; reliez explicitement votre flux de vente d'entrepôt pour éviter un stock en double. Aucun adaptateur de stash universel n'est supposé.
Une remise externe incertaine est mise en attente de vérification, jamais retentée à l'aveugle. Après avoir vérifié l'inventaire de destination, utilisez :
phonehubdelivery <shipment-id> delivered
phonehubdelivery <shipment-id> retryPour une réservation de paiement client incertaine, examinez les historiques de paiement et d'inventaire avant d'utiliser phonehubresolve <reservation-id> returned|delivered.
6. Commandes de la boutique
Appuyez sur E près du point de commande du service ou du pupitre de commande du toit.
- Space : verrous de la porte d'entrée et de la porte du toit, éclairage de la boutique, écran du lounge, auvent de la terrasse (automatique sous la pluie ou la neige, ou ouvert/fermé), chauffages ou ventilation de la terrasse, alimentation de la terrasse et test des sprinklers de 15 secondes.
- Cameras : Entrance overview, Showroom overview et Service counter. Le retour au terminal ferme la caméra ; Échap quitte.
- Stock et Business : commandes fournisseur, livraisons, recettes, registre des ventes et des réparations, et accès de l'équipe.
Les commandes du bâtiment nécessitent le métier PhoneHub ou l'ACE staff/admin configurée. L'accès public aux commandes de la terrasse se configure séparément dans systems_config.lua. N'attribuez phonehub.admin qu'à votre principal administrateur de confiance ; jamais à tout le monde. Définissez phoneResource='phone' dans la configuration des systèmes du MLO.
Les portes automatiques utilisent des capteurs de proximité quand elles sont déverrouillées. Leurs battants mobiles doivent rester solides, y compris ouverts. Le mobilier, le verre et l'éclairage sont des assets de map conçus à la main ; tous les objets décoratifs n'ont pas d'interaction de gameplay.
7. Validation au premier démarrage
- Démarrez le serveur et lancez
phone:health. Confirmez les fournisseurs de framework, d'inventaire, de base de données et de voix attendus, et l'absence d'items obligatoires manquants. - Connectez-vous normalement et rendez-vous à la boutique. Marchez depuis le trottoir à travers les deux paires de portes d'entrée, montez/descendez les escaliers et passez la porte du toit, noclip désactivé.
- Ouvrez et fermez l'auvent. Ses huit panneaux doivent rester alignés dans les rails de guidage à chaque position. Testez séparément la fermeture automatique sous la pluie/neige.
- Ouvrez chaque vue de vidéosurveillance, passez de l'une à l'autre et quittez. La scène doit être visible et la vue/le focus normal du joueur doit revenir.
- Verrouillez les deux groupes de portes avec un compte du personnel. Vérifiez les collisions des deux côtés. Déverrouillez et vérifiez de nouveau l'animation d'ouverture par proximité.
- Vérifiez l'éclairage de jour et de nuit, l'écran allumé/éteint, le verre, la signalétique, les sièges et toutes les bordures. Marchez et roulez vers le bâtiment et en vous éloignant pour inspecter les transitions de streaming.
- Achetez un téléphone/accessoire en mode public. En mode business, vérifiez la baisse du stock, les commandes des employés, l'arrivée/la réception, les fonds insuffisants et les accès non autorisés.
- Redémarrez le serveur et confirmez que le mode de la boutique, le stock et les livraisons en attente sont conservés. Répétez une tentative de réception/annulation en double ; aucune marchandise ni aucun remboursement en double ne doit apparaître. Vérifiez que plusieurs joueurs voient le même état de la boutique.
phonehubcheck dans la console F8 du client indique l'alignement réel de l'auvent ; chaque panneau doit indiquer un alignement proche de 1. C'est un diagnostic, pas une preuve que la qualité visuelle ou les collisions sont correctes. Les vérifications automatisées ne peuvent pas garantir chaque angle de caméra ni toutes les combinaisons de serveurs.
8. Dépannage et mises à jour
Port 30120 occupé : une autre instance du serveur tourne déjà. Arrêtez-la via votre txAdmin (ou le panneau de votre hébergeur) plutôt que de lancer un second FXServer.
Commandes absentes : vérifiez que les deux ressources ont démarré, que leurs noms n'ont pas changé, et que le joueur est au point de commande. Examinez la console F8 du client et les erreurs du serveur.
Pas d'accès personnel : vérifiez le métier configuré, le grade numérique, la proximité du comptoir de service et le fournisseur de métiers sélectionné. Le mode boutique publique ne donne pas les droits du personnel.
L'ancienne map/ancienne interface persiste : supprimez les ressources/entrées ensure en double. Fermez complètement FiveM, arrêtez le serveur, remplacez les fichiers, puis démarrez le serveur et relancez FiveM. Une simple reconnexion peut garder d'anciens assets streamés. Ne rechargez pas le MLO à chaud pendant qu'un client est connecté, même loin du bâtiment.
Retour en arrière : arrêtez ces ressources, restaurez les dossiers de ressources et la configuration sauvegardés, puis redémarrez avec votre txAdmin existant. Conservez le stockage base de données/KVP, sauf si vous restaurez volontairement une sauvegarde de données cohérente.
Conservez les empreintes de la version fournies (SHA256.json) pour les demandes de support.
PhoneHub OS et propriété
Config.PhoneHubOS dans phone/config/phonehub_business.lua contrôle cette édition. ownership='both' autorise l'achat en jeu et l'attribution par un administrateur. Définissez 'admin' ou 'purchase' pour n'autoriser qu'une seule voie. purchasePrice est un montant en monnaie du jeu. Les administrateurs utilisent phonehubowner <online player id> depuis la console du serveur ou avec l'ACE phonehub.admin. L'attribution est bloquée tant qu'un paiement d'achat est en attente. Un propriétaire est enregistré avec l'identifiant de personnage du framework, jamais avec un numéro source de joueur temporaire. La propriété active le système existant de stock durable et de budget de fonctionnement.
Les propriétaires ajoutent du personnel ou des gérants à proximité dans l'onglet Business. Ces rôles indépendants passent par le bridge d'identité du framework ; ils ne modifient pas le métier principal d'un joueur. Les rôles de métier PhoneHub existants et les accès administratifs configurés fonctionnent toujours. Par défaut, les gérants peuvent commander des fournitures, et le personnel peut réceptionner les livraisons arrivées. Le stock reste réservé jusqu'à la confirmation d'un achat ou d'une livraison fournisseur.
service='hybrid' permet à la fois le paiement et les réparations assistés et en libre-service. 'self' permet le service direct ; 'staff' exige une offre du personnel approuvée par le client dans cette boutique. Le produit seul garde son OS d'achat existant.
À la borne en magasin, approchez-vous et appuyez sur E. L'onglet Shop charge le vrai modèle Pulse protégé, avec rotation par glisser, inspection avant/arrière, zoom et finition sélectionnée. Le prix vient du serveur du téléphone. Le paiement exige une confirmation et utilise l'inventaire, l'argent et la remise du téléphone en boîte configurés. Un délai dépassé ne prouve pas que le débit a échoué ; vérifiez l'inventaire et le journal des paiements avant de réessayer.
Les clients demandent de l'aide pour une vente ou une réparation dans l'onglet Help et reçoivent un numéro de file d'attente. Le personnel choisit un client à proximité dans l'onglet Counter et prépare une offre ; seul ce client peut l'approuver et payer. Les deux doivent rester dans la même boutique et dans le même routing bucket. L'approbation d'une réparation est liée à l'appareil unique sélectionné et à son prix annoncé. Changer d'appareil l'annule.
Pour les réparations assistées, le technicien ouvre le terminal à un établi de réparation libre, prépare l'offre de réparation du client, et reste sur place jusqu'à l'acceptation. L'établi est réservé avant le paiement. Une réparation payée et réussie lance la séquence d'assemblage avec ce joueur comme technicien ; le libre-service utilise le technicien de la boutique. Le moteur du téléphone gère la réparation de l'appareil et récupère le travail payé après une session serveur interrompue. Les props côté client ne créent ni ne remplacent jamais un téléphone d'inventaire.
L'onglet Space, aux points de commande du toit et du comptoir, contrôle l'auvent, la climatisation, les verrous, l'éclairage et l'écran. La géométrie, la protection contre les intempéries, les sols et les sièges du MLO terminé sont conservés.