Comandos#
Crime Creator reduce los comandos al mínimo — casi todo ocurre en sus ventanas. Estos son los que registra:
Comando | Quién | Descripción |
|---|---|---|
| Administradores y | Abre el creador: organizaciones, pase de temporada, tienda de vehículos, territorios, cobros y batallas PvP. |
| Administradores | Da XP a una organización — para eventos, compensaciones o pruebas. |
| Miembros de organizaciones | El menú de interacción de banda. La tecla es |
| El trabajo | Quita la bolsa de la cabeza del jugador más cercano a menos de 3 m. Definido en |
Con
Config.Debug = trueel recurso también registra comandos de prueba de grafitis (/testgraffiti,/removegraffiti,/listgraffitis). Son para desarrollo; mantén el debug desactivado en un servidor en producción.
Exports de cliente#
Para leer la banda del jugador desde tus propios scripts, y para abrir las herramientas de Crime Creator desde un ítem, un menú radial o una app del teléfono.
GetPlayerGang
La organización del jugador local, o nil cuando no está en ninguna. GetPlayerGangName es un alias que devuelve la misma tabla.
local gang = exports['qs-crime-creator']:GetPlayerGang()
if gang then
print(gang.id, gang.label, gang.isBoss)
if gang.rank then print(gang.rank.label) end -- the member's rank
if gang.permissions and gang.permissions.canAccessStash then
print('can open the stash')
end
endAbrir la tablet y las herramientas
Son los mismos exports que llaman las definiciones de ítems de ox_inventory.
exports['qs-crime-creator']:tablet() -- open the Crime Tablet
exports['qs-crime-creator']:binoculars() -- open the binoculars
exports['qs-crime-creator']:graffiti() -- start spraying (uses organization_paint)
exports['qs-crime-creator']:graffitiCleaner() -- remove the nearest graffitiLavado de dinero
Útil para un garaje o un desguace que deba rechazar la furgoneta del lavado.
local active = exports['qs-crime-creator']:isMoneyLaunderingActive() -- boolean
local vehicle = exports['qs-crime-creator']:getMoneyLaunderingVehicle() -- entity handle or nil
if active and vehicle == GetVehiclePedIsIn(PlayerPedId(), false) then
return -- the laundering van: not yours to store
endinDecorate
Si el jugador está decorando una sede en este momento — oculta tu HUD o bloquea otros menús mientras sea true.
local decorating = exports['qs-crime-creator']:inDecorate()Exports de servidor#
Cómo otro recurso lee y cambia la pertenencia a bandas, recompensa a organizaciones, controla las bolsas en la cabeza y alimenta las guerras de territorio.
GetPlayerGang
La organización de un jugador. Cuando no pertenece a ninguna, todos los campos son nil y isBoss es false. GetPlayerGangName es un alias.
local gang = exports['qs-crime-creator']:GetPlayerGang(source)
if gang.id then
local rankLabel = gang.rank and gang.rank.label or 'no rank'
print(('%s is in %s (%s)'):format(GetPlayerName(source), gang.label, rankLabel))
end
-- gang = { id, label, isBoss, permissions, rank,
-- member = { identifier, name, joinedAt, rankId, isBoss, rank } }SetPlayerGang
Mueve a un jugador conectado a una organización, sacándolo de cualquier otra. isBoss y rankId son opcionales.
local ok, err = exports['qs-crime-creator']:SetPlayerGang(targetSource, 12, false, 3)
if not ok then
print('SetPlayerGang failed:', err)
-- invalid_source · invalid_org_id · player_not_online · organization_not_found
-- invalid_rank_id · rank_not_found · identifier_not_found · failed_to_update_gang
-- failed_to_remove_old_gang · failed_to_add_new_gang
endFirePlayerGang
Saca a un jugador conectado de su organización.
local ok, err = exports['qs-crime-creator']:FirePlayerGang(source)
if not ok then
print('FirePlayerGang failed:', err)
-- invalid_source · player_not_online · identifier_not_found · not_in_gang · failed_to_remove_gang
endGetFilteredGangs
Todas las organizaciones, ordenadas por nombre, con su dueño y sus miembros — para una app del teléfono, un marcador o un panel de administración.
local gangs = exports['qs-crime-creator']:GetFilteredGangs()
for i = 1, #gangs do
local g = gangs[i]
print(g.id, g.name, g.color, g.memberCount, g.onlineCount)
-- g.owner = { identifier, name, isOnline } or nil
-- g.members = { { identifier, name, isBoss, rankId, rankLabel, isOnline, joinedAt }, ... }
endGetOrganizationRanks
local ranks, err = exports['qs-crime-creator']:GetOrganizationRanks(12)
-- ranks = { { id, label, permissions }, ... }
-- err = 'invalid_org_id' | 'organization_not_found'addOrganizationXP
Recompensa a una organización desde otro script — un golpe, una carrera, un evento. El nivel se recalcula con tu fórmula de XP. Devuelve false para cantidades cero o negativas.
local gang = exports['qs-crime-creator']:GetPlayerGang(source)
if gang.id then
exports['qs-crime-creator']:addOrganizationXP(gang.id, 250)
endBolsa en la cabeza
Lee y controla la bolsa en la cabeza desde un script de policía, secuestro u hospital. Los setters devuelven false cuando el jugador ya está en ese estado.
local bagged = exports['qs-crime-creator']:hasHeadbag(playerId) -- boolean
exports['qs-crime-creator']:putHeadbagOn(playerId)
exports['qs-crime-creator']:takeHeadbagOff(playerId)TerritoryWarOnPlayerKilled
Acredita una baja a una guerra de territorio. Llámalo desde tu evento de muerte — ver Integraciones. Devuelve true cuando la baja ha contado.
AddEventHandler('esx:onPlayerDeath', function(data)
local victim = source
local killer = data and data.killerServerId
if killer and killer ~= victim then
exports['qs-crime-creator']:TerritoryWarOnPlayerKilled(killer, victim)
end
end)State bags y eventos#
El id de organización de un jugador se replica como state bag, así que cualquier script puede leerlo sin llamar a un export:
-- client
local orgId = LocalPlayer.state.organization
-- server
local orgId = Player(source).state.organizationEvento | Lado | Descripción |
|---|---|---|
| Cliente (net) | Muestra una notificación de Crime Creator: |
| Cliente (net) | Abre la tablet para ese jugador. |
| Cliente y servidor | Se dispara cuando un jugador entra o sale de una sede: |
| Cliente | Apareció o se limpió un grafiti. |
| Cliente | Terminó una guerra de territorio; incluye la organización ganadora. |
| Servidor | Una venta de drogas dentro de un territorio: |
Sobre los errores#
Los setters devuelven códigos de error cortos, no frases — not_in_gang, rank_not_found, player_not_online. Registra el código en tu propio script y muestra tu propio mensaje, para que se lea correctamente en el idioma de tu servidor.



