Salut, am si eu o problema la un plugin, as dori sa-mi modificati urmatoarele:
- cand scriu /top15, imi apar numai 12 jucatori, eu vreau sa apara 15;
- vreau ca atunci cand scriu /top15, sa se auda sunetul ala, "Top fifteen";
- vreau ca atunci cand scriu /rankstats, sa se auda sunetul: "user stats".
SURSA:
--------------------------------------------------------------------------
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <csx>
#pragma semicolon 1
#define MAX_BUFFER_LENGTH 2047
#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
new g_sBuffer[MAX_BUFFER_LENGTH + 1] = "";
new g_TopNum;
new cvar_top;
new cvar_rank;
new cvar_rankstats;
public plugin_init() {
register_plugin("Rank", "0.2", "Ex3cuTioN");
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("amx_stats_top","1");
cvar_rank = register_cvar("amx_stats_rank","1");
cvar_rankstats = register_cvar("amx_stats_rankstas","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","");
g_TopNum = str_to_num(s_Args);
cmdTop15(id);
}
return PLUGIN_CONTINUE;
}
public cmdRank(id) {
if(get_pcvar_num(cvar_rank) == 0) {
ColorChat(id,GREEN,"[Rank]^x01 Dezactivat");
return PLUGIN_HANDLED;
}
new izStats[8], izBody[8];
new iRankPos, iRankMax;
new nick[32],nickplayer[32];
new arg[32];
read_argv(1, arg, 31);
new player = cmd_target(id,arg,14);
iRankMax = get_statsnum();
get_user_name(id,nick,31);
get_user_name(player,nickplayer,31);
if(equali(arg,"")) {
iRankPos = get_user_stats(id, izStats, izBody);
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.",nick,iRankPos,iRankMax,izStats[STATS_KILLS],izStats[STATS_DEATHS]);
ColorChat(id,GREEN,"[Rank]^x01 Pentru mai multe detalii tasteaza^x03 /rankstats");
return PLUGIN_HANDLED;
}
if(!is_user_connected(player) || !player) {
ColorChat(id,GREEN,"[Rank]^x01 Acest user nu este pe server");
return PLUGIN_HANDLED;
}
iRankPos = get_user_stats(player, izStats, izBody);
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.",nickplayer,iRankPos,iRankMax,izStats[STATS_KILLS],izStats[STATS_DEATHS]);
ColorChat(id,GREEN,"[Rank]^x01 Pentru mai multe detalii despre^x03 %s^x01 tasteaza^x03 /rankstats %s",nickplayer,nickplayer);
return PLUGIN_HANDLED;
}
public cmdRankStats(id) {
if(get_pcvar_num(cvar_rankstats) == 0) {
ColorChat(id,GREEN,"[RankStats]^x01 Dezactivat");
return PLUGIN_HANDLED;
}
new nick[32];
client_cmd(id,"spk ^"vox/deeoo user stats^"");
format_rankstats(id, g_sBuffer);
get_user_name(id, nick, 31);
show_motd(id, g_sBuffer, nick);
return PLUGIN_CONTINUE;
}
format_rankstats(id, sBuffer[MAX_BUFFER_LENGTH + 1]) {
new izStats[8] = {0, ...};
new izBody[8];
new iRankPos, iLen, iRankMax;
new nick[32],nickplayer[32];
new arg[32];
new hostname[64];
get_cvar_string("hostname",hostname,63);
read_argv(1, arg, 31);
new player = cmd_target(id,arg,14);
get_user_name(id,nick,31);
get_user_name(player,nickplayer,31);
iRankMax = get_statsnum();
if(equali(arg,"")) {
iRankPos = get_user_stats(id, izStats, izBody);
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><pre>");
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<center><b><font size=^"4^" color=rgb(255,255,255)>Statisticile tale pe </font><font size=^"4^" color=rgb(255,0,0)>%s</font></b></center>^n^n",hostname);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font size =^"3^" color=rgb(255,0,0)>%s,</font></b>^n^n",nick);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Esti pe locul</font><font color=rgb(255,0,0)> %d<font color=rgb(255,255,255)> din</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> jucatori</b>^n",iRankPos,iRankMax);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Ai omorat</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> jucatori</font><font color=rgb(255,0,0)> [%d in cap]</b>^n",izStats[STATS_KILLS],izStats[STATS_HS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Ai fost omorat de</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> ori</font></b>^n",izStats[STATS_DEATHS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Ai tras cu arma de</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> ori</font></b>^n",izStats[STATS_SHOTS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Ai lovit adversarii tai de</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> ori</font></b>^n",izStats[STATS_HITS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Eficienta ta este de</font><font color=rgb(255,0,0)> %0.2f%%</font></b>^n",effec(izStats));
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Precizia ta de tintire este de</font><font color=rgb(255,0,0)> %0.2f%%</font></b>^n^n",accuracy(izStats));
}
else {
if(!is_user_connected(player) || !player) {
ColorChat(id,GREEN,"[Rank]^x01 Acest user nu este pe server");
return PLUGIN_HANDLED;
}
iRankPos = get_user_stats(player, izStats, izBody);
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><pre>");
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<center><b><font size=^"4^" color=rgb(255,255,255)>Statisticile lui %s pe </font><font size=^"4^" color=rgb(255,0,0)>%s</font></b></center>^n^n",nickplayer,hostname);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font size =^"3^" color=rgb(255,0,0)>%s,</font></b>^n^n",nickplayer);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Este pe locul</font><font color=rgb(255,0,0)> %d<font color=rgb(255,255,255)> din</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> jucatori</b>^n",iRankPos,iRankMax);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>A omorat</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> jucatori</font><font color=rgb(255,0,0)> [%d in cap]</b>^n",izStats[STATS_KILLS],izStats[STATS_HS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>A fost omorat de</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> ori</font></b>^n",izStats[STATS_DEATHS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>A tras cu arma de</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> ori</font></b>^n",izStats[STATS_SHOTS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>A lovit adversarii lui de</font><font color=rgb(255,0,0)> %d</font><font color=rgb(255,255,255)> ori</font></b>^n",izStats[STATS_HITS]);
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Eficienta lui este de</font><font color=rgb(255,0,0)> %0.2f%%</font></b>^n",effec(izStats));
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font color=rgb(255,255,255)>Precizia lui de tintire este de</font><font color=rgb(255,0,0)> %0.2f%%</font></b>^n^n",accuracy(izStats));
}
return PLUGIN_CONTINUE;
}
Float:accuracy(izStats[8]) {
if(!izStats[STATS_SHOTS])
return (0.0);
return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS]));
}
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]));
}
public cmdTop15(id) {
format_top15(g_sBuffer);
client_cmd(id,"spk ^"vox/deeoo top fifteen^"");
show_motd(id, g_sBuffer, "Top 15 jucatori");
return PLUGIN_CONTINUE;
}
format_top15(sBuffer[MAX_BUFFER_LENGTH + 1]) {
new iRankMax = get_statsnum();
new izStats[8], izBody[8];
new iLen = 0;
new nick[32];
new topnum;
new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16];
if(g_TopNum > iRankMax) {
g_TopNum = (iRankMax - 15);
}
if(g_TopNum < 10 || g_TopNum == 15) {
topnum = 0;
}
else {
topnum = (g_TopNum - 10);
}
format(lKills, 15, "Fraguri");
format(lDeaths, 15, "Decese");
format(lHits, 15, "Hits");
format(lShots, 15, "Shots");
format(lEff, 15, "Eff");
format(lAcc, 15, "Acc");
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><pre>");
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font size=^"2^" color=rgb(255,0,0)>%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s</font></b>^n^n","#","NickName",lKills,lDeaths,lHits,lShots,"HS",lEff,lAcc);
for(new i = topnum;i < g_TopNum && MAX_BUFFER_LENGTH - iLen > 0; i++) {
get_user_name(i,nick,31);
get_stats(i, izStats, izBody, nick, 31);
replace_all(nick, 31, "<", "[");
replace_all(nick, 31, ">", "]");
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "<b><font size=^"2^"color=rgb(255,255,255)>%2d %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%</font></b>^n", i + 1, nick, izStats[STATS_KILLS],
izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS],izStats[STATS_HS], effec(izStats), accuracy(izStats));
}
}
---------------------------------------------------------------------------------------
MULTUMESC!
|