# Intégration Client

# 🖥️ Guide d'Intégration Client - Admin Menu v2.1

**Auteur**: ProtoMehka
**Version**: 2.1
**Date**: 10 Janvier 2025
**Framework**: Altis Life 5.0+

---

## 📋 Table des Matières

1. [Prérequis](#prérequis)
2. [Fichiers à Copier](#fichiers-à-copier)
3. [Modifications des Fichiers de Configuration](#modifications-des-fichiers-de-configuration)
4. [Vérification de l'Installation](#vérification-de-linstallation)
5. [Troubleshooting](#troubleshooting)

---

## ✅ Prérequis

Avant de commencer, assurez-vous d'avoir :

- [ ] Framework Altis Life 5.0 ou supérieur
- [ ] Accès aux fichiers de la mission (`admin_menu.Altis/`)
- [ ] Éditeur de texte (Notepad++, VSCode, etc.)
- [ ] Backup complet de votre mission

---

## 📦 Fichiers à Copier

### Étape 1 : Nouveaux Fichiers

Copiez les fichiers suivants dans votre mission `admin_menu.Altis/` :

#### Configuration (1 fichier)

```
admin_menu.Altis/config/
└── Config_Admin.hpp          ✨ NOUVEAU
```

#### Interface (3 fichiers)

```
admin_menu.Altis/dialog/
├── admin_menu.hpp             ⚠️ REMPLACER
├── server_message.hpp         ⚠️ REMPLACER
└── object_manager.hpp         ✨ NOUVEAU (v2.1)
```

#### Fonctions Admin Core (12 fichiers)

```
admin_menu.Altis/core/admin/
├── fn_adminMenu.sqf               ⚠️ REMPLACER
├── fn_adminMenuTabChange.sqf      ⚠️ REMPLACER
├── fn_adminRefreshList.sqf        ⚠️ REMPLACER
├── fn_adminSearchPlayer.sqf       ⚠️ REMPLACER
├── fn_adminPlayerSelected.sqf     ⚠️ REMPLACER
├── fn_adminQueryFinances.sqf      ⚠️ REMPLACER
├── fn_adminReceiveFinances.sqf    ⚠️ REMPLACER
├── fn_adminRepairObject.sqf       ⚠️ REMPLACER
├── fn_adminDeleteObject.sqf       ⚠️ REMPLACER
├── fn_adminServerMsg.sqf          ⚠️ REMPLACER
├── fn_adminSendServerMsg.sqf      ⚠️ REMPLACER
└── fn_adminBroadcastMsg.sqf       ⚠️ REMPLACER
```

#### Fonctions Admin - Corrections v2.1 (5 fichiers)

```
admin_menu.Altis/core/admin/
├── fn_adminSpectate.sqf           ⚠️ REMPLACER (TFAR compatible)
├── fn_adminTpHere.sqf             ⚠️ REMPLACER (IDC corrigé)
├── fn_adminFreeze.sqf             ⚠️ REMPLACER (IDC corrigé)
└── fn_adminGodMode.sqf            ⚠️ REMPLACER (closeDialog supprimé)
```

#### Object Manager - NOUVEAU v2.1 (4 fichiers)

```
admin_menu.Altis/core/admin/
├── fn_adminObjectManager.sqf      ✨ NOUVEAU
├── fn_adminObjectRefresh.sqf      ✨ NOUVEAU
├── fn_adminObjectSelect.sqf       ✨ NOUVEAU
└── fn_adminObjectDelete.sqf       ✨ NOUVEAU
```

#### Autres Fonctions Admin (3 fichiers)

```
admin_menu.Altis/core/admin/
├── fn_adminCompensate.sqf         ⚠️ REMPLACER (logging ajouté)
├── fn_adminDebugCon.sqf           ⚠️ REMPLACER (logging ajouté)
└── fn_adminMarkers.sqf            ⚠️ REMPLACER (logging ajouté)
```

#### Fonction Teleport (1 fichier)

```
admin_menu.Altis/core/functions/
└── fn_teleport.sqf                ⚠️ REMPLACER (logging ajouté)
```

---

## 🔧 Modifications des Fichiers de Configuration

### Étape 2 : Config_Master.hpp

**Fichier**: `admin_menu.Altis/config/Config_Master.hpp`

**Localiser** la section des includes (généralement au début du fichier, après `class Life_Settings`).

**Ajouter** cette ligne :

```cpp
#include "Config_Admin.hpp"
```

**Exemple de placement** :

```cpp
class Life_Settings {
    /* ... autres paramètres ... */
};

#include "Config_Admin.hpp"      // ← AJOUTER ICI
#include "Config_Master.hpp"
#include "Config_Clothing.hpp"
// ... autres includes ...
```

---

### Étape 3 : Functions.hpp

**Fichier**: `admin_menu.Altis/Functions.hpp`

**Localiser** la classe `Admin` (environ ligne 70-90).

**Remplacer** ou **compléter** avec les nouvelles fonctions :

```cpp
class Admin {
    file = "core\admin";

    // Fonctions existantes (conserver si elles existent)
    class adminCompensate {};
    class adminDebugCon {};
    class adminFreeze {};
    class admingetID {};
    class adminGodMode {};
    class adminid {};
    class admininfo {};
    class adminMarkers {};
    class adminQuery {};
    class adminSpectate {};
    class adminTeleport {};
    class adminTpHere {};

    // ✨ NOUVELLES FONCTIONS - Admin Menu v2.1
    class adminMenu {};
    class adminMenuTabChange {};
    class adminRefreshList {};
    class adminSearchPlayer {};
    class adminPlayerSelected {};
    class adminQueryFinances {};
    class adminReceiveFinances {};
    class adminRepairObject {};
    class adminDeleteObject {};
    class adminServerMsg {};
    class adminSendServerMsg {};
    class adminBroadcastMsg {};

    // ✨ Object Manager v2.1
    class adminObjectManager {};
    class adminObjectRefresh {};
    class adminObjectSelect {};
    class adminObjectDelete {};
};
```

---

### Étape 4 : MasterHandler.hpp

**Fichier**: `admin_menu.Altis/dialog/MasterHandler.hpp`

**Localiser** les includes de dialogs admin.

**Modifier** pour inclure les nouveaux dialogs :

```cpp
// Admin Menu v2.1
#include "admin_menu.hpp"
#include "server_message.hpp"
#include "object_manager.hpp"
```

**⚠️ Important** : Supprimez l'ancien include si présent :
```cpp
// #include "admin_menu_new.hpp"   ← SUPPRIMER si présent
```

---

### Étape 5 : CfgRemoteExec.hpp

**Fichier**: `admin_menu.Altis/CfgRemoteExec.hpp`

**Ajouter** les permissions pour les nouvelles fonctions client :

```cpp
// Admin Menu v2.1 - Client Functions
F(life_fnc_adminQueryFinances,CLIENT)
F(life_fnc_adminReceiveFinances,CLIENT)
F(life_fnc_adminBroadcastMsg,CLIENT)
```

**Ajouter** les permissions pour les fonctions serveur :

```cpp
// Admin Menu v2.1 - Server Functions
F(TON_fnc_getPlayerFinances,SERVER)
F(TON_fnc_logAdminAction,SERVER)
```

**Exemple complet d'une section** :

```cpp
class CfgRemoteExec {
    class Functions {
        mode = 1;
        jip = 0;

        // ... autres fonctions ...

        // Admin Menu v2.0 - Client
        F(life_fnc_adminQueryFinances,CLIENT)
        F(life_fnc_adminReceiveFinances,CLIENT)
        F(life_fnc_adminBroadcastMsg,CLIENT)

        // Admin Menu v2.0 - Server
        F(TON_fnc_getPlayerFinances,SERVER)
        F(TON_fnc_logAdminAction,SERVER)
    };
};
```

---

### Étape 6 : player_inv.hpp

**Fichier**: `admin_menu.Altis/dialog/player_inv.hpp`

**Localiser** le bouton "Admin Menu" (généralement IDC **2021**).

**Modifier** l'action `onButtonClick` :

```cpp
class ButtonAdminMenu: Life_RscButtonMenu {
    idc = 2021;
    text = "$STR_PM_AdminMenu";
    colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
    onButtonClick = "closeDialog 0; createDialog ""life_admin_menu"";";  // ← MODIFIER ICI
    x = 0.0204 * safezoneW + safezoneX;
    y = 0.82 * safezoneH + safezoneY;
    w = 0.0392 * safezoneW;
    h = 0.033 * safezoneH;
};
```

**⚠️ Important** : L'ancien nom était potentiellement `life_admin_menu_new`, vérifiez et changez en `life_admin_menu`.

---

### Étape 7 : common.hpp (Optionnel)

**Fichier**: `admin_menu.Altis/dialog/common.hpp`

Ce fichier a reçu des **modifications mineures** (+1 ligne). Si vous avez des customisations importantes dans votre `common.hpp`, vérifiez les différences.

**Conseil** : Si vous n'avez pas modifié ce fichier, remplacez-le par la nouvelle version.

---

## 🆕 Nouveautés v2.1

### Corrections de Bugs
- ✅ **TP Here** : IDC corrigé (2902 → 29020)
- ✅ **Freeze Player** : IDC corrigé (2902 → 29020)
- ✅ **God Mode** : Ne ferme plus le menu
- ✅ **Server Message** : Fonction et remoteExec corrigés
- ✅ **Spectate** : Touche F fonctionnelle, caméra repositionnée, compatible TFAR

### Nouvelle Fonctionnalité
- ✨ **Object Manager** : Gestionnaire d'items au sol
  - Détection items dans rayon personnalisable (1-50m)
  - Affichage contenu WeaponHolder détaillé
  - Flèche 3D rouge sur item sélectionné
  - **Suppression individuelle** d'items
  - Les autres items restent au sol

---

**Version 2.1** - 10 Janvier 2025