RunAction realiza la acción. Cómo se comportan en juego la condición y el
mostrador se describe en Sistemas de juego.
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:
Declaración
Params
- Los tipos son
string,integeroboolean. enumcontiene hasta 16 palabras simples o enteros.requiredydescriptionson 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
requiressobre esa observación. - Los números se suman sobre esos hechos. Cualquier otra cosa es el valor más reciente.
Existencias
- 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'.
{ ok = true, value = { stock } } o { ok = false, error = code }:
Mostrador
Para los NPC que venden, declara unCatalog 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ú
{ 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.
spentes un campo de observación reservado.
Contrato de RunAction
- Devuelve exactamente
truecuando la acción está hecha.falserechaza 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
RegisterProviderimprime 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 1registra cada push entrante y su resultado.

