Valable une seule fois par client sur les commandes passées à partir du $10.
Téléphone LB v2
Le prix initial était : $99.00.$49.00Le prix actuel est : $49.00.
Un téléphone avancé pour FiveM avec des fonctionnalités uniques et de bonnes performances.
Démo téléphonique : https://lbscripts.com/phone
- Qualité supérieure
- Entièrement Open Source
- Paiements sécurisés
- Garantie de satisfaction
- Garantie de remboursement de 30 jours
Description
Applications personnalisées
LB Phone vous permet d'ajouter des applications dotées d'une interface utilisateur ou déclenchant simplement des fonctions à leur ouverture. Pour ajouter une application déclenchant une fonction à son ouverture, rendez-vous sur lb-phone/config/config.lua et ajoutez l'application à la Config.CustomApps table, comme ceci :
Config.CustomApps = { ["app_identifier"] = { -- Un identifiant unique pour l'application, non affiché à l'utilisateur nom = "Nom de l'application", -- Le nom de l'application, affiché à l'utilisateur description = "Description de l'application", -- La description de l'application, affichée à l'utilisateur développeur = "LB Phone", -- FACULTATIF le développeur de l'application defaultApp = true, -- FACULTATIF si défini sur true, l'application doit être ajoutée sans avoir à la télécharger, jeu = faux, -- FACULTATIF si défini sur vrai, l'application sera ajoutée à la section jeu taille = 59812, -- FACULTATIF en Ko images = { "https://example.com/photo.jpg" }, -- tableau OPTIONNEL d'images pour l'application sur l'App Store ui = "nom-ressource/ui/index.html", -- FACULTATIF icon = "https://cfx-nui-" .. GetCurrentResourceName() .. "/ui/icon.png", -- icône d'application FACULTATIVE prix = 0, -- FACULTATIF, obliger les joueurs à payer avec l'argent du jeu pour télécharger l'application paysage = faux, -- OPTIONNEL, si défini sur vrai, l'application sera affichée en mode paysage keepOpen = true, -- FACULTATIF, si défini sur true, l'application ne se fermera pas lorsque le lecteur ouvrira l'application (fonctionne uniquement si l'interface utilisateur n'est pas définie) onUse = function() -- Fonction FACULTATIVE à appeler lorsque l'application est ouverte -- faire quelque chose fin, onServerUse = function(source) -- Fonction côté serveur FACULTATIVE à appeler lorsque l'application est ouverte -- faire quelque chose fin }}
Applications personnalisées utilisant l'interface utilisateur
Si vous souhaitez utiliser une interface utilisateur personnalisée pour votre application, vous devez créer un script séparé et fournir le chemin du fichier HTML et l'envoyer en tant que interface utilisateur.
La méthode recommandée pour créer une application avec interface utilisateur est d'utiliser des exportations. Nous avons applications modèles que vous pouvez utiliser comme référence.
Si le mode sombre est activé, le thème des données sera défini sur sombre. Sinon, il sera défini sur clair.
Ajout de l'application
Pour ajouter l'application, utilisez le Ajouter une application personnalisée exporter.
Suppression de l'application
Pour supprimer l'application, utilisez le SupprimerCustomApp exporter.
Envoi d'un message à l'interface utilisateur
Pour envoyer un message à l'interface utilisateur, vous devez utiliser le Envoyer un message d'application personnalisé exportez au lieu d'utiliser SendNUIMessage. Vous l'écouterez de la même manière dans le frontend.
Composants et fonctions importés
Lorsque l'application est chargée sur le téléphone, quelques fonctions sont importées dans le globalCeci objet.
| Nom | Taper | Description |
|---|---|---|
| nom de la ressource | chaîne | Le nom de la ressource qui a ajouté l'application personnalisée |
| nom de l'application | chaîne | Le nom de l'application |
| paramètres | objet | Les paramètres du téléphone |
| composants | objet | Utile composants pour l'application |
Composants
Les composants suivants sont accessibles via globalThis.components. Vous pouvez afficher un fichier de déclaration TypeScript à l'adresse lb-reactts/ui/src/components.d.ts.
créerGameRender
Crée un rendu de jeu, qui affiche le jeu sur une toile. Ceci permet de créer une caméra dans votre application et doit être utilisé avec l'option exportations de caméras.
const gameRender = composants.createGameRender(canvas) // définir le rapport hauteur/largeurgameRender.resizeByAspect(9 / 16) // mettre le rendu en pausegameRender.pause() // réactiver le rendugameRender.resume() // prendre une photoconst blob : Blob = await gameRender.takePhoto() // prendre une vidéoconst recorder = gameRender.startRecording((blob: Blob) => { const vidéo = URL.createObjectURL(blob)}) attendre une nouvelle promesse((résolution) => setTimeout(résolution, 5000)) enregistreur.stop() // détruire le rendu du jeugameRender.destroy()
uploadMedia
Télécharge le média et renvoie une promesse avec l'URL.
// Le type de téléchargement peut être « Vidéo » | « Image » | « Audio »const url = await components.uploadMedia('Vidéo', blob)
enregistrer dans la galerie
Enregistre une URL vers la galerie et renvoie une promesse avec l'ID
const id = await components.saveToGallery(url)
setColorPicker
composants.setColorPicker({ onSelect(couleur) {}, onClose(couleur) {}})
définirPopUp
composants.setPopUp({ titre : « Menu contextuel », description : 'Confirmez votre choix', boutons : [ { titre : « Annuler », couleur : 'rouge', cb:() => { console.log('Annuler') } }, { titre : « Confirmer », couleur : 'bleu', cb:() => { console.log('Confirmer') } } ]})
définirContextMenu
composants.setContextMenu({ titre : « Menu contextuel », boutons : [ { titre : « Notification téléphonique », couleur : 'bleu', cb:() => { sendNotification({ titre : notificationText }) } }, { titre : « Notification GTA », couleur : 'rouge', cb:() => { fetchNui('drawNotification', { message: notificationText }) } } ]})
définirContactSelector
composants.setContactSelector({ onSelect(contact) { composants.setPopUp({ titre : « Contact sélectionné », description : `${contact.firstname ?? '??'} ${contact.lastname ?? ''} ${contact.number}`, boutons : [ { titre : « OK » } ] }) }})
setShareComponent
Voir le Exportation AirShare pour savoir quelles données envoyer.
composants.setShareComponent({ type : 'image', données: { isVideo : faux, source : « https://docs.lbscripts.com/images/icons/icon.png » }})
définirEmojiPickerVisible
composants.setEmojiPickerVisible({ onSelect : (émoji) => { composants.setEmojiPickerVisible(false) composants.setPopUp({ titre : « Emoji sélectionné », description : emoji.emoji, boutons : [ { titre : « OK » } ] }) }})
setGifPickerVisible
composants.setGifPickerVisible({ onSelect(gif) { composants.setPopUp({ titre : « GIF sélectionné », pièce jointe : { src : gif }, boutons : [ { titre : « OK » } ] }) }})
setGallery
composants.setGallery({ includeVideos : vrai, includeImages : vrai, allowExternal : vrai, multiSelect : faux, onSelect(données) { composants.setPopUp({ titre : « Médias sélectionnés », pièce jointe : { src : Array.isArray(data) ? data[0].src : data.src }, boutons : [ { titre : « OK » } ] }) }})
définirFullscreenImage
composants.setFullscreenImage('https://docs.lbscripts.com/images/icons/icon.png')
définirHomeIndicatorVisible
composants.setHomeIndicatorVisible(true)
Fonctions
fetchNui(événement, données, scriptName ?)
fetchNui('test', { foo: 'bar'})
onNuiEvent
Écoutez les messages NUI envoyés via Envoyer un message d'application personnalisé
onNuiEvent('test', (données) => { console.log(données)})
sur les paramètres de modification
Écoutez les changements de paramètres
onSettingsChange((newSettings) => { console.log(nouveaux paramètres)})
créerAppel
createCall({ numéro : '1234567890', // vous pouvez envoyer « company » au lieu de « number » pour appeler une entreprise appel vidéo : faux, hideNumber : faux})









