# Event & Api

### Ajouter de l’expérience depuis un autre script

**Côté serveur**, déclenchez l’event suivant :

```lua
TriggerEvent("crew:addXP", montant, source)
```

* **montant** : quantité d’XP à ajouter (nombre)
* **source** : ID serveur du joueur (souvent `source` dans vos handlers)

**Exemples :**

```lua
TriggerEvent("crew:addXP", 40, source)
TriggerEvent("crew:addXP", 150, somePlayerId)
```

### Ajouter des points de territoire depuis un autre script

**Côté server**, déclenchez l’event suivant :

```lua
TriggerEvent('lfTerritory:addTerritoryPoints', crewId, territoryId, points)
```

* **crewId** (number) : ID du crew
* **territoryId**  (string) : ID Du territoire
* **points** (number) : Nombre de points à ajouter

:warning: Pour déclencher côté client il suffit de mettre **TriggerServerEvent**

***

### Events

Trois événements serveur sont déclenchés dans les situations suivantes :

#### <mark style="color:$success;">lfTerritory:playerJoinedCrew</mark>&#x20;

Déclenché quand un joueur rejoint un crew, voici les paramètres :

```
source (number) : ID serveur du joueur
identifier (string) : Identifiant du joueur
id_crew (number) : ID du crew rejoint
crewName (string) : Nom du crew (peut être nil)
```

Déclenché dans :

* JoinCrew : Quand un joueur accepte une invitation
* CreateCrew : Quand un joueur crée un crew (rejoint son propre crew)
* setcrew : Quand un admin assigne un joueur à un crew (si le joueur n'était pas déjà dans un crew)
* setownercrew : Quand un admin assigne un propriétaire à un crew

#### <mark style="color:$danger;">lfTerritory:playerLeftCrew</mark>

Déclenché quand un joueur quitte un crew, voici les paramètres :

```
source (number) : ID serveur du joueur (peut être nil si le joueur est hors ligne)
identifier (string) : Identifiant du joueur
id_crew (number) : ID du crew quitté
crewName (string) : Nom du crew (peut être nil)
```

Déclenché dans :

* LeaveCrew : Quand un joueur quitte volontairement son crew
* FireTarget : Quand un joueur est exclu par un autre membre
* FireThePlayer : Quand un joueur est exclu via le menu

#### <mark style="color:$warning;">lfTerritory:playerChangedCrew</mark>

Déclenché quand un joueur change de crew, voici les paramètres :

```
source (number) : ID serveur du joueur
identifier (string) : Identifiant du joueur
oldCrewId (number) : ID de l'ancien crew
oldCrewName (string) : Nom de l'ancien crew (peut être nil)
newCrewId (number) : ID du nouveau crew
newCrewName (string) : Nom du nouveau crew
```

Déclenché dans :

* setcrew : Quand un admin change le crew d'un joueur qui était déjà dans un crew

***

### Vérifier le niveau d’un crew

**Côté client**, avant une action (par exemple un braquage), utilisez :

```lua
ESX.TriggerServerCallback('crew:checkLvl', function(ok)
    if not ok then
        -- Le serveur affiche déjà : "~r~Votre crew n'a pas le niveau nécessaire pour faire cette action."
        return
    end
    -- Continuer l’action protégée ici
end, 5) -- 5 = niveau requis
```

**Exemple minimal d’utilisation :**

```lua
ESX.TriggerServerCallback('crew:checkLvl', function(ok)
    if ok then
        -- lancer l’action
    end
end, 5)
```

***

### API disponibles

#### Callbacks (FR)

* **`GetCrewPly`**

  ```lua
  ESX.TriggerServerCallback('GetCrewPly', function(isNotInCrew) ... end)
  ```

  Vérifie si le joueur est dans un crew.

  * `true` = pas dans un crew, peut créer
  * `false` = déjà dans un crew
* **`GetCrewExperience`**

  ```lua
  ESX.TriggerServerCallback('GetCrewExperience', function(data) ... end)
  ```

  Retourne `{ name, xp, level }`
* **`GetCrewTerritories`**

  ```lua
  ESX.TriggerServerCallback('GetCrewTerritories', function(list) ... end)
  ```

  Liste des territoires contrôlés par le crew du joueur\
  Format : `[{ name, points }, ...]`
* **`crew:checkLvl`**

  ```lua
  ESX.TriggerServerCallback('crew:checkLvl', function(ok) ... end, requiredLevel)
  ```

  Vérifie que le crew a au moins `requiredLevel`.\
  Renvoie `false` et notifie sinon.
* **`InfosCrew`**

  ```lua
  ESX.TriggerServerCallback('InfosCrew', function(rows) ... end)
  ```

  Infos du crew (`crew_liste`) : `name, devise, id_crew`
* **`GetAllRang`**

  ```lua
  ESX.TriggerServerCallback('GetAllRang', function(ranks) ... end)
  ```

  Retourne les rangs du crew (`crew_grades`)
* **`ListeMembres`**

  ```lua
  ESX.TriggerServerCallback('ListeMembres', function(members) ... end)
  ```

  Retourne les membres du crew (`crew_membres`)
* **`GetPermGestion`**

  ```lua
  ESX.TriggerServerCallback('GetPermGestion', function(hasPerm) ... end)
  ```

  Vérifie la permission de gestion (`true/false`)
* **`GetPlayerCrew`**

  ```lua
  ESX.TriggerServerCallback('lfTerritory:getPlayerCrew', function(crewName) ... end)
  ```

  Récupère le nom du crew d'un joueur (`string ou 'nil'`)
* **`GetPlayerCrewId`**

  ```lua
  ESX.TriggerServerCallback('lfTerritory:getPlayerCrewId', function(crewId) ... end)
  ```

  Récupère l'ID du crew d'un joueur (number ou 'nil')
* **`GetPlayerTerritory`**

  ```lua
  ESX.TriggerServerCallback('lfTerritory:getPlayerTerritory', function(territoryId) ... end)
  ```

  Récupère l'ID du territoire sur lequel se trouve le joueur (string ou 'nil')

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lfscripts.gitbook.io/home/scripts/lfterritory/event-and-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
