Cómo funciona una tienda de servidor de FiveM en Skalp: pago, entrega en el juego y reembolsos
Una tienda de servidor en Skalp vende VIP, rangos, objetos y vehículos a los jugadores de tu servidor de FiveM. El jugador paga en la página de tu tienda, el recurso skalp de tu servidor recoge la compra en unos diez segundos y la entrega en el juego, o directamente en su personaje si está desconectado. El vendedor es Skalp, así que el IVA, las facturas, los reembolsos y los contracargos los gestionamos nosotros.
Qué pueden comprar los jugadores
Todo lo que tu servidor pueda dar a un jugador con un comando o un script. Los objetos y los vehículos funcionan directamente en los frameworks más habituales. Un trabajo, un rango, un puesto en la whitelist o la prioridad en la cola pasan por los comandos de tu propio servidor. Un VIP mensual puede ser una suscripción que se entrega de nuevo cada mes pagado, y los jugadores pueden comprar cualquier producto como regalo para un amigo.
La tienda tiene su propia dirección, yourname.skalp.gg, o tu propio dominio. Aparece en el marketplace de Skalp en Tiendas de servidor, con el número de jugadores conectados si añades la dirección de tu servidor. Los productos sueltos, como un rango VIP, no salen en la lista de productos del marketplace, porque solo tienen sentido para los jugadores de tu servidor.
Cómo llega una compra al jugador
- Antes de comprar, el jugador vincula su cuenta de Steam. Así tu servidor sabe quién ha comprado qué. Paga con tarjeta, Apple Pay, Google Pay o un método de pago local.
- El recurso skalp pregunta a Skalp por las compras nuevas más o menos cada diez segundos. Guarda cada una en la tabla
skalp_deliveries antes de confirmarla, así que si el servidor se cae entre medias, vuelve a pedirla y no se pierde nada.
- Un jugador que está en el juego recibe la compra al instante. Si está desconectado, las recompensas incluidas van directas a su personaje en tu base de datos, así que todo está ahí en su próximo inicio de sesión. Skalp elige el último personaje con el que jugó: ox_core y vRP lo vinculan a Steam por sí mismos, y en ESX, QBCore y Qbox el recurso lo aprende la primera vez que el jugador carga un personaje con la versión 3.2 o posterior del recurso. Hasta entonces, y para todo lo que no se puede escribir con seguridad mientras el jugador no está, la entrega espera a que entre.
- El pedido en tu panel muestra si se entregó, está en espera o falló, y por qué.
Conectar tu servidor
En el panel de tu tienda, abre Servidor de juego y haz clic en Conectar servidor. Descarga el recurso, copia la carpeta skalp en resources y pega en server.cfg las tres líneas del panel:
ensure skalp
set skalp_key "la clave del panel"
add_ace resource.skalp command allow
Tras reiniciar, la consola muestra Connected to Skalp y el panel marca el servidor como conectado. La clave solo se ve una vez. Si la pierdes, crea una nueva y la anterior deja de funcionar al instante.
Los jugadores se identifican por Steam, así que el servidor necesita una clave de la Steam Web API (steam_webApiKey en server.cfg). El recurso funciona con ESX y sus forks, QBCore, Qbox, ox_core y vRP, con ox_inventory o con el inventario del propio framework. Un servidor sin framework también puede entregar con comandos y con sus propios scripts. oxmysql es opcional: con él, las entregas se guardan en tu base de datos, y sin él, en el almacenamiento del propio recurso.
Nada se conecta a tu servidor, así que no hay puertos que abrir ni URL que configurar. Tu servidor pregunta a Skalp por las compras, y todo lo que se envía en un sentido o en otro va cifrado y firmado con tu clave. La clave en sí nunca sale del servidor, de modo que una API falsa o una conexión interceptada no pueden hacer que entregue nada.
Qué da un producto
En cada producto escribes, como un comando, lo que entrega. El recurso trae comandos que funcionan igual en todos los frameworks, por ejemplo:
| Comando | Qué hace |
skalp_item {playerId} bread 5 | Añade un objeto a través de ox_inventory, qb-inventory o el framework. |
skalp_vehicle {playerId} sultanrs | Guarda el vehículo con una matrícula libre en el garaje del jugador. |
También sirve cualquier otro comando que haya registrado un recurso de tu servidor, por ejemplo setjob {playerId} police 0. Separa varios pasos con ;. Skalp rellena {playerId}, {steamhex}, {steamid}, {quantity}, {orderId}, {productSlug} y {buyerName}. Un comando que usa {citizenid}, {charId} o {license} en lugar de {playerId} también se ejecuta mientras el jugador está desconectado. Además puedes hacer al comprador hasta diez preguntas en el pago, como el texto de una matrícula personalizada, y usar la respuesta como {field_plate}. Las respuestas que escribe el comprador se reducen a letras, dígitos y _.:-[], así que nadie puede colar un segundo comando.
Los comandos se ejecutan como la consola del servidor, y solo se ejecutan los que ha registrado un recurso del juego. Los comandos propios de la consola del servidor, como quit, exec o add_ace, y los de txAdmin no se ejecutan nunca, diga lo que diga un producto, y puedes bloquear más en Config.BlockedCommands. Un comando que no existe en tu servidor hace fallar la entrega con su nombre, así que una errata se ve en el pedido.
Sistemas propios: tu garaje, VIP o tienda
Si tu servidor entrega cosas con un script propio, por ejemplo un garaje o un sistema de VIP a medida sin comando de consola, registra un handler en tu propio recurso. Un handler sustituye al comando del producto:
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
La clave es el slug o el id del producto. Devuelve true cuando la compra se ha entregado, false, 'motivo' cuando ha fallado (el motivo se ve en el pedido), o nil, 'motivo' para dejarla en espera y volver a intentarlo más tarde. ctx contiene el id del jugador, su identificador, la cantidad, el número de pedido, el producto y las respuestas del comprador a tus preguntas.
El recurso también exporta GiveItem y GiveVehicle para tus propios scripts, y su carpeta examples trae archivos listos para ESX, QBCore y servidores sin framework. Los handlers viven en tu recurso, así que actualizar skalp nunca los sobrescribe.
Los handlers se ejecutan cuando el jugador está en el juego. Si tu servidor guarda personajes, inventarios o garajes en sus propias tablas, registra handlers offline con exports.skalp:RegisterOfflineHandler y la entrega offline también funcionará con tu configuración.
Suscripciones, reembolsos y contracargos
- Una suscripción se entrega de nuevo en cada periodo pagado. Cuando termina de verdad, se ejecuta el comando de retirada del producto. Un handler registrado con
RegisterSubscriptionHandler recibe ctx.active y puede conceder o quitar la ventaja por sí mismo.
- Un reembolso completo cancela lo que aún está en espera y ejecuta el comando de retirada para lo que el servidor ya entregó. Un jugador desconectado lo pierde la próxima vez que entre.
- Skalp defiende los contracargos ante el banco. Uno perdido funciona como un reembolso y además impide al comprador entrar en tu servidor, y si más tarde se gana, el bloqueo se levanta. Un jugador que recibió la compra como regalo no es vetado por el contracargo de quien se la regaló.
Qué envía tu servidor a Skalp
El id de conexión, la versión del recurso, el nombre del framework, si los comandos y el inicio de sesión con Steam están activados, y el resultado de cada entrega. No envía la lista de jugadores, ni identificadores de jugadores que no han comprado nada, ni nada de tu base de datos. Skalp, por su parte, envía al servidor solo lo que necesita una entrega, sin el correo del comprador, el importe pagado ni otros datos del pedido.
Pagos, impuestos y cobros
Skalp vende al jugador como comerciante registrado. El IVA del país del comprador se añade en el pago y Skalp emite la factura. La comisión es del 10 % del precio de venta neto, o del 7 % cuando tus ventas de los últimos 30 días llegan a 20 000 $. El procesamiento de pagos está incluido y no hay cuota mensual. Los pedidos se liquidan 7 días después de completarse, y desde 20 USD puedes solicitar un cobro desde el panel a una cuenta bancaria a tu nombre o al de tu empresa.
Tú decides qué vendes
Tú decides qué productos vende tu tienda. Asegúrate de que cada uno cumple las normas del juego y de la plataforma en la que funciona tu servidor.
Preguntas frecuentes
¿Tengo que abrir un puerto o configurar un webhook?
No. Tu servidor pregunta a Skalp por las compras nuevas, así que nada tiene que conectarse a él desde fuera.
¿Con qué frameworks funciona?
Con ESX y sus forks, QBCore, Qbox, ox_core y vRP. Un servidor sin framework puede entregar con comandos y con sus propios handlers.
¿Qué pasa si el jugador está desconectado o tiene el inventario lleno?
Las recompensas incluidas van al personaje enseguida, siempre que Skalp sepa de qué personaje se trata y el jugador no esté en el servidor ni lo haya dejado en los últimos dos minutos. Los objetos que reciben datos propios al crearse, como las armas, esperan a que el jugador entre, y lo mismo vale para todo cuando el inventario está lleno. Las entregas en espera se quedan en la tabla skalp_deliveries, se ejecutan cuando el jugador entra y se reintentan cada 30 segundos mientras juega. Si el jugador no entra en 30 días, caducan. Con Config.OfflineDelivery = false esperan siempre al jugador.
¿Se puede entregar una compra dos veces?
No. Cada producto de un pedido tiene su propia fila, y una entrega con varios pasos recuerda cuáles ya se ejecutaron.
¿Cómo la pruebo antes de vender?
Haz clic en Enviar prueba en el panel, y el servidor la muestra en su consola la próxima vez que consulte. Los comandos de recompensa también funcionan en la consola del servidor, por ejemplo skalp_item 1 bread 5, y skalp status muestra la conexión, el framework y cuántas entregas están en espera o han fallado.
¿Puedo vender también mis scripts a otros servidores?
Sí, desde una tienda de scripts, que es otro tipo de tienda. Skalp protege los archivos y los vincula a una licencia. Cómo funciona la venta de scripts de FiveM.
¿Skalp está afiliado a Rockstar Games o a alguna plataforma de juegos?
No. Skalp es una tienda independiente de productos digitales.