Page 1 of 1

Whomenu

Posted: 05 Jul 2014, 18:15
by Mariusz.#
Am o problema, am compilat whomenu a lui askhanar, il bag pe server, dau who si nu merge, nu face nimica ..

uitati sursa
| Afiseaza codul
#include <amxmodx>

#pragma semicolon 1


#define MAX_GROUPS 6

new const g_groupNames[ MAX_GROUPS ][ ] = {
   
	"Owner",
	"God",
	"Moderator",
	"Administrator",
	"Helper",
	"Slot VZG"
};

new const g_groupFlags[ MAX_GROUPS ][ ] = {
	
	"abcdefghijklmpqrstu",
	"abcdefghijklmpqrs",
	"bcdefghijmpqr",  
	"bcdefijmp",
	"bcdefi",
	"b"
};

new const g_groupFlagsVIP[ MAX_GROUPS ][ ] = {
	
	"abcdefghijklmpqrstuno",
	"abcdefghijklmpqrsno",
	"bcdefghijmpqrno",  
	"bcdefijmpno",
	"bcdefino",
	"bno"
};


#define PLUGIN	"Ultimate Who"
#define VERSION	"2.0"

static const MENU_NAME[ ] = "\r| \wNume Admin \r| \wGrad \r| \wSlot \r|\w VIP \r|";
static const NO_ADMINS_MENU_NAME[ ] = "\y--> [ Nu sunt admini online ] <--";
static const MENU_EXIT_NAME[ ] = "\y--> [ Iesire ] <--";

public plugin_init( )
{
	
	register_plugin( PLUGIN, VERSION, "Askhanar" );
	
	register_clcmd( "say /who", "cmdWho", ADMIN_USER );
	register_clcmd( "say /admins", "cmdWho", ADMIN_USER );
	register_concmd( "say /admin", "cmdWho", ADMIN_USER );
	register_clcmd( "say_team /who", "cmdWho", ADMIN_USER );
	register_clcmd( "say_team /admins", "cmdWho", ADMIN_USER );
	register_concmd( "say_team /admin", "cmdWho", ADMIN_USER );
	
}

public cmdWho( id )
{
	ShowMenu( id, 0 );
	return 1;
}

public ShowMenu(id, page)
{
	new MenuName[ 64 ], MenuExitKey[ 32 ];
	
	formatex( MenuName, sizeof ( MenuName ) -1, "%s",  MENU_NAME );

	formatex( MenuExitKey, sizeof ( MenuExitKey ) -1, "%s", MENU_EXIT_NAME );
	
	new menu = menu_create(MenuName, "MenuHandler");   
	
	if( AdminsOnline(  )  )
	{
		
		for( new i = 0; i < MAX_GROUPS; i++  )
		{
			AddAdminsToMenu( id, menu, i );
		}
	}
	else
	{
		menu_additem( menu, NO_ADMINS_MENU_NAME, "1", 0 );
	}
	
	menu_setprop(menu, MPROP_EXITNAME, MenuExitKey );
	
	menu_display(id, menu, page);
}

public MenuHandler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy( menu );
		return 1;
	}
	
	new data[6], iName[64];
	new iaccess, callback;
	
	menu_item_getinfo(menu, item, iaccess, data,5, iName, 63, callback);
	
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1,2,3,4,5,6,7:
		{
			menu_destroy( menu );
			return 1;
		}
	}
	
	return 0;
}

public AddAdminsToMenu( const id, const iMenu,  const iGroup  )
{
	
	new szMenuMessage[ 64 ], szMenuKey[ 32 ], iMenuKey = 1;
	
	new iPlayers[ 32 ];
	new iPlayersNum, iPlayer;
	
	get_players( iPlayers, iPlayersNum, "c" );		
	for( new i = 0 ; i < iPlayersNum ; i++ )
	{
		iPlayer = iPlayers[ i ];
		if( UserHasGroupAcces( iPlayer, iGroup ) )
		{

			formatex( szMenuMessage, sizeof (szMenuMessage ) -1, "\w%s \y-| \w%s \y| %s \y| %s\y | %s",
				get_name( iPlayer ), g_groupNames[ iGroup ],
                                     IsUserVip( iPlayer )? "\rx" : "\dx",
				iPlayers[ i ] == id ? "\r *" : "" );
				
			formatex( szMenuKey, sizeof ( szMenuKey ) -1, "%i", iMenuKey );
			
			menu_additem( iMenu, szMenuMessage, szMenuKey, 0 );
			iMenuKey++;
		}
	}
	
}
	
stock bool:AdminsOnline(    )
{
	new bool:AdminsFound = false;
	
	new iPlayers[ 32 ];
	new iPlayersNum;

	get_players( iPlayers, iPlayersNum, "c" );		
	for( new i = 0 ; i < iPlayersNum ; i++ )
	{

		if( UserHasAnyAcces( iPlayers[ i ] ) >= 0 )
		{
			AdminsFound = true;
			break;
		}
	}
	
	return AdminsFound;
}

stock bool:IsUserVip(  id  )
{
	
	if( get_user_flags(  id  )  &  read_flags(  "on"  )  )
		return true;
	
	return false;
	
}

stock bool:UserHasGroupAcces( id, const iGroup )
{
	static iFlags;
	iFlags = get_user_flags( id );
	
	if( iFlags == read_flags( g_groupFlags[ iGroup ] )
		|| iFlags == read_flags( g_groupFlagsVIP[ iGroup ] ) )
		return true;
		
	return false;
	
}
		
stock UserHasAnyAcces( id )
{
	new iFlags = get_user_flags( id );
	new iValueToReturn = -2;
	
	for( new i = 0; i < MAX_GROUPS; i++ )
	{
		if( iFlags == read_flags( g_groupFlags[ i ] )
			|| iFlags == read_flags( g_groupFlagsVIP[ i ] ) )
		{
			iValueToReturn = i;
			break;
		}
	}
	
	return iValueToReturn;
}

stock get_name( id )
{
	
	new name[ 32 ];
	get_user_name( id, name, sizeof ( name ) -1 );

	return name;
}

Re: Whomenu

Posted: 05 Jul 2014, 19:12
by |NGU|Anonymus
Incearca si cu alte comenzi: /admin,/admins si inca ceva in users.ini ai aceleasi nr de grade si aceleasi grade de acces ca si in pluginul asta nu??

Re: Whomenu

Posted: 05 Jul 2014, 19:13
by Mariusz.#
Sorry for 2xpost, bug .. :|

Re: Whomenu

Posted: 05 Jul 2014, 19:13
by Mariusz.#
In users nu am nimica inca, trebuie sa am aceleasi grade + flaguri ca in plugin ?
Edit, am bagat tot in users.ini, dar degeaba ..

Re: Whomenu

Posted: 06 Jul 2014, 23:32
by levin
| Afiseaza codul
#include <amxmodx>

#pragma semicolon 1


#define MAX_GROUPS 6

new const g_groupNames[ MAX_GROUPS ][ ] = {
   
	"Owner",
	"God",
	"Moderator",
	"Administrator",
	"Helper",
	"Slot VZG"
};

new const g_groupFlags[ MAX_GROUPS ][ ] = {
	
	"abcdefghijklmpqrstu",
	"abcdefghijklmpqrs",
	"bcdefghijmpqr",  
	"bcdefijmp",
	"bcdefi",
	"b"
};

new const g_groupFlagsVIP[ MAX_GROUPS ][ ] = {
	
	"abcdefghijklmpqrstuno",
	"abcdefghijklmpqrsno",
	"bcdefghijmpqrno",  
	"bcdefijmpno",
	"bcdefino",
	"bno"
};


#define PLUGIN	"Ultimate Who"
#define VERSION	"2.0"

static const MENU_NAME[ ] = "\r| \wNume Admin \r| \wGrad \r| \wSlot \r|\w VIP \r|";
static const NO_ADMINS_MENU_NAME[ ] = "\y--> [ Nu sunt admini online ] <--";
static const MENU_EXIT_NAME[ ] = "\y--> [ Iesire ] <--";

public plugin_init( )
{
	
	register_plugin( PLUGIN, VERSION, "Askhanar" );
	
	register_clcmd( "say /who", "cmdWho" );
	register_clcmd( "say /admins", "cmdWho" );
	register_clcmd( "say_team /who", "cmdWho" );
	register_clcmd( "say_team /admins", "cmdWho" );
	
}

public cmdWho( id )
{
	ShowMenu( id, 0 );
	return 1;
}

public ShowMenu(id, page)
{
	new MenuName[ 64 ], MenuExitKey[ 32 ];
	
	formatex( MenuName, sizeof ( MenuName ) -1, "%s",  MENU_NAME );

	formatex( MenuExitKey, sizeof ( MenuExitKey ) -1, "%s", MENU_EXIT_NAME );
	
	new menu = menu_create(MenuName, "MenuHandler");   
	
	if( AdminsOnline(  )  )
	{
		
		for( new i = 0; i < MAX_GROUPS; i++  )
		{
			AddAdminsToMenu( id, menu, i );
		}
	}
	else
	{
		menu_additem( menu, NO_ADMINS_MENU_NAME, "1", 0 );
	}
	
	menu_setprop(menu, MPROP_EXITNAME, MenuExitKey );
	
	menu_display(id, menu, page);
}

public MenuHandler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy( menu );
		return 1;
	}
	
	new data[6], iName[64];
	new iaccess, callback;
	
	menu_item_getinfo(menu, item, iaccess, data,5, iName, 63, callback);
	
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1,2,3,4,5,6,7:
		{
			menu_destroy( menu );
			return 1;
		}
	}
	
	return 0;
}

public AddAdminsToMenu( const id, const iMenu,  const iGroup  )
{
	
	new szMenuMessage[ 64 ], szMenuKey[ 32 ], iMenuKey = 1;
	
	new iPlayers[ 32 ];
	new iPlayersNum, iPlayer;
	
	get_players( iPlayers, iPlayersNum, "c" );		
	for( new i = 0 ; i < iPlayersNum ; i++ )
	{
		iPlayer = iPlayers[ i ];
		if( UserHasGroupAcces( iPlayer, iGroup ) )
		{

			formatex( szMenuMessage, sizeof (szMenuMessage ) -1, "\w%s \y-| \w%s \y| %s \y| %s\y | %s",
				get_name( iPlayer ), g_groupNames[ iGroup ],
                                     IsUserVip( iPlayer )? "\rx" : "\dx",
				iPlayers[ i ] == id ? "\r *" : "" );
				
			formatex( szMenuKey, sizeof ( szMenuKey ) -1, "%i", iMenuKey );
			
			menu_additem( iMenu, szMenuMessage, szMenuKey, 0 );
			iMenuKey++;
		}
	}
	
}
	
stock bool:AdminsOnline(    )
{
	new bool:AdminsFound = false;
	
	new iPlayers[ 32 ];
	new iPlayersNum;

	get_players( iPlayers, iPlayersNum, "c" );		
	for( new i = 0 ; i < iPlayersNum ; i++ )
	{

		if( UserHasAnyAcces( iPlayers[ i ] ) >= 0 )
		{
			AdminsFound = true;
			break;
		}
	}
	
	return AdminsFound;
}

stock bool:IsUserVip(  id  )
{
	
	if( get_user_flags(  id  )  &  read_flags(  "on"  )  )
		return true;
	
	return false;
	
}

stock bool:UserHasGroupAcces( id, const iGroup )
{
	static iFlags;
	iFlags = get_user_flags( id );
	
	if( iFlags == read_flags( g_groupFlags[ iGroup ] )
		|| iFlags == read_flags( g_groupFlagsVIP[ iGroup ] ) )
		return true;
		
	return false;
	
}
		
stock UserHasAnyAcces( id )
{
	new iFlags = get_user_flags( id );
	new iValueToReturn = -2;
	
	for( new i = 0; i < MAX_GROUPS; i++ )
	{
		if( iFlags == read_flags( g_groupFlags[ i ] )
			|| iFlags == read_flags( g_groupFlagsVIP[ i ] ) )
		{
			iValueToReturn = i;
			break;
		}
	}
	
	return iValueToReturn;
}

stock get_name( id )
{
	
	new name[ 32 ];
	get_user_name( id, name, sizeof ( name ) -1 );

	return name;
}

Re: Whomenu

Posted: 07 Jul 2014, 20:08
by M3taph0riK
Mariusz.# wrote:In users nu am nimica inca, trebuie sa am aceleasi grade + flaguri ca in plugin ?
Edit, am bagat tot in users.ini, dar degeaba ..

Normal ! Trebuie sa fie aceleasi grade/accese