La partie que j'utilise pour le ban, c'est peut-être pas la meilleure manip au niveau du menu mais, j'débute comme tu le sais, et je fais avec ce que je sais. Le truc c'est que la maintenant en faite ça fonctionne très bien, je ne vois pas en quoi ça peut te servir, j'pense que le problème vient d'ailleurs
public Plugin:myinfo = {
name = "*~ Menu Surveillant ~*",
author = "NeoX",
description = "Menu pour les Surveillants Ba_Jail",
version = "1.2",
url = ""
}
#pragma semicolon 1
#pragma tabsize 0
#include <sourcemod>
#include <smlib>
#include <sourcebans>
int BAN_RAISON;
public OnPluginStart()
{
RegAdminCmd("sm_sadmin", Cmd_sAdminMenu, ADMFLAG_CUSTOM4, "Menu Admin Surveillants");
}
public Action:Cmd_sAdminMenu(client, args)
{
sAdminMenu_princ(client);
}
//----------------------------------------------------------------------------------------------------------------------------------------------
public sAdminMenu_princ(client)
{
if(!IsClientValid(client))
return;
new Handle:menu_princ = CreateMenu(Princ_Menu);
SetMenuTitle(menu_princ, "Surveillant : %N", client);
AddMenuItem(menu_princ, "", "Gestion des Joueurs");
SetMenuExitButton(menu_princ, true);
DisplayMenu(menu_princ, client, MENU_TIME_FOREVER);
}
public Princ_Menu(Handle:menu, MenuAction:action, client, item)
{
if(action == MenuAction_Select)
{
switch(item)
{
case 0: {
sAdminMenu_Joueurs(client);
}
}
}
else if(action == MenuAction_End)
CloseHandle(menu);
}
public sAdminMenu_Joueurs(client)
{
if(!IsClientValid(client))
return;
new Handle:menu_joueurs = CreateMenu(Joueurs_Menu);
AddMenuItem(menu_joueurs, "", "Bannir un Joueur");
SetMenuExitButton(menu_joueurs, true);
DisplayMenu(menu_joueurs, client, MENU_TIME_FOREVER);
}
public Joueurs_Menu(Handle:menu, MenuAction:action, client, item)
{
if(action == MenuAction_Select)
{
switch(item)
{
case 0: {
new Handle:menu_banr = CreateMenu(Ban_Raison);
SetMenuTitle(menu_banr, "Raison du ban :");
AddMenuItem(menu_banr, "", "Freekill");
AddMenuItem(menu_banr, "", "Insultes");
AddMenuItem(menu_banr, "", "Irrespect");
AddMenuItem(menu_banr, "", "Provocation");
AddMenuItem(menu_banr, "", "Non-Respect des règles");
AddMenuItem(menu_banr, "", "Spam Micro/Chat");
SetMenuExitButton(menu_banr, true);
DisplayMenu(menu_banr, client, MENU_TIME_FOREVER);
}
}
}
else if(action == MenuAction_End)
CloseHandle(menu);
}
//BAN----------------------------------------------------------
public Ban_Raison(Handle:menu, MenuAction:action, client, item)
{
if(action == MenuAction_Select)
{
BAN_RAISON = item;
Ban_cJoueur(client);
}
else if(action == MenuAction_End)
CloseHandle(menu);
}
public Ban_cJoueur(client)
{
new Handle:menu_banj = CreateMenu(Ban_Joueur);
SetMenuTitle(menu_banj, "Bannir un Joueur :");
AddMenuItem(menu_banj, "", "Durée du ban : 10 Minutes.", ITEMDRAW_DISABLED);
ChoosePlayer(menu_banj);
SetMenuExitButton(menu_banj, true);
DisplayMenu(menu_banj, client, MENU_TIME_FOREVER);
}
public Ban_Joueur(Handle:menu, MenuAction:action, client, player)
{
if(action == MenuAction_Select)
{
decl String:info[5];
GetMenuItem(menu, player, info, sizeof(info));
new client2 = StringToInt(info);
switch(BAN_RAISON)
{
case 0: {
SBBanPlayer(client, client2, 10, "[sAdmin] Freekill");
PrintToChat(client, "[sM_sAdmin] Merci de contacter un admin pour un prolongement potentiel du ban.");
}
case 1: {
SBBanPlayer(client, client2, 10, "[sAdmin] Insultes");
PrintToChat(client, "[sM_sAdmin] Merci de contacter un admin pour un prolongement potentiel du ban.");
}
case 2: {
SBBanPlayer(client, client2, 10, "[sAdmin] Irrespect");
PrintToChat(client, "[sM_sAdmin] Merci de contacter un admin pour un prolongement potentiel du ban.");
}
case 3: {
SBBanPlayer(client, client2, 10, "[sAdmin] Provocation");
PrintToChat(client, "[sM_sAdmin] Merci de contacter un admin pour un prolongement potentiel du ban.");
}
case 4: {
SBBanPlayer(client, client2, 10, "[sAdmin] Non-Respect des règles");
PrintToChat(client, "[sM_sAdmin] Merci de contacter un admin pour un prolongement potentiel du ban.");
}
case 5: {
SBBanPlayer(client, client2, 10, "[sAdmin] Spam Micro/Chat");
PrintToChat(client, "[sM_sAdmin] Merci de contacter un admin pour un prolongement potentiel du ban.");
}
}
}
else if(action == MenuAction_End)
CloseHandle(menu);
}
stock bool:IsClientValid(client, bool:checkConnected=true)
{
if(client <= 0 || client > MaxClients){
return false;
}
if(checkConnected && !IsClientConnected(client) || !IsClientInGame(client)){
return false;
}
if(IsClientSourceTV(client) || IsFakeClient(client)){
return false;
}
return true;
}
ChoosePlayer(Handle:menu)
{
decl String:name[MAX_NAME_LENGTH];
decl String:index[8];
new total = 0;
for(new i=1; i<MaxClients; i++)
{
if(IsClientValid(i) && !Client_HasAdminFlags(i, ADMFLAG_KICK))
{
GetClientName(i, name, sizeof(name));
IntToString(i, index, sizeof(index));
AddMenuItem(menu, index, name);
total++;
}
}
if(total == 0)
AddMenuItem(menu, "", "Euuuuuuh ... Nan.", ITEMDRAW_DISABLED);
return total;
}