> ## Documentation Index
> Fetch the complete documentation index at: https://docs.humalike.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sistemas de juego

> Acciones de NPC, seguimiento, vehículos, heridas, trabajos, inventario, despacho, acciones definidas por el servidor y el mostrador.

Humalike convierte las decisiones de conversación en acciones de FiveM validadas. Las
acciones integradas cubren el comportamiento habitual de los personajes; los proveedores
conectan sistemas de inventario, despacho y juego específicos del servidor.

## Acciones integradas

| Acción                | Resultado                                                                                                                           |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `wave`                | Reproducir un saludo breve con la mano.                                                                                             |
| `start_dancing`       | Empezar un baile sostenido.                                                                                                         |
| `interrupt_animation` | Interrumpir la animación actual.                                                                                                    |
| `kneel`               | Adoptar una pose sostenida de rodillas.                                                                                             |
| `hands_up`            | Levantar las manos.                                                                                                                 |
| `punch`               | Intentar un puñetazo a corta distancia.                                                                                             |
| `stand_up`            | Salir de un estado sentado o derribado.                                                                                             |
| `follow_player`       | Seguir al jugador que lo solicita.                                                                                                  |
| `stop_following`      | Dejar de seguir.                                                                                                                    |
| `hold_position`       | Permanecer en la posición actual.                                                                                                   |
| `release_movement`    | Devolver el control del movimiento al comportamiento normal de la IA.                                                               |
| `enter_vehicle`       | Entrar en un asiento libre del vehículo de otra persona: el del jugador, o el más cercano al alcance.                               |
| `enter_own_vehicle`   | Volver andando al vehículo en el que llegó el NPC, ponerse al volante y marcharse. Se ofrece solo mientras ese vehículo está cerca. |
| `exit_vehicle`        | Salir del vehículo actual.                                                                                                          |
| `walk_away`           | Alejarse y terminar a una distancia segura.                                                                                         |
| `run_away`            | Salir corriendo de la persona y fuera de la escena.                                                                                 |

`give_item` pasa a estar disponible cuando hay un proveedor de inventario seleccionado.
Los proveedores de acciones personalizados pueden añadir claves de acción específicas del
servidor.

## Seguimiento y vehículos

Solo se usa la relación con el jugador relevante al priorizar un NPC que sigue. El NPC
ajusta el paso cuando se queda atrás y puede entrar o salir de vehículos mediante
acciones explícitas. El estado de seguimiento y de vehículo también influye en la
[selección de interlocutor por voz](/es/ai-npc/voice).

## Inventario

Los proveedores de inventario implementan la entrega de objetos con autoridad del
servidor. Humalike valida la acción y delega la operación final sobre el objeto al
proveedor seleccionado. Un proveedor de inventario personalizado debe devolver `true`
solo después de haber aceptado el objeto.

Nunca confíes en nombres de objetos, cantidades o metadatos procedentes de un evento de
cliente sin validar. Aplica listas de permitidos específicas del servidor en tu puente
cuando haga falta.

## Heridas y muerte

Cuando está activado, el daño a un NPC produce heridas estructuradas. Un NPC puede entrar
en estado de herido, requerir tratamiento o morir según la configuración del servidor.
Los trabajos de médico y policía autorizados reciben interacciones a través del proveedor
de interacción seleccionado.

El tratamiento se valida en el servidor por identidad del jugador, trabajo, estado de
servicio, distancia y estado actual del NPC. Con el proveedor de jugador `standalone`,
los trabajos son permisos ACE (`humalike.job.<name>`); un proveedor de jugador
personalizado evalúa los trabajos por sí mismo. Consulta
[Trabajos sin framework](/es/ai-npc/configuration#trabajos-sin-framework).

## Despacho

Los incidentes médicos pueden llamar al proveedor de despacho seleccionado tras un
retardo y una probabilidad configurados. Humalike proporciona un tipo y una carga útil
neutros; el puente los traduce al recurso de despacho del servidor.

## Acciones definidas por el servidor

Un recurso de integración puede declarar sus propias acciones, cada una condicionada a
hechos que informa el servidor. El contrato está en
[Acciones definidas por el servidor](/es/ai-npc/integrations/custom-actions).

* Solo las observaciones informadas desbloquean una acción, y solo para el jugador al que
  responde el NPC. Lo que dice un jugador no cuenta.
* Mientras una condición no se cumple, la acción sigue listada, la etiqueta no se acepta
  y se le indica al NPC qué tiene que ocurrir antes. Nada llega al servidor.
* Las condiciones se comprueban de nuevo cuando el modelo escribe la etiqueta, de modo
  que un hecho que caducó mientras respondía no se cuela.
* Un acto realizado se escribe en la transcripción del NPC como un evento del mundo que
  nombra los hechos que ha gastado. Los hechos gastados desaparecen para cualquier otro
  acto y para el mostrador.
* La puerta lee la conversación reciente del NPC más sus eventos del mundo más recientes
  con espacio de nombres del servidor, sin importar su antigüedad, de modo que un NPC
  ocupado no olvida ni un pedido sin pagar ni un hecho gastado.
* Un acto rechazado (`RunAction` devolvió `false`) no se reintenta. El modelo puede
  escribir la etiqueta de nuevo en una respuesta posterior como un acto nuevo con un id
  de invocación nuevo.

## Mostrador

Un proveedor de acciones con un `Catalog` convierte un NPC en una tienda. Humalike toma
el pedido, le pone precio, hace seguimiento del pago y llama al servidor para entregar la
mercancía o devolver el dinero. El modelo nunca decide un precio, una cantidad entregada
ni un importe devuelto.

1. El modelo hace el pedido en una etiqueta: `[myserver:order water=10 pistol=1]`.
   Humalike comprueba las existencias y los límites por artículo, pone precio al pedido y
   le dice al NPC el total.
2. El pago es la observación de pago informada en la moneda del catálogo, en unidades
   enteras.
3. Cuando el dinero cubre el total, Humalike llama a `deliver` en la siguiente respuesta
   del NPC a ese jugador, registra la venta y retira las líneas de las existencias.
4. `[myserver:cancel_order]` llama a `refund` con lo que hay en el mostrador. Prevalece
   sobre una entrega pendiente en la misma respuesta.

| Caso                                                                              | Resultado                                                                                                   |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Pago insuficiente                                                                 | No se mueve nada. Se le indica al NPC lo que se debe.                                                       |
| Pedido rechazado (artículo no en venta, sin existencias, por encima de un límite) | Se registra con su motivo. El NPC lo lee en su siguiente turno.                                             |
| `deliver` devuelve `false`                                                        | No se registra nada. El pedido y el dinero se quedan. Se reintenta en la siguiente respuesta a ese jugador. |
| Las existencias se agotaron antes de `deliver`                                    | No se intenta. Se le indica al NPC y puede cancelar para un reembolso.                                      |
| `refund` devuelve `false`                                                         | Se reintenta en la siguiente respuesta. Mientras tanto no sale mercancía.                                   |
| `deliver` o `refund` sin respuesta                                                | Sin reintento ni cancelación hasta que responda. Se le indica al NPC que la entrega está pendiente.         |
| Pedido nuevo con uno abierto                                                      | Lo sustituye. El dinero en el mostrador cuenta para el nuevo total.                                         |
| Pedido de más de una hora                                                         | Caduca. El dinero se queda en el mostrador hasta que un `deliver` o `refund` lo gaste.                      |
| Pedido de menú (`PlaceOrder`) mientras un pedido pagado espera entrega            | Rechazado y registrado como `order_refused` con motivo `order_open`.                                        |

Los reintentos de `deliver` mantienen el mismo id de invocación mientras se mantenga el
mismo pedido, incluso tras un pago adicional. Un `refund` se identifica por el pedido que
cancela, o por los pagos cuando no hay ningún pedido abierto. El panel muestra las
existencias actuales del NPC en modo de solo lectura.

## Comportamiento personalizado

Mantén las recompensas, los cambios de economía, las animaciones específicas del
servidor, los códigos de despacho y las reglas de trabajos en un recurso de integración
separado. Consulta la
[API de proveedores](/es/ai-npc/integrations/provider-api).

## Siguiente

* [Configura el juego médico](/es/ai-npc/configuration#heridos-y-juego-médico).
* [Construye un puente personalizado](/es/ai-npc/integrations/custom-bridge).
* [Añade un proveedor de acciones personalizado](/es/ai-npc/integrations/provider-api#descriptor-de-acciones).
* [Declara acciones definidas por el servidor y un mostrador](/es/ai-npc/integrations/custom-actions).
