Skip to main content

Intégration Client

📦 Guide d'Intégration - Admin Menu v2.0

Auteur: ProtoMehka Version: 2.0 Framework: Compatible Altis Life (5.0 et supérieur) Dernière mise à jour: 2025-10-04


📋 Table des Matières

  1. Présentation
  2. Fichiers du Package
  3. Prérequis
  4. Installation Complète
  5. Intégration dans un Autre Framework
  6. Configuration
  7. Dépendances et Adaptations
  8. Troubleshooting

🎯 Présentation

Ce menu admin v2.0 est une interface moderne et modulaire pour gérer votre serveur Altis Life. Il peut être intégré dans n'importe quel framework Altis Life avec quelques adaptations.

Fonctionnalités principales:

  • Interface moderne avec onglets (Joueurs/Actions/Véhicules/Serveur)
  • Recherche et filtres de joueurs
  • Mini-map interactive avec tracking temps réel
  • Système de permissions configurables
  • Design responsive et épuré

📁 Fichiers du Package

Structure Complète

admin_menu.Altis/
├── config/
│   └── Config_Admin.hpp                    # Configuration des permissions
├── dialog/
│   ├── admin_menu_new.hpp                  # Interface principale
│   └── MasterHandler.hpp                   # (modification requise)
└── core/
    ├── admin/
    │   ├── fn_adminMenuNew.sqf             # Contrôleur principal
    │   ├── fn_adminMenuTabChange.sqf       # Gestion onglets
    │   ├── fn_adminRefreshList.sqf         # Liste joueurs
    │   ├── fn_adminSearchPlayer.sqf        # Recherche
    │   ├── fn_adminFilterPlayers.sqf       # Filtres
    │   └── fn_adminPlayerSelected.sqf      # Infos joueur + map
    └── pmenu/
        └── fn_p_openMenu.sqf               # (modification requise)

Fichiers à Créer (Nouveaux)

✅ config/Config_Admin.hpp
✅ dialog/admin_menu_new.hpp
✅ core/admin/fn_adminMenuNew.sqf
✅ core/admin/fn_adminMenuTabChange.sqf
✅ core/admin/fn_adminRefreshList.sqf
✅ core/admin/fn_adminSearchPlayer.sqf
✅ core/admin/fn_adminFilterPlayers.sqf
✅ core/admin/fn_adminPlayerSelected.sqf

Fichiers à Modifier (Existants)

🔧 Functions.hpp                            # Déclaration des fonctions
🔧 dialog/MasterHandler.hpp                 # Include du nouveau dialog
🔧 dialog/player_inv.hpp                    # Bouton ouverture menu
🔧 core/pmenu/fn_p_openMenu.sqf             # (optionnel)

✅ Prérequis

Framework

  • Altis Life 5.0+ (AsYetUntitled ou compatible)
  • SQF compatible
  • Système de dialogs Arma 3

Variables Requises

Le menu utilise ces variables du framework:

Variable Type Description Exemple
life_adminlevel NUMBER Niveau admin du joueur 0-5
playableUnits ARRAY Liste des joueurs connectés Auto Arma 3
profileName STRING Nom du joueur Auto Arma 3

Fonctions Externes Utilisées

Fonction Fichier d'origine Utilisation
TON_fnc_player_query life_server/functions.sqf Récupérer infos joueur
life_fnc_adminGetID Existante Get Steam ID
life_fnc_adminQuery Existante Query player
life_fnc_adminSpectate Existante Spectate mode
Etc. core/admin/ Toutes les commandes admin

Classes UI Requises

Le menu utilise les classes de dialog/common.hpp:

Life_RscText
Life_RscButtonMenu
Life_RscListBox
Life_RscEdit
Life_RscStructuredText
Life_RscMapControl

🚀 Installation Complète

Étape 1: Copier les Fichiers

  1. Créer le dossier de configuration (si inexistant):

    admin_menu.Altis/config/
    
  2. Copier tous les nouveaux fichiers:

    config/Config_Admin.hpp
    dialog/admin_menu_new.hpp
    core/admin/fn_adminMenuNew.sqf
    core/admin/fn_adminMenuTabChange.sqf
    core/admin/fn_adminRefreshList.sqf
    core/admin/fn_adminSearchPlayer.sqf
    core/admin/fn_adminFilterPlayers.sqf
    core/admin/fn_adminPlayerSelected.sqf
    

Étape 2: Modifier Functions.hpp

Ouvrir Functions.hpp et trouver la section class Admin.

AJOUTER ces lignes:

class Admin {
    file = "core\admin";

    // ... fonctions existantes ...

    // ===== ADMIN MENU v2.0 - ProtoMehka =====
    class adminMenuNew {};
    class adminMenuTabChange {};
    class adminRefreshList {};
    class adminSearchPlayer {};
    class adminFilterPlayers {};
    class adminPlayerSelected {};
};

Étape 3: Modifier MasterHandler.hpp

Ouvrir dialog/MasterHandler.hpp.

AJOUTER cette ligne après #include "admin_menu.hpp":

#include "admin_menu.hpp"
#include "admin_menu_new.hpp"    // <-- AJOUTER CETTE LIGNE

Étape 4: Modifier player_inv.hpp

Ouvrir dialog/player_inv.hpp et trouver le bouton admin (IDC 2021).

REMPLACER:

onButtonClick = "closeDialog 0; createDialog ""life_admin_menu"";";

PAR:

onButtonClick = "closeDialog 0; createDialog ""life_admin_menu_new"";";

Étape 5: Tester

  1. Compiler votre mission
  2. Se connecter au serveur
  3. Avoir life_adminlevel >= 1
  4. Appuyer sur Y → Cliquer "Admin Menu"

🔄 Intégration dans un Autre Framework

Cas 1: Framework Altis Life Compatible

Si votre framework utilise la même structure qu'Altis Life 5.0:

  1. Vérifier les variables:

    life_adminlevel  // Doit exister (0-5)
    
  2. Suivre l'installation complète ci-dessus

  3. Adapter les chemins si nécessaire dans les #include

Cas 2: Framework Custom

A. Identifier les Variables Équivalentes

Variable AL 5.0 Votre Framework Action
life_adminlevel player_admin, adminLevel, etc. Remplacer dans tous les fichiers
playableUnits Généralement identique -
profileName Généralement identique -

B. Adapter les Macros

Ouvrir core/admin/fn_adminMenuNew.sqf et tous les autres.

Rechercher:

FETCH_CONST(life_adminlevel)

Remplacer par votre variable:

// Exemple 1: Variable simple
player_adminLevel

// Exemple 2: Variable dans namespace
(player getVariable ["adminLevel", 0])

// Exemple 3: Fonction custom
[] call my_fnc_getAdminLevel

Fichiers à modifier:

  • fn_adminMenuNew.sqf
  • fn_adminMenuTabChange.sqf
  • fn_adminRefreshList.sqf
  • fn_adminFilterPlayers.sqf

C. Adapter les Factions

Si vos factions sont différentes (west/civilian/independent):

Ouvrir fn_adminRefreshList.sqf:

// AVANT (Altis Life 5.0)
case west: {"Cop"};
case civilian: {"Civ"};
case independent: {"Medic"};

// APRÈS (votre framework)
case west: {"Police"};        // Votre nom
case civilian: {"Civil"};
case independent: {"Pompiers"};  // Exemple
case east: {"Rebelles"};         // Si vous avez une 4e faction

Faire de même pour les couleurs:

// Dans fn_adminRefreshList.sqf
case west: {[0.2, 0.4, 0.8]};        // Bleu police
case civilian: {[0.3, 0.8, 0.3]};    // Vert civil
case independent: {[0.9, 0.5, 0]};   // Orange pompiers
case east: {[0.8, 0.2, 0.2]};        // Rouge rebelles (exemple)

D. Adapter les Boutons de Filtre

Ouvrir dialog/admin_menu_new.hpp:

Si vous avez une 4e faction, AJOUTER:

class FilterRebel: Life_RscButtonMenu {
    idc = 29027;  // Nouveau IDC
    text = "REBEL";
    onButtonClick = "[""rebel""] call life_fnc_adminFilterPlayers;";
    x = 0.450 * safezoneW + safezoneX;
    y = 0.27 * safezoneH + safezoneY;
    w = 0.03 * safezoneW;
    h = 0.02 * safezoneH;
    colorBackground[] = {0.8, 0.2, 0.2, 0.6};  // Rouge
    sizeEx = 0.02;
};

Puis modifier fn_adminFilterPlayers.sqf:

case "rebel": {_playerSide == east};  // Ajouter ce cas

E. Adapter les Fonctions Externes

Si vos noms de fonctions diffèrent:

Fonction AL 5.0 Action
TON_fnc_player_query Remplacer par votre fonction de query joueur
life_fnc_adminGetID Garder ou adapter
life_fnc_adminSpectate Garder ou adapter

Exemple dans fn_adminPlayerSelected.sqf:

// AVANT
[player] remoteExecCall ["TON_fnc_player_query", _unit];

// APRÈS (si vous avez une autre fonction)
[player] remoteExecCall ["YOUR_fnc_playerQuery", _unit];

F. Adapter l'Ouverture du Menu

Si vous n'utilisez pas le même menu inventaire:

  1. Trouver où vous ouvrez votre menu admin
  2. Remplacer par:
    createDialog "life_admin_menu_new";
    

Exemple: Si vous avez une touche dédiée:

// Dans votre fn_keyHandler.sqf
case 0x3B: { // F1
    if (life_adminlevel >= 1) then {
        createDialog "life_admin_menu_new";
    };
};

⚙️ Configuration

Config_Admin.hpp

Ajouter une commande:

class PlayerManagement {
    commands[] = {
        // ... commandes existantes ...

        {"Ma Nouvelle Commande", "life_fnc_maFonction", 3, "players"}
        // Nom affiché | Fonction | Niveau min | Onglet
    };
};

Onglets disponibles:

  • "players" - Onglet Joueurs
  • "actions" - Onglet Actions
  • "vehicles" - Onglet Véhicules
  • "server" - Onglet Serveur

Changer le niveau requis:

{"Freeze Player", "life_fnc_adminFreeze", 3, "players"}
//                                         ^
//                                         Niveau 3 requis

Couleurs par Niveau

Dans fn_adminMenuTabChange.sqf, modifier les couleurs:

private _color = switch (_cmdLevel) do {
    case 1: {[0.3, 0.7, 0.3, 0.7]};      // Vert - Support
    case 2: {[0.4, 0.6, 0.8, 0.7]};      // Bleu clair
    case 3: {[0.38, 0.70, 0.89, 0.7]};   // Bleu
    case 4: {[0.8, 0.5, 0.2, 0.7]};      // Orange
    case 5: {[0.8, 0.2, 0.2, 0.7]};      // Rouge
    default {[0.5, 0.5, 0.5, 0.7]};      // Gris
};

🔗 Dépendances et Adaptations

Variables Globales Créées

Le menu crée ces variables globales:

life_admin_currentTab        // Onglet actif (0-3)
life_admin_selectedPlayer    // Joueur sélectionné (OBJECT)
life_admin_currentFilter     // Filtre actif ("all", "cop", "civ", "medic")
life_admin_marker            // Marqueur map (STRING)
life_admin_posUpdate         // Handle mise à jour position (SCRIPT)

Nettoyage: Ces variables sont automatiquement nettoyées à la fermeture du menu.

Macros Utilisées

FETCH_CONST(life_adminlevel)  // Depuis script_macros.hpp

Si vous n'avez pas ce macro:

REMPLACER par:

life_adminlevel  // Variable directe

Fonctions du Framework Utilisées

Obligatoires:

  • Aucune fonction custom obligatoire (utilise fonctions Arma 3)

Optionnelles (pour fonctionnalités avancées):

  • TON_fnc_player_query - Infos financières joueur
  • Toutes les fonctions life_fnc_admin* - Commandes admin

🛠️ Troubleshooting

Problème: Le menu ne s'ouvre pas

Solutions:

  1. Vérifier life_adminlevel:

    hint str life_adminlevel;  // Doit être >= 1
    
  2. Vérifier les includes:

    • MasterHandler.hpp contient #include "admin_menu_new.hpp"
  3. Vérifier les erreurs RPT:

    C:\Users\VOTRE_NOM\AppData\Local\Arma 3\arma3_x64_xxx.rpt
    

Problème: Liste de joueurs vide

Solutions:

  1. Tester playableUnits:

    hint str (count playableUnits);
    
  2. Vérifier les factions dans fn_adminRefreshList.sqf

Problème: Boutons d'action invisibles

Causes possibles:

  1. Niveau admin insuffisant: Les boutons sont masqués si life_adminlevel < niveau_requis
  2. Mauvaise configuration dans Config_Admin.hpp

Solution: Vérifier dans fn_adminMenuTabChange.sqf ligne ~75:

if (_adminLevel >= _cmdLevel) then {
    // Créer le bouton
}

Problème: Mini-map ne s'affiche pas

Solutions:

  1. Vérifier la classe Life_RscMapControl dans common.hpp
  2. Tester manuellement:
    _map = findDisplay 29000 displayCtrl 29040;
    ctrlType _map;  // Doit retourner 101
    

Problème: Erreurs "Undefined variable"

Cause: Variables du framework différentes

Solution: Rechercher et remplacer dans tous les fichiers:

# Windows PowerShell
Get-ChildItem -Recurse -Filter "*.sqf" | Select-String "VARIABLE_A_REMPLACER"

# Linux/Mac
grep -r "VARIABLE_A_REMPLACER" *.sqf

📞 Support

Pour toute question ou problème:

  1. Vérifier ce guide en entier
  2. Consulter admin_menu_project.md pour la documentation complète
  3. Vérifier les fichiers RPT pour les erreurs

📄 Licence

Auteur: ProtoMehka Date: 2025-10-04 Framework: Altis Life 5.0+

Libre d'utilisation et de modification. Crédit apprécié mais non obligatoire.


🔄 Changelog

Version 2.0 (2025-10-04)

  • ✨ Interface moderne avec onglets
  • ✨ Mini-map interactive
  • ✨ Système de recherche et filtres
  • ✨ Configuration centralisée des permissions
  • ✨ Design responsive SafeZone
  • ✨ Mise à jour temps réel positions joueurs

Fin du Guide d'Intégration