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
- Présentation
- Fichiers du Package
- Prérequis
- Installation Complète
- Intégration dans un Autre Framework
- Configuration
- Dépendances et Adaptations
- Troubleshooting
🎯 Présentation
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
| 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
Life_RscText
Life_RscButtonMenu
Life_RscListBox
Life_RscEdit
Life_RscStructuredText
Life_RscMapControl
🚀 Installation Complète
Étape 1: Copier les Fichiers
-
Créer le dossier de configuration (si inexistant):
admin_menu.Altis/config/ -
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
- Compiler votre mission
- Se connecter au serveur
- Avoir
life_adminlevel >= 1 - 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:
-
Vérifier les variables:
life_adminlevel // Doit exister (0-5) -
Suivre l'installation complète ci-dessus
-
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:
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:
- Trouver où vous ouvrez votre menu admin
- 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
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
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:
-
Vérifier
life_adminlevel:hint str life_adminlevel; // Doit être >= 1 -
Vérifier les includes:
MasterHandler.hppcontient#include "admin_menu_new.hpp"
-
Vérifier les erreurs RPT:
C:\Users\VOTRE_NOM\AppData\Local\Arma 3\arma3_x64_xxx.rpt
Problème: Liste de joueurs vide
Solutions:
-
Tester
playableUnits:hint str (count playableUnits); -
Vérifier les factions dans
fn_adminRefreshList.sqf
Problème: Boutons d'action invisibles
Causes possibles:
- Niveau admin insuffisant: Les boutons sont masqués si
life_adminlevel < niveau_requis - 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:
- Vérifier la classe
Life_RscMapControldanscommon.hpp - 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:
- Vérifier ce guide en entier
- Consulter
admin_menu_project.mdpour la documentation complète - 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