Skip to content

Exports y eventos

API pública de Cuxial Gang: exports, eventos y state bags para consultar organizaciones y premiarlas.

Consulta organizaciones, miembros y territorio desde tus propios recursos, premia a una organización desde un trabajo o un atraco, y conecta tus propios NPC a los menús de interacción y de rehenes.

En toda la página, orgId es el id numérico de una organización y citizenid es el identificador del personaje que da el bridge.

Exports de servidor ​

getOrganisation ​

Devuelve la ficha completa de una organización.

lua
local org = exports.cuxial_gang:getOrganisation(orgId)

Devuelve: table | false. Entre sus campos: id, label, color, orgType, lvl, exp, balance, dirtymoney, ranks, upgrades.

lua
local org = exports.cuxial_gang:getOrganisation(3)
if org then print(org.label, org.lvl) end

getOrganisationsList ​

Lista todas las organizaciones.

lua
local list = exports.cuxial_gang:getOrganisationsList()

Devuelve: table[]. Cada entrada es { identifier = orgId, label = string }.

getPlayerOrganisation ​

Devuelve la organización de un personaje con su entrada de miembro.

lua
local data = exports.cuxial_gang:getPlayerOrganisation(citizenid)

Devuelve: table | false.

CampoTipoDescripción
orgIndexnumberId de la organización.
playertableidentifier, rank, status, totalTime.
orgDatatableLa misma ficha que getOrganisation.
lua
local data = exports.cuxial_gang:getPlayerOrganisation(citizenid)
if data then print(data.orgData.label, data.player.rank) end

getMemberGang ​

Forma corta de lo anterior.

lua
local gang = exports.cuxial_gang:getMemberGang(citizenid)

Devuelve: table | nil. { gangId = string, label = string, rank = string, name = string }.

checkPermissions ​

Indica si el rango de un personaje tiene un permiso.

lua
local allowed = exports.cuxial_gang:checkPermissions(citizenid, permission)
ParámetroTipoDescripción
citizenidstringIdentificador del personaje.
permissionstringbossmenu_access, garage_access, storage_access, blackmedic_access, moneylaundry_access o port_access.

Devuelve: boolean.

getOnlineSource ​

Devuelve el id de servidor de un miembro que está conectado.

lua
local src = exports.cuxial_gang:getOnlineSource(citizenid)

Devuelve: number | nil.

getOrgsIntelList ​

Lista las organizaciones con su color, nivel y número de miembros, ordenadas por nombre.

lua
local list = exports.cuxial_gang:getOrgsIntelList()

Devuelve: table[]. Cada entrada es { gangId = string, label = string, color = string, lvl = number, members = number }.

getOrgIntelData ​

Devuelve una ficha detallada de una organización.

lua
local card = exports.cuxial_gang:getOrgIntelData(orgId)

Devuelve: table | nil.

CampoTipoDescripción
gangId, label, color, lvl, exp, graffitiUrlDatos básicos.
memberstable[]citizenid, name, rank, rankIndex, isBoss, online, since.
rankstable[]{ index, name }, ordenados.
locationstablehideout, stash, cloakroom, mulaStash, garage, helipad. Cada uno es { x, y, z, w } o nil si no está colocado.
territoriestable[]{ index, label, owner, points } de los territorios donde tiene lealtad o propiedad.

getTurfZonesIntel ​

Lista los territorios con su polígono y su dueño actual.

lua
local zones = exports.cuxial_gang:getTurfZonesIntel()

Devuelve: table[]. Cada entrada es { index, label, polygon = { { x, y }, ... }, ownerId, ownerLabel }. ownerId es nil cuando la zona no es de nadie.

Territorio ​

ExportDevuelveDescripción
getTurfOwnership(turfId)table | nil{ ownerId, ownerLabel, expiresAt } de un territorio.
isTurfOwner(turfId, orgId)booleanSi esa organización es la dueña de la zona.
isPlayerTurfOwner(src, turfId)booleanSi la organización de ese jugador es la dueña de la zona.
getPlayerTurfZone(src)any | nilÍndice del territorio en el que está el jugador.
isTurfZoneInRivalry(turfId)booleanSi hay una guerra en curso en la zona.
lua
local turfId = exports.cuxial_gang:getPlayerTurfZone(source)
if turfId and exports.cuxial_gang:isPlayerTurfOwner(source, turfId) then
    -- el jugador está en su propio territorio
end

Favelas ​

ExportDevuelveDescripción
getFavelas(orgId?)table[]Ficha de todas las favelas, ordenadas por nombre. Con orgId, cada ficha dice si es tuya en isMine.
getFavelaCard(id, orgId?)table | nilFicha de una favela: id, label, state, ownerId, ownerLabel, ownerColor, expiresAt, progress y más.
getFavelaOwner(id)any | nilId de la organización dueña.

Mulas ​

ExportDevuelveDescripción
isPlayerMula(citizenid)booleanSi el personaje es una mula en activo.
getMulaData(citizenid)table | nilidentificator, name, orgId, trustLevel, status, completedContracts, failedContracts, joinDate.
getMulaOrg(citizenid)any | nilOrganización para la que trabaja la mula.
getOrgMulas(orgId)table[]Mulas de una organización.
getMulaActiveContract(citizenid)table | nilEl encargo que la mula tiene en curso.
completeMulaContractStep(citizenid, contractId, stepIndex)Da por hecho un paso de un encargo desde tu propio recurso.
failMulaContract(citizenid, contractId)booleanFalla un encargo asignado a esa mula.

Arsenal ​

ExportDevuelveDescripción
getArsenalLevel(orgId)number, numberNivel del arsenal y unidades vendidas por la organización. 0, 0 con el arsenal desactivado.
getArsenalParts()table[]Catálogo de piezas: { item, label, price }.

Efectos sobre una organización ​

Pensados para un recurso de policía o de staff. Cambian el estado de la organización.

ExportDevuelveDescripción
applyPoliceStrike(orgId, { loyalty = n }){ turfs, loyalty } | nilQuita n de lealtad a la organización en todos los territorios donde tenga.
seizeOrgMoney(orgId, account)numberVacía una cuenta y devuelve el importe. account es 'balance' o 'dirtymoney' (por defecto).
seizeOrgStash(orgId)table[]Vacía el alijo principal y devuelve { name, label, count } por ítem.

Estos tres no se pueden deshacer. Llámalos solo desde código de servidor en el que confíes.

RegisterExtortionVictim ​

Añade un civil al que se puede extorsionar por teléfono, además de los de data/extortion.lua.

lua
local ok = exports.cuxial_gang:RegisterExtortionVictim(victim)
CampoTipoDescripción
idstringId único. Obligatorio.
namestringNombre visible. Obligatorio.
personalitystringgreedy, trusting, suspicious o aggressive. Obligatorio.
occupation, wealthHint, pedModel, avatarOpcionales.

Devuelve: boolean. false cuando la forma no es válida.

lua
exports.cuxial_gang:RegisterExtortionVictim({
    id = 'victim_baker',
    name = 'Tom Reyes',
    occupation = 'Panadero',
    personality = 'trusting',
})

RegisterExtortionFixer ​

Añade un intermediario, además de los de data/extortionFixers.lua.

lua
local ok = exports.cuxial_gang:RegisterExtortionFixer(fixer)

fixer necesita id, name y personality (sharp, gruff o silky). Los precios y límites que falten toman los valores por defecto del archivo.

Devuelve: boolean.

Eventos de servidor ​

Estos cinco son solo de servidor. Dispáralos con TriggerEvent desde código de servidor. Una llamada que venga de un cliente se registra y se ignora.

EventoParámetrosQué hace
cuxial_gang:addOrganisationEXPorgId, amountSuma experiencia. La organización sube de nivel cuando tiene suficiente.
cuxial_gang:addOrganisationMoneyorgId, amount, accountSuma dinero. account es 'balance' o 'dirtymoney'.
cuxial_gang:removeOrganisationMoneyorgId, amount, accountQuita dinero. No hace nada si no hay suficiente.
cuxial_gang:addOrgMissionsDoneorgId, amountSuma al contador de misiones hechas.
cuxial_gang:addZonesCapturedorgId, amountSuma al contador de zonas capturadas.
lua
-- Premiar a la organización de un jugador después de un atraco
local data = exports.cuxial_gang:getPlayerOrganisation(citizenid)
if data then
    TriggerEvent('cuxial_gang:addOrganisationMoney', data.orgIndex, 15000, 'dirtymoney')
    TriggerEvent('cuxial_gang:addOrganisationEXP', data.orgIndex, 200)
end

Eventos que puedes escuchar ​

Eventos locales de servidor, lanzados con TriggerEvent.

EventoParámetrosCuándo
cuxial_gang:server:ZoneOwnerChanged{ zoneIndex, oldOwnerId, newOwnerId }Un territorio cambia de dueño.
cuxial_gang:server:SaleRecorded{ orgId, turfIndex, units, amount, citizenid, source, counted }Se registra una venta de droga. counted son las unidades que puntuaron.
cuxial_gang:server:PlayerLeftGangsrc, citizenidUn jugador sale o es expulsado de una organización.
cuxial_gang:intelkind, payloadUna organización hace algo relevante. Solo se lanza mientras cuxial_police está en marcha.

kind es uno de drug_sale, laundry, graffiti, mula, turf, favela, airdrop, weapon_crafted, supply_robbed, supply_seized, vehicle_seized u officer_kidnap. payload lleva siempre gangId y gangLabel cuando se conocen, normalmente coords, y campos que dependen del tipo.

lua
AddEventHandler('cuxial_gang:server:ZoneOwnerChanged', function(data)
    print(('zona %s: %s -> %s'):format(data.zoneIndex, data.oldOwnerId, data.newOwnerId))
end)

Exports de cliente ​

getPlayerOrganisation ​

Devuelve la organización del jugador local.

lua
local org = exports.cuxial_gang:getPlayerOrganisation()

Devuelve: table | false. { id = number, label = string, bossmenuCoords = vector4 }. false cuando el jugador no tiene organización o los datos aún no han cargado.

hasOrgPermission ​

Indica si el rango del jugador local tiene un permiso. Lee una copia replicada, así que úsalo para pintar interfaz; vuelve a comprobarlo en el servidor antes de actuar.

lua
local allowed = exports.cuxial_gang:hasOrgPermission('storage_access')

Devuelve: boolean.

getOrgPermissions ​

lua
local perms = exports.cuxial_gang:getOrgPermissions()

Devuelve: table | nil. Un mapa de nombre de permiso a true.

Otras consultas ​

ExportDevuelveDescripción
isInTurfZone()any | nilÍndice del territorio en el que está el jugador.
isPlayerMula()booleanSi el jugador local es una mula. Pregunta al servidor.
getMulaData()table | nilFicha de mula del jugador local. Pregunta al servidor.

Abrir las interfaces ​

ExportDescripción
OpenTablet()Abre la tablet. openCrimeTablet() hace lo mismo.
openHandcuffsMenu()Abre el menú de interacción sobre el jugador más cercano.
useSpray()Empieza a pintar un grafiti.
useRemover()Empieza a borrar un grafiti.

Son los exports a los que apuntar un ítem del inventario.

OpenInteractionMenu ​

Abre el mismo menú en rueda con tus propias entradas.

lua
exports.cuxial_gang:OpenInteractionMenu(payload, handlers)
ParámetroTipoDescripción
payload.titlestringTítulo del menú.
payload.targetNamestringNombre que se muestra como objetivo.
payload.targetMetastringTexto pequeño bajo el nombre. Opcional.
payload.iconstringClase de Font Awesome, como fa-solid fa-user. Opcional.
payload.itemstable[]Entradas: value, title, description, icon y tone (warn, success o destructive). Obligatorio.
handlerstableMapa de value a la función que se ejecuta al elegir esa entrada.
lua
exports.cuxial_gang:OpenInteractionMenu({
    title = 'Informante',
    targetName = 'Desconocido',
    items = {
        { value = 'ask', title = 'Preguntar', description = 'Preguntar por la zona.', icon = 'fa-solid fa-comment' },
    },
}, {
    ask = function()
        print('preguntado')
    end,
})

exports.cuxial_gang:CloseInteractionMenu() lo cierra.

RegisterHostage ​

Hace que uno de tus NPC se pueda controlar como rehén: al apuntarle se abre el menú de rehén.

lua
exports.cuxial_gang:RegisterHostage(ped, meta)
ParámetroTipoDescripción
pednumberHandle de entidad de un ped que existe.
meta.namestringNombre que se muestra en el menú. Opcional.
meta.contextKindLabelstringEtiqueta del tipo de rehén. Opcional.
meta.iconstringClase de Font Awesome. Opcional.
meta.accentColorstringColor hexadecimal. Opcional.
meta.onKilledfunctionSe llama con ped cuando el rehén muere. Opcional.
lua
exports.cuxial_gang:RegisterHostage(ped, {
    name = 'Empleado del banco',
    onKilled = function(entity)
        print('rehén abatido', entity)
    end,
})

UnregisterHostage(ped) lo suelta e IsHostageControlled(ped) devuelve si está registrado.

State bags ​

Los pone el servidor en cada jugador y se replican a los clientes.

State bagTipoDescripción
gangNamestring | falseNombre de la organización del jugador. false si no tiene.
gangIdnumber | nilId de la organización.
gangRankNamestring | nilEtiqueta del rango.
orgPermissionstable | nilMapa de nombre de permiso a true.
lua
local orgId = Player(source).state.gangId

En el framework, cada organización se registra como una banda llamada gang_<orgId>, por ejemplo gang_3.

© Cuxial