Documentación de Pulse Phone
Inventarios
4. Items e inventarios
Los items solo hacen falta en servidores con framework. Los archivos están en config/items/ y las imágenes en config/items/images/.
Lo que hace el teléfono por sí solo. Al iniciar, determina qué items necesitan las funciones que tienes activadas (la tabla de abajo), y después:
| Tu inventario | Qué pasa |
|---|---|
| ESX con su inventario por defecto | Los items que faltan se añaden a la tabla items de ESX. Las filas existentes nunca se modifican. La consola muestra una línea con lo que añadió. En un ESX antiguo que no puede recargar sus items, reinicia el servidor una vez. config/items/esx.sql es solo para añadirlos a mano. |
| QBCore con qb-inventory (también ps-, lj-inventory) | Los items que faltan se añaden a los shared items de QBCore mientras el servidor está en marcha. Un item que qb-core ya tiene, como su propio phone, se deja como está. La consola muestra una línea con lo que añadió. |
| ox_inventory (ESX, Qbox, ox_core) | ox_inventory solo lee items de su propio archivo. La comprobación de inicio lista solo los items que faltan y muestra sus entradas debajo del recuadro, listas para pegar en ox_inventory/data/items.lua. |
| Cualquier otro inventario | La comprobación de inicio nombra los items que faltan. Añádelos como ese inventario añade los items (la tabla de "Qué hacer según tu inventario"). |
Importante
Las imágenes nunca se copian por ti. La comprobación de inicio nombra cada imagen que falta y la carpeta donde va, por ejemplo copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
La comprobación de inicio tiene una línea Items: [OK] cuando están todos los items, o [FAIL] con los nombres que faltan y la solución debajo. phone:health la vuelve a mostrar después de que arregles algo.
| Item | Lo necesitas cuando |
|---|---|
phone |
Solo con Config.Item.required = true (los jugadores deben llevar un teléfono) o con teléfonos únicos. |
pulse_phone_box |
La tienda vende los teléfonos en una caja precintada. Activado por defecto (Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
Los accesorios de carga. Activado por defecto (Config.Charging). |
pulse_router |
Pulse Home Wi-Fi, el router que los jugadores colocan en casa. Activado por defecto (config/apps.lua). |
pulse_burner |
El Pulse Burner, un teléfono de prepago con su propio número. Activado por defecto (config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
Protección del teléfono: fundas, la bolsa impermeable y el protector de pantalla. Activado por defecto (config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, el Pulse Ring Light y la Pulse Card Wallet. Activado por defecto (config/apps.lua). |
powerbank |
Opcional. El antiguo item de batería externa; funciona como un Reserve. |
pulse_phone_box_<finish> |
Solo con Config.Store.boxPerFinish = true. |
radio (o cualquier nombre) |
Solo cuando configuras Config.Radio.item (sección 5, Radio). ox_inventory y qb-core ya tienen un item radio. |
Si falta un item, el teléfono arranca igualmente. La tienda desactiva las cajas o retira ese item de la venta, y la consola nombra el item que hay que añadir.
Los Reserve se apilan. Los packs llenos no llevan metadata, así que hasta 20 comparten un hueco. Un pack que se quita a medio usar pasa a ser su propio item con su carga en la metadata (en ox_inventory, qb-inventory y qs-inventory), así que necesita un hueco libre. Sin metadata de items (standalone, el inventario por defecto de ESX) solo se sigue el pack en uso, uno por personaje y por tamaño.
Con Config.Item.required = true (o con teléfonos únicos) el servidor comprueba el item del teléfono a través de tu inventario y rechaza las peticiones del teléfono de un jugador que no lo tenga. Perder el item corta las llamadas de ese jugador, incluidas las de emergencia, y cierra el teléfono.
Dar una caja precintada a otra persona. En ox_inventory, qb-inventory y qs-inventory el propio item de la caja lleva el modelo y el acabado que se compraron, así que quien la abra recibe ese teléfono. En cualquier otro inventario la caja es un item simple, y el modelo y el acabado están en el registro de compra del comprador: una caja regalada se abre como la siguiente compra del nuevo dueño, o con el modelo y el acabado por defecto. Con Config.Store.boxPerFinish = true el nombre del item de la caja conserva el acabado, pero no el modelo.
El texto exacto que pegar, según tu inventario
Nunca tienes que escribir tú una entrada de item. Cuando falta un item, la comprobación de inicio muestra el texto exacto para tu inventario debajo de su recuadro, y Settings > Server > Health Check muestra el mismo texto con un botón Copy. Pégalo, reinicia el inventario y el teléfono, y vuelve a ejecutar phone:health.
| Tu inventario | Qué se muestra | Dónde va |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | Entradas de ox_inventory | ox_inventory/data/items.lua, dentro de su tabla |
| QBCore (qb-, ps-, lj-inventory) | Entradas de QBCore (solo si el teléfono no pudo añadirlas por sí mismo) | qb-core/shared/items.lua |
| qs-inventory | Entradas con formato QBCore | La lista de items de qs-inventory |
| Inventario por defecto de ESX | Una línea SQL (solo si el teléfono no pudo añadirlos por sí mismo) | Tu herramienta de base de datos, y luego reinicia |
| TMC | Entradas de TMC para cada item que necesita el teléfono (a TMC no se le puede preguntar cuáles tiene) | La lista de items de TMC (el archivo con sim_card), conservando los que ya tienes |
| Cualquier otro inventario | Entradas con formato QBCore, el formato que leen la mayoría de los inventarios | La lista de items de ese inventario |
Así es cada una, para el 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);El item phone propio de ox_inventory. ox_inventory trae una entrada phone hecha para otro script de teléfono. No necesitas cambiarla: al usarla se abre Pulse Phone. La comprobación de inicio tiene una línea Phone item que indica cómo está conectada tu entrada. Solo cuando nombra el export de otro script ([WARN], o [FAIL] con teléfonos obligatorios o únicos) muestra la entrada de sustitución. Si el script de teléfono para el que se hizo esa entrada sigue en marcha, el item abre ese en su lugar: la línea Phone item lo nombra; quítalo de server.cfg.
Qué hacer según tu inventario
| Inventario | Dónde van los items | Dónde van las imágenes |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | Pega las entradas que muestra la comprobación de inicio (o el ox_inventory.lua completo) en ox_inventory/data/items.lua, dentro de su tabla. Conserva la entrada ['phone'] propia de ox_inventory (abre Pulse Phone); sustitúyela por la que se muestra solo cuando la línea Phone item diga que abre otro script |
ox_inventory/web/images/ |
| qb-inventory | Nada: se añaden al iniciar. Para añadirlos a mano, pega qb-core.lua en qb-core/shared/items.lua |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | Nada: se añaden al iniciar, igual que en qb-inventory | la carpeta de imágenes de tu inventario |
| qs-inventory | Pega qb-core.lua en qb-core/shared/items.lua, o en la propia lista de items de qs-inventory |
la carpeta de imágenes de tu inventario |
| codem-inventory, core_inventory, tgiann-inventory, origen_inventory | Añade los items a su lista de items como añades cualquier item, usando los nombres, etiquetas y pesos 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). Usa pulse_magpack.png también para powerbank y pulse_magpack_max |
la carpeta de imágenes de tu inventario |
| ak47_inventory | Añade los items, más las líneas onUse de abajo |
la carpeta de imágenes de tu inventario |
| Inventario por defecto de ESX | Nada: se añaden al iniciar. esx.sql es la forma manual |
no hace falta |
| vRP 2 | Consulta la sección de vRP de arriba | |
| Standalone | Nada |
Para los demás inventarios de esta tabla, el teléfono hace que los items sean usables por sí mismo. ox_inventory usa las líneas client = { export = 'phone....' } que ya están en su archivo.
ox_inventory: si antes usabas otro teléfono, quita también su hook Item('phone', ...) de ox_inventory/modules/items/client.lua.
ak47_inventory guarda el uso de cada item en su propia entrada. Añade estas:
-- 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 },Los teléfonos únicos (Config.Item.unique = true) ponen el número de teléfono en el item, así que entregar el item es entregar el teléfono. Necesitan ox_inventory, qb-inventory, qs-inventory, core_inventory o codem-inventory.