- /*	----------------------------------------- 
- Credits: Only for Raulitop, for the hook say :3 
-   
- Version With Saved NFVAULT 
- -------------------------------			*/ 
-   
- #include <amxmisc> 
- #include <fakemeta> 
- #include <nfvault> 
-   
- new const PLUGIN[] = "Ranges CS:GO" 
- #define VERSION "1.0" 
- new const AUTHOR[] = "kikizon" 
-   
- /* ============================================= 
- |= [START MODIFIED SECTION] =| 
- ==============================================*/ 
- /* ==================================== 
- *[CONST]* 
- =====================================*/ 
- new const Prefix[] = "!g[Információ]!y"	// Prefix a chaten 
- new const Sonido[] = "hang/up.wav" // Hang amikor rankot lépsz 
- /* ==================================== 
- *[CONST NAMES OF RANGES]* 
- =====================================*/ 
- enum _:DATA 
- { 
- 	NAMES[30], 
- 	FRAGS 
- } 
- new const Ranges[][DATA] = { 
- 	{ "Unranked", 100 }, 
- 	{ "Silver I", 200 }, 
- 	{ "Silver II", 300 }, 
- 	{ "Silver III", 500 }, 
- 	{ "Silver IV", 700 }, 
- 	{ "Silver Elite", 800 }, 
- 	{ "Silver Elite Master", 900 }, 
- 	{ "Gold NovaI", 1000 }, 
- 	{ "Gold Nova II", 1200 }, 
- 	{ "Gold Nova III", 1300 }, 
- 	{ "Gold Nova Master", 1400 }, 
- 	{ "Master Guardian I",1500 }, 
- 	{ "Master Guardian II", 1700 }, 
- 	{ "Master Guardian Elite", 1800 }, 
- 	{ "Distinguished Master Guardian", 1900 }, 
- 	{ "Legendary Eagle", 2000 }, 
- 	{ "Legendary Eagle Master", 2100 }, 
- 	{ "Supreme Master First Class", 2200 }, 
- 	{ "The Global Elite", 2500 } 
- } 
-   
- /* ============================================= 
- |= [END MODIFIED SECTION] =| 
- ==============================================*/ 
- /* ==================================== 
- *[VARIABLES]* 
- =====================================*/ 
- new g_range[33], g_frags[33] 
- new SyncHUD, g_maxplayers, g_msgTeamInfo, g_msgSayText, g_playername[33][32]; 
- #define TASK_HUD 2100 
- #define ID_HUD (taskid - TASK_HUD) 
- #define XD is_user_connected(id) || !is_user_bot(id) || !is_user_hltv(id) 
- new VaultRanges[128], szRanges[180], szKey[30] 
-   
- /* ==================================== 
- *[Cvars]* 
- =====================================*/ 
- new cvar_Hud, cvar_knifex2, cvar_hsx2 
- /* ==================================== 
- *[INIT]* 
- =====================================*/ 
- public plugin_init() { 
- 	register_plugin(PLUGIN, VERSION, AUTHOR) 
-   
- 	register_event("DeathMsg", "Event_DeathMsg", "a") 
- 	register_logevent("logevent_round_end", 2, "1=Round_End") 
-   
- 	register_clcmd("say", "message_saytext")  
- 	register_clcmd("say_team", "message_sayteam") 
-   
-   
- 	/* ============================================= 
- 	|= [START MODIFIED SECTION] =| 
- 	==============================================*/ 
- 	cvar_Hud = register_cvar("ranges_hud", "1")  		// Hud: 1 = BE, 2 = KI 
- 	cvar_knifex2 = register_cvar("ranges_knifex2", "1")	// 2x Kés frag: 1 = BE, 2 = KI 
- 	cvar_hsx2 = register_cvar("ranges_hsx2", "1")		// 2x Fejlövés frag: 1 = BE, 2 = KI 
- 	/* ============================================= 
- 	|= [END MODIFIED SECTION] =| 
- 	==============================================*/ 
-   
-   
- 	SyncHUD = CreateHudSyncObj() 
- 	g_maxplayers = get_maxplayers() 
- 	g_msgTeamInfo = get_user_msgid("TeamInfo") 
- 	g_msgSayText = get_user_msgid("SayText") 
-   
- 	nfv_file("Ranges", VaultRanges, charsmax(VaultRanges)) 
- } 
- /* ==================================== 
- *[PRECACHE]* 
- =====================================*/ 
- public plugin_precache()  
- 	precache_sound(Sonido) 
- /* =================================== 
- *[HUD]* 
- =====================================*/ 
- public HUD(taskid) { 
- 	new id = ID_HUD 
-   
- 	if (!is_user_alive(id)) { 
- 		id = pev(id, pev_iuser2) 
- 		if (!is_user_alive(id)) return; 
- 	} 
-   
- 	if(id != ID_HUD) { 
- 		set_hudmessage(255, 255, 255, 0.60, 0.67, 1, 6.0, 1.0) 
- 		ShowSyncHudMsg(ID_HUD, SyncHUD, "Frags: %d  ||  Rank: %s", g_frags[id], Ranges[g_range[id]][NAMES]) 
- 	} else { 
- 		set_hudmessage(0, 255, 0, 0.0, 0.20, 1, 6.0, 1.0) 
- 		ShowSyncHudMsg(ID_HUD, SyncHUD, "=======================^nÖlések: %d^nRank: %s^n=======================^nKövetkező: %s^nSzüks. Ölés: %d^n=======================^n%s",  
- 		g_frags[id], Ranges[g_range[id]][NAMES], Ranges[g_range[id]+1][NAMES], Ranges[g_range[id]][FRAGS] -  g_frags[id]) 
- 	} 
-   
- }  
- /* ================================== 
- 	[PUTINSERVER] 
- ===================================*/ 
- public client_putinserver(id) { 
- 	get_user_name( id, g_playername[ id ], charsmax( g_playername[ ] ) ); 
- 	g_range[id] = 0 
- 	g_frags[id] = 0 
-   
- 	load(id) 
-   
- 	if(get_pcvar_num(cvar_Hud))  
- 		set_task(1.0, "HUD", id+TASK_HUD, _, _, "b") 
- } 
- /* ================================== 
- 	[DISCONNECT] 
- ===================================*/ 
- public client_disconnect(id) { 
- 	if(XD) Save(id); 
-   
- 	remove_task(id+TASK_HUD) 
- } 
-   
- /* ================================== 
- 	[ROUND END] 
- ===================================*/ 
- public logevent_round_end() { 
- 	for(new id = 1; id <= g_maxplayers; id++) { 
- 		if(XD)  
- 			Save(id);  
- 	} 
- } 
- /* ================================== 
- 	[DEATHMSG] 
- ===================================*/ 
- public Event_DeathMsg() { 
- 	new attacker = read_data(1) 
- 	new victim = read_data(2) 
- 	new hs = read_data(3) 
- 	new weaponid = get_user_weapon(attacker) 
-   
- 	if(victim == attacker) return; 
-   
- 	if(is_user_alive(attacker)) { 
- 		g_frags[attacker]++ 
-   
- 		if(get_pcvar_num(cvar_knifex2)) { 
- 			if(weaponid == CSW_KNIFE)  
- 				g_frags[attacker]++ 
- 		} 
- 		if(get_pcvar_num(cvar_hsx2)) { 
- 			if(hs) g_frags[attacker]++ 
- 		} 
- 		IncreaseRanges(attacker) 
- 	} 
- } 
- /* ================================ 
- 	[UPDATE RANK] 
- =================================*/ 
- IncreaseRanges(id) {     
- 	new Increase = false 
-   
- 	while(g_frags[id] >= Ranges[g_range[id]][FRAGS]) { 
- 		Increase = true 
- 		g_range[id]++ 
- 	} 
-   
- 	if(Increase) { 
- 		chatcolor(id, "%s Gratulálunk új rankba léptél: !g[ %s ]", Prefix, Ranges[g_range[id]][NAMES]) 
- 		client_cmd(id, "spk %s", Sonido) 
- 		Increase = false 
- 	} 
- }  
- /*===================================== 
- *[SAY]* 
- =====================================*/ 
- public message_saytext(id) {  
- 	static said[192]  
- 	read_args(said, charsmax(said))  
- 	remove_quotes(said)  
-   
- 	if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, "")) 
- 		return PLUGIN_HANDLED 
-   
- 	if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE; 
-   
- 	static color[11], name[32], alive[11] 
- 	get_user_team(id,color,charsmax(color)) 
- 	get_user_name(id,name,charsmax(name)) 
-   
- 	if (is_user_alive (id)) { 
- 		alive = "" 
- 	} else { 
- 		alive = "[Dead]" 
- 	} 
-   
- 	if (is_user_admin(id)) { 
- 		if (get_user_flags(id) & ADMIN_KICK)  
- 			format(said, charsmax(said), "^x01%s^x04%s ^x03%s ^x04: %s", alive, Ranges[g_range[id]][NAMES], name, said) 
- 	} else { 
- 		format(said, charsmax(said), "^x01%s^04%s ^x03%s ^x01: %s", alive, Ranges[g_range[id]][NAMES], name, said) 
- 	} 
-   
- 	static i, team[11]  
- 	for (i = 1; i <= g_maxplayers; i++) { 
- 		if (!is_user_connected(i)) continue 
- 		get_user_name(id,name,charsmax(name)) 
-   
- 		if (is_user_admin(i) || is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) { 
- 			get_user_team(i, team, charsmax(team)) 
- 			changeTeamInfo(i, color) 
- 			writeMessage(i, said) 
- 			changeTeamInfo(i, team) 
- 		} 
- 	} 
- 	return PLUGIN_HANDLED_MAIN; 
- } 
-   
- public message_sayteam(id) 
- {     
- 	static said[192]  
- 	read_args(said, charsmax(said))  
- 	remove_quotes(said)  
-   
- 	if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, "")) 
- 		return PLUGIN_HANDLED 
-   
- 	if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE;  
-   
- 	static playerTeam, playerTeamName[19] 
- 	playerTeam = get_user_team(id) 
-   
- 	switch (playerTeam) { 
- 		case 1: copy (playerTeamName, 6, "TE") 
- 		case 2: copy (playerTeamName, 8, "CT")  
- 		default: copy (playerTeamName, 11, "SPEC")  
- 	} 
-   
- 	static color[11], name[32], alive[11] 
- 	get_user_team(id,color,charsmax(color)) 
- 	get_user_name(id,name,charsmax(name)) 
-   
- 	if (is_user_alive (id)) { 
- 		alive = "" 
- 	} else { 
- 		alive = "[Dead]" 
- 	} 
-   
- 	if (is_user_admin(id)) { 
- 		if (get_user_flags(id) & ADMIN_RCON) 
- 			format(said, charsmax(said), "^x01%s [ %s ] ^x04%s ^x03%s ^x04: %s", alive, playerTeam, Ranges[g_range[id]], name, said) 
- 	} else { 
- 		format(said, charsmax(said), "^x01%s [ %s ] ^04%s ^x03%s ^x01: %s", alive, playerTeam, Ranges[g_range[id]],name, said) 
- 	} 
-   
- 	static i, team[11]  
- 	for (i = 1; i <= g_maxplayers; i++) { 
- 		if (!is_user_connected(i)) continue; 
- 		get_user_name(id,name,charsmax(name)) 
-   
- 		if (get_user_team(i) == playerTeam || is_user_admin(i)) { 
- 			if (is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) { 
- 				get_user_team(i, team, charsmax(team)) 
- 				changeTeamInfo(i, color) 
- 				writeMessage(i, said) 
- 				changeTeamInfo(i, team) 
- 			} 
- 		} 
- 	} 
- 	return PLUGIN_HANDLED_MAIN; 
- } 
- public changeTeamInfo(player, team[]) { 
- 	message_begin(MSG_ONE, g_msgTeamInfo, _, player) 
- 	write_byte(player) 
- 	write_string(team) 
- 	message_end() 
- } 
-   
-   
-   
-   
- public writeMessage(player, message[]) { 
- 	message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player) 
- 	write_byte(player) 
- 	write_string(message) 
- 	message_end() 
- } 
- /* =================================== 
- *[SAVE]* 
- =====================================*/ 
- Save(id) { 
- 	formatex(szKey, charsmax(szKey), "data_ranges")  
- 	formatex(szRanges, charsmax(szRanges), "%d %d", g_frags[id], g_range[id]) 
-   
- 	nfv_set_data(VaultRanges, szKey, g_playername[id], szRanges) 
- } 
-   
- load(id) { 
- 	new g_load_c1[25], g_load_c2[25] 
- 	formatex(szKey, charsmax(szKey), "data_ranges")  
-   
- 	if(!nfv_get_data(VaultRanges, szKey, g_playername[id], szRanges, sizeof(szRanges) - 1)) return;  
-   
- 	parse(szRanges, g_load_c1, charsmax(g_load_c1), g_load_c2, charsmax(g_load_c2)) 
-   
- 	g_frags[id] = str_to_num(g_load_c1) 
- 	g_range[id] = str_to_num(g_load_c2) 
- }  
- /* =================================== 
- *[STOCKS]* 
- =====================================*/ 
- // stock of chatcolor 
- stock chatcolor(id, const input[], any:...) { 
- 	new count = 1, players[32];  
- 	static msg[191];  
- 	vformat(msg, 190, input, 3);  
-   
- 	replace_all(msg, 190, "!g", "^4"); // Green 
- 	replace_all(msg, 190, "!y", "^1"); // Default 
- 	replace_all(msg, 190, "!t", "^3"); // Color of team  
-   
- 	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();  
- 			}  
- 		}  
- 	}  
- }  
- // Stock to Know If the message is valid 
- stock ValidMessage(text[], maxcount) { 
- 	static len, i, count 
- 	len = strlen(text) 
- 	count = 0 
-   
- 	if (!len) 
- 		return false; 
-   
- 	for (i = 0; i < len; i++) { 
- 		if (text[i] != ' ') { 
- 			count++ 
- 			if (count >= maxcount) 
- 				return true; 
- 		} 
- 	} 
- 	return false; 
- } 
- /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE 
- *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par } 
- */ 
-