Sprawdz
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#include <fakemeta>
#include <fun>
new nazwa_gracza[33][64];
new zabicia_gracza[33], ranga_gracza[33];
new vault;
new limit_rang = 5;
new nazwy_rang[][] =
{
"Nazwa 1",
"Nazwa 2",
"Nazwa 3",
"Nazwa 4",
"Nazwa 5"
}
new zabicia_poziomu[] =
{
0, 8, 20, 36, 60
}
public plugin_init()
{
register_plugin("RangMod", "1.0", "Linux`");
register_event("DeathMsg", "Death", "a");
register_message(get_user_msgid("SayText"),"handleSayText");
vault = nvault_open("RangMod");
}
public client_authorized(id)
{
get_user_name(id, nazwa_gracza[id], 63);
zabicia_gracza[id] = 0;
ranga_gracza[id] = 0;
WczytajDane(id);
}
public client_disconnect(id)
{
ZapiszDane(id);
}
public Death()
{
new killer = read_data(1);
new id = read_data(2);
if(!is_user_connected(killer) || !is_user_connected(id))
return;
if(get_user_team(id) != get_user_team(killer))
{
zabicia_gracza[killer]++;
SprawdzPoziom(killer);
}
}
public handleSayText(msgId,msgDest,msgEnt)
{
new id = get_msg_arg_int(1);
if(!is_user_connected(id))
return;
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp));
new szPrefix[64];
formatex(szPrefix,charsmax(szPrefix),"^x04[%s]", nazwy_rang[ranga_gracza[id]]);
if(!equal(szTmp,"#Cstrike_Chat_All"))
{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else
{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
public SprawdzPoziom(id)
{
while(zabicia_gracza[id] >= zabicia_poziomu[ranga_gracza[id]] && ranga_gracza[id] < limit_rang)
ranga_gracza[id]++;
while(zabicia_gracza[id] < zabicia_poziomu[ranga_gracza[id]-1])
ranga_gracza[id]--;
if(ranga_gracza[id] > limit_rang)
ranga_gracza[id] = limit_rang;
ZapiszDane(id);
}
public ZapiszDane(id)
{
new vaultkey[128], vaultdata[256], identyfikator[64];
format(vaultdata, charsmax(vaultdata), "#%i#%i", zabicia_gracza[id], ranga_gracza[id]);
format(vaultkey, charsmax(vaultkey), "%s-rang", identyfikator, copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]));
nvault_set(vault, vaultkey, vaultdata);
}
public WczytajDane(id)
{
new vaultkey[128],vaultdata[256], identyfikator[64];
format(vaultkey, charsmax(vaultkey),"%s-rang", identyfikator, copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]));
if(!nvault_get(vault, vaultkey, vaultdata, 255))
{
format(vaultkey, charsmax(vaultkey), "%s-rang", nazwa_gracza[id]);
nvault_get(vault, vaultkey, vaultdata, 255);
}
replace_all(vaultdata, 255, "#", " ");
new danegracza[2][32];
parse(vaultdata, danegracza[0], 31, danegracza[1], 31);
zabicia_gracza[id] = str_to_num(danegracza[0]);
ranga_gracza[id] = str_to_num(danegracza[1]);
}
Kod wyciagniety z starego coda wiec i ogolna zasada dodawania rang jest taka sama. Jesli chcesz dodac nowa range to dodajesz ja w zmiennej "nazwy_rang" i ustawiasz po ilu zabojstwach ma byc dostepna w zmiennej "zabicia_gracza". Po dodaniu nowej rangi musisz rozszerzyc maksymalny limit rang. To tyle w zasadzie.