Accueil › Documentation › Exports · origen_ilegalv2

Exports · origen_ilegalv2

Tous les exports sont enregistrés sous le nom de ressource origen_ilegalv2. Le tableau ci-dessous les répartit par côté d’exécution : utilise le bon côté, sinon l’appel sera ignoré sans avertissement.


Exports serveur

Données des gangs

GetPlayerGang(source) → string | nil

Renvoie l’ID du gang du joueur donné, ou nil s’il n’en a aucun.

lua
local gangId = exports['origen_ilegalv2']:GetPlayerGang(source)

GetPlayerGangData(source) → { id, label } | nil

Renvoie l’id du gang du joueur et son label affiché.

lua
local data = exports['origen_ilegalv2']:GetPlayerGangData(source)
if data then
    print(data.id, data.label)
end

GetPlayerGangByCid(citizenid) → table | nil

Recherche l’appartenance à un gang à partir de l’identifiant du citoyen. Utile pour les panneaux d’administration et les lectures entre ressources.

lua
local info = exports['origen_ilegalv2']:GetPlayerGangByCid(citizenid)
-- { id, name, label, rankName, rankGrade, isLeader }

GetGangInfo(gangId) → table | nil

Renvoie un instantané consolidé d’un gang. C’est l’export recommandé pour les ressources externes qui ont besoin de plus que l’ID ou le nom : il agrège les données en mémoire et un seul comptage en base de données des territoires en un seul appel.

lua
local info = exports['origen_ilegalv2']:GetGangInfo('vagos')
if not info then return end -- gang doesn't exist or isn't loaded

Champs renvoyés :

Champ Type Description
id string ID interne du gang
label string Nom affiché
leader string Identifiant du chef (citizenid / license)
color string Couleur hexadécimale (#rrggbb)
is_active boolean Indique si le gang est actuellement actif (points > 0)
level number Niveau du gang (1+)
exp number XP actuelle dans le niveau en cours
points number Points du gang (0–100). À 0, le gang est désactivé
money number Solde de la banque du gang
member_count number Nombre total de membres enregistrés
online_count number Membres actuellement connectés
max_members number Nombre maximal de membres autorisé (origen_gang_config)
max_vehicles number Nombre maximal de véhicules autorisé
territory_count number Territoires actuellement contrôlés (comptage en direct en base de données)
base_territory string|nil ID du territoire de base du gang
created_at string|nil Horodatage de création

Exemple d’utilisation :

lua
local info = exports['origen_ilegalv2']:GetGangInfo('vagos')
 
-- Gate by level
if info.level < 3 then
    return cb({ success = false, reason = 'gang_level_too_low' })
end
 
-- Gate by territories
if info.territory_count < 2 then
    return cb({ success = false, reason = 'not_enough_territories' })
end
 
-- Check capacity before inviting
if info.member_count >= info.max_members then
    return cb({ success = false, reason = 'gang_full' })
end
 
print(string.format(
    '[%s] Level %d | Members %d/%d | Territories %d | Bank $%d',
    info.label,
    info.level,
    info.member_count, info.max_members,
    info.territory_count,
    info.money
))

territory_count est le seul champ qui interroge la base de données ; tout le reste est lu directement depuis l’instance Gang en mémoire. La requête est un simple SELECT COUNT(*), on peut donc l’appeler sans risque à chaque requête.


GetGangById(gangId) → { id, label, name, money, level } | nil

lua
local gang = exports['origen_ilegalv2']:GetGangById('vagos')

GetGangByName(gangName) → { id, label, name, money } | nil

lua
local gang = exports['origen_ilegalv2']:GetGangByName('vagos')

GetGangs() → table<gangId, { id, label }>

Renvoie toutes les instances de gangs actifs, indexées par ID.

lua
local gangs = exports['origen_ilegalv2']:GetGangs()
for id, gang in pairs(gangs) do
    print(id, gang.label)
end

GetGangLevelById(gangId) → number | nil

Renvoie le niveau actuel d’un gang. Renvoie nil si le gang n’existe pas.

lua
local level = exports['origen_ilegalv2']:GetGangLevelById('vagos')
if level and level >= 5 then
    -- unlock tier-2 content
end

setGang(identifier, gangName, rankId) → boolean

Export de compatibilité. Affecte un joueur, par identifiant, à un gang nommé au grade indiqué, après l’avoir retiré de son gang actuel.

lua
exports['origen_ilegalv2']:setGang(identifier, 'vagos', 1)

Raccourcis d’interface

OpenGangMenuBySource(source) → boolean

Ouvre la NUI du panneau de gang pour un joueur qui est déjà dans un gang.

lua
exports['origen_ilegalv2']:OpenGangMenuBySource(source)

OpenGangCreationBySource(source) → boolean

Ouvre l’assistant de création de gang pour un joueur. Le joueur doit avoir can_create_gang = 1 dans origen_gang_permissions.

lua
exports['origen_ilegalv2']:OpenGangCreationBySource(source)

Laboratoires

GetPlayerLabState(source) → { lab_id, lab_type, bucket, world_exit } | nil

Renvoie le laboratoire dans lequel se trouve actuellement un joueur. nil si le joueur n’est dans aucun laboratoire.

lua
local state = exports['origen_ilegalv2']:GetPlayerLabState(source)
if state then
    print(state.lab_id, state.lab_type)
end

AdminLabsGetAll() → table[]

Renvoie toutes les lignes de laboratoires de la base de données (en cache). Utilisé en interne pour les vérifications d’accès aux laboratoires.

lua
local labs = exports['origen_ilegalv2']:AdminLabsGetAll()

AdminLabsInvalidateCache()

Vide le cache des laboratoires en mémoire, ce qui force le prochain appel à AdminLabsGetAll à interroger de nouveau la base de données.

lua
exports['origen_ilegalv2']:AdminLabsInvalidateCache()

MethLabResetPlayerState(source)

Réinitialise de force l’état de production du laboratoire de meth d’un joueur (utile pour l’expulser en plein cycle).

lua
exports['origen_ilegalv2']:MethLabResetPlayerState(source)

CokeLabResetPlayerState(source)

Réinitialise de force l’état de production du laboratoire de coke d’un joueur.

lua
exports['origen_ilegalv2']:CokeLabResetPlayerState(source)

WeedLabResetPlayerState(source)

Réinitialise de force l’état du laboratoire de weed d’un joueur (libère les emplacements de séchage qu’il occupe).

lua
exports['origen_ilegalv2']:WeedLabResetPlayerState(source)

Fabrication

CraftingPointsGetAll() → table[]

Renvoie tous les points de fabrication de base (définis par l’administrateur, hors instances de laboratoire) depuis le cache de la base de données.

lua
local points = exports['origen_ilegalv2']:CraftingPointsGetAll()

CraftingLabInstancesGetAll() → table[]

Renvoie toutes les instances de points de fabrication achetées dans des laboratoires (uniquement à l’exécution, ce ne sont pas des points de base).

lua
local instances = exports['origen_ilegalv2']:CraftingLabInstancesGetAll()

CraftingPointsInvalidateCache()

Invalide à la fois le cache des points de base et celui des instances de laboratoire.

lua
exports['origen_ilegalv2']:CraftingPointsInvalidateCache()

Boutiques

StoresGetAll() → table[]

Renvoie toutes les boutiques de gangs depuis le cache de la base de données.

lua
local stores = exports['origen_ilegalv2']:StoresGetAll()

StoresInvalidateCache()

Vide le cache des boutiques en mémoire.


SellStoresGetAll() → table[]

Renvoie toutes les boutiques de revente de gangs depuis le cache de la base de données.

lua
local sellStores = exports['origen_ilegalv2']:SellStoresGetAll()

SellStoresInvalidateCache()

Vide le cache des boutiques de revente en mémoire.


Territoires

CaptureTerritory(territoryId, gangId) → boolean

Attribue un territoire à un gang par code. Déclenche une mise à jour de la carte côté client pour tous les joueurs.

lua
local ok = exports['origen_ilegalv2']:CaptureTerritory('davis', 'vagos')

ReleaseTerritory(territoryId) → boolean

Retire la propriété d’un gang sur un territoire (met gang_id = NULL). Déclenche une mise à jour de la carte côté client.

lua
exports['origen_ilegalv2']:ReleaseTerritory('davis')

AddTerritoryReputation(territoryId, gangId, amount) → { success, message? }

Ajoute des points de réputation à un gang dans un territoire. Vérifie que le gang et le territoire existent et que les territoires de base sont protégés.

lua
local result = exports['origen_ilegalv2']:AddTerritoryReputation('davis', 'vagos', 10.0)
if result.success then ... end

RemoveTerritoryReputation(territoryId, gangId, amount) → { success, message? }

Retire des points de réputation à un gang dans un territoire.


SetTerritoryReputation(territoryId, gangId, amount) → { success, message? }

Fixe la réputation d’un gang dans un territoire à une valeur exacte (0–100).


GetGangTerritoryReputation(territoryId, gangId) → number

Renvoie la valeur actuelle de réputation d’un gang dans un territoire.

lua
local rep = exports['origen_ilegalv2']:GetGangTerritoryReputation('davis', 'vagos')

GetAllTerritoryReputations(territoryId) → table[]

Renvoie toutes les lignes de réputation d’un territoire, triées par réputation décroissante.


ClearTerritoryReputations(territoryId) → { success, message? }

Supprime toutes les données de réputation d’un territoire et libère la propriété du gang.


GetTerritoryStabilization(territoryId) → { active, remaining_seconds, remaining_minutes }

Indique si un territoire se trouve dans sa fenêtre de stabilisation postérieure à la capture.

lua
local stab = exports['origen_ilegalv2']:GetTerritoryStabilization('davis')
if stab.active then
    print('Locked for', stab.remaining_minutes, 'more minutes')
end

GetTerritoryCaptureBlock(territoryId) → { active, remaining_seconds, remaining_minutes, cooldown_days }

Indique si le cooldown de capture propre à chaque territoire (champ capture_cooldown_until de la base de données) est toujours actif.


GetPlayersInTerritory(territoryId) → table[]

Renvoie la liste des sources de joueurs actuellement suivis dans un territoire par le système de présence.

lua
local players = exports['origen_ilegalv2']:GetPlayersInTerritory('davis')

GetGangMembersInTerritory(territoryId, gangId) → table[]

Renvoie uniquement les membres d’un gang précis qui se trouvent actuellement dans un territoire.


GetPlayerPresenceData(source) → table | nil

Renvoie l’état de suivi de présence d’un joueur : dans quel territoire il se trouve, depuis combien de temps, etc.


IsPlayerInTerritory(source, territoryId) → boolean

Renvoie true si, d’après le système de présence du serveur, un joueur se trouve actuellement dans le territoire donné.

lua
local inside = exports['origen_ilegalv2']:IsPlayerInTerritory(source, 'davis')

Vente de drogue

GetDrugSellLevel(source) → number (0–100)

Renvoie le niveau de vente de rue d’un joueur (une valeur de progression de 0 à 100 qui augmente avec les ventes réussies).

lua
local level = exports['origen_ilegalv2']:GetDrugSellLevel(source)

ProcessDrugSaleReputation(source)

Déclenche manuellement le traitement de la réputation de territoire pour une vente de drogue d’un joueur : la même logique que celle qui s’exécute sur origen_gang:drugSales:saleCompleted.

lua
exports['origen_ilegalv2']:ProcessDrugSaleReputation(source)

GetPlayerSalesInfo(source) → { salesThisHour, maxSalesPerHour, remainingSales, nextResetIn }

Renvoie les statistiques de ventes de drogue de l’heure en cours d’un joueur par rapport à la limite de réputation du territoire.

lua
local info = exports['origen_ilegalv2']:GetPlayerSalesInfo(source)
print(info.remainingSales, 'sales left this hour')

Véhicules

GetGangVehicles(gangId) → table[]

Renvoie toutes les lignes de véhicules de origen_gang_vehicles pour un gang.

lua
local vehicles = exports['origen_ilegalv2']:GetGangVehicles('vagos')

GetVehicleCatalog(gangId) → table[]

Renvoie les entrées activées du catalogue de véhicules d’un gang depuis origen_gang_vehicle_catalog.


Organisation — Tâches

AddOrganizationTask(taskDef) → boolean

Enregistre une tâche dans le catalogue global. Si task_key existe déjà, la ligne est mise à jour.

lua
exports['origen_ilegalv2']:AddOrganizationTask({
    task_key      = 'deliver_supplies',
    label         = 'Deliver Supplies',
    description   = 'Complete 3 supply runs.',
    category      = 'supply',
    is_repeatable = false,
    meta          = { reward = 5000 },
})

Appelle-le dans AddEventHandler('onResourceStart', ...) : OrgPanels n’est pas prêt avant la fin du chargement de la ressource.


CompleteGangTask(gangId, taskKey, opts?) → { ok, error?, times_completed }

lua
local result = exports['origen_ilegalv2']:CompleteGangTask('vagos', 'deliver_supplies', {
    completed_by = identifier,
})

IsGangTaskCompleted(gangId, taskKey) → boolean

lua
local done = exports['origen_ilegalv2']:IsGangTaskCompleted('vagos', 'deliver_supplies')

GetGangTasks(gangId) → table[]

Renvoie le catalogue complet des tâches avec l’état d’accomplissement de chaque gang.


Organisation — Améliorations

AddOrganizationUpgrade(upgradeDef) → boolean

lua
exports['origen_ilegalv2']:AddOrganizationUpgrade({
    upgrade_key    = 'tier2_robberies',
    label          = 'Tier 2 Robberies',
    type           = 'robbery_unlock',
    required_tasks = { 'deliver_supplies' },
    effect         = { feature = 'robberies:tier2' },
})

UnlockGangUpgrade(gangId, upgradeKey, opts?) → { ok, error?, missing_tasks? }

Vérifie les dépendances de tâches avant de débloquer. error = 'missing_dependencies' inclut missing_tasks: [{ task_key, label }].


HasGangUpgrade(gangId, upgradeKey) → boolean


IsGangFeatureUnlocked(gangId, featureKey) → boolean

Vérifie si une amélioration débloquée d’un gang a effect.feature == featureKey.

lua
local ok = exports['origen_ilegalv2']:IsGangFeatureUnlocked('vagos', 'robberies:tier2')

GetGangUpgrades(gangId) → table[]

Renvoie le catalogue complet des améliorations avec l’état de déblocage de chaque gang et la résolution des dépendances.


Demandes de braquage

GetRobberyRequestConfig() → table | nil

Renvoie la configuration du module de demandes de braquage, indexée pour une recherche rapide par origen_police. Renvoie nil si le module est désactivé.

origen_police consomme cet export en interne pour valider les ID de demande, les cooldowns et les plages de participants sans dépendre de toute la table Config.

lua
local cfg = exports['origen_ilegalv2']:GetRobberyRequestConfig()
if not cfg then return end -- module disabled
 
local entry = cfg.requestsById['paleto_bank']
-- entry = { id, label, image, requiredCops, minParticipants, maxParticipants, cooldownSeconds }

Champs renvoyés :

Champ Type Description
enabled boolean Toujours true (nil est renvoyé quand le module est désactivé)
pendingExpireMinutes number TTL des demandes pending, en minutes
approvedExpireMinutes number TTL des demandes approved, en minutes
requestsById table<robberyId, entry> Toutes les entrées de braquage actives indexées par id pour une recherche en O(1)

GetRobberyRequestStatus(source, robberyId) → { ok, status, error? }

Renvoie l’état normalisé de la demande de braquage du gang pour une source de joueur et un ID de braquage donnés. Résout le gang en interne : l’appelant n’a besoin que de la source du joueur.

lua
local res = exports['origen_ilegalv2']:GetRobberyRequestStatus(source, 'paleto_bank')
if res.ok and res.status == 'approved' then
    -- allow the robbery to start
end

Paramètres :

Paramètre Type Description
source number Source serveur du joueur
robberyId string ID du braquage tel que défini dans Config.RobberyRequest.Requests

Valeur renvoyée :

Champ Type Description
ok boolean false si la source ou le gang n’ont pas pu être résolus
status string "pending" | "approved" | "rejected" | "not_requested"
error string? Présent quand ok = false : "invalid_source" | "no_gang"

Les états internes (cancelled, expired, started) sont normalisés en "not_requested", de sorte que les intégrateurs n’aient jamais à les gérer.


HasApprovedRobberyRequest(source, robberyId) → boolean

Raccourci booléen pour la vérification la plus courante : renvoie true uniquement quand la demande du gang est à l’état approved. Idéal pour des conditions directes dans les scripts de braquage.

lua
if exports['origen_ilegalv2']:HasApprovedRobberyRequest(source, 'paleto_bank') then
    -- start the robbery flow
end

Renvoie false si la source n’est pas valide, si le joueur n’a pas de gang ou si la demande est dans un état autre qu’approved.


Exports client

Gang

GetPlayerGang() → table | nil

Renvoie la table de données du gang actuel du joueur local (le même objet que celui utilisé par la NUI). nil s’il n’est pas dans un gang.

lua
local gang = exports['origen_ilegalv2']:GetPlayerGang()
if gang then
    print(gang.id, gang.label)
end

OpenGangMenu()

Ouvre la NUI du panneau de gang pour le joueur local.

lua
exports['origen_ilegalv2']:OpenGangMenu()

OpenGangCreation()

Ouvre l’assistant de création de gang pour le joueur local.

lua
exports['origen_ilegalv2']:OpenGangCreation()

Laboratoires

GetInsideLab() → { lab_id, lab_type, lab_name } | nil

Renvoie le laboratoire dans lequel se trouve actuellement le joueur local, ou nil s’il n’est dans aucun. Utilisé par tous les scripts client de laboratoires pour protéger les interactions.

lua
local lab = exports['origen_ilegalv2']:GetInsideLab()
if lab and lab.lab_type == 'meth' then ... end

IsGangLabOpen() → boolean

Renvoie true si le panneau NUI de l’ordinateur portable du laboratoire est ouvert.

lua
if exports['origen_ilegalv2']:IsGangLabOpen() then
    -- don't open another menu on top
end

CloseGangLab()

Ferme par code le panneau NUI de l’ordinateur portable du laboratoire.


MethLabResetProduction()

Réinitialise l’état de production du laboratoire de meth côté client (efface l’étape en cours, les minuteurs et les modificateurs).

lua
exports['origen_ilegalv2']:MethLabResetProduction()

CokeLabResetProduction()

Réinitialise l’état de production du laboratoire de coke côté client.


InitLabStashPoints(stashes)

Initialise les zones d’interaction lib.points des points de stockage du laboratoire. Appelé en interne par le cycle de vie du laboratoire à l’entrée ; tu n’en as besoin que si tu construis une intégration de laboratoire personnalisée.


ClearLabStashPoints()

Supprime tous les points d’interaction actifs des stockages du laboratoire et masque tout HelpText ouvert.


ApplyLabIplState(labType, iplModules)

Applique l’état d’IPL des améliorations du laboratoire (changements de props de l’intérieur) pour le type de laboratoire et l’instantané de modules donnés. Appelé en interne quand un joueur entre dans un laboratoire ; tu n’en as besoin que pour des intégrations personnalisées.


Territoires

GetTerritories() → table<territoryId, territory>

Renvoie la carte complète des territoires actuellement chargée côté client.

lua
local territories = exports['origen_ilegalv2']:GetTerritories()

GetTerritoryById(territoryId) → table | nil

Renvoie un seul territoire par ID depuis le cache client.

lua
local t = exports['origen_ilegalv2']:GetTerritoryById('davis')

IsPlayerInTerritory(territoryId) → boolean

Renvoie true si la position actuelle du joueur local se trouve dans la zone du territoire donné.

lua
local inside = exports['origen_ilegalv2']:IsPlayerInTerritory('davis')

GetPlayerPresenceData() → table

Renvoie l’état de suivi de présence côté client : { isInTerritory, currentTerritory, timeInZone, ... }.

lua
local presence = exports['origen_ilegalv2']:GetPlayerPresenceData()
if presence.isInTerritory then
    print('In territory:', presence.currentTerritory)
end

GetCurrentTerritory() → table | nil

Renvoie l’objet du territoire dans lequel se trouve actuellement le joueur local, ou nil s’il est hors de toutes les zones.

lua
local territory = exports['origen_ilegalv2']:GetCurrentTerritory()

Vente de drogue

SellDrugToNearestPed(drugName)

Déclenche par code une tentative de vente d’une drogue au ped éligible le plus proche : la même logique que le mode passif de vente de rue, mais appelable depuis l’extérieur.

lua
exports['origen_ilegalv2']:SellDrugToNearestPed('packaged_weed')

Fabrication

IsCraftingMenuOpen() → boolean

Renvoie true si le panneau NUI de fabrication est ouvert.


CloseCraftingMenu()

Ferme le panneau NUI de fabrication et efface l’état de surveillance côté serveur.


Boutiques

IsStoreMenuOpen() → boolean

Renvoie true si la NUI de la boutique du gang est ouverte.


CloseStoreMenu()

Ferme la NUI de la boutique du gang.


IsSellMenuOpen() → boolean

Renvoie true si la NUI de la boutique de revente du gang est ouverte.


CloseSellMenu()

Ferme la NUI de la boutique de revente du gang.


Menottes

IsHandcuffed() → boolean

Renvoie true si le joueur local est actuellement menotté par l’action de menottage du menu rapide du gang.

lua
if exports['origen_ilegalv2']:IsHandcuffed() then
    -- prevent certain actions
end

RemoveHandCuff()

Retire de force les menottes du joueur local (détache le prop, efface les tâches, réautorise le tir).

lua
exports['origen_ilegalv2']:RemoveHandCuff()

Panneau d’administration

openManagement()

Ouvre la NUI du panneau de gestion d’administration comme si elle était ouverte depuis un hub externe (active le flag openedFromHub pour que le panneau ignore son délai normal d’acquisition du focus).

lua
exports['origen_ilegalv2']:openManagement()

IsOpenedFromHub() → boolean

Indique si le panneau d’administration a été ouvert en dernier via openManagement().


ResetHubFlag()

Efface le flag openedFromHub.