[ROZWIĄZANE] Zmiany formy treści pluginu r...
PXM
25.09.2012
assName #define CLASS_LEN 25 #define MAX_NAME_LENGTH 31 #define MAX_BUFFER_LENGTH 2047 #define TASK_SHOWCLASS 2222 //Buffers new t_sName[MAX_NAME_LENGTH + 1] = "" new g_sBuffer[MAX_BUFFER_LENGTH + 1] = "" new giXP[LEVELS+1]; new gszClass[LEVELS+1][CLASS_LEN]; new giPointer=1; new gcvarMaxName; new gcvarType, gcvarTop, gcvarList; new gmsgSayText; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_dictionary("statsx.txt"); register_clcmd("say /top10", "cmdTop10", 0, "- wyswietla range i statystyki"); register_clcmd("say /rank", "cmdRank", 0, "- wyswietla range i statystyki"); register_clcmd("say /rangi", "cmdHelp", 0, "- wyswietla liste rang"); register_clcmd("say_team /top10", "cmdTop10", 0, "- wyswietla range i statystyki"); register_clcmd("say_team /rank", "cmdRank", 0, "- wyswietla range i statystyki"); register_clcmd("say_team /rangi", "cmdHelp", 0, "- wyswietla liste rang"); gcvarMaxName = register_cvar("rangi_maxname", "Reszta jest milczeniem"); gcvarType = register_cvar("rangi_hud","0"); gcvarTop = register_cvar("rangi_top10","1"); gcvarList = register_cvar("rangi_list","1"); gmsgSayText = get_user_msgid("SayText"); } //CONFIG public plugin_cfg(){ new szFile[128]; get_configsdir(szFile, 127); add(szFile, 127, "/rangi.ini"); if(!file_exists(szFile)) return set_fail_state("Nie znalaziono pliku ranga.ini w folderze configs/"); new szLine[96], iLen=0, szClass[CLASS_LEN], szXP[16]; for(new i=0;read_file(szFile, i, szLine, 95, iLen);i++,szClass[0]=szXP[0]='^0'){ if( giPointer > LEVELS) break; if(iLen==0) continue; trim(szLine); if(szLine[0]=='^0' || szLine[0]==';') continue; parse(szLine, szClass, CLASS_LEN-1, szXP, 15); if(szClass[0] && szXP[0]){ giXP[giPointer]=str_to_num(szXP); copy(gszClass[giPointer], CLASS_LEN-1, szClass) giPointer++; } } return PLUGIN_CONTINUE; } //COMMANDS public cmdTop10(id){ if(get_pcvar_num(gcvarTop) <= 0){ print_colored(id, "* ^x04Top10^x01 jest wylaczone"); return PLUGIN_HANDLED; } format_top10(g_sBuffer) show_motd(id, g_sBuffer, "Top 10") return PLUGIN_CONTINUE; } public cmdRank(id) { static stats[8], body[8], rankpos, rankmax; get_user_stats(id, stats, body); rankpos = get_user_stats(id, stats, body); rankmax = get_statsnum(); print_colored(id, "* Twoja ranga to^x04 %s^x01, zajmujesz^x03 %d^x01 pozycje z^x03 %d", get_rankname(stats[0]), rankpos, rankmax); print_colored(id, "* Posiadasz^x03 %d^x01 zabojstw,^x03 %d^x01 smierci oraz^x03 %d^x01 headshot'ow, zadajac^x03 %d^x01 obrazen.", stats[STATS_KILLS ], stats[STATS_DEATHS], stats[STATS_HS], stats[STATS_DAMAGE]); return PLUGIN_HANDLED; } public cmdHelp(id){ if(get_pcvar_num(gcvarList) <= 0){ print_colored(id, "* ^x04Lista rang^x01 jest niedostepna"); return PLUGIN_HANDLED; } static sBuffer[MAX_BUFFER_LENGTH+1]; new iLen; iLen = formatex(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#id Nazwa Prog^n"); if(giPointer > 1) iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s < %d^n", 1, gszClass[1], giXP[1]); for(new i=2;i<giPointer;i++){ iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s %d-%d^n", i, gszClass[i], giXP[i-1]+1,giXP[i]); } new szMaxName[CLASS_LEN]; get_pcvar_string(gcvarMaxName, szMaxName, CLASS_LEN-1); iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "* %s > %d", szMaxName, giXP[giPointer-1]); show_motd(id, sBuffer, "Rangi"); return PLUGIN_HANDLED; } //FORWARDS public client_connect(id) { if(is_user_bot(id) || get_pcvar_num(gcvarType)==0) return; set_task(1.0,"taskDisplayRank",TASK_SHOWCLASS+id,_,_,"b"); } public client_disconnect(id) if(task_exists(TASK_SHOWCLASS+id)) remove_task(TASK_SHOWCLASS+id) //TASKS public taskDisplayRank(id){ id-=TASK_SHOWCLASS; static stats[8], body[8]; get_user_stats(id, stats, body); set_hudmessage(255, 255, 255, 0.15, 0.55); show_hudmessage(id, "Ranga: %s^nZabojstw: %d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ]); } //CLASS get_lvl_by_exp(iXP){ new i; for(i=1;i<=giPointer;i++){ if(giXP[i]>=iXP) break; } if(i > giPointer) return -1; return i; } get_rankname(frags){ static szClass[CLASS_LEN]; new iLvl=get_lvl_by_exp(frags); if(iLvl>=0) copy(szClass,CLASS_LEN-1, gszClass[iLvl]); else get_pcvar_string(gcvarMaxName, szClass, CLASS_LEN-1); return szClass; } //RANK // Stats formulas Float:effec(izStats[8]) { if (!izStats[STATS_KILLS]) return (0.0) return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS])) } Float:accuracy(izStats[8]) { if (!izStats[STATS_SHOTS]) return (0.0) return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS])) } // Get and format top 10 format_top10(sBuffer[MAX_BUFFER_LENGTH + 1]) { new iMax = get_statsnum() new izStats[8], izBody[8] new iLen = 0 if (iMax > 10) iMax = 10; new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16] format(lKills, 15, "%L", LANG_SERVER, "KILLS") format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS") format(lHits, 15, "%L", LANG_SERVER, "HITS") format(lShots, 15, "%L", LANG_SERVER, "SHOTS") format(lEff, 15, "%L", LANG_SERVER, "EFF") format(lAcc, 15, "%L", LANG_SERVER, "ACC") ucfirst(lEff) ucfirst(lAcc) iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", "Level", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc) for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++) { get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH) replace_all(t_sName, MAX_NAME_LENGTH, "<", "[") replace_all(t_sName, MAX_NAME_LENGTH, ">", "]") iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName,get_rankname(izStats[STATS_KILLS]), izStats[STATS_KILLS], izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats)) } } //STOCKS stock print_colored(id, const text[], any:...) { static szMessage[192]; szMessage[0]='^x01'; vformat(szMessage[1], 190, text, 3); if(id==0) { new plist[32], playernum; get_players(plist, playernum); for(new i = 0; i < playernum; i++) { id = plist[i]; message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id); write_byte(id); write_string(szMessage); message_end(); } } else { message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id); write_byte(id); write_string(szMessage); message_end(); } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
show_hudmessage(id, "Ranga: %s^nZabojstw: %d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ]);
Plugin wyświetla tak:
Ranga: ######
Zabójstw:#######
Ja bym potrzebował coś takiego:
Ranga: ######
Zabójstw: #######
Ranking: np 59/189
Poprostu dodać do tego jeszcze ranking gracza ;] Daje karme ;]
Użytkownik ShoOt3r edytował ten post 25.09.2012 12:15
Qline
25.09.2012
Witam, również dołączył bym się do prośby o ten Plugin tylko chciałbym żeby było tak.
!tRanga: !g######
!tZabójstw: !g#######
!tRanking: !g59!t/!g189
!g - zielony
!t - czerwony / niebieski
!tRanga: !g######
!tZabójstw: !g#######
!tRanking: !g59!t/!g189
!g - zielony
!t - czerwony / niebieski
sNH.
26.09.2012
Zobacz
Użytkownik SlaNdisH! edytował ten post 26.09.2012 21:53
assName
#define CLASS_LEN 25
#define MAX_NAME_LENGTH 31
#define MAX_BUFFER_LENGTH 2047
#define TASK_SHOWCLASS 2222
//Buffers
new t_sName[MAX_NAME_LENGTH + 1] = ""
new g_sBuffer[MAX_BUFFER_LENGTH + 1] = ""
new giXP[LEVELS+1];
new gszClass[LEVELS+1][CLASS_LEN];
new giPointer=1;
new gcvarMaxName;
new gcvarType, gcvarTop, gcvarList;
new gmsgSayText;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("statsx.txt");
register_clcmd("say /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
register_clcmd("say /rank", "cmdRank", 0, "- wyswietla range i statystyki");
register_clcmd("say /rangi", "cmdHelp", 0, "- wyswietla liste rang");
register_clcmd("say_team /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
register_clcmd("say_team /rank", "cmdRank", 0, "- wyswietla range i statystyki");
register_clcmd("say_team /rangi", "cmdHelp", 0, "- wyswietla liste rang");
gcvarMaxName = register_cvar("rangi_maxname", "Reszta jest milczeniem");
gcvarType = register_cvar("rangi_hud","0");
gcvarTop = register_cvar("rangi_top10","1");
gcvarList = register_cvar("rangi_list","1");
gmsgSayText = get_user_msgid("SayText");
}
//CONFIG
public plugin_cfg(){
new szFile[128];
get_configsdir(szFile, 127);
add(szFile, 127, "/rangi.ini");
if(!file_exists(szFile))
return set_fail_state("Nie znalaziono pliku ranga.ini w folderze configs/");
new szLine[96], iLen=0, szClass[CLASS_LEN], szXP[16];
for(new i=0;read_file(szFile, i, szLine, 95, iLen);i++,szClass[0]=szXP[0]='^0'){
if( giPointer > LEVELS) break;
if(iLen==0) continue;
trim(szLine);
if(szLine[0]=='^0' || szLine[0]==';') continue;
parse(szLine, szClass, CLASS_LEN-1, szXP, 15);
if(szClass[0] && szXP[0]){
giXP[giPointer]=str_to_num(szXP);
copy(gszClass[giPointer], CLASS_LEN-1, szClass)
giPointer++;
}
}
return PLUGIN_CONTINUE;
}
//COMMANDS
public cmdTop10(id){
if(get_pcvar_num(gcvarTop) <= 0){
print_colored(id, "* ^x04Top10^x01 jest wylaczone");
return PLUGIN_HANDLED;
}
format_top10(g_sBuffer)
show_motd(id, g_sBuffer, "Top 10")
return PLUGIN_CONTINUE;
}
public cmdRank(id)
{
static stats[8], body[8], rankpos, rankmax;
get_user_stats(id, stats, body);
rankpos = get_user_stats(id, stats, body);
rankmax = get_statsnum();
print_colored(id, "* Twoja ranga to^x04 %s^x01, zajmujesz^x03 %d^x01 pozycje z^x03 %d", get_rankname(stats[0]), rankpos, rankmax);
print_colored(id, "* Posiadasz^x03 %d^x01 zabojstw,^x03 %d^x01 smierci oraz^x03 %d^x01 headshot'ow, zadajac^x03 %d^x01 obrazen.", stats[STATS_KILLS ], stats[STATS_DEATHS], stats[STATS_HS], stats[STATS_DAMAGE]);
return PLUGIN_HANDLED;
}
public cmdHelp(id){
if(get_pcvar_num(gcvarList) <= 0){
print_colored(id, "* ^x04Lista rang^x01 jest niedostepna");
return PLUGIN_HANDLED;
}
static sBuffer[MAX_BUFFER_LENGTH+1];
new iLen;
iLen = formatex(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#id Nazwa Prog^n");
if(giPointer > 1)
iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s < %d^n", 1, gszClass[1], giXP[1]);
for(new i=2;i<giPointer;i++){
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s %d-%d^n", i, gszClass[i], giXP[i-1]+1,giXP[i]);
}
new szMaxName[CLASS_LEN];
get_pcvar_string(gcvarMaxName, szMaxName, CLASS_LEN-1);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "* %s > %d", szMaxName, giXP[giPointer-1]);
show_motd(id, sBuffer, "Rangi");
return PLUGIN_HANDLED;
}
//FORWARDS
public client_connect(id)
{
if(is_user_bot(id) || get_pcvar_num(gcvarType)==0)
return;
set_task(1.0,"taskDisplayRank",TASK_SHOWCLASS+id,_,_,"b");
}
public client_disconnect(id)
if(task_exists(TASK_SHOWCLASS+id))
remove_task(TASK_SHOWCLASS+id)
//TASKS
public taskDisplayRank(id){
id-=TASK_SHOWCLASS;
static stats[8], body[8];
get_user_stats(id, stats, body);
set_hudmessage(255, 255, 255, 0.15, 0.55);
show_hudmessage(id, "Ranga: %s^nZabojstw: %d^nRanking: %d/%d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ], rankpos, rankmax);
}
//CLASS
get_lvl_by_exp(iXP){
new i;
for(i=1;i<=giPointer;i++){
if(giXP[i]>=iXP)
break;
}
if(i > giPointer)
return -1;
return i;
}
get_rankname(frags){
static szClass[CLASS_LEN];
new iLvl=get_lvl_by_exp(frags);
if(iLvl>=0)
copy(szClass,CLASS_LEN-1, gszClass[iLvl]);
else
get_pcvar_string(gcvarMaxName, szClass, CLASS_LEN-1);
return szClass;
}
//RANK
// Stats formulas
Float:effec(izStats[8])
{
if (!izStats[STATS_KILLS])
return (0.0)
return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS]))
}
Float:accuracy(izStats[8])
{
if (!izStats[STATS_SHOTS])
return (0.0)
return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS]))
}
// Get and format top 10
format_top10(sBuffer[MAX_BUFFER_LENGTH + 1])
{
new iMax = get_statsnum()
new izStats[8], izBody[8]
new iLen = 0
if (iMax > 10)
iMax = 10;
new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16]
format(lKills, 15, "%L", LANG_SERVER, "KILLS")
format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS")
format(lHits, 15, "%L", LANG_SERVER, "HITS")
format(lShots, 15, "%L", LANG_SERVER, "SHOTS")
format(lEff, 15, "%L", LANG_SERVER, "EFF")
format(lAcc, 15, "%L", LANG_SERVER, "ACC")
ucfirst(lEff)
ucfirst(lAcc)
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", "Level", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc)
for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++)
{
get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH)
replace_all(t_sName, MAX_NAME_LENGTH, "<", "[")
replace_all(t_sName, MAX_NAME_LENGTH, ">", "]")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName,get_rankname(izStats[STATS_KILLS]), izStats[STATS_KILLS],
izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats))
}
}
//STOCKS
stock print_colored(id, const text[], any:...)
{
static szMessage[192];
szMessage[0]='^x01';
vformat(szMessage[1], 190, text, 3);
if(id==0)
{
new plist[32], playernum;
get_players(plist, playernum);
for(new i = 0; i < playernum; i++)
{
id = plist[i];
message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
write_byte(id);
write_string(szMessage);
message_end();
}
}
else
{
message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
write_byte(id);
write_string(szMessage);
message_end();
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
Użytkownik SlaNdisH! edytował ten post 26.09.2012 21:53
PXM
27.09.2012
#include <amxmodx> #include <amxmisc> #include <csx> #define PLUGIN "Rangi" #define VERSION "1.0" #define AUTHOR "R3X" // User stats parms id #define STATS_KILLS 0 #define STATS_DEATHS 1 #define STATS_HS 2 #define STATS_TKS 3 #define STATS_SHOTS 4 #define STATS_HITS 5 #define STATS_DAMAGE 6 //Max count of levels #define LEVELS 25 //Max len of ClassName #define CLASS_LEN 25 #define MAX_NAME_LENGTH 31 #define MAX_BUFFER_LENGTH 2047 #define TASK_SHOWCLASS 2222 //Buffers new t_sName[MAX_NAME_LENGTH + 1] = "" new g_sBuffer[MAX_BUFFER_LENGTH + 1] = "" new giXP[LEVELS+1]; new gszClass[LEVELS+1][CLASS_LEN]; new giPointer=1; new gcvarMaxName; new gcvarType, gcvarTop, gcvarList; new gmsgSayText; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_dictionary("statsx.txt"); register_clcmd("say /top10", "cmdTop10", 0, "- wyswietla range i statystyki"); register_clcmd("say /rank", "cmdRank", 0, "- wyswietla range i statystyki"); register_clcmd("say /rangi", "cmdHelp", 0, "- wyswietla liste rang"); register_clcmd("say_team /top10", "cmdTop10", 0, "- wyswietla range i statystyki"); register_clcmd("say_team /rank", "cmdRank", 0, "- wyswietla range i statystyki"); register_clcmd("say_team /rangi", "cmdHelp", 0, "- wyswietla liste rang"); gcvarMaxName = register_cvar("rangi_maxname", "Reszta jest milczeniem"); gcvarType = register_cvar("rangi_hud","0"); gcvarTop = register_cvar("rangi_top10","1"); gcvarList = register_cvar("rangi_list","1"); gmsgSayText = get_user_msgid("SayText"); } //CONFIG public plugin_cfg(){ new szFile[128]; get_configsdir(szFile, 127); add(szFile, 127, "/rangi.ini"); if(!file_exists(szFile)) return set_fail_state("Nie znalaziono pliku ranga.ini w folderze configs/"); new szLine[96], iLen=0, szClass[CLASS_LEN], szXP[16]; for(new i=0;read_file(szFile, i, szLine, 95, iLen);i++,szClass[0]=szXP[0]='^0'){ if( giPointer > LEVELS) break; if(iLen==0) continue; trim(szLine); if(szLine[0]=='^0' || szLine[0]==';') continue; parse(szLine, szClass, CLASS_LEN-1, szXP, 15); if(szClass[0] && szXP[0]){ giXP[giPointer]=str_to_num(szXP); copy(gszClass[giPointer], CLASS_LEN-1, szClass) giPointer++; } } return PLUGIN_CONTINUE; } //COMMANDS public cmdTop10(id){ if(get_pcvar_num(gcvarTop) <= 0){ print_colored(id, "* ^x04Top10^x01 jest wylaczone"); return PLUGIN_HANDLED; } format_top10(g_sBuffer) show_motd(id, g_sBuffer, "Top 10") return PLUGIN_CONTINUE; } public cmdRank(id) { static stats[8], body[8], rankpos, rankmax; get_user_stats(id, stats, body); rankpos = get_user_stats(id, stats, body); rankmax = get_statsnum(); print_colored(id, "* Twoja ranga to^x04 %s^x01, zajmujesz^x03 %d^x01 pozycje z^x03 %d", get_rankname(stats[0]), rankpos, rankmax); print_colored(id, "* Posiadasz^x03 %d^x01 zabojstw,^x03 %d^x01 smierci oraz^x03 %d^x01 headshot'ow, zadajac^x03 %d^x01 obrazen.", stats[STATS_KILLS ], stats[STATS_DEATHS], stats[STATS_HS], stats[STATS_DAMAGE]); return PLUGIN_HANDLED; } public cmdHelp(id){ if(get_pcvar_num(gcvarList) <= 0){ print_colored(id, "* ^x04Lista rang^x01 jest niedostepna"); return PLUGIN_HANDLED; } static sBuffer[MAX_BUFFER_LENGTH+1]; new iLen; iLen = formatex(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#id Nazwa Prog^n"); if(giPointer > 1) iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s < %d^n", 1, gszClass[1], giXP[1]); for(new i=2;i<giPointer;i++){ iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s %d-%d^n", i, gszClass[i], giXP[i-1]+1,giXP[i]); } new szMaxName[CLASS_LEN]; get_pcvar_string(gcvarMaxName, szMaxName, CLASS_LEN-1); iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "* %s > %d", szMaxName, giXP[giPointer-1]); show_motd(id, sBuffer, "Rangi"); return PLUGIN_HANDLED; } //FORWARDS public client_connect(id) { if(is_user_bot(id) || get_pcvar_num(gcvarType)==0) return; set_task(1.0,"taskDisplayRank",TASK_SHOWCLASS+id,_,_,"b"); } public client_disconnect(id) if(task_exists(TASK_SHOWCLASS+id)) remove_task(TASK_SHOWCLASS+id) //TASKS public taskDisplayRank(id){ id-=TASK_SHOWCLASS; static stats[8], body[8]; get_user_stats(id, stats, body); set_hudmessage(255, 255, 255, 0.15, 0.55); show_hudmessage(id, "Ranga: %s^nZabojstw: %d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ]); } //CLASS get_lvl_by_exp(iXP){ new i; for(i=1;i<=giPointer;i++){ if(giXP[i]>=iXP) break; } if(i > giPointer) return -1; return i; } get_rankname(frags){ static szClass[CLASS_LEN]; new iLvl=get_lvl_by_exp(frags); if(iLvl>=0) copy(szClass,CLASS_LEN-1, gszClass[iLvl]); else get_pcvar_string(gcvarMaxName, szClass, CLASS_LEN-1); return szClass; } //RANK // Stats formulas Float:effec(izStats[8]) { if (!izStats[STATS_KILLS]) return (0.0) return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS])) } Float:accuracy(izStats[8]) { if (!izStats[STATS_SHOTS]) return (0.0) return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS])) } // Get and format top 10 format_top10(sBuffer[MAX_BUFFER_LENGTH + 1]) { new iMax = get_statsnum() new izStats[8], izBody[8] new iLen = 0 if (iMax > 10) iMax = 10; new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16] format(lKills, 15, "%L", LANG_SERVER, "KILLS") format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS") format(lHits, 15, "%L", LANG_SERVER, "HITS") format(lShots, 15, "%L", LANG_SERVER, "SHOTS") format(lEff, 15, "%L", LANG_SERVER, "EFF") format(lAcc, 15, "%L", LANG_SERVER, "ACC") ucfirst(lEff) ucfirst(lAcc) iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", "Level", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc) for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++) { get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH) replace_all(t_sName, MAX_NAME_LENGTH, "<", "[") replace_all(t_sName, MAX_NAME_LENGTH, ">", "]") iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName,get_rankname(izStats[STATS_KILLS]), izStats[STATS_KILLS], izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats)) } } //STOCKS stock print_colored(id, const text[], any:...) { static szMessage[192]; szMessage[0]='^x01'; vformat(szMessage[1], 190, text, 3); if(id==0) { new plist[32], playernum; get_players(plist, playernum); for(new i = 0; i < playernum; i++) { id = plist[i]; message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id); write_byte(id); write_string(szMessage); message_end(); } } else { message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id); write_byte(id); write_string(szMessage); message_end(); } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
Cos w 1 poscie kodu ucielo, ale podmienilem na Twoja wersje i blad wywala ;/ Nie kompiluje w ogole ;/
Error: Undefined symbol "rankpos" on line 149
Użytkownik ShoOt3r edytował ten post 27.09.2012 13:23
sNH.
27.09.2012
Zaraz poprawię.
///
Mogą być warningi, ale tym się nie przejmuj.
Użytkownik SlaNdisH! edytował ten post 27.09.2012 14:41
///
Mogą być warningi, ale tym się nie przejmuj.
#include <amxmodx>
#include <amxmisc>
#include <csx>
#define PLUGIN "Rangi"
#define VERSION "1.0"
#define AUTHOR "R3X"
// User stats parms id
#define STATS_KILLS 0
#define STATS_DEATHS 1
#define STATS_HS 2
#define STATS_TKS 3
#define STATS_SHOTS 4
#define STATS_HITS 5
#define STATS_DAMAGE 6
//Max count of levels
#define LEVELS 25
//Max len of ClassName
#define CLASS_LEN 25
#define MAX_NAME_LENGTH 31
#define MAX_BUFFER_LENGTH 2047
#define TASK_SHOWCLASS 2222
//Buffers
new t_sName[MAX_NAME_LENGTH + 1] = ""
new g_sBuffer[MAX_BUFFER_LENGTH + 1] = ""
new giXP[LEVELS+1];
new gszClass[LEVELS+1][CLASS_LEN];
new giPointer=1;
new gcvarMaxName;
new gcvarType, gcvarTop, gcvarList;
new gmsgSayText;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("statsx.txt");
register_clcmd("say /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
register_clcmd("say /rank", "cmdRank", 0, "- wyswietla range i statystyki");
register_clcmd("say /rangi", "cmdHelp", 0, "- wyswietla liste rang");
register_clcmd("say_team /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
register_clcmd("say_team /rank", "cmdRank", 0, "- wyswietla range i statystyki");
register_clcmd("say_team /rangi", "cmdHelp", 0, "- wyswietla liste rang");
gcvarMaxName = register_cvar("rangi_maxname", "Reszta jest milczeniem");
gcvarType = register_cvar("rangi_hud","0");
gcvarTop = register_cvar("rangi_top10","1");
gcvarList = register_cvar("rangi_list","1");
gmsgSayText = get_user_msgid("SayText");
}
//CONFIG
public plugin_cfg(){
new szFile[128];
get_configsdir(szFile, 127);
add(szFile, 127, "/rangi.ini");
if(!file_exists(szFile))
return set_fail_state("Nie znalaziono pliku ranga.ini w folderze configs/");
new szLine[96], iLen=0, szClass[CLASS_LEN], szXP[16];
for(new i=0;read_file(szFile, i, szLine, 95, iLen);i++,szClass[0]=szXP[0]='^0'){
if( giPointer > LEVELS) break;
if(iLen==0) continue;
trim(szLine);
if(szLine[0]=='^0' || szLine[0]==';') continue;
parse(szLine, szClass, CLASS_LEN-1, szXP, 15);
if(szClass[0] && szXP[0]){
giXP[giPointer]=str_to_num(szXP);
copy(gszClass[giPointer], CLASS_LEN-1, szClass)
giPointer++;
}
}
return PLUGIN_CONTINUE;
}
//COMMANDS
public cmdTop10(id){
if(get_pcvar_num(gcvarTop) <= 0){
print_colored(id, "* ^x04Top10^x01 jest wylaczone");
return PLUGIN_HANDLED;
}
format_top10(g_sBuffer)
show_motd(id, g_sBuffer, "Top 10")
return PLUGIN_CONTINUE;
}
public cmdRank(id)
{
static stats[8], body[8], rankpos, rankmax;
get_user_stats(id, stats, body);
rankpos = get_user_stats(id, stats, body);
rankmax = get_statsnum();
print_colored(id, "* Twoja ranga to^x04 %s^x01, zajmujesz^x03 %d^x01 pozycje z^x03 %d", get_rankname(stats[0]), rankpos, rankmax);
print_colored(id, "* Posiadasz^x03 %d^x01 zabojstw,^x03 %d^x01 smierci oraz^x03 %d^x01 headshot'ow, zadajac^x03 %d^x01 obrazen.", stats[STATS_KILLS ], stats[STATS_DEATHS], stats[STATS_HS], stats[STATS_DAMAGE]);
return PLUGIN_HANDLED;
}
public cmdHelp(id){
if(get_pcvar_num(gcvarList) <= 0){
print_colored(id, "* ^x04Lista rang^x01 jest niedostepna");
return PLUGIN_HANDLED;
}
static sBuffer[MAX_BUFFER_LENGTH+1];
new iLen;
iLen = formatex(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#id Nazwa Prog^n");
if(giPointer > 1)
iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s < %d^n", 1, gszClass[1], giXP[1]);
for(new i=2;i<giPointer;i++){
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s %d-%d^n", i, gszClass[i], giXP[i-1]+1,giXP[i]);
}
new szMaxName[CLASS_LEN];
get_pcvar_string(gcvarMaxName, szMaxName, CLASS_LEN-1);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "* %s > %d", szMaxName, giXP[giPointer-1]);
show_motd(id, sBuffer, "Rangi");
return PLUGIN_HANDLED;
}
//FORWARDS
public client_connect(id)
{
if(is_user_bot(id) || get_pcvar_num(gcvarType)==0)
return;
set_task(1.0,"taskDisplayRank",TASK_SHOWCLASS+id,_,_,"b");
}
public client_disconnect(id)
if(task_exists(TASK_SHOWCLASS+id))
remove_task(TASK_SHOWCLASS+id)
//TASKS
public taskDisplayRank(id){
id-=TASK_SHOWCLASS;
static stats[8], body[8] ,rankpos, rankmax;
rankpos = get_user_stats(id, stats, body);
rankmax = get_statsnum()
set_hudmessage(255, 255, 255, 0.15, 0.55);
show_hudmessage(id, "Ranga: %s^nZabojstw: %d^nRanking: %d/%d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ], rankpos, rankmax);
}
//CLASS
get_lvl_by_exp(iXP){
new i;
for(i=1;i<=giPointer;i++){
if(giXP[i]>=iXP)
break;
}
if(i > giPointer)
return -1;
return i;
}
get_rankname(frags){
static szClass[CLASS_LEN];
new iLvl=get_lvl_by_exp(frags);
if(iLvl>=0)
copy(szClass,CLASS_LEN-1, gszClass[iLvl]);
else
get_pcvar_string(gcvarMaxName, szClass, CLASS_LEN-1);
return szClass;
}
//RANK
// Stats formulas
Float:effec(izStats[8])
{
if (!izStats[STATS_KILLS])
return (0.0)
return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS]))
}
Float:accuracy(izStats[8])
{
if (!izStats[STATS_SHOTS])
return (0.0)
return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS]))
}
// Get and format top 10
format_top10(sBuffer[MAX_BUFFER_LENGTH + 1])
{
new iMax = get_statsnum()
new izStats[8], izBody[8]
new iLen = 0
if (iMax > 10)
iMax = 10;
new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16]
format(lKills, 15, "%L", LANG_SERVER, "KILLS")
format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS")
format(lHits, 15, "%L", LANG_SERVER, "HITS")
format(lShots, 15, "%L", LANG_SERVER, "SHOTS")
format(lEff, 15, "%L", LANG_SERVER, "EFF")
format(lAcc, 15, "%L", LANG_SERVER, "ACC")
ucfirst(lEff)
ucfirst(lAcc)
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", "Level", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc)
for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++)
{
get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH)
replace_all(t_sName, MAX_NAME_LENGTH, "<", "[")
replace_all(t_sName, MAX_NAME_LENGTH, ">", "]")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName,get_rankname(izStats[STATS_KILLS]), izStats[STATS_KILLS],
izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats))
}
}
//STOCKS
stock print_colored(id, const text[], any:...)
{
static szMessage[192];
szMessage[0]='^x01';
vformat(szMessage[1], 190, text, 3);
if(id==0)
{
new plist[32], playernum;
get_players(plist, playernum);
for(new i = 0; i < playernum; i++)
{
id = plist[i];
message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
write_byte(id);
write_string(szMessage);
message_end();
}
}
else
{
message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
write_byte(id);
write_string(szMessage);
message_end();
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
Użytkownik SlaNdisH! edytował ten post 27.09.2012 14:41
Kawon
27.09.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL