Comandos#
Sit Everywhere registra tres comandos que escriben los jugadores y administradores, más un comando de diagnóstico para depuración. Los tres primeros se pueden renombrar desde /sitconfig → Commands; los alias de 1.x siguen registrados, sea cual sea el nuevo nombre.
Comando | Dónde | Descripción |
|---|---|---|
| En el juego | Abre el selector de animaciones para sentarse donde esté el jugador. Junto a un asiento predefinido, ocupa ese asiento en su lugar. También responde a |
| En el juego | Lo mismo, abierto en la categoría Bed para tumbarse. También responde a |
| En el juego | Abre el panel de configuración. Requiere el ace |
| En el juego, salida en F8 | Diagnóstico del calculador de asientos. Solo responde mientras Debug mode está activado. |
Renombrar un comando requiere un reinicio; las sugerencias del chat siguen el nuevo nombre. Renombrar
/sitconfigno renombra su ace — consulta Instalación.
Asignaciones de teclas#
Tres acciones son asignaciones de teclas de FiveM, así que cada jugador puede reasignarlas en el menú de pausa en Settings → Key Bindings → FiveM:
Asignación | Por defecto | Qué hace | Nombre interno |
|---|---|---|---|
Stand up |
| Levanta al jugador y libera el asiento. De camino a un asiento predefinido, cancela el trayecto. |
|
Sit down (preset seats) |
| Ocupa el asiento bajo el aviso flotante. |
|
Lie down (preset seats) |
| Se tumba en el asiento bajo el aviso flotante. |
|
Las dos asignaciones predefinidas solo existen cuando se usa el aviso flotante (Preset seats → Interaction en automático sin tercer ojo, texto flotante o ambos). Los nombres internos son a los que se refiere un preset de teclas o una línea bind.
La tecla para cambiar de animación (E mientras estás sentado) es un control del juego elegido en el panel, no una asignación, así que es la misma para todos los jugadores.
El valor por defecto de una asignación solo se aplica a los jugadores que nunca la han asignado. Cambiar Stand up key en el panel la mueve para los jugadores nuevos; quien ya tenga
Xguardada conservaXhasta que la reasigne por su cuenta.
El comando de depuración#
/sitdev existe para explicar lo que hace el calculador de asientos. Activa primero General → Debug mode — el cambio se aplica de inmediato — y luego abre la consola F8 para leer la salida.
Subcomando | Muestra |
|---|---|
| Resuelve el prop al que apuntas, o el más cercano a menos de 4 m: su modelo, su tipo, de dónde salió la altura ( |
| El offset de cada animación respecto al punto del asiento. |
| Mientras estás sentado: si la pose se está reproduciendo, si el ped está congelado y a qué distancia está del punto en el que se colocó. |
| Lo mismo que |
Exports#
Sit Everywhere no tiene exports. Otros recursos lo controlan mediante los eventos y callbacks de abajo — un menú radial, una app de teléfono, un script de trabajo o tus propios muebles pueden abrir el selector, sentar a un jugador en un prop y comprobar si un asiento está ocupado.
Eventos de cliente#
Abrir el selector sobre un prop
Abre el selector de animaciones sobre una silla, un banco, un sofá o una cama, exactamente como la opción del tercer ojo. Pasa la entidad, o 0 para usar el asiento (o cama) más cercano a menos de Interaction distance.
-- From a client script
TriggerEvent('qs-siteverywhere:sit', entity) -- sitting poses
TriggerEvent('qs-siteverywhere:lay', entity) -- lying poses
-- From the server, on the nearest seat to that player
TriggerClientEvent('qs-siteverywhere:sit', source, 0)La entidad puede ser un handle simple o la tabla de datos que ox_target pasa a sus opciones. Si no hay nada donde sentarse al alcance, el jugador recibe "There is nothing to sit on around here."; si está demasiado lejos del prop, "You are too far away."
Sentarse o tumbarse en cualquier lugar
Lo mismo que escribir el comando. Usa los alias de 1.x: nunca cambian, así que tu integración sigue funcionando si un administrador renombra /sit o /lay.
ExecuteCommand('sitanywhere') -- /sit
ExecuteCommand('laydown') -- /lay
ExecuteCommand('StandUp') -- the stand up keyPor ejemplo, una entrada para sentarse en un menú radial de ox_lib:
lib.addRadialItem({
id = 'sit_anywhere',
icon = 'chair',
label = 'Sit',
onSelect = function()
ExecuteCommand('sitanywhere')
end,
})Reaccionar a un cambio de configuración
Se dispara en cada cliente cada vez que la configuración llega desde el servidor — al conectarse y después de cada guardado en /sitconfig.
AddEventHandler('qs-siteverywhere:settingsApplied', function()
-- the panel was saved, or this player just received the settings
end)Nombres de eventos de 1.x
Los eventos de 1.x siguen registrados y hacen exactamente lo mismo que los de arriba, así que los scripts escritos para la versión 1 siguen funcionando sin cambios.
TriggerEvent('qs-sit:sit', entity) -- = qs-siteverywhere:sit
TriggerEvent('qs-sit:laydown', entity) -- = qs-siteverywhere:layReserva de asientos#
Cada asiento que ocupa un jugador se reserva en el servidor según sus coordenadas, redondeadas al centímetro, así que dos clientes que calculan el mismo asiento de un banco llegan a la misma reserva. Otro recurso puede usar el mismo registro — un script de muebles o de trabajo que sienta a jugadores en sus propios puntos evita que se solapen con los de Sit Everywhere.
Comprobar, ocupar y liberar un asiento
Desde un script de cliente, con un vector3 o una tabla { x, y, z }:
-- true when another player holds that point
local taken = lib.callback.await('qs-siteverywhere:seat:occupied', false, coords)
-- reserves it for this player; false when somebody else holds it
local ok = lib.callback.await('qs-siteverywhere:seat:take', false, coords)
-- releases it again
TriggerServerEvent('qs-siteverywhere:seat:free', coords)Una reserva dura hasta que el jugador la libera, se levanta o se desconecta. Una que tiene un jugador que ya no está en el servidor se borra la próxima vez que alguien pide ese punto. Con Sitting → Seat claiming desactivado, take siempre tiene éxito y occupied siempre responde false.
Nombres de 1.x
TriggerServerEvent('qs-sit:takePlace', coords)
TriggerServerEvent('qs-sit:leavePlace', coords)
local taken = lib.callback.await('qs-sit:getPlace', false, coords)En 1.x estos nunca indicaban un asiento como ocupado. En la versión 2 comparten el registro de arriba, así que un script que dependía de ellos empieza a recibir respuestas reales.
Sobre los mensajes#
Cada mensaje que ve un jugador viene de la sección notify de locales/<code>.json, en el idioma elegido en el panel, y cada advertencia de la consola empieza con [qs-siteverywhere]. Errores comunes explica qué significa cada uno.



