Spoiler
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>
#define PLUGIN "Cod-Stats"
#define VERSION "1.0"
#define AUTHOR "G[o]Q"
new const klasy[][] = {"Brak",
"Snajper",
"Komandos",
"Strzelec wyborowy",
"Obronca",
"Medyk",
"Wsparcie ogniowe",
"Saper",
"Demolitions",
"Rusher",
"Rambo"
};
new mKlasa // Menu
new mcbKlasa // Menu Callback
new Array:tab_gracze
new Array:exp_gracze
new p_info[33][11][6]
new g_vault;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /topxp","menu");
register_clcmd("say /myxp","private");
/* Menu Klasa */
/* Use menu_display(id, mKlasa, 0) to show the menu to an user. */
mKlasa = menu_create("Klasa", "mh_Klasa")
mcbKlasa = menu_makecallback("mcb_Klasa")
for(new i=1;i<11;i++){
new txt[128]
format(txt,127,"%s",klasy[i])
menu_additem(mKlasa, txt, "ma_Klasa", ADMIN_ALL, mcbKlasa)
}
tab_gracze=ArrayCreate(33,128);
exp_gracze=ArrayCreate(6,128);
g_vault = nvault_open("CodMod");
set_task(300.0,"spam",0,_,_,"b")
}
public spam(){
switch(random_num(0,1)){
case 0:ColorChat(0, GREEN, "[Cod-Stats] ^x03 aby zobaczyc 10 osob z najwiekszym expem na serverze wpisz ^x04/topxp");
case 1:ColorChat(0, GREEN, "[Cod-Stats] ^x03 aby zobaczyc Statystyki swoich klas wpisz ^x04/myxp");
}
}
public menu(id){
menu_display(id, mKlasa, 0)
}
public client_connect(id){
new name[33];
get_user_name(id,name,32);
if(!sprawdz(name)) zapisz(name)
}
public private(id){
for(new i=1;i<11;i++){
WczytajDane2(id,i)
}
pokaz_klasy(id)
}
public pokaz_klasy(id){
new tresc[1200]
format(tresc,1199,"<html><body bgcolor=^"black^"><center>")
format(tresc,1199,"%s<table width=^"700^" border=^"1^" style=^"border-collapse: collapse;border-color: black;color: white;border-style: solid;text-align: center^">",tresc)
format(tresc,1199,"%s<tbody><tr><td>Klasa</td>",tresc)
format(tresc,1199,"%s<td>Exp</td><td>LvL</td>",tresc)
format(tresc,1199,"%s<td>Int.</td><td >Zycie</td><td>Wytrz.</td><td >Kon.</td>",tresc)
for(new i=1;i<11;i++){
format(tresc,1199,"%s<tr><td>%s</td>",tresc,klasy[i])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][0])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][1])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][2])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][3])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][4])
format(tresc,1199,"%s<td>%d</td></tr>",tresc,p_info[id][i][5])
}
format(tresc,1199,"%s</tbody></table></center></body><html>",tresc)
show_motd(id,tresc)
}
public WczytajDane2(id, klasa){ //klasa 1-10
new vaultkey[64],vaultdata[256];
new parm[6]
new name[33]
get_user_name(id,name,33)
format(vaultkey,63,"%s-%i-cod", name, klasa);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", parm[0], parm[1], parm[2], parm[3], parm[4], parm[5]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new tparam[6][33]
parse(vaultdata, tparam[0], 32, tparam[1], 32, tparam[2], 32, tparam[3], 32, tparam[4], 32, tparam[5], 32);
parm[0] = str_to_num(tparam[0]);//xp
parm[1]= str_to_num(tparam[1])>0?str_to_num(tparam[1]):1;//lvl
parm[2] = str_to_num(tparam[2]);//int
parm[3] = str_to_num(tparam[3]);//health
parm[4] = str_to_num(tparam[4]);//wytrzymalosc
parm[5] = str_to_num(tparam[5]);//kondycja
for(new j=0;j<6;j++)
p_info[id][klasa][j]=parm[j]
}
public WczytajDane(name[33], klasa){ //klasa 1-10
new vaultkey[64],vaultdata[256];
new parm[6]
format(vaultkey,63,"%s-%i-cod", name, klasa);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", parm[0], parm[1], parm[2], parm[3], parm[4], parm[5]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new tparam[6][33]
parse(vaultdata, tparam[0], 32, tparam[1], 32, tparam[2], 32, tparam[3], 32, tparam[4], 32, tparam[5], 32);
parm[0] = str_to_num(tparam[0]);//xp
parm[1]= str_to_num(tparam[1])>0?str_to_num(tparam[1]):1;//lvl
parm[2] = str_to_num(tparam[2]);//int
parm[3] = str_to_num(tparam[3]);//health
parm[4] = str_to_num(tparam[4]);//wytrzymalosc
parm[5] = str_to_num(tparam[5]);//kondycja
ArrayPushArray(exp_gracze,parm)
}
public sortuj(){
new size=ArraySize(exp_gracze)
for(new i=0;i<size-1;i++){
for (new j=size-1;j>i;j--){
new tptab[6]
new tptab2[6]
ArrayGetArray(exp_gracze,j,tptab)
ArrayGetArray(exp_gracze,j-1,tptab2)
if (tptab2[0]<tptab[0]){
ArraySwap(exp_gracze,j,j-1)
ArraySwap(tab_gracze,j,j-1)
}
}
}
}
public create_arry(klasa){
new text[128],chars ,nick[33]
new linijka=0
static configdir[64],plik[128]
get_configsdir(configdir,63)
formatex(plik,127,"%s/gracze.ini",configdir)
ArrayClear(tab_gracze)
ArrayClear(exp_gracze)
do{
linijka = read_file(plik,linijka,text,127,chars)
if(!chars) continue
parse(text, nick,32)
ArrayPushString(tab_gracze,nick);
WczytajDane(nick, klasa)
}
while(linijka!=0)
sortuj()
return PLUGIN_CONTINUE
}
public pokaz(id,klasa){
create_arry(klasa)
new rozmiar=ArraySize(exp_gracze)>10?10:ArraySize(exp_gracze);
new tresc[1200]
format(tresc,1199,"<html><body bgcolor=^"black^"><center><img src='http://amxx.pl/uploads/images/amxx.pl-1275233083-U6279.jpg'><br /><br />")
format(tresc,1199,"%s<table width=^"700^" border=^"1^" style=^"border-collapse: collapse;border-color: black;color: white;border-style: solid;text-align: center^">",tresc)
format(tresc,1199,"%s<tbody><tr><td>Pos.</td>",tresc)
format(tresc,1199,"%s<td>Nick</td><td>Exp</td>",tresc)
format(tresc,1199,"%s<td>LvL</td>",tresc)
for(new i=0;i<rozmiar;i++){
new tmptab[33],tmptab2[6]
ArrayGetArray(tab_gracze,i,tmptab)
ArrayGetArray(exp_gracze,i,tmptab2)
format(tresc,1199,"%s<tr><td>%d</td>",tresc,i+1)
format(tresc,1199,"%s<td>%s</td>",tresc,tmptab)
format(tresc,1199,"%s<td>%d</td>",tresc,tmptab2[0])
format(tresc,1199,"%s<td>%d</td></tr>",tresc,tmptab2[1])
}
format(tresc,1199,"%s</tbody></table></center></body><html>",tresc)
show_motd(id,tresc)
}
public sprawdz(source[33]){
new linijka=0,text[128],chars
static configdir[64],plik[128]
new nick[33],name[33]
name=source;
get_configsdir(configdir,63)
formatex(plik,127,"%s/gracze.ini",configdir)
do{
linijka = read_file(plik,linijka,text,127,chars)
if((text[0]==';') || !chars) continue
parse(text, nick,32)
if (equali(name,nick)) return 1
}
while(linijka!=0)
return 0
}
public zapisz(source[33]){
new wpis[128]
new nick[33];
static configdir[64],plik[128]
nick=source
format(wpis,127,"^"%s^"",nick)
get_configsdir(configdir,63)
formatex(plik,127,"%s/gracze.ini",configdir)
write_file(plik,wpis,-1)
log_to_file("Cstats.txt","Gracz o nicku %s zostal dodany do bazy statystyk",nick)
return PLUGIN_CONTINUE
}
/* Menu Klasa */
public mh_Klasa(id, menu, item) {
new opcja
switch(item){
case 0:opcja=1
case 1:opcja=2
case 2:opcja=3
case 3:opcja=4
case 4:opcja=5
case 5:opcja=6
case 6:opcja=7
case 7:opcja=8
case 8:opcja=9
case 9:opcja=10
case MENU_EXIT:{
menu_destroy(mKlasa);
return PLUGIN_CONTINUE;
}
}
pokaz(id,opcja)
return PLUGIN_CONTINUE;
}
public ma_Klasa(id) {
/* This event is called when an item was selected */
}
public mcb_Klasa(id, menu, item) {
/* This is the callback-event, here you can set items enabled or disabled. */
/* If you want to enable an item, use: return ITEM_ENABLED */
/* If you want to disable an item, use: return ITEM_DISABLED */
return ITEM_ENABLED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>
#define PLUGIN "Cod-Stats"
#define VERSION "1.0"
#define AUTHOR "G[o]Q"
new const klasy[][] = {"Brak",
"Snajper",
"Komandos",
"Strzelec wyborowy",
"Obronca",
"Medyk",
"Wsparcie ogniowe",
"Saper",
"Demolitions",
"Rusher",
"Rambo"
};
new mKlasa // Menu
new mcbKlasa // Menu Callback
new Array:tab_gracze
new Array:exp_gracze
new p_info[33][11][6]
new g_vault;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /topxp","menu");
register_clcmd("say /myxp","private");
/* Menu Klasa */
/* Use menu_display(id, mKlasa, 0) to show the menu to an user. */
mKlasa = menu_create("Klasa", "mh_Klasa")
mcbKlasa = menu_makecallback("mcb_Klasa")
for(new i=1;i<11;i++){
new txt[128]
format(txt,127,"%s",klasy[i])
menu_additem(mKlasa, txt, "ma_Klasa", ADMIN_ALL, mcbKlasa)
}
tab_gracze=ArrayCreate(33,128);
exp_gracze=ArrayCreate(6,128);
g_vault = nvault_open("CodMod");
set_task(300.0,"spam",0,_,_,"b")
}
public spam(){
switch(random_num(0,1)){
case 0:ColorChat(0, GREEN, "[Cod-Stats] ^x03 aby zobaczyc 10 osob z najwiekszym expem na serverze wpisz ^x04/topxp");
case 1:ColorChat(0, GREEN, "[Cod-Stats] ^x03 aby zobaczyc Statystyki swoich klas wpisz ^x04/myxp");
}
}
public menu(id){
menu_display(id, mKlasa, 0)
}
public client_connect(id){
new name[33];
get_user_name(id,name,32);
if(!sprawdz(name)) zapisz(name)
}
public private(id){
for(new i=1;i<11;i++){
WczytajDane2(id,i)
}
pokaz_klasy(id)
}
public pokaz_klasy(id){
new tresc[1200]
format(tresc,1199,"<html><body bgcolor=^"black^"><center>")
format(tresc,1199,"%s<table width=^"700^" border=^"1^" style=^"border-collapse: collapse;border-color: black;color: white;border-style: solid;text-align: center^">",tresc)
format(tresc,1199,"%s<tbody><tr><td>Klasa</td>",tresc)
format(tresc,1199,"%s<td>Exp</td><td>LvL</td>",tresc)
format(tresc,1199,"%s<td>Int.</td><td >Zycie</td><td>Wytrz.</td><td >Kon.</td>",tresc)
for(new i=1;i<11;i++){
format(tresc,1199,"%s<tr><td>%s</td>",tresc,klasy[i])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][0])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][1])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][2])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][3])
format(tresc,1199,"%s<td>%d</td>",tresc,p_info[id][i][4])
format(tresc,1199,"%s<td>%d</td></tr>",tresc,p_info[id][i][5])
}
format(tresc,1199,"%s</tbody></table></center></body><html>",tresc)
show_motd(id,tresc)
}
public WczytajDane2(id, klasa){ //klasa 1-10
new vaultkey[64],vaultdata[256];
new parm[6]
new name[33]
get_user_name(id,name,33)
format(vaultkey,63,"%s-%i-cod", name, klasa);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", parm[0], parm[1], parm[2], parm[3], parm[4], parm[5]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new tparam[6][33]
parse(vaultdata, tparam[0], 32, tparam[1], 32, tparam[2], 32, tparam[3], 32, tparam[4], 32, tparam[5], 32);
parm[0] = str_to_num(tparam[0]);//xp
parm[1]= str_to_num(tparam[1])>0?str_to_num(tparam[1]):1;//lvl
parm[2] = str_to_num(tparam[2]);//int
parm[3] = str_to_num(tparam[3]);//health
parm[4] = str_to_num(tparam[4]);//wytrzymalosc
parm[5] = str_to_num(tparam[5]);//kondycja
for(new j=0;j<6;j++)
p_info[id][klasa][j]=parm[j]
}
public WczytajDane(name[33], klasa){ //klasa 1-10
new vaultkey[64],vaultdata[256];
new parm[6]
format(vaultkey,63,"%s-%i-cod", name, klasa);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", parm[0], parm[1], parm[2], parm[3], parm[4], parm[5]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new tparam[6][33]
parse(vaultdata, tparam[0], 32, tparam[1], 32, tparam[2], 32, tparam[3], 32, tparam[4], 32, tparam[5], 32);
parm[0] = str_to_num(tparam[0]);//xp
parm[1]= str_to_num(tparam[1])>0?str_to_num(tparam[1]):1;//lvl
parm[2] = str_to_num(tparam[2]);//int
parm[3] = str_to_num(tparam[3]);//health
parm[4] = str_to_num(tparam[4]);//wytrzymalosc
parm[5] = str_to_num(tparam[5]);//kondycja
ArrayPushArray(exp_gracze,parm)
}
public sortuj(){
new size=ArraySize(exp_gracze)
for(new i=0;i<size-1;i++){
for (new j=size-1;j>i;j--){
new tptab[6]
new tptab2[6]
ArrayGetArray(exp_gracze,j,tptab)
ArrayGetArray(exp_gracze,j-1,tptab2)
if (tptab2[0]<tptab[0]){
ArraySwap(exp_gracze,j,j-1)
ArraySwap(tab_gracze,j,j-1)
}
}
}
}
public create_arry(klasa){
new text[128],chars ,nick[33]
new linijka=0
static configdir[64],plik[128]
get_configsdir(configdir,63)
formatex(plik,127,"%s/gracze.ini",configdir)
ArrayClear(tab_gracze)
ArrayClear(exp_gracze)
do{
linijka = read_file(plik,linijka,text,127,chars)
if(!chars) continue
parse(text, nick,32)
ArrayPushString(tab_gracze,nick);
WczytajDane(nick, klasa)
}
while(linijka!=0)
sortuj()
return PLUGIN_CONTINUE
}
public pokaz(id,klasa){
create_arry(klasa)
new rozmiar=ArraySize(exp_gracze)>10?10:ArraySize(exp_gracze);
new tresc[1200]
format(tresc,1199,"<html><body bgcolor=^"black^"><center><img src='http://amxx.pl/uploads/images/amxx.pl-1275233083-U6279.jpg'><br /><br />")
format(tresc,1199,"%s<table width=^"700^" border=^"1^" style=^"border-collapse: collapse;border-color: black;color: white;border-style: solid;text-align: center^">",tresc)
format(tresc,1199,"%s<tbody><tr><td>Pos.</td>",tresc)
format(tresc,1199,"%s<td>Nick</td><td>Exp</td>",tresc)
format(tresc,1199,"%s<td>LvL</td>",tresc)
for(new i=0;i<rozmiar;i++){
new tmptab[33],tmptab2[6]
ArrayGetArray(tab_gracze,i,tmptab)
ArrayGetArray(exp_gracze,i,tmptab2)
format(tresc,1199,"%s<tr><td>%d</td>",tresc,i+1)
format(tresc,1199,"%s<td>%s</td>",tresc,tmptab)
format(tresc,1199,"%s<td>%d</td>",tresc,tmptab2[0])
format(tresc,1199,"%s<td>%d</td></tr>",tresc,tmptab2[1])
}
format(tresc,1199,"%s</tbody></table></center></body><html>",tresc)
show_motd(id,tresc)
}
public sprawdz(source[33]){
new linijka=0,text[128],chars
static configdir[64],plik[128]
new nick[33],name[33]
name=source;
get_configsdir(configdir,63)
formatex(plik,127,"%s/gracze.ini",configdir)
do{
linijka = read_file(plik,linijka,text,127,chars)
if((text[0]==';') || !chars) continue
parse(text, nick,32)
if (equali(name,nick)) return 1
}
while(linijka!=0)
return 0
}
public zapisz(source[33]){
new wpis[128]
new nick[33];
static configdir[64],plik[128]
nick=source
format(wpis,127,"^"%s^"",nick)
get_configsdir(configdir,63)
formatex(plik,127,"%s/gracze.ini",configdir)
write_file(plik,wpis,-1)
log_to_file("Cstats.txt","Gracz o nicku %s zostal dodany do bazy statystyk",nick)
return PLUGIN_CONTINUE
}
/* Menu Klasa */
public mh_Klasa(id, menu, item) {
new opcja
switch(item){
case 0:opcja=1
case 1:opcja=2
case 2:opcja=3
case 3:opcja=4
case 4:opcja=5
case 5:opcja=6
case 6:opcja=7
case 7:opcja=8
case 8:opcja=9
case 9:opcja=10
case MENU_EXIT:{
menu_destroy(mKlasa);
return PLUGIN_CONTINUE;
}
}
pokaz(id,opcja)
return PLUGIN_CONTINUE;
}
public ma_Klasa(id) {
/* This event is called when an item was selected */
}
public mcb_Klasa(id, menu, item) {
/* This is the callback-event, here you can set items enabled or disabled. */
/* If you want to enable an item, use: return ITEM_ENABLED */
/* If you want to disable an item, use: return ITEM_DISABLED */
return ITEM_ENABLED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
REFRESH ?