Skip to main content
El proveedor de acciones declara acciones junto a las observaciones que reporta. El modelo elige una acción declarada como cualquier acción del catálogo, Humalike acepta la etiqueta solo una vez que se han reportado las observaciones requeridas, y tu RunAction realiza la acción. Cómo se comportan en juego la condición y el mostrador se describe en Sistemas de juego.
Activa myserver:give_map en el panel para los NPC que deban tenerla. Las claves llevan espacio de nombres en el cable (myserver:give_map) y son locales en RunAction (give_map). RunAction recibe los params del modelo fusionados con fixed y player_id:
Las acciones se vuelven a declarar en cada reporte de capacidades. Una acción modificada o eliminada tiene efecto en el siguiente inicio del recurso.

Declaración

Params

  • Los tipos son string, integer o boolean.
  • enum contiene hasta 16 palabras simples o enteros.
  • required y description son opcionales.
  • Humalike añade siempre player_id.
  • Una etiqueta cuyos valores no encajan con la declaración se descarta antes de hablarse o recordarse.

Condiciones

Los hechos gastados desaparecen para todas las acciones y para el mostrador.

Params desde hechos

  • Los valores provienen de los hechos contados por la primera entrada de requires sobre esa observación.
  • Los números se suman sobre esos hechos. Cualquier otra cosa es el valor más reciente.

Existencias

Reemplaza todas las existencias del NPC. Un objeto no listado es uno del que el NPC no tiene ninguno. El panel muestra las existencias en modo solo lectura en la página del NPC.
  • Hasta 32 objetos por NPC.
  • Los nombres de objeto coinciden con ^[a-z][a-z0-9_]*$, con un máximo de 48 caracteres.
  • Las cantidades son números enteros de 0 a 1.000.000, o 'unlimited'.
Devuelve { ok = true, value = { stock } } o { ok = false, error = code }:

Mostrador

Para los NPC que venden, declara un Catalog en lugar de una acción por producto. Humalike toma el pedido, lo tarifica y cobra el pago, y después llama a deliver y refund en tu RunAction.
Un NPC vende los objetos del catálogo que tu script haya abastecido.

deliver y refund

Ambas se declaran automáticamente con el Catalog. No las listes bajo Actions.

Pedidos desde menú

Envía las líneas elegidas desde tu propio menú de tienda. Hasta 16 líneas, cada una con una cantidad de 1 a 1.000. Devuelve { ok = true, value = { lines } } o { ok = false, error = code }:

Claves reservadas

  • order, cancel_order, order_placed, order_refused: no se pueden declarar como acciones ni como observaciones.
  • deliver, refund: no se pueden declarar como observaciones.
  • Ninguna clave puede ser a la vez acción y observación.
  • spent es un campo de observación reservado.

Contrato de RunAction

  • Devuelve exactamente true cuando la acción está hecha. false rechaza la invocación y no se reintenta.
  • Responde en menos de 5 segundos. Una respuesta perdida (timeout, conexión caída, HTTP 5xx) se reintenta de inmediato, hasta tres intentos, con el mismo id de invocación.
  • Conserva los ids que aceptaste y responde a una repetición desde ese registro, de modo que una respuesta perdida nunca ejecute una acción dos veces.

Depuración

  • RegisterProvider imprime una declaración rechazada con el campo culpable. No se registra nada.
  • La página del NPC en el panel lista las acciones declaradas con sus condiciones. La vista de transcripción muestra observaciones y acciones.
  • humalike_debug 1 registra cada push entrante y su resultado.

Siguiente