Page 1 of 13

Rank - Rankstats - Top | RRT v.0.3.1 [21.02.2013]

Posted: 19 Aug 2010, 14:14
by Arion
Image

CITITI TOT TOPICUL INAINTE SA DESCARCATI PLUGINUL!

Descriere
Comenzile /rank /rankstats /top cu noi facilitati si o alta infatisare .

Autor
Ex3cuTioN/Arion
Update log | Afiseaza codul
[list][*]0.2
[list][*]nu am tinut evidenta actualizarilor[/list]
[*]0.3[list]
[*]cvarurile au fost modificate din amx_stats_ in rrt_
[*]s-a adaugat noul cvar rrt_topnum 10/15 care afiseaza 10 sau 15 linii in top
[*]s-a reparat eroarea cu afisarea a 11-12 linii, desi trebuiau sa apara 15
[*]s-au implementat algoritmi noi, mai eficienti cu viteza de executie mai mica
[*]redeclarare variabile. Erau declarate aiurea, consumand mai multa memorie
[*]s-a adaugat noul cvar rrt_connect care afiseaza la deconectarea jucatorilor pe ce rank se afla
[*]design complet nou la top si rankstats (multumita comunitatii lafel)
[*]implementare CSS in codul WEB
[*]metoda de calculare rank este acum ((kills-deaths)+hs)/2[/list]
[*]0.3.1
[list][*]daca jucatorii erau sub 16 arata valori negative in top. Rezolvata prin recalcularea algoritmului.[/list][/list]

Descarcare
Link: -link-
Link: -folder google drive-
rank_rankstats_top.SMA | Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <csx>

#pragma semicolon 1

new gNum;
new cvar_rank, cvar_rankstats, cvar_top, cvar_topnum, cvar_title, cvar_connect;

public plugin_init() {
	register_plugin("RRT", "0.3.1", "Ex3cuTioN/Arion");
	
	register_clcmd("say", "hook_say");
	register_clcmd("say_team", "hook_say");
	
	register_clcmd("amx_rank", "cmdRank");
	register_clcmd("amx_rankstats", "cmdRankstats");
	
	cvar_top = register_cvar("rrt_top","1");
	cvar_rank = register_cvar("rrt_rank","1");
	cvar_rankstats = register_cvar("rrt_rankstats","1");
	cvar_topnum = register_cvar("rrt_topnum", "10");
	cvar_title = register_cvar("rrt_title", "Top jucatori");
	cvar_connect = register_cvar("rrt_connect", "1");
}

public hook_say(id) {
	static s_Args[192];
	
	read_args(s_Args, sizeof(s_Args) - 1);
	remove_quotes(s_Args);
	
	if(equal(s_Args, "/rank", 5) || equal(s_Args,"/rankstats",10)) {
		replace(s_Args, sizeof(s_Args) - 1, "/", "");
		client_cmd(id, "amx_%s", s_Args);
	}	
	
	if(equal(s_Args,"/top",4)) {
		if(get_pcvar_num(cvar_top) == 0) {
			ColorChat(id,GREEN,"[Top]^x01 Dezactivat.");
			return PLUGIN_HANDLED;
		}
		
		replace(s_Args,sizeof(s_Args) - 1,"/top","");
		gNum = str_to_num(s_Args);
		
		cmdTop15(id);
	}
	
	return PLUGIN_CONTINUE;
}

/*public client_putinserver(id) {
	new connect = get_pcvar_num(cvar_connect);
	
	if(connect == 0)
		return PLUGIN_HANDLED;
	
	new name[32], izStats[8], izBody[8], iRankPos, iRankMax;

	iRankMax = get_statsnum();
	iRankPos = get_user_stats(id, izStats, izBody);
	
	get_user_name(id, name, 31);
	
	if(connect == 2)
		ColorChat(0, GREEN,"[RRT]^x03 %s^x01 se conecteaza, rank %d din %d cu %d fraguri si %d decese.", name, iRankPos, iRankMax, izStats[0], izStats[1]);
	else if(connect == 1)
		ColorChat(0, GREEN,"[RRT]^x03 %s^x01 se conecteaza, rank %d din %d.", name, iRankPos, iRankMax);
	
	return PLUGIN_CONTINUE;
}*/

public client_disconnect(id){
	new connect = get_pcvar_num(cvar_connect);
	
	if(connect == 0) return PLUGIN_HANDLED;
	
	new name[32], izStats[8], izBody[8], iRankPos, iRankMax;

	iRankMax = get_statsnum();
	iRankPos = get_user_stats(id, izStats, izBody);
	get_user_name(id, name, 31);
	
	if(connect == 2)
		ColorChat(0, GREEN,"[RRT]^x03 %s^x01 a iesit, rank %d din %d cu %d fraguri si %d decese.", name, iRankPos, iRankMax, izStats[0], izStats[1]);
	else if(connect == 1)
		ColorChat(0, GREEN,"[RRT]^x03 %s^x01 a iesit, rank %d din %d.", name, iRankPos, iRankMax);
		
	return PLUGIN_CONTINUE;
}

public cmdRank(id) {
	new rrt_rank = get_pcvar_num(cvar_rank);
	
	if(rrt_rank == 0) {
		ColorChat(id, GREEN, "[Rank]^x01 Dezactivat.");
		return PLUGIN_HANDLED;
	}
	
	new izStats[8], izBody[8], iRankPos, iRankMax, name[32], arg[32];
	
	read_argv(1, arg, 31);
	iRankMax = get_statsnum();
	
	if(equali(arg, "")) {
		iRankPos = get_user_stats(id, izStats, izBody);
		
		get_user_name(id, name, 31);
		
		if(rrt_rank == 2)
			ColorChat(id, GREEN, "[Rank]^x03 %s,^x01 esti pe locul^x03 %d^x01 din^x03 %d^x01 cu^x03 %d^x01 fraguri si^x03 %d^x01 decese.",name,iRankPos,iRankMax,izStats[0],izStats[1]);
		else if(rrt_rank == 1)
			ColorChat(id, GREEN, "[Rank]^x03 %s,^x01 esti pe locul %d din %d",name, iRankPos, iRankMax);
		
		return PLUGIN_HANDLED;
	}
	new player = cmd_target(id, arg, 14);
	
	if(!is_user_connected(player) || !player) {
		ColorChat(id,GREEN,"[Rank]^x01 Acest jucator nu este conectat.");
		return PLUGIN_HANDLED;
	}

	iRankPos = get_user_stats(player, izStats, izBody);
	get_user_name(player, name, 31);
	
	if(rrt_rank == 2)
		ColorChat(id, GREEN, "[Rank]^x03 %s^x01 este pe locul^x03 %d^x01 din^x03 %d^x01 cu^x03 %d^x01 fraguri si^x03 %d^x01 decese.", name, iRankPos, iRankMax, izStats[0], izStats[1]);
	else if(rrt_rank == 1)
		ColorChat(id, GREEN, "[Rank]^x03 %s^x01 este pe locul %d din %d", name, iRankPos, iRankMax);
	
	return PLUGIN_HANDLED;
}

public cmdRankstats(id) {
	if(get_pcvar_num(cvar_rankstats) == 0) {
		ColorChat(id, GREEN, "[Rankstats]^x01 Dezactivat.");
		return PLUGIN_HANDLED;
	}
	
	static buffer[2368], name[32], len, arg[32], iRankPos, izStats[8], izBody[8];
	
	len = format(buffer[len], 2367-len, "<style>body{background:#112233;font-family:Arial}th{background:#2E2E2E;color:#FFF;padding:5px 2px;text-align:center}td{padding:5px 2px}table{width:50%%;background:#EEEECC;font-size:12px;}h2{color:#FFF;font-family:Verdana;text-align:center}#c{background:#E2E2BC}</style>");
	
	read_argv(1, arg, 31);
	new iRankMax = get_statsnum();
	
	if(equali(arg, "")) {
		iRankPos = get_user_stats(id, izStats, izBody);
		get_user_name(id, name, 31);
		len += format(buffer[len], 2367-len, "<h2>Esti pe locul %d din %d</h2>",iRankPos, iRankMax);
	}
	else {
		new player = cmd_target(id, arg, 14);
	
		if(!is_user_connected(player) || !player) {
			ColorChat(id, GREEN, "[Rank]^x01 Acest jucator nu este conectat.");
			return PLUGIN_HANDLED;
		}
		
		iRankPos = get_user_stats(player, izStats, izBody);
		get_user_name(player, name, 31);
		
		len += format(buffer[len], 2367-len, "<h2>%s este pe locul %d din %d</h2>", name, iRankPos, iRankMax);
	}
	
	new server_name[64];
	get_cvar_string("hostname", server_name, 63);
	
	len += format(buffer[len], 2367-len, "<table border=^"0^" align=^"center^" cellpadding=^"0^" cellspacing=^"1^"><tbody>");
	
	len += format(buffer[len], 2367-len, "<tr><th colspan=^"2^">Statistici %s", name);
	
	len += format(buffer[len], 2367-len, "<tr id=^"c^"><td>Ucideri<td>%d (cu %d HS)", izStats[0], izStats[2]);
	len += format(buffer[len], 2367-len, "<tr><td>Deaths<td>%d", izStats[1]);
	len += format(buffer[len], 2367-len, "<tr id=^"c^"><td>Hits<td>%d", izStats[5]);
	len += format(buffer[len], 2367-len, "<tr><td>Shots<td>%d", izStats[4]);
	len += format(buffer[len], 2367-len, "<tr id=^"c^"><td>Damage(HP)<td>%d", izStats[6]);
	len += format(buffer[len], 2367-len, "<tr><td>ACC. (%)<td>%.02f%", accuracy(izStats));
	len += format(buffer[len], 2367-len, "<tr id=^"c^"><td>EFF.<td>%.02f%", effec(izStats));
	len += format(buffer[len], 2367-len, "<tr><th colspan=^"2^">%s", server_name);
	
	len += format(buffer[len], 2367-len, "</tbody></table></body>");
	show_motd(id, buffer, "Top jucatori");
	
	return PLUGIN_CONTINUE;
}

Float:accuracy(izStats[8]) {
	if(!izStats[4])
		return (0.0);
	
	return (100.0 * float(izStats[5]) / float(izStats[4]));
}

Float:effec(izStats[8]) {
	if(!izStats[0])
		return (0.0);
	
	return (100.0 * float(izStats[0]) / float(izStats[0] + izStats[1]));
}

public cmdTop15(id) {
	new iMax = get_statsnum();
	new iNr = get_pcvar_num(cvar_topnum);
	
	if(iNr != 10 && iNr != 15)
		return PLUGIN_HANDLED;
			
	new start;
		
	if(gNum > 0 && gNum < 16) {
		start = 0;
		gNum = iNr;
	}
	else {
		if(gNum > iMax)
			gNum = iMax;
		else	
			start = gNum - iNr;
	}
			
	new title_data[128];
	new title = get_pcvar_string(cvar_title, title_data, 127);
		
	new buffer[2368], name[32], iBody[8], len, iStats[8];
		
	len = format(buffer[len], 2367-len, "<style>body{background:#112233;font-family:Arial}th{background:#2E2E2E;color:#FFF;padding:5px 2px;text-align:left}td{padding:5px 2px}table{width:100%%;background:#EEEECC;font-size:12px;}h2{color:#FFF;font-family:Verdana;text-align:center}#nr{text-align:center}#c{background:#E2E2BC}</style><h2>%s</h2><table border=^"0^" align=^"center^" cellpadding=^"0^" cellspacing=^"1^"><tbody>", title);
	len += format(buffer[len], 2367-len, "<tr><th id=nr>#</th><th>Name<th>Kills<th>Deaths<th>HS<th>Skill");
		
	for(new i = start; i < gNum; i++) {
		get_user_name(id, name, 31);
		get_stats(i, iStats, iBody, name, 31);
			
		new Float:fstats[8];
		for (new j = 0; j < 8; j++)
			fstats[j] = float(iStats[j]);
			
		while(containi(name, "<") != -1)
			replace(name, 31, "<", "<");
		while(containi(name, ">") != -1)
			replace(name, 31, ">", ">");
			
		len += format(buffer[len], 2367-len, "<tr %s><td id=nr>%d<td>%s<td>%d<td>%d<td>%d<td>%.02f",((i%2)==0) ? "" : " id=c", (i+1), name, iStats[0], iStats[1], iStats[2], ((fstats[0]-fstats[1])+fstats[2])/2);
	}
		
	new server_name[64];
	get_cvar_string("hostname", server_name, 63);
	len += format(buffer[len], 2367-len, "<tr><th colspan=^"7^" id=nr>%s", server_name);
		
	len += format(buffer[len], 2367-len, "</tbody></table></body>");
	show_motd(id, buffer, "Top jucatori");
	
	return PLUGIN_CONTINUE;
}

Instalare
1. Fisierul rank_rankstats_top.sma il puneti in addons/amxmodx/scripting
2. Fisierul rank_rankstats_top.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

Code: Select all

rank_rankstats_top.amxx
4. Dezactivati statsx.amxx din plugins.ini
5. Adaugati OBLIGATORIU csstats.amxx in cstrike/addons/data

C-VAR-uri
Se adauga in amxx.cfg:
  • rrt_top 0/1 | Activeaza comanda /topx
  • rrt_rank 0/1 | 0 -dezactivat | 1 - rank simplu | 2 - rank mai avansat
  • rrt_rankstats 0/1 | Activeaza comanda /rankstats
  • rrt_topnum 10/15 | Cate linii se afiseaza in top
  • rrt_title "Top jucatori | Textul de deasupra topului
  • rrt_connect 0/1 | Cand se deconecteaza un jucator afiseaza in chat ce rank are. 1 - simplist | 2 - avansat | 0 -dezactivat
Comenzi publice
  • /rank <nume>
  • /rankstats <nume>
  • /topnumar
exemple | Afiseaza codul
[list]
[*]/rank
[*]/rank Ex3cuTioN
[*]/rank aNNakin
[*]/rankstats zmeul
[*]/rankstats copac
[*]/rankstats
[*]/top15
[*]/top200
[*]/top10
[*]/top1312312[/list]
Module
  • csx
Info
Daca gasiti buguri sau ceva ce nu este in ordine postati aici si se va rezolva :D

Imagini
top in partea de jos | Afiseaza codul
Image
top cu 10 linii | Afiseaza codul
Image
/top22 | Afiseaza codul
Image
/rankstats | Afiseaza codul
Image
/rank cu rrt_rank 2 | Afiseaza codul
Image
/rank cu rrt_rank 1 | Afiseaza codul
Image
Multumiri
KronoS - pentru aspectul topicului
Robert - pentru logo

Re: Rank / Rankstats / Top

Posted: 19 Aug 2010, 14:17
by Xcite
Bravo execution , aveam nevoie de /topNUMAR ! Mersi :X

Re: Rank / Rankstats / Top

Posted: 19 Aug 2010, 14:18
by Arion
Cu placere :)

Re: Rank / Rankstats / Top

Posted: 19 Aug 2010, 14:19
by roby_the_dude
Frumos frate, chiar e mișto, poți să vezi topul la ce număr vrei :D. Bravo!

Re: Rank / Rankstats / Top

Posted: 19 Aug 2010, 14:31
by Xcite
Robert wrote:Frumos frate, chiar e mișto, poți să vezi topicul la ce număr vrei :D. Bravo!
Topul nu topicul :P ! Inca o data frumos plugin ;) !

Re: Rank / Rankstats / Top

Posted: 19 Aug 2010, 21:24
by FyNNN
La topnumar te-ai ajutat de TopME creat de SAMURAI? :) Ca si ala e /topNUMAR si afiseaza, doar ca tu ai facut si altele ;)) :D Oricum, e super tare pluginul, cred ca am sa il folosesc ;) !


#trebe dezactivat statsx?

Re: Rank / Rankstats / Top

Posted: 19 Aug 2010, 21:40
by Reptile
Te-ai ajutat de pluginul default, cel cu rank-ul, top-ul etc. . In rest e ok.

Re: Rank / Rankstats / Top

Posted: 20 Aug 2010, 00:12
by Brifcor
frumos :P

Re: Rank / Rankstats / Top

Posted: 20 Aug 2010, 10:39
by Arion
FyNNN wrote:La topnumar te-ai ajutat de TopME creat de SAMURAI? :) Ca si ala e /topNUMAR si afiseaza, doar ca tu ai facut si altele ;)) :D Oricum, e super tare pluginul, cred ca am sa il folosesc ;) !


#trebe dezactivat statsx?
1.Nu am folosit pluginul ala topme
2.Am scris ca trebuie dezactivat statsx

Re: Rank / Rankstats / Top

Posted: 20 Aug 2010, 12:42
by b[L]u
foarte frumos ...o sal folosesc pe server GJ! :D tineo tot asa ;)

Re: Rank / Rankstats / Top

Posted: 20 Aug 2010, 14:26
by S3ekEr^
Foarte tare pluginu. Am fost la teste :>

Re: Rank / Rankstats / Top

Posted: 20 Aug 2010, 14:53
by Arion
S3ekEr^ wrote:Foarte tare pluginu. Am fost la teste :>
Da ? :))

ON:Alte pareri ? :)