#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <csstats>
#include <nvault>
stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;
stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
{
#define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
#define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )
__dhud_color = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
__dhud_x = _:x;
__dhud_y = _:y;
__dhud_effect = effects;
__dhud_fxtime = _:fxtime;
__dhud_holdtime = _:holdtime;
__dhud_fadeintime = _:fadeintime;
__dhud_fadeouttime = _:fadeouttime;
__dhud_reliable = _:reliable;
return 1;
}
stock show_dhudmessage( index, const message[], any:... )
{
new buffer[ 128 ];
new numArguments = numargs();
if( numArguments == 2 )
{
send_dhudMessage( index, message );
}
else if( index || numArguments == 3 )
{
vformat( buffer, charsmax( buffer ), message, 3 );
send_dhudMessage( index, buffer );
}
else
{
new playersList[ 32 ], numPlayers;
get_players( playersList, numPlayers, "ch" );
if( !numPlayers )
{
return 0;
}
new Array:handleArrayML = ArrayCreate();
for( new i = 2, j; i < numArguments; i++ )
{
if( getarg( i ) == LANG_PLAYER )
{
while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
j = 0;
if( GetLangTransKey( buffer ) != TransKey_Bad )
{
ArrayPushCell( handleArrayML, i++ );
}
}
}
new size = ArraySize( handleArrayML );
if( !size )
{
vformat( buffer, charsmax( buffer ), message, 3 );
send_dhudMessage( index, buffer );
}
else
{
for( new i = 0, j; i < numPlayers; i++ )
{
index = playersList[ i ];
for( j = 0; j < size; j++ )
{
setarg( ArrayGetCell( handleArrayML, j ), 0, index );
}
vformat( buffer, charsmax( buffer ), message, 3 );
send_dhudMessage( index, buffer );
}
}
ArrayDestroy( handleArrayML );
}
return 1;
}
stock send_dhudMessage( const index, const message[] )
{
message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
{
write_byte( strlen( message ) + 31 );
write_byte( DRC_CMD_MESSAGE );
write_byte( __dhud_effect );
write_long( __dhud_color );
write_long( __dhud_x );
write_long( __dhud_y );
write_long( __dhud_fadeintime );
write_long( __dhud_fadeouttime );
write_long( __dhud_holdtime );
write_long( __dhud_fxtime );
write_string( message );
}
message_end();
}
new gTime[33]
new gVault
new hostname[64]
public plugin_init() {
gVault = nvault_open("TIME")
}
public client_authorized(id)
{
loaddata(id)
}
public client_disconnect(id)
{
gTime[id] += get_user_time(id)
savedata(id)
}
public client_putinserver(id)
{
if(is_user_bot(id)) return
set_task(10.0, "welcomeHUD", id)
set_task(10.0, "hostHUD", id)
set_task(5.0, "adminHUD", id)
}
public welcomeHUD(id)
{
new stats[8], body[8], nick[32], hostname[64]
new rank_pos = get_user_stats(id, stats, body)
new rank_max = get_statsnum()
get_user_name(id, nick, 31)
get_cvar_string("hostname",hostname,63)
new iTimeMins = gTime[id] / 60
static Deaths = 0, Kills = 0, Float:Ratio = 0.0
Deaths = stats[1], Kills = stats[0], Ratio = Deaths == 0 ? (float(Kills)) : (float(Kills) / float(Deaths))
set_dhudmessage(0, 255, 0, 0.03, 0.30, 2, 6.0, 8.0 )
show_dhudmessage(id, "Welcome, %s^nRank: %d of %d^nKills: %d Deaths: %d KPD: %.2f^nOnline: %i m^nEnjoY!", nick,rank_pos,rank_max,stats[0], stats[1], Ratio,iTimeMins)
}
stock savedata(id)
{
new AuthId[65]
get_user_authid(id, AuthId, charsmax(AuthId))
new VaultKey[64], VaultData[256]
format(VaultKey, 63, "%s-TIME", AuthId)
format(VaultData, 254, "%i", gTime[id])
nvault_set(gVault, VaultKey, VaultData)
return PLUGIN_CONTINUE
}
stock loaddata(id)
{
new AuthID[35]
get_user_authid(id,AuthID,charsmax(AuthID ))
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-TIME" ,AuthID)
format(vaultdata,255,"%i",gTime[id])
nvault_get(gVault,vaultkey,vaultdata,charsmax (vaultdata))
new Time[33]
parse(vaultdata, Time, charsmax(Time))
gTime[id] = str_to_num(Time)
}
public hostHUD(id)
{
get_cvar_string("hostname", hostname, 63)
set_dhudmessage(212, 42, 255, 0.03, 0.5, 2, 6.0, 10.0)
show_dhudmessage(id, "%s^nDon't forget to add IP to your favourites!", hostname)
}
public adminHUD(id)
{
if (is_user_admin(id))
{
set_dhudmessage(0, 255, 255, 0.03, 0.75, 2, 6.0, 3.0);
show_dhudmessage(id, "You are now Administrator!");
}
}