Cómo funcionan las integraciones#
Sentarse no requiere dinero, ítems ni trabajo, así que nada en Sit Everywhere depende de un framework. Cada recurso de terceros se alcanza a través de un pequeño archivo puente, y cada uno se desactiva por sí solo cuando falta ese recurso.
Capa | Compatibles | Sin él |
|---|---|---|
Framework |
| Funciona de forma independiente. Solo cambian el nombre y el identificador del jugador en los registros de la consola. |
Tercer ojo |
|
|
Notificaciones |
| El propio feed de notificaciones del juego. |
Texto flotante |
| El propio texto 3D del juego, con la tecla asignada dibujada como un glifo. |
HUD |
| El HUD permanece en pantalla mientras el panel de configuración está abierto. |
Base de datos |
| La configuración se guarda en memoria hasta el siguiente reinicio. |
Librería |
| Obligatoria. La única. |
Cada integración opcional se degrada en silencio. Un recurso que falta hace que su función se desactive, no que lance un error. Las líneas de la consola al arrancar son el lugar que te avisa de que falta una integración antes de que lo haga un jugador.
Frameworks#
El framework se detecta en config/config.lua, en el momento en que se inicia el recurso, a partir de lo que ya está en ejecución:
-- config/config.lua
local frameworks = {
['es_extended'] = 'esx',
['qb-core'] = 'qb',
['qbx_core'] = 'qb',
}
Config.Framework = DependencyCheck(frameworks) or 'standalone'¿Renombraste tu core? Añade el nombre de su carpeta a la izquierda con el puente que usa a la derecha — ['my-core'] = 'qb' — y reinicia. Qbox funciona con el puente de QBCore, que también se adapta a las compilaciones recientes de qbx_core que ya no entregan un objeto core.
Al framework solo se le pregunta quién es un jugador, para los registros de la consola y la línea de auditoría del panel:
Framework | Identificador | Nombre |
|---|---|---|
ESX |
| El nombre del personaje |
QBCore / Qbox |
| Nombre y apellido de |
Independiente |
| El nombre de FiveM |
Si un puente no se carga, la consola indica el archivo y sentarse sigue funcionando; solo la identidad recurre a la de FiveM. Los puentes están en custom/esx/, custom/qb/ y custom/standalone/.
El tercer ojo#
General → Target system decide dónde van las opciones. Detect automatically usa el que esté en ejecución de entre ox_target, qb-target o qtarget; indicar uno lo fuerza; None (commands only) no registra nada y deja /sit, /lay y los avisos flotantes. Ejecuta solo un recurso de target a la vez.
Opción | Etiqueta | Alcance |
|---|---|---|
Sobre un modelo de asiento o cama | Sit / Lie down | Interaction → Interaction distance (2.5 m) |
Sobre un prop con un asiento predefinido | Sit down / Lie down, más Choose pose | Preset seats → Preset reach (2.0 m) |
Alrededor de un asiento de una ubicación activada | Sit down / Lie down | Preset seats → Preset reach |
Los iconos son Interaction → Sit icon y Lie down icon, cualquier clase de Font Awesome. Con ox_target, Preset seats → Zone markers dibuja un pequeño marcador en el centro de cada zona de ubicación. En qb-target y qtarget, las zonas se llaman qss:<place>:<zone> y se eliminan de nuevo cuando el recurso se detiene.
El recurso de target, las opciones predefinidas y las zonas de ubicación se leen una vez, unos segundos después del inicio. Cambiar cualquiera de ellos, o iniciar un recurso de target más tarde, requiere reiniciar Sit Everywhere.
Notificaciones#
Cada mensaje — "That seat is already taken.", "You are too far away." — pasa por una función, Notification(msg, type) en custom/client.lua. De serie usa qs-interface cuando está en ejecución, ox_lib en caso contrario, y el propio feed del juego como último recurso, con General → Notification title como remitente.
Para enviarlas a través de tu propio recurso de notificaciones, reemplaza el cuerpo de esa función. type es siempre uno de info, success, warning o error:
-- custom/client.lua
function Notification(msg, type)
if msg == nil or msg == '' then return end
-- your notification resource's own export, for example:
exports['okokNotify']:Alert('Sit', msg, 5000, type)
endTexto flotante#
Los avisos sobre los asientos predefinidos los dibuja DrawText3D en el mismo archivo. Con qs-textui en ejecución, los dibuja con su propio icono de tecla; sin él, se usa el texto 3D del juego con la tecla asignada del jugador mostrada como un glifo. qs-textui se detecta aunque se inicie después de Sit Everywhere, y se deja de usar si se detiene.
Ocultar el HUD#
Mientras /sitconfig está abierto, el HUD del jugador se oculta y se restaura al cerrarse. qs-interface es compatible de serie; cualquier otro HUD es una línea en client/custom/hud.lua:
-- client/custom/hud.lua
QSS.HudResources = {
['qs-interface'] = function(visible)
exports['qs-interface']:ToggleHud(visible)
end,
-- your HUD, with its own show/hide export
['my-hud'] = function(visible)
exports['my-hud']:SetVisible(visible)
end,
}Solo se llama a los recursos que están en ejecución, así que incluir un HUD que no tienes no causa problemas.
Idiomas#
Sit Everywhere incluye 41 idiomas. Elige uno en General → Language: se aplica a todos los jugadores de inmediato, menús incluidos, sin reiniciar.
Región | Idiomas |
|---|---|
Europa |
|
Asia, Oriente Medio y África |
|
Todos los textos están en locales/<code>.json. Para cambiar cualquier texto — una notificación, una etiqueta del tercer ojo, el nombre de una asignación de tecla — edítalo en el archivo de tu idioma y reinicia el recurso. Una clave que falta en una traducción recurre al inglés, y una que falta en inglés muestra la propia clave, así que un hueco nunca queda en blanco.
{
"siteverywhere": {
"target": {
"sit": "Sit",
"lay": "Lie down",
"preset_sit": "Sit down",
"preset_lay": "Lie down",
"pose": "Choose pose"
},
"notify": {
"seat_occupied": "That seat is already taken.",
"too_far": "You are too far away."
}
}
}Cada sección del archivo empieza con un _note que indica dónde aparecen sus textos y cuánto pueden medir. Las palabras de los comandos no se traducen aquí: se configuran en /sitconfig → Commands.
Imágenes de animaciones#
Cada pose tiene una imagen en web/images/animations/, con el nombre del id de la pose. Coloca tu propio archivo con el mismo nombre para reemplazar una — un .png tiene prioridad sobre los demás, luego .svg, .webp y .jpg, así que nunca tienes que eliminar el original. Reinicia el recurso después.
Id | Pose |
|---|---|
| Normal sit · Stupor sit |
| Relaxed sit · Couch slouch |
| Casual sit · Upright sit |
| Lounge sit |
| Picnic (male) · Picnic (female) |
| Nightclub sit · Cross-legged sit · Jetski lean |
| Lie on left side · Lie on right side · Sunbathe · Nap |
La tarjeta recorta la imagen para ajustarla, así que funcionan tanto imágenes cuadradas como horizontales. Una pose sin ninguna imagen muestra en su lugar el icono de su categoría.



