Pulse Phone Doku
Inventare
4. Items und Inventare
Items werden nur auf Framework-Servern gebraucht. Die Dateien liegen in config/items/ und die Bilder in config/items/images/.
Was das Handy von selbst macht. Beim Start ermittelt es, welche Items die eingeschalteten Features brauchen (Tabelle unten), und dann:
| Dein Inventar | Was passiert |
|---|---|
| ESX mit seinem Standard-Inventar | Die fehlenden Items werden in die ESX-Tabelle items eingefügt. Bestehende Zeilen werden nie geändert. Die Konsole gibt eine Zeile aus, die nennt, was hinzugefügt wurde. Auf einem älteren ESX, das seine Items nicht neu laden kann, starte den Server einmal neu. config/items/esx.sql ist nur zum Hinzufügen von Hand. |
| QBCore mit qb-inventory (auch ps-, lj-inventory) | Die fehlenden Items werden während der Laufzeit in die Shared Items von QBCore eingefügt. Ein Item, das qb-core schon hat, etwa sein eigenes phone, bleibt, wie es ist. Die Konsole gibt eine Zeile aus, die nennt, was hinzugefügt wurde. |
| ox_inventory (ESX, Qbox, ox_core) | ox_inventory liest Items nur aus seiner eigenen Datei. Der Start-Check listet nur die fehlenden Items und gibt ihre Einträge unter dem Kasten aus, bereit zum Einfügen in ox_inventory/data/items.lua. |
| Jedes andere Inventar | Der Start-Check nennt die fehlenden Items. Füg sie so hinzu, wie dieses Inventar Items hinzufügt (die Tabelle unter "Was du für dein Inventar tun musst"). |
Wichtig
Bilder werden nie für dich kopiert. Der Start-Check nennt jedes fehlende Bild und den Ordner, in den es gehört, zum Beispiel copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
Der Start-Check hat eine Zeile Items: [OK], wenn jedes Item da ist, oder [FAIL] mit den fehlenden Namen und der Lösung darunter. phone:health gibt sie erneut aus, nachdem du etwas behoben hast.
| Item | Du brauchst es, wenn |
|---|---|
phone |
Nur mit Config.Item.required = true (Spieler müssen ein Handy dabeihaben) oder einzigartigen Handys. |
pulse_phone_box |
Der Laden verkauft Handys in einer versiegelten Box. Standardmäßig an (Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
Das Ladezubehör. Standardmäßig an (Config.Charging). |
pulse_router |
Pulse Home Wi-Fi, der Router, den Spieler zu Hause aufstellen. Standardmäßig an (config/apps.lua). |
pulse_burner |
Der Pulse Burner, ein Prepaid-Handy mit eigener Nummer. Standardmäßig an (config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
Handyschutz: Hüllen, die wasserdichte Tasche und der Displayschutz. Standardmäßig an (config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, das Pulse Ring Light und das Pulse Card Wallet. Standardmäßig an (config/apps.lua). |
powerbank |
Optional. Das alte Powerbank-Item; es funktioniert als Reserve. |
pulse_phone_box_<finish> |
Nur mit Config.Store.boxPerFinish = true. |
radio (oder ein beliebiger Name) |
Nur wenn du Config.Radio.item setzt (Abschnitt 5, Radio). ox_inventory und qb-core haben schon ein Item radio. |
Wenn ein Item fehlt, startet das Handy trotzdem. Der Laden schaltet Boxen ab oder nimmt das Item aus dem Verkauf, und die Konsole nennt das Item, das du hinzufügen musst.
Reserves stapeln sich. Volle Packs tragen keine Metadaten, also teilen sich bis zu 20 einen Slot. Ein teilweise verbrauchter Pack, der abgenommen wird, wird zu einem eigenen Item mit seiner Ladung in den Metadaten (bei ox_inventory, qb-inventory und qs-inventory), braucht also einen freien Slot. Ohne Item-Metadaten (standalone, das Standard-Inventar von ESX) wird nur der Pack in Benutzung erfasst, einer pro Charakter und Größe.
Mit Config.Item.required = true (oder einzigartigen Handys) prüft der Server das Handy-Item über dein Inventar und lehnt Handy-Anfragen von Spielern ohne Handy ab. Verliert ein Spieler das Item, enden seine Anrufe, Notrufe eingeschlossen, und das Handy schließt sich.
Eine versiegelte Box an jemand anderen geben. Bei ox_inventory, qb-inventory und qs-inventory trägt das Box-Item selbst das gekaufte Modell und Finish, sodass jeder, der es öffnet, dieses Handy bekommt. Bei jedem anderen Inventar ist die Box ein einfaches Item, und Modell und Finish liegen im Kaufdatensatz des Käufers: Eine verschenkte Box öffnet sich als nächster eigener Kauf des neuen Besitzers oder als Standardmodell und -finish. Mit Config.Store.boxPerFinish = true behält der Name des Box-Items das Finish, aber nicht das Modell.
Der genaue Text zum Einfügen, für dein Inventar
Du musst nie selbst einen Item-Eintrag ausarbeiten. Wenn ein Item fehlt, gibt der Start-Check unter seinem Kasten genau den Text für dein Inventar aus, und Settings > Server > Health Check zeigt denselben Text mit einem Copy-Button. Füg ihn ein, starte das Inventar und das Handy neu und führ phone:health erneut aus.
| Dein Inventar | Was ausgegeben wird | Wo es hingehört |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | ox_inventory-Einträge | ox_inventory/data/items.lua, innerhalb der Tabelle |
| QBCore (qb-, ps-, lj-inventory) | QBCore-Einträge (nur wenn das Handy sie nicht selbst hinzufügen konnte) | qb-core/shared/items.lua |
| qs-inventory | Einträge im QBCore-Format | Die Item-Liste von qs-inventory |
| Standard-ESX-Inventar | Eine SQL-Zeile (nur wenn das Handy sie nicht selbst hinzufügen konnte) | Dein Datenbank-Tool, dann neu starten |
| TMC | TMC-Einträge für jedes Item, das das Handy braucht (TMC lässt sich nicht fragen, welche es hat) | Die Item-Liste von TMC (die Datei mit sim_card), die vorhandenen bleiben |
| Jedes andere Inventar | Einträge im QBCore-Format, das Format, das die meisten Inventare lesen | Die Item-Liste dieses Inventars |
So sieht jeder aus, für das 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);Das eigene Item phone von ox_inventory. ox_inventory liefert einen Eintrag phone mit, der für ein anderes Handy-Script gemacht ist. Du musst ihn nicht ändern: Wird er benutzt, öffnet sich Pulse Phone. Der Start-Check hat eine Zeile Phone item, die sagt, wie dein Eintrag verknüpft ist. Nur wenn sie den Export eines anderen Scripts nennt ([WARN], oder [FAIL] mit Pflicht- oder einzigartigen Handys), gibt sie den Ersatz-Eintrag aus. Wenn das Handy-Script, für das dieser Eintrag gemacht wurde, noch läuft, öffnet das Item stattdessen dieses: Die Zeile Phone item nennt es; entferne es aus der server.cfg.
Was du für dein Inventar tun musst
| Inventar | Wo die Items hingehören | Wo die Bilder hingehören |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | Füg die Einträge, die der Start-Check ausgibt (oder die ganze ox_inventory.lua), in ox_inventory/data/items.lua ein, innerhalb der Tabelle. Behalte den eigenen Eintrag ['phone'] von ox_inventory (er öffnet Pulse Phone); ersetz ihn nur dann durch den ausgegebenen, wenn die Zeile Phone item sagt, dass er ein anderes Script öffnet |
ox_inventory/web/images/ |
| qb-inventory | Nichts: beim Start hinzugefügt. Um sie stattdessen von Hand hinzuzufügen, füg qb-core.lua in qb-core/shared/items.lua ein |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | Nichts: beim Start hinzugefügt, wie bei qb-inventory | der Bilderordner deines Inventars |
| qs-inventory | Füg qb-core.lua in qb-core/shared/items.lua ein oder in die eigene Item-Liste von qs-inventory |
der Bilderordner deines Inventars |
| codem-inventory, core_inventory, tgiann-inventory, origen_inventory | Füg die Items so zu seiner Item-Liste hinzu, wie du jedes andere Item hinzufügst, mit den Namen, Labels und Gewichten aus 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). Nutze pulse_magpack.png auch für powerbank und pulse_magpack_max |
der Bilderordner deines Inventars |
| ak47_inventory | Füg die Items hinzu, dazu die onUse-Zeilen unten |
der Bilderordner deines Inventars |
| Standard-ESX-Inventar | Nichts: beim Start hinzugefügt. esx.sql ist der Weg von Hand |
nicht nötig |
| vRP 2 | Siehe den Abschnitt zu vRP oben | |
| Standalone | Nichts |
Für die anderen Inventare in dieser Tabelle macht das Handy die Items selbst benutzbar. ox_inventory nutzt die Zeilen client = { export = 'phone....' }, die schon in seiner Datei stehen.
ox_inventory: Wenn du vorher ein anderes Handy genutzt hast, entferne auch seinen Item('phone', ...)-Hook aus ox_inventory/modules/items/client.lua.
ak47_inventory legt die Item-Benutzung im eigenen Eintrag jedes Items fest. Füg diese hinzu:
-- 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 },Einzigartige Handys (Config.Item.unique = true) legen die Telefonnummer auf das Item, sodass die Weitergabe des Items das Handy weitergibt. Sie brauchen ox_inventory, qb-inventory, qs-inventory, core_inventory oder codem-inventory.