Manual › FH VIRTUAL PAINEL › Loja virtual (Shop)

Loja virtual (Shop)

Como o jogador compra, cada campo do Config.json e como montar o catálogo de cada aba — com o comportamento real de entrega.

Como o jogador usa

  1. Segura I (padrão) para abrir a loja. Fecha com Esc ou no botão Fechar.
  2. A janela mostra nome, SteamID, saldo e as abas ativas.
  3. Clica no produto → confirma em Sim.
  4. Com saldo: "Boa compra! Gasto N moedas !" e som de moeda. Sem saldo: "Sem moedas, adquira mais moedas para continuar comprando !".
Itens são entregues no chão, aos pés do jogador — não no inventário. Veículos nascem 6 m à frente. Oriente os jogadores a comprar em lugar aberto e plano, e a pegar os itens logo.

Config.json

Caminho: profiles/FlameHost/Addons/Shop/Config.json — criado com os padrões se não existir.

CampoPadrãoO que faz
StartCurrency0Saldo inicial de quem entra pela primeira vez.
TeclaPadraoAbrirPainel""Tecla de apertar enviada ao jogador. Veja como a tecla é aplicada.
TeclaSegurarPadraoAbrirPainel"kI"Tecla de segurar (I).
ActiveItem / ActiveClothing / ActiveVehicle / ActiveWeapons / ActiveBase / ActiveVIP / ActiveAmmo / ActivePartsligadosMostram as abas Itens, Roupas, Veículos, Armas, Base, VIP, Munição e Peças.
ActiveHelidesligadoAba Helicópteros. Os de fábrica precisam do mod RFFS.
EnableButtonRechargeligadoBotão de recarga. Com a recarga real ativa, ele aparece sempre.
UrlButtonRechargegoogleSem recarga real, o botão abre este link (seu site, Discord, Pix manual...).
ActiveReward / TimeReward / CoinReward / MessageRewardoff / 3600 / 0 / textoRecompensa por tempo online. Ver DCoins.
TittleStore"VIRTUAL SHOP"Título da janela, das notificações, dos anúncios e do webhook.
NameCoin"DCoins"Nome da moeda.
IconCoin_90x85 / IconLogo_790x120imagens do modÍcone da moeda e banner. Só troque se empacotar suas imagens.
ActiveWebhook / WebhookURL / WebhookLogooff / "#" / "#"Manda cada compra para um canal do Discord.
AdminsID de exemploSteamID64 que compram sem gastar DCoins (para testar).

Pasta Shop/Settings/. Se um arquivo for apagado, volta com os produtos de fábrica no próximo start.

AbaArquivoLista no JSON
ItensStoreItems.jsonItemsSell
RoupasStoreClothings.jsonClothingStore
VeículosStoreVehicle.jsonVehicleStore
HelicópterosStoreHeli.jsonHeliStore
ArmasStoreWeapons.jsonWeaponStore
BaseStoreBase.jsonBaseSell
MuniçãoStoreAmmo.jsonAmmoStore
PeçasStoreParts.jsonPartsStore
VIPStorePanelVIP.jsonStoreVIP

Estrutura de um produto

{
  "Name": "Kit AKM Camo",
  "Price": 2500,
  "Quantity": 1,
  "ItemsSpawn": [
    {
      "Item": "AKM",
      "Image_420x190": "",
      "ItemAttachments": ["AK_WoodBttstck_Camo","AK_WoodHndgrd_Camo","AK_Suppressor","KobraOptic"],
      "ItemInv": ["Mag_AKM_30Rnd","Mag_AKM_30Rnd"]
    }
  ]
}
CampoO que faz
NameNome na vitrine.
PricePreço em DCoins (inteiro), cobrado uma vez.
QuantityQuantas cópias completas são entregues (cada uma no chão). Em veículos é ignorado.
ItemsSpawnLista, mas só o primeiro bloco é usado. Para kit, use ItemAttachments e ItemInv do item principal.
ItemClassname do item principal (tem que existir no servidor).
Image_420x190Imagem do card — só nas abas Veículos e Helicópteros. Vazio = prévia 3D. As outras abas sempre mostram a prévia 3D.
ItemAttachmentsAcoplados ao item (mira, coronha, supressor...). O que não encaixar é ignorado.
ItemInvVai para dentro do item (mochila, roupa, porta-malas). Se não couber, cai no chão — em armas, que não têm espaço interno, tudo cai no chão ao lado.
Quantidade grande (ex.: 100 tábuas) cria 100 objetos no chão. Prefira itens que empilham ou caixas (ex.: NailBox).

Veículos e helicópteros

{
  "Name": "Sedan Vinho",
  "Price": 15000,
  "Quantity": 1,
  "ItemsSpawn": [
    { "Item": "CivilianSedan_Wine", "Image_420x190": "", "ItemAttachments": ["preset"], "ItemInv": ["CanisterGasoline"] }
  ]
}

Vender VIP na loja

Arquivo StorePanelVIP.json, lista StoreVIP:

{ "Activate": 1, "Name": "VIP PAINEL GOLD 30 DIAS", "Price": 50000, "Days": 30,
  "Image": "FH-SHOP/src/data/panelvip/panelvip.edds", "Type": "VIPGold" }
CampoO que faz
Activate1 = aparece; 0 = escondido.
DaysDias somados. Comprar de novo estende o VIP (soma a partir da data que ainda vale).
TypeTem que ser o VipID de um plano em PainelVip/Vips/ (maiúsculas não importam).
Confira o Type com cuidado: se não existir plano com esse VipID, o jogador paga, vê "Boa compra!" e não recebe nada (e não há estorno automático). Depois de criar/renomear plano, teste a compra com seu ID em Admins.
VIP Estático (StoreStaticVIP.json) não funciona nesta versão: cobra e não entrega. Não crie esse arquivo — use só o Painel VIP.

Tutoriais rápidos

Adicionar um produto

  1. Pare o servidor e abra o arquivo da aba (ex.: StoreWeapons.json).
  2. Copie um produto existente, cole no fim da lista (vírgula entre os blocos, nenhuma depois do último).
  3. Troque Name, Price e classnames.
  4. Suba o servidor, entre e confira a aba. Teste a compra com seu ID em Admins.

Esconder uma aba inteira

No Config.json, coloque o Active… da aba em 0 e reinicie.

Mensagens, anúncios e webhook

Log da loja

Shop/Logs/LogStore.log — formato DD.MM.AAAA HH:MM:SS [FHShop] texto:

Ativações de VIP vão para o log do Painel VIP; recargas aparecem no console do servidor ([FHShop: Payment]).