Documentação do Pulse Phone
Inventários
4. Itens e inventários
Os itens só são necessários em servidores com framework. Os arquivos estão em config/items/ e as imagens em config/items/images/.
O que o celular faz sozinho. Na inicialização ele descobre de quais itens os recursos que você ativou precisam (a tabela abaixo), e então:
| Seu inventário | O que acontece |
|---|---|
| ESX com o inventário padrão | Os itens que faltam são adicionados à tabela items do ESX. As linhas existentes nunca são alteradas. O console imprime uma linha dizendo o que adicionou. Em um ESX mais antigo que não consegue recarregar os itens, reinicie o servidor uma vez. O config/items/esx.sql serve só para adicioná-los à mão. |
| QBCore com qb-inventory (ps-, lj-inventory também) | Os itens que faltam são adicionados aos shared items do QBCore enquanto o servidor roda. Um item que o qb-core já tem, como o próprio phone, fica como está. O console imprime uma linha dizendo o que adicionou. |
| ox_inventory (ESX, Qbox, ox_core) | O ox_inventory só lê itens do próprio arquivo. A verificação de inicialização lista só os itens que faltam e imprime as entradas deles abaixo do quadro, prontas para colar em ox_inventory/data/items.lua. |
| Qualquer outro inventário | A verificação de inicialização aponta os itens que faltam. Adicione-os do jeito que esse inventário adiciona itens (a tabela em "O que fazer para o seu inventário"). |
Importante
As imagens nunca são copiadas por você. A verificação de inicialização aponta cada imagem que falta e a pasta para onde ela vai, por exemplo copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
A verificação de inicialização tem uma linha Items: [OK] quando todos os itens estão lá, ou [FAIL] com os nomes que faltam e a solução abaixo. O phone:health mostra de novo depois que você corrigir algo.
| Item | Você precisa dele quando |
|---|---|
phone |
Só com Config.Item.required = true (os jogadores precisam carregar um celular) ou com celulares únicos. |
pulse_phone_box |
A loja vende celulares em caixa lacrada. Ativado por padrão (Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
Os acessórios de carregamento. Ativados por padrão (Config.Charging). |
pulse_router |
Pulse Home Wi-Fi, o roteador que os jogadores colocam em casa. Ativado por padrão (config/apps.lua). |
pulse_burner |
O Pulse Burner, um celular pré-pago com número próprio. Ativado por padrão (config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
Proteção do celular: capinhas, a pochete à prova d'água e a película. Ativada por padrão (config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, o Pulse Ring Light e a Pulse Card Wallet. Ativados por padrão (config/apps.lua). |
powerbank |
Opcional. O antigo item de power bank; funciona como um Reserve. |
pulse_phone_box_<finish> |
Só com Config.Store.boxPerFinish = true. |
radio (ou qualquer nome) |
Só quando você define Config.Radio.item (seção 5, Radio). O ox_inventory e o qb-core já têm um item radio. |
Se um item estiver faltando, o celular inicia mesmo assim. A loja desliga as caixas ou tira aquele item de venda, e o console indica o item a adicionar.
Os Reserves empilham. Packs cheios não têm metadata, então até 20 dividem um slot. Um pack retirado parcialmente usado vira um item próprio com a carga na metadata (no ox_inventory, qb-inventory e qs-inventory), então precisa de um slot livre. Sem metadata de item (standalone, o inventário padrão do ESX) só o pack em uso é rastreado, um por personagem por tamanho.
Com Config.Item.required = true (ou celulares únicos), o servidor verifica o item do celular pelo seu inventário e recusa requisições de celular de um jogador sem ele. Perder o item encerra as chamadas desse jogador, inclusive as de emergência, e fecha o celular.
Dando uma caixa lacrada para outra pessoa. No ox_inventory, qb-inventory e qs-inventory, o próprio item da caixa carrega o modelo e o acabamento que foram comprados, então quem abrir recebe aquele celular. Em todos os outros inventários a caixa é um item simples e o modelo e o acabamento ficam no registro de compra do próprio comprador: uma caixa dada a alguém abre como a próxima compra do novo dono, ou com o modelo e o acabamento padrão. Com Config.Store.boxPerFinish = true o nome do item da caixa guarda o acabamento, mas não o modelo.
O texto exato para colar, para o seu inventário
Você nunca precisa montar uma entrada de item sozinho. Quando um item está faltando, a verificação de inicialização imprime o texto exato para o seu inventário abaixo do quadro, e Settings > Server > Health Check mostra o mesmo texto com um botão Copy. Cole, reinicie o inventário e o celular, e rode phone:health de novo.
| Seu inventário | O que é impresso | Onde vai |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | Entradas do ox_inventory | ox_inventory/data/items.lua, dentro da tabela |
| QBCore (qb-, ps-, lj-inventory) | Entradas do QBCore (só se o celular não conseguiu adicioná-las sozinho) | qb-core/shared/items.lua |
| qs-inventory | Entradas no formato do QBCore | A lista de itens do qs-inventory |
| Inventário padrão do ESX | Uma linha de SQL (só se o celular não conseguiu adicioná-los sozinho) | Sua ferramenta de banco de dados, depois reinicie |
| TMC | Entradas do TMC para cada item de que o celular precisa (não dá para perguntar ao TMC quais ele tem) | A lista de itens do TMC (o arquivo com sim_card), mantendo os que você já tem |
| Qualquer outro inventário | Entradas no formato do QBCore, o formato que a maioria dos inventários lê | A lista de itens desse inventário |
Como cada uma fica, para o 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);O próprio item phone do ox_inventory. O ox_inventory vem com uma entrada phone feita para outro script de celular. Você não precisa mudá-la: usá-la abre o Pulse Phone. A verificação de inicialização tem uma linha Phone item que diz como a sua entrada está ligada. Só quando ela cita o export de outro script ([WARN], ou [FAIL] com celulares obrigatórios ou únicos) é que ela imprime a entrada substituta. Se o script de celular para o qual essa entrada foi feita ainda estiver rodando, o item abre aquele: a linha Phone item diz qual; remova-o do server.cfg.
O que fazer para o seu inventário
| Inventário | Onde os itens vão | Onde as imagens vão |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | Cole as entradas que a verificação de inicialização imprime (ou o ox_inventory.lua inteiro) em ox_inventory/data/items.lua, dentro da tabela. Mantenha a entrada ['phone'] do próprio ox_inventory (ela abre o Pulse Phone); substitua pela impressa só quando a linha Phone item disser que ela abre outro script |
ox_inventory/web/images/ |
| qb-inventory | Nada: adicionados na inicialização. Para adicioná-los à mão, cole o qb-core.lua em qb-core/shared/items.lua |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | Nada: adicionados na inicialização, como no qb-inventory | a pasta de imagens do seu inventário |
| qs-inventory | Cole o qb-core.lua em qb-core/shared/items.lua, ou na própria lista de itens do qs-inventory |
a pasta de imagens do seu inventário |
| codem-inventory, core_inventory, tgiann-inventory e origen_inventory | Adicione os itens à lista de itens dele do jeito que você adiciona qualquer item, usando os nomes, rótulos e pesos do 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). Use pulse_magpack.png também para powerbank e pulse_magpack_max |
a pasta de imagens do seu inventário |
| ak47_inventory | Adicione os itens, mais as linhas onUse abaixo |
a pasta de imagens do seu inventário |
| Inventário padrão do ESX | Nada: adicionados na inicialização. O esx.sql é o jeito manual |
não necessário |
| vRP 2 | Veja a seção do vRP acima | |
| Standalone | Nada |
Para os outros inventários desta tabela, o celular torna os itens usáveis sozinho. O ox_inventory usa as linhas client = { export = 'phone....' } que já estão no arquivo dele.
ox_inventory: se você usava outro celular antes, remova também o hook Item('phone', ...) dele de ox_inventory/modules/items/client.lua.
O ak47_inventory guarda o uso do item na própria entrada de cada item. Adicione 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 },Celulares únicos (Config.Item.unique = true) colocam o número de telefone no item, então entregar o item é entregar o celular. Eles precisam de ox_inventory, qb-inventory, qs-inventory, core_inventory ou codem-inventory.