#include <string>
#include <admin>
#include <adminlib>


#define ACCESS_CONSOLE 131072


/////////////////////////////////
//KILLS IN TIME (No. of frags) //
/////////////////////////////////
new g_kstimer		=3;
new g_DOUBLEKILL	=2;
new g_MULTIKILL		=3;
new g_MONSTERKILL	=4;

/////////////////////////////
//KILLSTREAK (No. of frags)//
/////////////////////////////
/*
new g_KILLINGSPREE	=3;
new g_DOMINATING	=4;
new g_GODLIKE		=5;
*/
new g_firstkill;

new g_CurrentKill[MAX_PLAYERS];
new g_CountKills[MAX_PLAYERS];
new g_TimeKills[MAX_PLAYERS];

public plugin_init(){
	plugin_registercmd("im_kill", "logd_handler", ACCESS_CONSOLE, "");
	exec( "logd_reg 57 admin_command im_kill" );
	plugin_registercmd("im_suicide", "logd_handler", ACCESS_CONSOLE, "");
	exec( "logd_reg 53 admin_command im_suicide" );
	return PLUGIN_CONTINUE;
}

public logd_handler(HLCommand,HLData,HLUserName,UserIndex){
	new Command[MAX_COMMAND_LENGTH];
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	switch(Command[3]){
		case 'k': kill();
		case 's': kill();
	}
	return PLUGIN_CONTINUE;
}

kill(){
	new Data[MAX_DATA_LENGTH];
	new Player[MAX_NAME_LENGTH];
	new iKills;
	new i;
	new iDead;
	new maxplayers=maxplayercount();
	for(i=1;i<=maxplayers;i++){
		if(playerinfo(i,Player,MAX_NAME_LENGTH,_,_,_,iDead)){
			if(!iDead){
				get_userFrags(Player,iKills);
				if(g_CurrentKill[i]<iKills){
					g_CurrentKill[i]=iKills;
					g_CountKills[i]+=1;
					g_TimeKills[i]+=1;
					
					if(g_TimeKills[i]==1){
						set_timer("count_time_score",g_kstimer,0,Player);
					}
						
					if(g_CountKills[i]==1 && !g_firstkill){
						g_firstkill=1;
						snprintf(Data,MAX_DATA_LENGTH,"%s has made^nthe firstblood!",Player);
						playFile( "sound/misc/firstblood.wav", Data); 
					}/*else if(g_CountKills[i]==g_KILLINGSPREE){
						snprintf(Data,MAX_DATA_LENGTH,"%s is on^nkillingspree!",Player);
						playFile( "sound/misc/killingspree.wav", Data);
					}else if(g_CountKills[i]==g_DOMINATING){
						snprintf(Data,MAX_DATA_LENGTH,"%s is^ndominating!",Player);
						playFile( "sound/misc/dominating.wav", Data);
					}else if(g_CountKills[i]==g_GODLIKE){
						snprintf(Data,MAX_DATA_LENGTH,"%s is^ngodlike!",Player);
						playFile( "sound/misc/godlike.wav", Data);
					}*/
				}
			}else{
				if(g_CountKills[i]>0){
					g_CountKills[i]=0;
					g_TimeKills[i]=0;
				}
			}
		}
	}
}

public count_time_score(Timer,Repeat,HLName,HLParam) {
	new Data[MAX_DATA_LENGTH];
	new Player[MAX_NAME_LENGTH];
	new i;
	convert_string(HLParam,Player,MAX_NAME_LENGTH);
	get_userindex(Player,i);
	if(g_TimeKills[i]==g_DOUBLEKILL){
		snprintf(Data,MAX_DATA_LENGTH,"%s has made^na doublekill!",Player);
		playFile( "sound/misc/doublekill.wav",Data); 
	}else if(g_TimeKills[i]==g_MULTIKILL){
		snprintf(Data,MAX_DATA_LENGTH,"%s has made^na multikill!",Player);
		playFile( "sound/misc/multikill.wav", Data);
	}else if(g_TimeKills[i]==g_MONSTERKILL){
		snprintf(Data,MAX_DATA_LENGTH,"%s has made^na monsterkill!",Player);
		playFile( "sound/misc/monsterkill.wav", Data);
	}
	g_TimeKills[i]=0;
}
playFile( sFileName[ ],Data[] ) 
{ 
	new Name[ MAX_NAME_LENGTH ];
	new maxplayers = maxplayercount(); 
	typesay(Data,12,random(200),random(200),100);
	for( new i = 1; i <= maxplayers; i++ ) 
	{ 
		if( playerinfo(i, Name, MAX_NAME_LENGTH) ) {
			speakto(Name, sFileName ); 
		} 
	} 
} 

