
Faction
Facciones que creas por completo en el juego: cada facción es un job real con menú de jefe, garajes, almacenes, vestuario, ascensor, niveles, menú de acciones y sistema de gangwar. El script crea las tablas por sí mismo.
- ESX Legacy (
es_extended, probado con 1.14) - oxmysql
- OneSync
- Para el vestuario: skinchanger y esx_skin (o tus propias funciones en
config/functions.lua) - Para el menú F6 y el menú de vehículos del gangwar: esxmenudefault (o tus propios menús mediante
ClientActionMenuyClientGangwarVehicleMenu)
Funciones
- Creador (
/fraktionen): crea facciones en el juego con rangos, sueldo, vehículos, lugares (marker o NPC), blips y acceso a partir de un rango. - Menú de jefe: gestionar miembros, caja con historial, comprar vehículos, permisos por rango, solicitudes y logs.
- Solicitudes: los jugadores se postulan a facciones en los puntos de solicitud (NPC o marker del creador), la dirección acepta o rechaza en el menú de jefe.
- GPS: los miembros se ven en el mapa, con un icono propio a pie, en coche, en moto o bicicleta, en barco, helicóptero o avión, nadando y al morir (activable por facción).
- Vehículos de facción con estilo: prefijo de matrícula propio, pintura y xenón en el color de la facción, tuning máximo y lunas tintadas. Con llave para cerrar y abrir.
- Garajes y almacenes: hasta 10 de cada uno por facción, acceso a partir de un rango.
- Vestuario, ascensor (hasta 10 plantas) y niveles con XP (activables por facción).
- Menú de acciones (F6): esposar, cachear, identificar, escoltar y acciones de vehículo, a elegir por facción.
- Gangwar: crear zonas en el juego, modos Límite de tiempo y First Contact, dimensión propia, tienda y clasificación.
- Logs de Discord para todas las áreas.
Instalación
- Pon la carpeta
off_factionenresources. - Añade en el
server.cfg, después de oxmysql y ESX:
ensure oxmysql
ensure es_extended
ensure off_faction- Abre
/fraktionen, crea una facción y asigna la dirección con/setjob <ID> <name> <rango>(rango más alto = número de rangos − 1).
El nombre de la facción es a la vez el nombre del job (2–20 caracteres, a–z, 0–9, _) y después ya no se puede cambiar. Si el job ya existe, no puedes crear la facción.
Configuración
config/settings/config.lua
| Opción | Predeterminado | Descripción |
|---|---|---|
serverInfo.name | 'OFF SCRIPTS' | Nombre del servidor, se muestra en la interfaz en lugar de «OFF SCRIPTS» |
serverInfo.locale | 'de' | Idioma: de, en, pl, fr, es o it |
serverInfo.color | { 155, 89, 255 } | Color de la UI (RGB) |
serverInfo.design | 3 | Diseño de la interfaz: 1 = Clásico, 2 = Ticket, 3 = Storefront |
blur | true | Fondo desenfocado mientras hay un menú abierto. El creador sigue nítido (vista previa) |
creator.command | 'fraktionen' | Comando del creador |
creator.groups | { 'projektleitung' } | Grupos con acceso al creador de facciones |
creator.zoneGroups | { 'projektleitung' } | Grupos con acceso al creador de zonas de gangwar |
inviteSeconds | 60 | Segundos hasta que caduca una invitación |
storeRange | 25.0 | Distancia máx. al guardar un vehículo (metros) |
plateFormat | 'LLL NNN' | Matrícula: L = letra, N = número, solo se aplica sin prefijo en el creador |
applications.cooldown / maxOpen | 24 / 3 | Horas de bloqueo tras un rechazo, máx. solicitudes abiertas por jugador |
gps.interval / scale | 2 / 0.8 | Segundos entre actualizaciones del GPS, tamaño de los blips |
gps.showSelf | true | true = también ves tu propio blip de GPS |
gps.types | ver archivo | sprite y color por estado: foot, swim, car, bike, bicycle, boat, heli, plane, dead (por defecto blanco, muerto rojo) |
vehicleKeys.enabled / key / range | true / 'U' / 10.0 | Sistema de llaves, tecla por defecto, alcance en metros |
vehicleKeys.shared | false | true = todos los miembros pueden cerrar y abrir los vehículos de facción sacados |
bossLogs.days | 30 | Días que los logs se guardan en el menú de jefe |
bossLogs.<área> | true (acciones false) | Qué áreas muestra la página de logs: members, money, garage, storage, wardrobe, gangwarShop, level, actions |
levels.max / base / growth | 50 / 1000 / 1.15 | XP por nivel = base × growth ^ (Level − 1) |
levels.tiers | 5 niveles | Con sistema de niveles: huecos de atuendos y kg de almacén a partir de un nivel |
outfitSlots | 10 | Huecos de atuendos sin sistema de niveles |
weaponWeight | 2.0 | Peso de un arma en el almacén |
itemImages | imágenes de off_inventory | Ruta de imagen para los items del almacén, %s = nombre del item |
marker / blips | ver archivo | Valores por defecto para lugares nuevos, ajustables por lugar en el creador. blips.enabled = false desactiva todos los blips |
config/settings/config.gangwar.lua
| Opción | Predeterminado | Descripción |
|---|---|---|
times | 18:00 – 22:00 | Horas permitidas (hora del servidor), vacío = siempre |
joinSeconds | 60 | First Contact: tiempo para unirse en el lobby. Límite de tiempo empieza al instante |
respawnSeconds | 10 | Segundos hasta el respawn |
lobbyRadius | 15.0 | Tamaño del lobby alrededor del spawn (metros) |
players.min / max | 1 / 0 | Jugadores por bando (min solo First Contact, max = 0 = ilimitado) |
killPoints | 3 | Límite de tiempo: puntos por kill |
modes.<modo>.duration | 25 / 15 | Duración en minutos |
cooldowns | 1 / 0 / 1 | Minutos: attack (pausa de la facción), zone (bloqueo de la zona), queue (hasta que caduca la cola), 0 = desactivado |
rewards | ver archivo | Puntos de gangwar y XP para win, lose, draw y forfeit |
weapons | desactivado | enabled = true: solo estas armas en el gangwar, las tuyas vuelven después |
vehicles / shop | ver archivo | Vehículos de los garajes de gangwar y artículos de la tienda |
config/settings/config.actions.lua
| Opción | Predeterminado | Descripción |
|---|---|---|
command / key | 'fraktionsmenu' / 'F6' | Comando (/off_faction:fraktionsmenu) y tecla por defecto del menú de acciones |
reach | 3.0 | Lo cerca que debe estar delante de ti un jugador o vehículo (metros) |
search.requireCuffed | true | Solo cachear a jugadores esposados |
search.accounts | { 'money', 'black_money' } | Cuentas que se pueden quitar al cachear |
cuffedAnims | ver archivo | Animaciones con las que ClientIsCuffed reconoce a los esposados |
identify | ver archivo | Tiempo de visualización y qué campos aparecen para jugador y vehículo |
animations | ver archivo | Animación y duración por acción |
config/functions.lua
Aquí conectas tus propios scripts. Los errores en ellas llegan a la consola, el script sigue funcionando.
| Función | Para qué |
|---|---|
Notify(message, type) / HelpNotify(text) | Notificación y texto de ayuda · Servidor: Notify(source, message, type) |
ClientGetFuel(vehicle) / ClientSetFuel(vehicle, fuel) | Script de combustible |
ClientVehicleRetrieved(vehicle, plate) | Después de sacar un vehículo, p. ej. dar llaves |
ClientVehicleStored(plate) | Después de guardar un vehículo, p. ej. quitar llaves |
ClientGetSkin() / ClientApplyOutfit(clothes) / ClientRestoreOutfit() | Script de ropa para el vestuario |
ClientActionMenu(title, actions, onSelect) | Menú F6 (por defecto: menú ESX Default) |
ClientIsCuffed() | Comprobación de esposas al cachear (esposas y animaciones propias) |
ClientCuffChanged(kind) | Esposas propias puestas o quitadas, p. ej. bloquear el móvil |
ClientGangwarDeath() / ClientGangwarRespawn() | Muerte y respawn en el gangwar, p. ej. ocultar el script de ambulancia |
ClientRestoreLoadout(loadout) | Dar y devolver armas en el gangwar |
ClientGangwarVehicleMenu(vehicles, onSelect) | Menú de vehículos del garaje de gangwar |
ClientGangwarVehicleSpawned(vehicle, plate) | Vehículo de gangwar spawneado, p. ej. dar llaves |
ServerLevelUp(faction, level) | La facción sube de nivel |
ServerVehicleBought(faction, model, plate) | Vehículo comprado |
ServerGangwarStarted(zone, attacker, defender) | Empieza el gangwar |
ServerGangwarEnded(zone, attacker, defender, outcome) | Gangwar terminado (outcome desde el punto de vista del atacante) |
ServerVehicleImpounded(source, plate) | Vehículo llevado al depósito, p. ej. conectar otro script de garaje |
ServerCuffedDisconnect(source, xPlayer, kind, reason) | Un jugador esposado sale del servidor, p. ej. cárcel |
config/settings/config.server.lua e idiomas
Webhooks de Discord por área (creator, members, money, garage, storage, wardrobe, level, gangwar, actions), url = '' desactiva un log. Todos los textos están en config/locales/ (un archivo por idioma).
En el juego
- Creador (
/fraktionen): crea una facción, coloca los lugares con Usar mi posición, ajusta markers, NPC y blips con Ajustar, y en Ajustes activa el sistema de niveles, el garaje, el almacén, el gangwar y las acciones del menú F6. Solo Guardar aplica todo. Arriba cambias a Solicitudes y Zonas de Gangwar. - Ajustar NPC: elige un modelo de una lista con imágenes de todos los peds de GTA (búsqueda y categorías), además del escenario y la orientación, todo con vista previa en directo en el juego. Un ped addon lo eliges escribiendo el nombre exacto del modelo en la búsqueda.
- Estilo de vehículo (Creador → Vehículos): prefijo de matrícula de hasta 5 caracteres, p. ej.
BALLAdaBALLA 48. Si cambia el prefijo, al guardar todos los vehículos de la facción reciben una matrícula nueva y los vehículos sacados se eliminan. Además: pintura en el color de la facción, tuning máximo, lunas tintadas y xenón en el color de la facción. - GPS (Creador → Ajustes): los miembros se ven entre sí en el mapa. El icono cambia según el estado, los colores e iconos están en
gps.types. El blip solo muestra la orientación a pie y nadando, los iconos de vehículos siempre están rectos. - Llaves: quien saca un vehículo de facción puede cerrarlo y abrirlo con U (se puede cambiar en los controles de FiveM). Con
vehicleKeys.shared = truepueden hacerlo todos los miembros. - Solicitudes: los puntos de solicitud los creas en el creador en Solicitudes (hasta 20), como NPC o marker y, si quieres, con blip para todos los jugadores. Sirven para todas las facciones. En el punto, E abre la lista de todas las facciones que aceptan solicitudes, allí envías un texto. Tu propia facción no aparece en la lista. Los miembros con el permiso Invitar miembros reciben un mensaje y ven la solicitud en el menú de jefe en Miembros → Solicitudes. Allí también se pueden cerrar las solicitudes. Aceptar funciona aunque el jugador esté desconectado.
- Registros (menú de jefe, botón inferior): todo lo que pasa en la facción, p. ej. ingresos y retiradas, vehículos sacados, guardados o comprados, almacén, vestuario, miembros, solicitudes, tienda de gangwar y nivel. Los ataques de gangwar no aparecen ahí. Visible para la dirección y los rangos con el permiso Ver registros.
- Lugares: en el menú de jefe, garaje, almacén, vestuario y ascensor, E abre el menú.
- Menú de acciones (F6): actúa sobre el jugador o vehículo que tienes justo delante.
- Esposas duras: solo mirar alrededor. Esposas suaves: andar, pero no correr, saltar ni atacar. Volver a seleccionarlas las quita.
- Cachear: solo a jugadores esposados, solo puedes quitar.
- Escoltar: llevar delante de ti a un jugador esposado. Meter en vehículo / Sacar del vehículo para esposados.
- Vehículo: lavar, reparar, llevar al depósito (los vehículos privados acaban en el depósito de off_garage) e identificar. X cancela.
- Gangwar: en el punto de gangwar, E abre el menú. Una facción pone una zona en cola, otra acepta. Te unes con E en el punto de gangwar.
- Límite de tiempo: empieza al instante, puntos por kill, respawn, te puedes unir hasta el final.
- First Contact: tiempo para unirse en el lobby, luego una vida por jugador.
Para desarrolladores
exports.off_faction:AddXP('vagos', 250)
exports.off_faction:SetLevel('vagos', 5, 0)
local level, xp, needXp = exports.off_faction:GetLevel('vagos')
local faction = exports.off_faction:GetFaction('vagos')
local list = exports.off_faction:GetFactions()
local isFaction = exports.off_faction:IsFaction('vagos')
local name, grade = exports.off_faction:GetPlayerFaction(source)
local allowed = exports.off_faction:HasPermission(source, 'withdraw')
exports.off_faction:AddBalance('vagos', 5000, 'Recompensa')
exports.off_faction:RemoveBalance('vagos', 5000, 'Strafe')- Todos los exports son del lado del servidor.
- Evento de servidor
off_faction:levelUpcon(faction, level)al subir de nivel. - Statebags:
offGangwar(ID de la zona en el gangwar),offCuffed('hard','soft'ofalse),offEscorted(ID de servidor de quien escolta).
Problemas frecuentes
Al arrancar, el script muestra errores y avisos en la consola del servidor.
| Problema | Solución |
|---|---|
| «Ya existe un trabajo de ESX con este nombre» | Elige otro nombre, los jobs existentes no se reutilizan. |
| Nadie ve el marker o el NPC | Solo los miembros ven los lugares. Coloca la posición y guarda, revisa el rango mínimo. |
| El vestuario no pone ropa | Inicia skinchanger/esx_skin o ajusta las funciones de ropa. |
| F6 no abre ningún menú | Activa una acción en Ajustes, inicia esxmenudefault. |
| Falta un vehículo en el garaje | En el creador, en Garajes, asígnalo al garaje. Los vehículos sin garaje están en todos los garajes. Si tiene precio, la dirección primero tiene que comprar el vehículo en el menú de jefe. |
| El GPS no muestra a nadie | En el creador, en Ajustes, activa GPS. Solo muestra a los miembros conectados. |
| U no cierra | Solo quien sacó el vehículo, o todos con vehicleKeys.shared = true. Revisa la tecla en los controles de FiveM. |
| Falta la solicitud en el menú de jefe | Solo aparece en el menú de jefe de la facción a la que se postuló, y solo para rangos con el permiso Invitar miembros. |
| La página de logs está vacía | Pon el área en true en bossLogs. Las entradas solo se crean a partir de ahora, no hay acciones anteriores. |
| «Ahora mismo no se permiten Gangwars» | Hora fuera de times. Para siempre: times = {}. |
| En el gangwar, el script de ambulancia revive | Desactiva la pantalla de muerte en ClientGangwarDeath. |
¿Aún no lo has comprado?
Ver Faction en la tienda