Como funciona a loja de servidor de FiveM na Skalp: pagamento, entrega no jogo e estornos
Uma loja de servidor na Skalp vende VIP, cargos, itens e veículos para os jogadores do seu servidor de FiveM. O jogador paga na página da sua loja, o recurso skalp no seu servidor pega a compra em cerca de dez segundos e a entrega no jogo, ou direto no personagem do jogador se ele estiver offline. A Skalp é a vendedora, então IVA, faturas, estornos e chargebacks ficam do nosso lado.
O que os jogadores podem comprar
Tudo o que o seu servidor consegue dar a um jogador por um comando ou um script. Itens e veículos funcionam de imediato nos frameworks mais comuns. Um emprego, um cargo, uma vaga na whitelist ou a prioridade na fila passam pelos comandos do seu próprio servidor. Um VIP mensal pode ser uma assinatura entregue de novo a cada mês pago, e os jogadores podem comprar qualquer produto de presente para um amigo.
A loja ganha um endereço próprio em seunome.skalp.gg, ou o seu próprio domínio. Ela aparece no marketplace da Skalp em Lojas de servidor, com o número de jogadores online se você informar o endereço do servidor. Produtos avulsos, como um cargo VIP, ficam fora da lista de produtos do marketplace, porque só fazem sentido para os jogadores do seu servidor.
Como a compra chega ao jogador
- Antes de comprar, o jogador vincula a conta Steam. É assim que o seu servidor sabe quem comprou o quê. Ele paga com cartão, Apple Pay, Google Pay ou um método de pagamento local.
- O recurso skalp pergunta à Skalp por novas compras mais ou menos a cada dez segundos. Ele salva cada uma na tabela
skalp_deliveries antes de confirmar, então, se o servidor cair no meio do caminho, a compra é buscada de novo e nada se perde.
- Um jogador que está no jogo recebe a compra na hora. Se ele estiver offline, as recompensas integradas vão direto para o personagem dele no seu banco de dados, então tudo já está lá no próximo login. A Skalp escolhe o último personagem que ele jogou: ox_core e vRP o vinculam à Steam por conta própria, e no ESX, QBCore e Qbox o recurso o aprende na primeira vez que o jogador carrega um personagem com o recurso 3.2 ou mais novo. Até lá, e para tudo que não dá para gravar com segurança enquanto o jogador está fora, a entrega espera ele entrar.
- O pedido no seu painel mostra se foi entregue, está em espera ou falhou, e por quê.
Ligar o seu servidor
No painel da sua loja, abra Servidor de jogo e clique em Ligar servidor. Baixe o recurso, coloque a pasta skalp em resources e cole no server.cfg as três linhas que aparecem no painel:
ensure skalp
set skalp_key "a chave do painel"
add_ace resource.skalp command allow
Depois de reiniciar, o console exibe Connected to Skalp e o painel mostra o servidor como conectado. A chave aparece só uma vez. Se você a perder, gere outra, e a antiga para de funcionar na hora.
Os jogadores são identificados pela Steam, então o servidor precisa de uma chave da Steam Web API (steam_webApiKey no server.cfg). O recurso funciona com ESX e seus forks, QBCore, Qbox, ox_core e vRP, com o ox_inventory ou o inventário do próprio framework. Um servidor sem framework também consegue entregar, com comandos e scripts próprios. O oxmysql é opcional: com ele, as entregas ficam no seu banco de dados, e sem ele ficam no armazenamento do próprio recurso.
Nada se conecta ao seu servidor, então não há portas para abrir nem URL para configurar. O seu servidor pergunta à Skalp pelas compras, e tudo o que trafega nos dois sentidos é criptografado e assinado com a sua chave. A chave em si nunca sai do servidor, então uma API falsa ou uma conexão interceptada não consegue fazer o servidor entregar nada.
O que um produto dá
Em cada produto, você escreve o que ele dá na forma de um comando. O recurso vem com comandos que funcionam do mesmo jeito em qualquer framework, por exemplo:
| Comando | O que faz |
skalp_item {playerId} bread 5 | Adiciona um item pelo ox_inventory, pelo qb-inventory ou pelo framework. |
skalp_vehicle {playerId} sultanrs | Salva o veículo com uma placa livre na garagem do jogador. |
Qualquer outro comando registrado por um recurso do seu servidor também funciona, por exemplo setjob {playerId} police 0. Separe vários passos com ;. A Skalp preenche {playerId}, {steamhex}, {steamid}, {quantity}, {orderId}, {productSlug} e {buyerName}. Um comando que usa {citizenid}, {charId} ou {license} no lugar de {playerId} também roda enquanto o jogador está offline. Você também pode fazer ao comprador até dez perguntas no checkout, como o texto de uma placa personalizada, e usar a resposta como {field_plate}. As respostas digitadas pelo comprador são reduzidas a letras, dígitos e _.:-[], então ninguém consegue encaixar um segundo comando.
Os comandos rodam como o console do servidor, e só rodam os comandos que um recurso de jogo registrou. Os comandos de console do próprio servidor, como quit, exec ou add_ace, e os comandos do txAdmin nunca rodam, não importa o que um produto diga, e você pode bloquear mais em Config.BlockedCommands. Um comando que não existe no seu servidor faz a entrega falhar com o nome dele, então um erro de digitação aparece no pedido.
Sistemas próprios: a sua garagem, VIP ou loja
Se o seu servidor entrega as coisas por um script próprio, por exemplo uma garagem ou um sistema de VIP personalizado sem comando de console, registre um handler no seu próprio recurso. Um handler assume o lugar do comando do produto:
local function register()
exports.skalp:RegisterHandler('sultan-rs', function(ctx)
local ok, err = exports.my_garage:GiveCar(ctx.playerId, 'sultanrs')
if not ok then return false, err end
return true
end)
end
AddEventHandler('onResourceStart', function(name)
if name == 'skalp' then register() end
end)
if GetResourceState('skalp') == 'started' then register() end
A chave é o slug ou o id do produto. Retorne true quando a compra for entregue, false, 'motivo' quando falhar (o motivo aparece no pedido) ou nil, 'motivo' para mantê-la em espera e tentar de novo mais tarde. O ctx traz o id do jogador, o identificador dele, a quantidade, o número do pedido, o produto e as respostas do comprador às suas perguntas.
O recurso também exporta GiveItem e GiveVehicle para os seus próprios scripts, e a pasta examples dele tem arquivos prontos para ESX, QBCore e servidores sem framework. Os handlers ficam no seu recurso, então atualizar o skalp nunca os sobrescreve.
Os handlers rodam quando o jogador está no jogo. Se o seu servidor guarda personagens, inventários ou garagens em tabelas próprias, registre handlers offline com exports.skalp:RegisterOfflineHandler e a entrega offline também funciona com a sua configuração.
Assinaturas, estornos e chargebacks
- Uma assinatura é entregue de novo a cada período pago. Quando ela termina de verdade, o comando de retirada do produto roda. Um handler registrado com
RegisterSubscriptionHandler recebe ctx.active e pode conceder ou remover a vantagem por conta própria.
- Um estorno total cancela tudo o que ainda está em espera e roda o comando de retirada para o que o servidor já entregou. Um jogador offline perde o item na próxima vez que entrar.
- A Skalp contesta os chargebacks junto ao banco. Um chargeback perdido funciona como um estorno e também bane o comprador do seu servidor, e, se for ganho mais tarde, o banimento é levantado. Um jogador que recebeu a compra de presente não é banido pelo chargeback de quem presenteou.
O que o seu servidor envia à Skalp
O id da conexão, a versão do recurso, o nome do framework, se os comandos e o login pela Steam estão ativados e o resultado de cada entrega. Ele não envia lista de jogadores, nem identificadores de jogadores que não compraram nada, nem nada do seu banco de dados. A Skalp, por sua vez, envia ao servidor só o que uma entrega precisa, sem o e-mail do comprador, o valor pago ou outros detalhes do pedido.
Pagamentos, impostos e saques
A Skalp vende ao jogador como vendedora oficial (merchant of record). O IVA do país do comprador é somado no checkout e a Skalp emite a fatura. A taxa é de 10% do preço de venda líquido, ou 7% quando as suas vendas dos últimos 30 dias chegam a US$ 20.000. O processamento de pagamentos está incluído e não há mensalidade. Os pedidos são liberados 7 dias depois da conclusão e, a partir de US$ 20, você pode pedir um saque pelo painel para uma conta bancária em seu nome ou no da sua empresa.
Quem decide o que vender é você
Você decide quais produtos a sua loja vende. Confira se cada um segue as regras do jogo e da plataforma em que o seu servidor roda.
Perguntas frequentes
Preciso abrir uma porta ou configurar um webhook?
Não. O seu servidor pergunta à Skalp por novas compras, então nada precisa se conectar a ele de fora.
Com quais frameworks funciona?
ESX e seus forks, QBCore, Qbox, ox_core e vRP. Um servidor sem framework pode entregar com comandos e handlers próprios.
O que acontece quando o jogador está offline ou o inventário está cheio?
As recompensas integradas vão para o personagem na hora, desde que a Skalp saiba qual é o personagem e o jogador não esteja no servidor nem tenha saído dele nos últimos dois minutos. Itens que ganham dados próprios ao serem criados, como armas, esperam o jogador entrar, e o mesmo vale para tudo quando o inventário está cheio. As entregas em espera ficam na tabela skalp_deliveries, rodam quando o jogador entra e são tentadas de novo a cada 30 segundos enquanto ele joga. Se o jogador não entrar em 30 dias, elas expiram. Defina Config.OfflineDelivery = false para as entregas sempre esperarem o jogador.
Uma compra pode ser entregue duas vezes?
Não. Cada produto de um pedido tem a sua própria linha, e uma entrega com vários passos lembra quais passos já rodaram.
Como testo antes de vender?
Clique em Enviar teste no painel, e o servidor o exibe no console na próxima vez que consultar a Skalp. Os comandos de recompensa também funcionam no console do servidor, por exemplo skalp_item 1 bread 5, e o skalp status mostra a conexão, o framework e quantas entregas estão em espera ou falharam.
Também posso vender os meus scripts para outros servidores?
Sim, por uma loja de scripts, que é outro tipo de loja. A Skalp protege os arquivos e os vincula a uma licença. Como funciona a venda de scripts de FiveM.
A Skalp tem ligação com a Rockstar Games ou com alguma plataforma de jogos?
Não. A Skalp é uma loja independente de produtos digitais.