Hostage: documentación
Rehenes para FiveM. Apunta con un arma o un cuchillo a un NPC o a un jugador. Cuando se rinda, pulsa [E] para controlarlo:
- de rodillas;
- atar;
- bolsa en la cabeza;
- llevar contigo;
- meter en tu carro;
- escudo humano;
- registrar;
- soltar.
La policía recibe un aviso. Todo está sincronizado para todos los jugadores y el servidor comprueba cada acción.
Funciones
- 🔫 Las armas y los cuchillos asustan a la gente (lista configurable; los tasers y otras herramientas nunca). Las armas funcionan a distancia, los cuchillos de cerca.
- 🧍 Los NPC reaccionan como personas:
- la mayoría levanta las manos;
- algunos salen corriendo;
- los pandilleros pueden sacar una pistola;
- la policía, la seguridad y los militares nunca se rinden.
- Los conductores de un carro parado se bajan con las manos arriba.
- 🙋 Los jugadores deciden: reciben un aviso cuando alguien les apunta y levantan las manos con [X] (tecla configurable). Una vez rendidos, el captor puede tomarlos como rehén.
- 🧎 De rodillas / de pie (manos arriba), atar las manos (sin item por defecto), bolsa en la cabeza (un prop real; el jugador casi no ve nada).
- 🚶 Llevar contigo: el rehén camina detrás de ti y acelera si se queda atrás.
- 🚗 Meter en / sacar de un vehículo: primero los asientos de atrás. El rehén se queda sentado mientras manejas.
- 🛡️ Escudo humano con armas de una mano (pistolas, subfusiles tipo pistola, cuchillos). No puedes correr, saltar ni subir a un carro mientras sujetas a alguien.
- 🔍 Registrar:
- NPC: una cosa al azar de una lista con pesos (aluminio, agua, comida, $1-2 de dinero sucio por defecto), a veces nada; sin dinero limpio salvo que lo configures; una vez por persona;
- jugadores: abre su inventario (ox_inventory, origen_inventory, qs-inventory, qb-inventory; rama
custompara otros).
- 🏃 Los rehenes sin atar pueden escapar si dejas de amenazarlos un rato. Los jugadores atados pueden intentar soltarse con un skill check cada X segundos.
- 👮 Avisos a la policía: siempre, solo cuando lo ve un NPC testigo, o nunca. Sistemas compatibles:
- origen_police, ps-dispatch, cd_dispatch, qs-dispatch, core_dispatch, rcore_dispatch;
- sin dispatch, los policías de servicio reciben una notificación y un blip.
- 🔒 Seguro:
- el servidor guarda quién tiene a quién;
- los rehenes se sueltan cuando alguien muere, se desconecta o la policía lo esposa;
- un máximo de rehenes por jugador;
- trabajos protegidos.
- 📊 Logs de Discord: rehén tomado, soltado, escapado, aviso a la policía.
- ⚡ Ligero: los bucles duermen mientras no tienes un arma fuera ni rehenes.
- 🌍 Español e inglés (
locales/). QBCore, Qbox o standalone. Las notificaciones, los textos "[E]" y las barras de progreso pasan por rolo_notify automáticamente, con ox_lib, qb-core u okok como alternativas.
Dependencias
- ox_lib (menú, skill check, callbacks)
- Opcional: rolo_notify (notificaciones, burbujas "[E]", barras de progreso)
Instalación
- Pon
rolo_hostageen tu carpetaresources. - En
server.cfg, después deox_lib(y de tu framework / inventario):ensure rolo_hostage - Reinicia. Eso es todo: no hay base de datos y no hace falta ningún item.
- Opcional:
- pedir items (
Config.Tie.item,Config.Bag.item); - poner tus trabajos de policía (
Config.Police.jobs) y tu dispatch (Config.Police.system).
- pedir items (
Cómo se usa
| Quién | Cómo |
|---|---|
| Captor | Apunta a alguien con un arma o un cuchillo. Los NPC reaccionan al segundo. Un jugador tiene que levantar las manos. |
| Captor | [E] apuntando a una persona rendida o estando junto a tu rehén abre el menú. |
| Jugador | [X] sube / baja las manos (/manosarriba). |
| Rehén | [G] intenta soltarse (cada Config.Players.escape.everySeconds). |
Cada jugador puede cambiar las teclas en Configuración > Asignación de teclas > FiveM.
Configuración (config.lua)
| Opción | Qué hace |
|---|---|
Config.Locale, Framework, Inventory, Notify, TextUI, Progress |
'auto' los detecta |
Config.MenuKey, MaxHostages, ActionDistance |
Tecla del menú, rehenes por jugador, alcance |
Config.Weapons |
Armas sí / no, lista de cuchillos, armas bloqueadas, distancias |
Config.NPC |
Tiempo para rendirse, probabilidades de resistirse, modelos que nunca se rinden, bajarse del carro, escapar, botín del registro |
Config.Players |
Tecla / comando de manos arriba, aviso al apuntar, skill check de escape, registro del inventario, trabajos protegidos |
Config.Tie, Config.Bag |
Items opcionales y tiempo, modelo de la bolsa |
Config.Shield |
Armas permitidas con escudo humano |
Config.Vehicle |
Distancia y orden de asientos |
Config.Police |
Modo del aviso, retraso, radio de testigos, tiempo de espera, trabajos, sistema de dispatch, código y blip |
config_server.lua |
Logs de Discord (hostage, police, default), solo servidor |
Exports
-- servidor
exports.rolo_hostage:IsHostage(src) -- true mientras ese jugador es rehén
exports.rolo_hostage:GetCaptor(src) -- id del servidor de su captor o nil
exports.rolo_hostage:GetHostages(captor) -- { { kind, target, netId, state, tied }, ... }
exports.rolo_hostage:ReleaseHostages(captor) -- suelta a todos los que tiene ese jugador
exports.rolo_hostage:FreePlayer(src) -- suelta a un jugador rehén (por ejemplo desde tu script de policía)
-- cliente
exports.rolo_hostage:IsHostage() -- este jugador es rehén
exports.rolo_hostage:HandsUp() -- este jugador tiene las manos arriba
exports.rolo_hostage:IsCaptor() -- este jugador tiene a alguien
exports.rolo_hostage:GetMyHostages()
Eventos de servidor para otros scripts: rolo_hostage:taken (captor, kind, target / netId) y rolo_hostage:released (captor, kind, target / netId, reason).
Archivos abiertos (sin escrow)
config.lualocales/*.lua: todos los textosbridge/client.lua: notificaciones, textos "[E]", barra de progreso, skill check, abrir el inventario de un jugador, dispatch de clientebridge/server.lua: framework, dinero, items, inventarios, comprobación de esposas, avisos a la policía, logs de Discord
Notas
- El script no toca a los jugadores esposados por la policía. En QBCore / Qbox se detecta con
metadata.ishandcuffed; para otros scripts de policía, editaBridge.IsCuffed. - Las animaciones y los props son del juego base.
Secretos: config_server.lua
Los webhooks de Discord y las API keys van en config_server.lua, no en config.lua. config.lua se envía al juego de cada jugador (FiveM lo comparte), así que cualquiera con trampas podría leerlo; config_server.lua solo lo carga el servidor. Pega ahí tus webhooks y deja config.lua sin secretos.
Compatibilidad
El núcleo de compatibilidad (compat/server.lua + compat/client.lua, archivos abiertos) detecta tus sistemas al arrancar y los muestra en la consola del servidor, por ejemplo compat: framework qbcore · inventory ox_inventory · garages qb-garages · society qb-banking.
- Inventarios: ox_inventory, origen_inventory, qs-inventory, codem-inventory, core_inventory, qb-inventory, ps-inventory / lj-inventory / tgiann-inventory (mediante las funciones de jugador de QBCore).
Config.Inventory = 'custom'+Compat.CustomInventory. - Los errores se muestran en la consola con el nombre del sistema, nunca en silencio.
- Los nombres y columnas siguen la documentación pública de cada script. Prueba una vez después de instalar con tu propia configuración.
ROLO SCRIPT · Soporte y actualizaciones en nuestro Discord.
Escríbenos en el canal de soporte de Discord con el script, tu framework y el error de la consola.
