- #include <amxmodx> 
- #include <fakemeta> 
- #include <hamsandwich> 
- #include <xs> 
- #include <nvault> 
- #include <colorchat> 
-   
- new g_iBackStabKills[33], g_iBackStabDeaths[33] 
- new bool: g_bIsBackStab[33] 
- new g_iSaveType, g_iMenuCvar, g_iTypeInfo, g_iPrefix 
- new g_iVault 
-   
- public plugin_init() 
- { 
- 	register_plugin("BackSide Kill Counter", "1.1", "Just In Case @ amxx-bg.info") 
- 	RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage") 
- 	g_iVault = nvault_open("BackSideKillsdata") 
-   
- 	g_iSaveType = register_cvar("amx_bskc_savetype", "1") // 1 Nevre | 2 IP-re | 3 SteamID-re 
- 	g_iMenuCvar = register_cvar("amx_bskc_stats", "1") 
- 	g_iTypeInfo = register_cvar("amx_bskc_menuinfo", "2") // 1 CHAT-be | 2 Uj menube 
- 	g_iPrefix = register_cvar("amx_bskc_prefix", "BSKC") 
-   
- 	register_concmd("say /statsback", "OpenMenu") 
- 	register_concmd("say_team /statsback", "OpenMenu") 
- 	register_concmd("say /checkback", "ShowCounts") 
- 	register_concmd("say_team /checkback", "ShowCounts") 
- } 
- public client_disconnect(id) 
- 	UseVault(id, 0) 
-   
- public client_putinserver(id) 
- 	UseVault(id, 1) 
-   
- public OpenMenu( id ) 
- {	 
- 	if(get_pcvar_num(g_iMenuCvar) == 0) 
- 	{ 
- 		ColorChat(id, RED, "^4[ %s ] ^1Ez a lehetoseg ideiglenesen ki van ^3KAPCSOLVA!", GetPrefix()) 
- 		return 
- 	} 
-   
- 	new menu = menu_create( "\rMas jatekosok \dBS \rstatisztikai:", "menu_handler" ) 
-   
- 	static iPlayers[32], iNum, iTempId 
- 	static szName[32] 
- 	get_players( iPlayers, iNum ) 
- 	for ( new szIp[32], i; i<iNum; i++ ) 
- 	{ 
- 		iTempId = iPlayers[i] 
- 		get_user_name( iTempId, szName, charsmax( szName ) ) 
- 		get_user_ip( iTempId, szIp, charsmax(szIp), 1) 
- 		menu_additem( menu, szName, szIp, 0 ) 
- 	} 
- 	menu_display( id, menu, 0 ) 
- } 
- public menu_handler( id, iMenu, iItem ) 
- { 
- 	if ( iItem == MENU_EXIT ) 
- 	{ 
- 		menu_destroy( iMenu ) 
- 		return PLUGIN_HANDLED 
- 	} 
-   
-   
- 	static szData[6], szName[64] 
- 	static _access, item_callback 
-   
- 	menu_item_getinfo( iMenu, iItem, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback ) 
-   
- 	new iPlayer = find_player( "d", szData ) 
- 	if ( iPlayer ) 
- 	{ 
- 		static szName[32] 
- 		get_user_name(iPlayer, szName, charsmax(szName)) 
- 		switch ( get_pcvar_num( g_iTypeInfo ) ) { 
- 			case 1: 
- 				SubMenu( id, iPlayer ) 
- 			case 2: 
- 				ColorChat(id, RED, "^4[ %s ] ^3%s ^1jelenleg ^4%i ^1BS Olessel es ^4%i ^1BS Halallal rendelkezik.", GetPrefix(), szName, g_iBackStabKills[ iPlayer], g_iBackStabDeaths[ iPlayer ]) 
-   
- 		} 
-   
- 	} 
-   
- 	menu_destroy( iMenu ) 
- 	return PLUGIN_HANDLED 
- } 
- public SubMenu( id, iTarget ) 
- { 
- 	static szName[33] 
- 	get_user_name(iTarget, szName, charsmax(szName)) 
-   
- 	static szTitle[64], szKills[64], szDeaths[64] 
- 	formatex(szTitle, charsmax(szTitle), "\yJatekos: \r%s", szName) 
- 	formatex(szKills, charsmax(szKills), "\yBS Olesei: \r%i", g_iBackStabKills[ iTarget ]) 
- 	formatex(szDeaths, charsmax(szDeaths), "\yBS Halalai: \r%i", g_iBackStabDeaths[ iTarget ]) 
- 	new iMenua = menu_create(szTitle, "second_handler") 
- 	menu_additem(iMenua, szKills) 
- 	menu_additem(iMenua, szDeaths) 
-   
- 	menu_display(id, iMenua) 
- } 
- public second_handler(id, iMenu, iItem) 
- { 
- 	menu_destroy( iMenu ) 
- 	return PLUGIN_HANDLED 
- } 
- public ShowCounts( id ) 
- { 
- 	ColorChat(id, RED, "^4[ %s ] ^1Jelenleg neked ^3%i ^1BS Olesed es ^3%i ^1BS Halalod van.", GetPrefix(), g_iBackStabKills[ id ], g_iBackStabDeaths[ id ]) 
- 	return PLUGIN_HANDLED 
- } 
- public eDeath(  )   
- {  
- 	new iAttacker = read_data( 1 )  
- 	new iVictim = read_data( 2 )  
-   
- 	if(g_bIsBackStab[ iVictim ]) 
- 	{ 
- 		g_iBackStabKills[ iAttacker ] ++ 
- 		g_iBackStabDeaths[ iVictim ] ++ 
- 	} 
- }  
- public Player_TakeDamage(iVictim, iInflictor, iAttacker, Float: flDamage, const bitsDamageType) 
- { 
- 	if (!is_user_connected(iAttacker) || !is_user_connected(iAttacker)) 
- 		return HAM_IGNORED 
-   
- 	static Float: vecSrc[3]; 
- 	static Float: vecAngles[3]; 
- 	static Float: vecForward[3]; 
- 	static Float: vecAttackDir[3]; 
-   
- 	GetCenter(iVictim, vecSrc); 
- 	GetCenter(iInflictor, vecAttackDir); 
-   
- 	xs_vec_sub(vecAttackDir, vecSrc, vecAttackDir); 
- 	xs_vec_normalize(vecAttackDir, vecAttackDir); 
-   
- 	pev(iVictim, pev_angles, vecAngles); 
- 	engfunc(EngFunc_MakeVectors, vecAngles); 
-   
- 	global_get(glb_v_forward, vecForward); 
- 	xs_vec_mul_scalar(vecAttackDir, -1.0, vecAttackDir); 
-   
- 	if (xs_vec_dot(vecForward, vecAttackDir) > 0.3 ) 
- 		g_bIsBackStab[ iVictim ] = true 
- 	else 
- 		g_bIsBackStab[ iVictim ] = false 
-   
- 	return HAM_IGNORED 
-   
- } 
- public plugin_end() 
- 	nvault_close(g_iVault) 
-   
- UseVault(id, iType) {         
- 	static szKey[32], szData[16] 
- 	switch ( get_pcvar_num( g_iSaveType ) ) 
- 	{ 
- 		case 0: return 
- 			case 1: get_user_name(id, szKey, charsmax(szKey)) 
- 			case 2: get_user_ip(id, szKey, charsmax(szKey), 1) 
- 			case 3: get_user_authid(id, szKey, charsmax(szKey)) 
- 		} 
-   
-   
- 	switch(iType) 
- 	{ 
- 		case 0: 
- 		{ 
- 			formatex(szData, charsmax(szData), "%i|%i", g_iBackStabKills[ id ], g_iBackStabDeaths[ id ]) 
- 			nvault_set(g_iVault, szKey, szData) 
- 		} 
- 		case 1: 
- 		{ 
- 			nvault_get(g_iVault, szKey, szData, charsmax(szData)) 
- 			new szArg[2][8] 
- 			replace_all(szData, charsmax(szData), "|", " ") 
- 			parse(szData, szArg[0], charsmax(szArg[]), szArg[1], charsmax(szArg[])) 
- 			g_iBackStabKills[ id ] = str_to_num(szArg[0]) 
- 			g_iBackStabDeaths[ id ] = str_to_num(szArg[1]) 
- 		} 
- 	} 
- } 
- GetCenter(const iEntity, Float: vecSrc[3]) { 
- 	static Float: vecAbsMax[3]; 
- 	static Float: vecAbsMin[3]; 
-   
- 	pev(iEntity, pev_absmax, vecAbsMax); 
- 	pev(iEntity, pev_absmin, vecAbsMin); 
-   
- 	xs_vec_add(vecAbsMax, vecAbsMin, vecSrc); 
- 	xs_vec_mul_scalar(vecSrc, 0.5, vecSrc); 
- } 
- GetPrefix() { 
- 	static szPrefix[10] 
- 	get_pcvar_string(g_iPrefix, szPrefix, charsmax(szPrefix)) 
- 	return szPrefix 
- } 
- /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE 
- *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } 
- */ 
-