#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#define ADMINTIME 31 * 86400
#define ADMINTIMEO 9999* 99999
#define JOGOK "qbcdefijum"
new const g_sPrefix[ ] = "Admin adás rendszer";
new const g_sadminFile[ ] = "addons/amxmodx/data/admin.ini";
enum _: eadminInfos { sAdminAuthId[ 32 ], iadminTime };
new Array: g_daAdmins, g_iAdmin[ eadminInfos ], g_iAdminsNum, g_iAdminCheckEntity;
new g_sAuthId[ 33 ][ 32 ], g_iTime[ 33 ];
public plugin_init( )
{
register_plugin( "Admin adas", "1.0", "demon" ); //vip ren dszerből fejleszti 8mTNNe
register_clcmd( "say /adas", "kapadmin"); //31 nap admin
register_clcmd( "say /orokadas", "kapadminorok"); //orokos admin
CreateAdminCheckEntity( );
}
public kapadmin(iId)
{
new Menu = menu_create("válaszd ki a játékost (31 nap admin) ", "kapadmin_heandler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
{
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(Menu, szName, szTempid, 0);
}
}
menu_display(iId, Menu, 0);
return PLUGIN_HANDLED;
}
public kapadmin_heandler(iId, Menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(Menu);
return PLUGIN_HANDLED;
}
g_iAdmin[ iadminTime ] = get_systime( ) + ADMINTIME;
copy( g_iAdmin[ sAdminAuthId ], charsmax( g_sAuthId[ ] ), g_sAuthId[ iId ] );
ArrayPushArray( g_daAdmins, g_iAdmin );
g_iAdminsNum = ArraySize( g_daAdmins );
g_iTime[ iId ] = g_iAdmin[ iadminTime ];
set_user_flags(iId, read_flags(JOGOK))
new Data[6], szName[64];
new access, callback;
menu_item_getinfo(Menu, item, access, Data,charsmax(Data), szName,charsmax(szName), callback);
ChatColor( iId, "Sikeresen meg kaptad az admint" );
menu_destroy(Menu);
return PLUGIN_HANDLED;
}
public kapadminorok(iId)
{
new Menu = menu_create("válaszd ki a játékost (Örök) ", "kapadmino_heandler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
{
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(Menu, szName, szTempid, 0);
}
}
menu_display(iId, Menu, 0);
return PLUGIN_HANDLED;
}
public kapadmino_heandler(iId, Menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(Menu);
return PLUGIN_HANDLED;
}
g_iAdmin[ iadminTime ] = get_systime( ) + ADMINTIMEO;
copy( g_iAdmin[ sAdminAuthId ], charsmax( g_sAuthId[ ] ), g_sAuthId[ iId ] );
ArrayPushArray( g_daAdmins, g_iAdmin );
g_iAdminsNum = ArraySize( g_daAdmins );
g_iTime[ iId ] = g_iAdmin[ iadminTime ];
set_user_flags(iId, read_flags(JOGOK))
new Data[6], szName[64];
new access, callback;
menu_item_getinfo(Menu, item, access, Data,charsmax(Data), szName,charsmax(szName), callback);
ChatColor( iId, "Sikeresen meg kaptad az örök admint" );
menu_destroy(Menu);
return PLUGIN_HANDLED;
}
public plugin_precache( )
{
g_daAdmins = ArrayCreate( eadminInfos );
new pFile = fopen( g_sadminFile, "rt" );
if ( pFile )
{
new sLine[ 64 ];
new sData[ 2 ][ 32 ];
while ( !feof( pFile ) )
{
fgets( pFile, sLine, charsmax( sLine ) );
if ( sLine[ 0 ] == ';' || strlen( sLine ) < 10 ) continue;
parse( sLine, sData[ 0 ], 31, sData[ 1 ], 31 );
g_iAdmin[ iadminTime ] = str_to_num( sData[ 1 ] );
if ( g_iAdmin[ iadminTime ] < get_systime( ) ) continue;
copy( g_iAdmin[ sAdminAuthId ], charsmax( sData[ ] ), sData[ 0 ] );
ArrayPushArray( g_daAdmins, g_iAdmin );
}
g_iAdminsNum = ArraySize( g_daAdmins );
fclose( pFile );
}
else Save( );
}
public CreateAdminCheckEntity( )
{
g_iAdminCheckEntity = create_entity( "info_target" );
if ( !is_valid_ent( g_iAdminCheckEntity ) ) return;
entity_set_string( g_iAdminCheckEntity, EV_SZ_classname, "admincheck_entity" );
entity_set_float( g_iAdminCheckEntity, EV_FL_nextthink, get_gametime( ) + 1.0 );
register_think( "admincheck_entity", "FwdThink" );
}
public FwdThink( iEntity )
{
if ( iEntity != g_iAdminCheckEntity || g_iAdminsNum == 0 ) return;
static iCurSysTime;
iCurSysTime = get_systime( );
for ( new i; i < g_iAdminsNum; ++i )
{
ArrayGetArray( g_daAdmins, i, g_iAdmin );
if ( g_iAdmin[ iadminTime ] < iCurSysTime ){
ArrayDeleteItem( g_daAdmins, i );
g_iAdminsNum = ArraySize( g_daAdmins );
}
}
entity_set_float( g_iAdminCheckEntity, EV_FL_nextthink, get_gametime( ) + 5.0 );
}
public client_putinserver( iId )
{
if ( is_user_bot( iId ) || is_user_hltv( iId ) ) return;
get_user_authid( iId, g_sAuthId[ iId ], charsmax( g_sAuthId[ ] ) );
Check( iId );
}
public Check( iId )
{
for ( new i; i < g_iAdminsNum; ++i )
{
ArrayGetArray( g_daAdmins, i, g_iAdmin );
if ( equal( g_iAdmin[ sAdminAuthId ], g_sAuthId[ iId ] ) )
{
set_user_flags( iId, get_user_flags( iId ) | ADMIN_BAN );
g_iTime[ iId ] = g_iAdmin[ iadminTime ];
break;
}
}
}
public Save( )
{
if ( file_exists( g_sadminFile ) ) delete_file( g_sadminFile );
new pFile = fopen( g_sadminFile, "wt" );
if ( pFile )
{
new sLine[ 64 ];
for ( new i; i < g_iAdminsNum; ++i )
{
ArrayGetArray( g_daAdmins, i, g_iAdmin );
if(g_iAdmin[ iadminTime ] < get_systime( ))
continue;
formatex( sLine, charsmax( sLine ), "^"%s^" ^"%d^"", g_iAdmin[ sAdminAuthId ], g_iAdmin[ iadminTime ] );
fputs( pFile, sLine);
}
fclose( pFile );
}
}
public plugin_end( ) { Save( );
}
stock ChatColor( iId, const sMessage[ ], any:... )
{
static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
vformat( sMsg, iMsgLen, sMessage, 3 );
format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg );
replace_all( sMsg, iMsgLen, "!g", "^4" );
replace_all( sMsg, iMsgLen, "!y", "^1" );
replace_all( sMsg, iMsgLen, "!t", "^3" );
if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
if ( iId )
{
iPlayers[ 0 ] = iId;
iPlrNum = 1;
}
else get_players( iPlayers, iPlrNum, "ch" );
for ( new i, iPId; i < iPlrNum; ++i )
{
iPId = iPlayers[ i ];
if ( !is_user_connected( iPId ) ) continue;
message_begin( MSG_ONE, iIdMsg, _, iPId );
write_byte( iPId );
write_string( sMsg );
message_end( );
}
}