API de compra/producto
Los jugadores pueden comprar productos (pases de juego + consumibles) por Sparks en tu juego. Cuando ocurre una compra, All Out llama a tu manejador de compras para que puedas otorgar el objeto o la característica.
Tipos de productos (resumen rápido)
Pases de juego: desbloqueos persistentes de una sola vez (pase de admin, habilidad permanente, propiedad de casa)
Consumibles: se pueden comprar varias veces (poción, mejora temporal, paquete de monedas de una sola vez)
Los tipos de productos se configuran en el portal del creador. Consulta Productos dentro del juego.
Referencia de la API de compras
Producto :: struct {
id: string;
name: string;
description: string;
price: s64;
consumable: bool;
icon: Texture_Asset;
}
Purchasing :: struct {
prompt_purchase :: proc(player: Player, id: string);
owns_product :: proc(player: Player, id: string) -> bool;
get_product :: proc(id: string) -> Product;
}Solicitar una compra
Para iniciar el flujo de compra, llama a Purchasing.prompt_purchase con un ID de producto.
Comprobar si un jugador posee un producto (pases de juego)
Para los pases de juego, puedes limitar funciones del juego comprobando la propiedad.
Leer información del producto (nombre/precio/icono)
Si quieres mostrar una interfaz de “Comprar” o registrar información del producto, obtén la definición del producto por ID:
El manejador de compras (concesión)
Cuando un jugador compra un producto en tu juego, All Out llama a:
Si tu juego no define ao_purchase_handler, los productos no consumibles se conceden automáticamente para que funcionen con Purchasing.owns_product. Los productos consumibles siguen requiriendo un manejador y se marcan como fallos de concesión si no hay uno.
Deberías:
Hacer switch sobre el ID del producto
Conceder el objeto/la característica
Devolver
truesi la concesión tuvo éxitoDevolver
falsesi la concesión falló (inventario lleno, prerrequisito faltante, etc.)
Fallos de concesión y reintentos
Si tu manejador de compras devuelve false, la compra se marca como un fallo de concesión.
Los fallos de concesión se muestran en el portal del creador
Se reintentan automáticamente cuando el jugador entra hasta que tienen éxito
Puedes volver a ejecutar manualmente un manejador de compras marcando una compra como “no concedida” en la interfaz de datos del jugador
Consulta:
Productos dentro del juego (“Manejadores de compra / Fallos de concesión”)
Editar/ver datos del jugador (sección “Compras”)
Probar compras
En un juego iniciado desde el editor (Iniciar juego o run_tests), Purchasing.prompt_purchase abre un aviso de compra de prueba marcado como "Compra de prueba: no se gastan Sparks". Ofrece Comprar según tu saldo de Sparks. Comprar ejecuta tu ao_purchase_handler a través del mismo flujo del servidor que una compra real, y un pase de juego concedido entonces pasa Purchasing.owns_product.
El producto ya debe existir para tu juego (consulta Productos dentro del juego).
El aviso dice "Compra completada" incluso cuando tu manejador devuelve
false, así que revisa la concesión en sí.Las compras de prueba no dejan registro de compra. Después de que el jugador vuelva a entrar,
owns_productvuelve a ser false y un fallo de concesión no se reintenta. Cualquier cosa que tu manejador haya guardado por su cuenta, como la moneda, se mantiene.Llamar a
ao_purchase_handlertú mismo, por ejemplo desde un comando de chat, ejecuta solo tu código de concesión. Omite el flujo del servidor y nunca estableceowns_product.
En una prueba, pulsa los botones del aviso por nombre:
Entre juegos (hub + minijuegos)
Si usas jerarquía de juegos, las compras se pueden compartir entre tus juegos. Consulta Productos/datos entre juegos.
Última actualización