Documentation Pulse Phone
Inventaires
4. Items et inventaires
Les items ne sont nécessaires que sur les serveurs avec framework. Les fichiers sont dans config/items/ et les images dans config/items/images/.
Ce que le téléphone fait tout seul. Au démarrage, il détermine de quels items ont besoin les fonctionnalités que vous avez activées (le tableau ci-dessous), puis :
| Votre inventaire | Ce qui se passe |
|---|---|
| ESX avec son inventaire par défaut | Les items manquants sont ajoutés à la table items d'ESX. Les lignes existantes ne sont jamais modifiées. La console affiche une ligne qui nomme ce qui a été ajouté. Sur un ESX ancien qui ne peut pas recharger ses items, redémarrez le serveur une fois. config/items/esx.sql sert uniquement à les ajouter à la main. |
| QBCore avec qb-inventory (ps-, lj-inventory aussi) | Les items manquants sont ajoutés aux items partagés de QBCore pendant que le serveur tourne. Un item que qb-core possède déjà, comme son propre phone, est laissé tel quel. La console affiche une ligne qui nomme ce qui a été ajouté. |
| ox_inventory (ESX, Qbox, ox_core) | ox_inventory ne lit les items que depuis son propre fichier. La vérification au démarrage liste uniquement les items manquants et affiche leurs entrées sous l'encadré, prêtes à coller dans ox_inventory/data/items.lua. |
| Tout autre inventaire | La vérification au démarrage nomme les items manquants. Ajoutez-les comme cet inventaire ajoute les items (le tableau sous « Que faire pour votre inventaire »). |
Important
Les images ne sont jamais copiées à votre place. La vérification au démarrage nomme chaque image manquante et le dossier où elle doit aller, par exemple copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
La vérification au démarrage a une ligne Items : [OK] quand tous les items sont là, ou [FAIL] avec les noms manquants et la solution en dessous. phone:health l'affiche de nouveau après une correction.
| Item | Vous en avez besoin quand |
|---|---|
phone |
Uniquement avec Config.Item.required = true (les joueurs doivent avoir un téléphone sur eux) ou les téléphones uniques. |
pulse_phone_box |
La boutique vend les téléphones dans une boîte scellée. Activé par défaut (Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
Les accessoires de recharge. Activés par défaut (Config.Charging). |
pulse_router |
Pulse Home Wi-Fi, le routeur que les joueurs placent chez eux. Activé par défaut (config/apps.lua). |
pulse_burner |
Le Pulse Burner, un téléphone prépayé avec son propre numéro. Activé par défaut (config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
Protection du téléphone : coques, pochette étanche et protection d'écran. Activé par défaut (config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, le Pulse Ring Light et le Pulse Card Wallet. Activés par défaut (config/apps.lua). |
powerbank |
Facultatif. L'ancien item batterie externe ; il fonctionne comme une Reserve. |
pulse_phone_box_<finish> |
Uniquement avec Config.Store.boxPerFinish = true. |
radio (ou n'importe quel nom) |
Uniquement si vous définissez Config.Radio.item (section 5, Radio). ox_inventory et qb-core ont déjà un item radio. |
Si un item manque, le téléphone démarre quand même. La boutique désactive les boîtes ou retire cet item de la vente, et la console nomme l'item à ajouter.
Les Reserves s'empilent. Les batteries pleines n'ont pas de métadonnées, donc jusqu'à 20 partagent un emplacement. Une batterie retirée en partie utilisée devient un item à part avec sa charge dans ses métadonnées (sur ox_inventory, qb-inventory et qs-inventory), elle a donc besoin d'un emplacement libre. Sans métadonnées d'items (standalone, inventaire ESX par défaut), seule la batterie en cours d'utilisation est suivie, une par personnage et par taille.
Avec Config.Item.required = true (ou les téléphones uniques), le serveur vérifie l'item téléphone via votre inventaire et refuse les requêtes téléphone d'un joueur qui ne l'a pas. Perdre l'item met fin aux appels de ce joueur, appels d'urgence compris, et ferme le téléphone.
Donner une boîte scellée à quelqu'un d'autre. Sur ox_inventory, qb-inventory et qs-inventory, l'item boîte porte lui-même le modèle et la finition achetés : la personne qui l'ouvre obtient ce téléphone. Sur tous les autres inventaires, la boîte est un item simple et le modèle et la finition sont stockés dans l'historique d'achat de l'acheteur : une boîte donnée s'ouvre comme le prochain achat du nouveau propriétaire, ou avec le modèle et la finition par défaut. Avec Config.Store.boxPerFinish = true, le nom de l'item boîte conserve la finition, mais pas le modèle.
Le texte exact à coller, pour votre inventaire
Vous n'avez jamais à rédiger vous-même une entrée d'item. Quand un item manque, la vérification au démarrage affiche le texte exact pour votre inventaire sous son encadré, et Settings > Server > Health Check affiche le même texte avec un bouton Copy. Collez-le, redémarrez l'inventaire et le téléphone, puis relancez phone:health.
| Votre inventaire | Ce qui est affiché | Où ça va |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | Entrées ox_inventory | ox_inventory/data/items.lua, à l'intérieur de sa table |
| QBCore (qb-, ps-, lj-inventory) | Entrées QBCore (uniquement si le téléphone n'a pas pu les ajouter lui-même) | qb-core/shared/items.lua |
| qs-inventory | Entrées au format QBCore | La liste d'items de qs-inventory |
| Inventaire ESX par défaut | Une ligne SQL (uniquement si le téléphone n'a pas pu les ajouter lui-même) | Votre outil de base de données, puis redémarrage |
| TMC | Entrées TMC pour chaque item dont le téléphone a besoin (on ne peut pas demander à TMC lesquels il a) | La liste d'items de TMC (le fichier qui contient sim_card), en gardant ceux que vous avez déjà |
| Tout autre inventaire | Entrées au format QBCore, le format que lisent la plupart des inventaires | La liste d'items de cet inventaire |
À quoi ressemble chacun, pour la Reserve :
-- ox_inventory/data/items.lua
['pulse_magpack'] = { label = "Pulse Reserve", weight = 110, stack = true, close = true, consume = 0, description = "Magnetic battery pack. Fills 70% of a phone.", client = { export = "phone.usePack", image = "pulse_magpack.png" } },
-- qb-core/shared/items.lua, qs-inventory and similar
['pulse_magpack'] = { name = "pulse_magpack", label = "Pulse Reserve", weight = 110, type = 'item', image = "pulse_magpack.png", unique = false, useable = true, shouldClose = true, description = "Magnetic battery pack. Fills 70% of a phone." },
-- TMC
['pulse_magpack'] = { ['label'] = "Pulse Reserve", ['weight'] = 110, ['type'] = 'item', ['image'] = "pulse_magpack.png", ['unique'] = false, ['stackable'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = "Magnetic battery pack. Fills 70% of a phone." },-- ESX default inventory
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('pulse_magpack', 'Pulse Reserve', 1, 0, 1);L'item phone propre à ox_inventory. ox_inventory fournit une entrée phone conçue pour un autre script de téléphone. Vous n'avez pas besoin de la modifier : l'utiliser ouvre Pulse Phone. La vérification au démarrage a une ligne Phone item qui indique comment votre entrée est branchée. C'est seulement quand elle nomme l'export d'un autre script ([WARN], ou [FAIL] avec les téléphones obligatoires ou uniques) qu'elle affiche l'entrée de remplacement. Si le script de téléphone pour lequel cette entrée a été conçue tourne encore, l'item ouvre celui-ci à la place : la ligne Phone item le nomme ; retirez-le de server.cfg.
Que faire pour votre inventaire
| Inventaire | Où vont les items | Où vont les images |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | Collez les entrées affichées par la vérification au démarrage (ou tout le fichier ox_inventory.lua) dans ox_inventory/data/items.lua, à l'intérieur de sa table. Gardez l'entrée ['phone'] propre à ox_inventory (elle ouvre Pulse Phone) ; remplacez-la par celle affichée uniquement si la ligne Phone item indique qu'elle ouvre un autre script |
ox_inventory/web/images/ |
| qb-inventory | Rien : ajoutés au démarrage. Pour les ajouter plutôt à la main, collez qb-core.lua dans qb-core/shared/items.lua |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | Rien : ajoutés au démarrage, comme pour qb-inventory | le dossier d'images de votre inventaire |
| qs-inventory | Collez qb-core.lua dans qb-core/shared/items.lua, ou dans la liste d'items propre à qs-inventory |
le dossier d'images de votre inventaire |
| codem-inventory, core_inventory, tgiann-inventory, origen_inventory | Ajoutez les items à sa liste d'items comme vous ajoutez n'importe quel item, avec les noms, libellés et poids de qb-core.lua (phone, powerbank, pulse_magpack, pulse_magpack_max, pulse_cable, pulse_router, pulse_burner, pulse_buds, pulse_ringlight, pulse_wallet, pulse_phone_box). Utilisez pulse_magpack.png aussi pour powerbank et pulse_magpack_max |
le dossier d'images de votre inventaire |
| ak47_inventory | Ajoutez les items, plus les lignes onUse ci-dessous |
le dossier d'images de votre inventaire |
| Inventaire ESX par défaut | Rien : ajoutés au démarrage. esx.sql est la méthode manuelle |
pas nécessaire |
| vRP 2 | Voir la section vRP ci-dessus | |
| Standalone | Rien |
Pour les autres inventaires de ce tableau, le téléphone rend lui-même les items utilisables. ox_inventory utilise les lignes client = { export = 'phone....' } déjà présentes dans son fichier.
ox_inventory : si vous utilisiez un autre téléphone avant, retirez aussi son hook Item('phone', ...) de ox_inventory/modules/items/client.lua.
ak47_inventory définit l'utilisation de chaque item dans sa propre entrée. Ajoutez ceci :
-- powerbank
server = { onUse = function(source) exports.phone:UsePowerbank(source) end },
-- pulse_magpack and pulse_magpack_max
server = { onUse = function(source, item) exports.phone:UseMagPack(source, item and item.slot, item and item.name) end },
-- pulse_cable
server = { onUse = function(source) exports.phone:UseChargingCable(source) end },
-- pulse_phone_box
server = { onUse = function(source, item) exports.phone:UseBox(source, item and item.slot) end },
-- pulse_router
server = { onUse = function(source) exports.phone:UseRouter(source) end },
-- pulse_burner
server = { onUse = function(source, item) exports.phone:UseBurner(source, item and item.slot) end },
-- pulse_case, pulse_case_clear, pulse_pouch, pulse_protector
server = { onUse = function(source, item) exports.phone:FitPhoneProtection(source, item and item.name) end },
-- pulse_buds
server = { onUse = function(source) exports.phone:UseBuds(source) end },
-- pulse_ringlight
server = { onUse = function(source) exports.phone:UseRingLight(source) end },
-- pulse_wallet
server = { onUse = function(source) exports.phone:UseCardWallet(source) end },Les téléphones uniques (Config.Item.unique = true) placent le numéro de téléphone sur l'item : donner l'item, c'est donner le téléphone. Ils nécessitent ox_inventory, qb-inventory, qs-inventory, core_inventory ou codem-inventory.