Code:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
new g_cUsers, g_cAdmins, g_cPrefix, g_cStrPrefix;
new Array:g_arAdmins, Array:g_arPlayers;
new g_szFile[ 64 ];
new const g_DefaultPrefix[ ] = "Reminder";
new const g_Replaced[ ][ ] = { "!g", "!n", "!t", "@admini" };
new const g_ReplacedWith[ ][ ] = { "^x04", "^x01", "^x03", "" };
public plugin_init()
{
register_plugin( "Podsetnik", "1.0", "OvidiuS" );
register_cvar( "podsetnik", "1.0" , (FCVAR_SERVER|FCVAR_SPONLY) );
g_cUsers = register_cvar( "amx_pod_obicni", "1" );
g_cAdmins = register_cvar( "amx_pod_admini", "1" );
g_cPrefix = register_cvar( "amx_pod_prefix_tip", "0" );
g_cStrPrefix = register_cvar( "amx_pod_prefix", "Reminder2" );
get_configsdir(g_szFile, charsmax(g_szFile));
add(g_szFile, charsmax(g_szFile), "/reminder.ini");
g_arAdmins = ArrayCreate( 192 );
g_arPlayers = ArrayCreate( 192 );
LoadData();
}
public client_connect( id )
set_task( 10.0, "Task_RemindUser", id );
public Task_RemindUser( id )
{
if(!is_user_connected( id ))
return PLUGIN_HANDLED;
new szPrefix[ 15 ];
new iType = 0;
if(get_pcvar_num(g_cPrefix))
get_pcvar_string(g_cStrPrefix, szPrefix, charsmax( szPrefix ));
else
szPrefix = g_DefaultPrefix;
if(get_pcvar_num(g_cUsers))
{
iType = 1;
ColorChat(id, GREEN, "^x04[%s]^x01 %s", szPrefix, RandomMessage( iType, id ) );
}
if(get_pcvar_num(g_cAdmins) && is_user_admin( id ))
{
iType = 2;
ColorChat(id, GREEN, "^x04[%s-Admin]^x01%s", szPrefix, RandomMessage( iType, id ));
}
return PLUGIN_CONTINUE;
}
public RandomMessage( type, id )
{
new iText[ 128 ], iSize, iNum;
formatex( iText, charsmax( iText ), " No new messages" );
switch(type)
{
case 1:
{
iSize = ArraySize( g_arPlayers );
if( !iSize )
return iText;
else
iNum = random( iSize );
ArrayGetString( g_arPlayers, iNum, iText, charsmax( iText ) );
for(new i = 0; i < sizeof( g_Replaced ); i++)
replace( iText, charsmax( iText ), g_Replaced[ i ], g_ReplacedWith[ i ]);
return iText;
}
case 2:
{
iSize = ArraySize( g_arAdmins );
if( !iSize )
return iText;
else
iNum = random( iSize );
ArrayGetString( g_arAdmins, iNum, iText, charsmax( iText ) );
for(new i = 0; i < sizeof( g_Replaced ); i++)
replace( iText, charsmax( iText ), g_Replaced[ i ], g_ReplacedWith[ i ]);
return iText;
}
}
return iText;
}
LoadData( )
{
if(!file_exists(g_szFile))
{
write_file(g_szFile, "//Reminder 1.0")
write_file(g_szFile, "//Every line is one message")
write_file(g_szFile, "//If you want a message for admin use @admini on the start of message")
}
new iFile = fopen( g_szFile, "rt" );
new iData[ 128 ];
while( !feof( iFile ) )
{
fgets(iFile, iData, sizeof( iData ) - 1);
if( !iData[ 0 ] || iData[ 0 ] == ';' || iData[ 0 ] == '/' && iData[ 1 ] == '/' || iData[ 0 ] == ' ') continue;
if( containi( iData, "@admin" ) != -1 )
ArrayPushString( g_arAdmins, iData );
else
ArrayPushString( g_arPlayers, iData );
}
fclose( iFile );
}