Économisez 20% dès aujourd'hui Utilisez le code BIENVENUE lors du paiement. ACCUEILLIR

CrewPhone : solution indispensable pour résoudre le problème de hachage impossible

Vous rencontrez des difficultés avec la génération de numéros de CrewPhone ? Une simple modification du fichier es_extended client.lua vous permettra d'afficher correctement vos numéros en quelques secondes !

Comment résoudre le problème de hachage CrewPhone (###)

De nombreux joueurs qui utilisent l'addon CrewPhone (ou gcPhone) sur leurs serveurs FiveM se retrouvent face à un nombre apparemment aléatoire comme ###-#### au lieu du numéro de téléphone complet attendu. Il s'agit d'un bug subtil mais perturbateur qui empêche les joueurs de passer des appels, d'envoyer des messages ou d'utiliser le téléphone en jeu. Si vous rencontrez ce problème, vous n'êtes pas seul, et la solution est assez simple.

Problème de hachage CrewPhone : solution rapide

Le problème est généralement dû à l'absence d'un événement côté client qui indique au serveur qu'un joueur a entièrement chargé le jeu. Sans cette petite notification, le script côté serveur qui génère les numéros de téléphone revient souvent à une séquence par défaut, produisant les numéros d'espace réservé que vous voyez. La solution consiste à déclencher un événement serveur dès que l'équipement du joueur est restauré.

Voici l'extrait complet, prêt à être copié, que vous pouvez insérer dans votre `client.lua` (ou un script client Es_extended équivalent) :

« Lua
— Déclencher un événement serveur dès que le lecteur est chargé
TriggerServerEvent('crew:onPlayerLoaded', GetPlayerServerId(PlayerId()))

— Exemple : Fixer au crochet de restauration de chargement existant
AddEventHandler('esx:restoreLoadout', fonction()
joueur localPed = PlayerPedId()
ammoTypes locaux = {}

— Retirer toutes les armes préexistantes
RemoveAllPedWeapons(joueurPed, vrai)

— Redonner au joueur son équipement
pour _, arme dans ipairs(ESX.PlayerData.loadout) faire
nom d'arme local = nom.d'arme
ammoType local = GetPedAmmoTypeFromWeapon(playerPed, weaponName)

— Ajouter une arme au piéton
GiveWeaponToPed(playerPed, weaponName, 0, false, false)
SetPedWeaponTintIndex(playerPed, weaponName, weapon.tintIndex)

— Ajoutez tous les composants d’armes
pour _, composant dans ipairs(weapon.components) faire
composant localHash = ESX.GetWeaponComponent(weaponName, component).hash
GiveWeaponComponentToPed(playerPed, weaponName, componentHash)
fin

— Ajoutez des munitions une seule fois par type
si ce n'est pas ammoTypes[ammoType] alors
AddAmmoToPed(playerPed, weaponName, weapon.ammo)
ammoTypes[ammoType] = true
fin
fin

— Dites au serveur que le joueur est complètement chargé
TriggerServerEvent('crew:onPlayerLoaded', GetPlayerServerId(PlayerId()))

isLoadoutLoaded = vrai
fin)
“`

Il vous suffit de coller ce bloc au-dessus du reste de votre code côté client, en vous assurant qu'il s'exécute immédiatement après la restauration complète des données du joueur.

Pourquoi l'événement est crucial

Sur un serveur FiveM classique exécutant Es_extended, les données du joueur (y compris son numéro de téléphone) sont stockées sur le serveur et récupérées à chaque connexion. Le script client renvoie ensuite un événement « joueur chargé » au serveur afin que celui-ci sache que tous les éléments requis (armes, vêtements, données téléphoniques) ont été appliqués.

Si cet événement est manquant, le serveur ne peut pas lier correctement le numéro de téléphone à l'objet joueur, ce qui l'amène à revenir à l'une des options suivantes :

1. Un hachage par défaut illisible (le tristement célèbre « ###-#### »), ou
2. Aucun numéro du tout, ce qui oblige le client à en demander un nouveau, provoquant à nouveau le même problème.

En lançant « crew:onPlayerLoaded » au bon moment, vous donnez au serveur la possibilité de lier l'objet joueur fraîchement chargé à son numéro de téléphone enregistré. La partie conversion de hachage du script transforme ensuite correctement ce numéro en un format lisible.

Guide de configuration étape par étape

1. Localisez votre script client
Recherchez le fichier « client.lua » (ou un fichier portant un nom similaire) dans votre dossier de ressources « es_extended » ou « CrewPhone ».

2. Insérer le déclencheur
Tout en haut du fichier, ajoutez :
« Lua
TriggerServerEvent('crew:onPlayerLoaded', GetPlayerServerId(PlayerId()))
“`
Cela garantit que l'événement se déclenche avant même que toute autre logique ne s'exécute.

3. Mettre à jour le crochet de chargement
Recherchez la ligne `AddEventHandler('esx:restoreLoadout', function()`.
Remplacez ou augmentez le gestionnaire avec l'exemple complet présenté ci-dessus.

4. Enregistrer et recharger
Enregistrez le fichier, puis exécutez ce qui suit dans la console de votre serveur :
« bash
appliquer_pgsql
redémarrer CrewPhone
redémarrer es_extended
“`
Sinon, redémarrez simplement l’ensemble du serveur pour vous assurer que toutes les modifications prennent effet.

5. Test
Rejoignez le serveur, équipez-vous d'une arme et ouvrez votre téléphone en jeu. Le numéro devrait maintenant s'afficher correctement, par exemple : « 012-3456 ».

Dépannage des problèmes courants

| Problème | Cause possible | Solution |
|———|—————-|—–|
| Le numéro de téléphone s'affiche toujours comme « ###-#### » | L'événement ne se déclenche pas (par exemple, ordre de script incorrect) | Vérifiez que la ligne « TriggerServerEvent » apparaît au-dessus de toutes les autres définitions de fonction. |
| Les journaux du serveur affichent « ERREUR : crew:onPlayerLoaded » | Événement mal nommé côté serveur | Vérifiez que le script du serveur écoute `crew:onPlayerLoaded` (généralement dans `server.lua`).
| Le joueur reçoit un différent numéro à chaque fois | Régénération du numéro au chargement | Assurez-vous que `crew:onPlayerLoaded` ne se déclenche qu'une fois le chargement entièrement appliqué ; l'extrait ci-dessus gère cela.
| Le jeu plante lors du chargement des armes | Valeur de hachage ou de composant d'arme incorrecte | Confirmez que la version ESX que vous utilisez correspond à l'API de l'extrait (certaines versions plus anciennes utilisent `GetWeaponComponent`.) |

Alternatives si le script ne fonctionne pas

Bien que la solution ci-dessus fonctionne pour la plupart des configurations, vous pourriez rencontrer des difficultés si votre serveur exécute des scripts personnalisés ou un framework différent. Voici quelques approches alternatives :

1. Appelez directement la fonction d'enregistrement téléphonique
« Lua
TriggerServerEvent('crew:registerPhone', GetPlayerServerId(PlayerId()))
“`
Certaines variantes de CrewPhone exposent un événement « registerPhone » qui force le serveur à générer un nouveau numéro quel que soit l'état de chargement.

2. Corriger le générateur de numéros côté serveur
Localisez le script du serveur qui gère « crew:onPlayerLoaded » et assurez-vous qu'il inclut :
« Lua
si ce n'est pas playerData.phone alors
playerData.phone = GeneratePhoneNumber()
fin
TriggerClientEvent('crew:setPhoneNumber', src, playerData.phone)
“`
Cela oblige à définir un numéro approprié même si le client n'en a pas demandé un.

Aller au-delà du problème du hachage

La résolution du problème de hachage n'est qu'une étape pour un système téléphonique performant sur votre serveur. Pour tirer le meilleur parti de CrewPhone, pensez à ajouter :

Sons d'appel personnalisés – Remplacez la sonnerie par défaut par des genres localisés.
Protection contre le spam dans les messages – Implémentez des temps de recharge pour éviter que les joueurs n’inondent le chat.
Importation de contacts – Permettre aux joueurs d’importer des contacts à partir d’une base de données partagée pour une gestion plus facile.

Chacune de ces améliorations peut être abordée plus tard, mais en commençant par la correction du hachage, vous éliminerez un point de friction majeur pour vos joueurs.

Conclusion

Le Problème de hachage CrewPhone Il s'agit d'un bug mineur qui peut sembler être un obstacle majeur. En vous assurant que le client déclenche l'événement « crew:onPlayerLoaded » immédiatement après la restauration de l'équipement d'un joueur, vous indiquez au serveur de lier le bon numéro de téléphone, éliminant ainsi l'affichage de l'espace réservé « ###-#### ». Implémentez l'extrait de code ci-dessus, testez-le et vous offrirez une expérience téléphonique fluide à vos joueurs.

Récapitulatif rapide :

1. Insérer le déclencheur d'événement en haut de votre dossier client.
2. Corriger le gestionnaire « esx:restoreLoadout » avec l'exemple de code détaillé.
3. Redémarrer le serveur et vérifiez que le numéro s'affiche correctement.

Grâce à ces étapes, le problème de hachage du CrewPhone ne sera plus qu'un souvenir, permettant à votre communauté de profiter d'un système téléphonique pleinement fonctionnel en jeu. Bon jeu !

Luc
Luc

Je m'appelle Luke, je suis un joueur et j'adore écrire sur FiveM, GTA et le jeu de rôle. Je dirige une communauté de jeu de rôle et j'ai environ 10 ans d'expérience dans l'administration de serveurs.

Articles: 570

Laisser un commentaire