#include <amxmodx>
#include <nvault>
static const
PLUGIN[] = "[AMXX]OreJucate",
VERSION[] = "2.0",
AUTHOR[] = "scosmynnnn";
new iMinutes[33],iHours[33],iDays[33],iHours2[33]
new g_vault,pcvar,sync
public plugin_init() {
register_plugin(PLUGIN,VERSION,AUTHOR)
register_cvar("statistici_pe_server",VERSION,FCVAR_SERVER | FCVAR_SPONLY)
register_clcmd("say /orejucate","cmdOreJucate")
g_vault = nvault_open("OreJucate")
pcvar = register_cvar("show_hud","0")
if(g_vault == INVALID_HANDLE)
set_fail_state("Eroare la deschiderea bazei de date din vault.")
sync = CreateHudSyncObj()
set_task(5.0,"save_vault",_,_,_,"b")
}
public save_vault() {
new iPlayers[32],iNum,id,i
get_players(iPlayers,iNum,"ch")
for(i = 0; i < iNum; i++)
{
id = iPlayers[i]
SaveData(id)
}
}
public client_putinserver(id) {
if(!is_user_bot(id) || !is_user_hltv(id))
{
LoadData(id)
set_task(60.0,"hours_count",id,_,_,"b")
set_task(1.0,"hud_msg",id+0x436,_,_,"b")
}
}
public hours_count(id) {
iMinutes[id]++
if(iMinutes[id] == 60)
{
iHours[id]++
iHours2[id]++
iMinutes[id] = 0
}
if(iHours2[id] == 24)
{
iDays[id]++
iHours2[id] = 0
}
}
public hud_msg(id) {
id-=0x436
switch(get_pcvar_num(pcvar))
{
case 0: return
case 1:
{
if(is_user_alive(id))
{
set_hudmessage(24,237,17,0.0,0.35,0,6.0,1.5)
ShowSyncHudMsg(id,sync,"---^n--------^n--------------^n--------------------^n--------------------------^n--------------------------------^nAi %i zi%s jucat%s pe server^n[%i or%s si %i minut%s]^n--------------------------------^n--------------------------^n--------------------^n--------------^n--------^n---",iDays[id],iDays[id] == 1 ? "" : "le",iDays[id] == 1 ? "a" : "e",iHours[id],iHours[id] == 1 ? "a" : "e",iMinutes[id],iMinutes[id] == 1 ? "" : "e")
}
}
}
}
public cmdOreJucate(id) color(id,"!team[OreJucate]!yAi %i zi%s jucat%s pe server !team[%i or%s si %i minut%s]",iDays[id],iDays[id] == 1 ? "" : "le",iDays[id] == 1 ? "a" : "e",iHours[id],iHours[id] == 1 ? "a" : "e",iMinutes[id],iMinutes[id] == 1 ? "" : "e")
public client_infochanged(id) {
SaveData(id)
new oldname[32],newname[32]
get_user_name(id,oldname,charsmax(oldname))
get_user_info(id,"name",newname,charsmax(newname))
if(!equal(newname,oldname))
set_task(0.3,"LoadData",id)
}
public client_disconnect(id) {
if(!is_user_bot(id) || !is_user_hltv(id))
{
SaveData(id)
remove_task(id)
if(task_exists(id+0x436))
remove_task(id+0x436)
}
}
public plugin_end() nvault_close(g_vault)
public SaveData(id) {
new name[32]
get_user_name(id,name,charsmax(name))
new vaultkey[64],vaultdata[256]
formatex(vaultkey,63,"%s-OreJucate",name)
formatex(vaultdata,255,"%i %i %i",iMinutes[id],iHours[id],iHours2[id],iDays[id])
nvault_set(g_vault,vaultkey,vaultdata)
}
public LoadData(id) {
new name[32]
new vaultkey[64],vaultdata[256]
get_user_info(id,"name",name,charsmax(name)) //credite hamleteagle,m-a ajutat cu sfaturi aici (get_user_info e mai rapid si am evitat un bug)
formatex(vaultkey,63,"%s-OreJucate",name)
formatex(vaultdata,255,"%i %i %i",iMinutes[id],iHours[id],iHours2[id],iDays[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
new minute[32],ore[32],ore2[32],zile[32]
parse(vaultdata,minute,31,ore,31,ore2,31,zile,31)
iMinutes[id] = str_to_num(minute)
iHours[id] = str_to_num(ore)
iHours2[id] = str_to_num(ore2)
iDays[id] = str_to_num(zile)
}
stock color( const id, const input[ ], any:... )
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" ) //- verde
replace_all( msg, 190, "!y", "^1" ) //- galben
replace_all( msg, 190, "!team", "^3" ) //- echipa
replace_all( msg, 190, "!n", "^0" ) //- normal
if( id ) players[ 0 ] = id; else get_players( players, count, "ch" )
{
for( new i = 0; i < count; i++ )
{
if( is_user_connected( players[ i ] ) )
{
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] )
write_byte( players[ i ] );
write_string( msg );
message_end( );
}
}
}
}