20/04/2021, 05:43 PM
Hola.. estoy usando este complemento.. necesitaria saber como puedo hacer para reiniciarlo, no tengo idea si es por medio de algun cvar o advault.. cabe destacar que uso el adv para otras cosas..
Código PHP:
#include <amxmodx>
#include <adv_vault>
#include <amxmisc>
#define PLUGIN "Simple Knife Top"
#define VERSION "1.1"
#define AUTHOR "Destro"
#define TAG "!t[ !gUN SERVER PERFECTO !t]"
enum {
CAMPO_KILLS,
CAMPO_DEATHS,
CAMPO_HS,
MAX_FIELDS
}
new g_campos[MAX_FIELDS]
new g_name[33][32], g_knife_kills[33], g_knife_deaths[33], g_knife_hs[33]
new g_msgSayText, g_maxplayers
new g_vault, g_sort
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /knifereset","top_reset",ADMIN_BAN);
register_clcmd("say /rank", "clcmd_rank")
register_clcmd("say /top", "clcmd_top10")
register_event("DeathMsg", "event_DeathMsg", "a", "1>0")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
g_msgSayText = get_user_msgid("SayText")
g_maxplayers = get_maxplayers()
vault_init();
}
vault_init()
{
g_vault = adv_vault_open("topknife", false)
g_campos[CAMPO_KILLS] = adv_vault_register_field(g_vault, "kill")
g_campos[CAMPO_DEATHS] = adv_vault_register_field(g_vault, "death")
g_campos[CAMPO_HS] = adv_vault_register_field(g_vault, "hs")
adv_vault_init(g_vault)
g_sort = adv_vault_sort_create(g_vault, ORDER_DESC, 0, 2000, g_campos[CAMPO_KILLS])
}
public client_putinserver(id)
{
get_user_name(id, g_name[id], 31)
load_data(id)
}
public publicidad( id )
{
chat_color( id, "%s !nTipea !g/rank !npara ver tu rank de !tfacas!n.", TAG )
chat_color( id, "%s !nTipea !g/top !npara ver el TOP10 de !tfacas!n.", TAG )
chat_color( id, "%s !nTipea !g/top10 !npara ver el TOP10", TAG )
}
public client_infochanged(id)
{
if(!is_user_connected(id)) return
static newname[32]
get_user_info(id, "name", newname, 31)
if(!equal(newname, g_name[id]))
{
copy(g_name[id], 31, newname)
load_data(id)
}
}
public event_DeathMsg()
{
static killer, victim, weapon[5]
killer = read_data(1)
victim = read_data(2)
read_data(4, weapon, 4)
if(weapon[0] != 'k' || weapon[3] != 'f') return
g_knife_kills[killer]++
g_knife_deaths[victim]++
if(read_data(3)) g_knife_hs[killer]++
}
public event_round_start()
{
for(new id=1; id <= g_maxplayers; id++)
{
if(is_user_connected(id)) save_data(id)
}
adv_vault_sort_update(g_vault, g_sort)
}
save_data(id)
{
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_campos[CAMPO_KILLS], g_knife_kills[id])
adv_vault_set_field(g_vault, g_campos[CAMPO_DEATHS], g_knife_deaths[id])
adv_vault_set_field(g_vault, g_campos[CAMPO_HS], g_knife_hs[id])
adv_vault_set_end(g_vault, _, g_name[id])
}
load_data(id)
{
if(!adv_vault_get_prepare(g_vault, _, g_name[id]))
{
g_knife_kills[id] = g_knife_deaths[id] = g_knife_hs[id] = 0
return
}
g_knife_kills[id] = adv_vault_get_field(g_vault, g_campos[CAMPO_KILLS])
g_knife_deaths[id] = adv_vault_get_field(g_vault, g_campos[CAMPO_DEATHS])
g_knife_hs[id] = adv_vault_get_field(g_vault, g_campos[CAMPO_HS])
}
public clcmd_rank(id)
{
new rank_position = adv_vault_sort_key(g_vault, g_sort, 0, g_name[id])
if(!rank_position) chat_color(id, "!g-!tNo estas rankeado")
else chat_color(id, "!g-!tTu rank de knife es !y%d", rank_position)
}
public clcmd_top10(id)
{
new kills, deaths, hs, keyindex, name[46], motd[2500], len
len = formatex(motd, charsmax(motd),
"<html><style>\
body { background-color:#000000; }\
.tabel { color:#FFFFFF; }\
.header { background-color:#00BFFF; color:#000000;}\
</style><body>\
<br><br><table align=center border=1 width=90%% class=tabel>")
len += formatex(motd[len], charsmax(motd)-len,
"<tr><td class=header width=5%% align=center><strong>Rank</strong></td>\
<td class=header width=34%%><strong>Name</strong></td>\
<td class=header width=16%%><strong>KnifeKills</strong></td>\
<td class=header width=22%%><strong>KnifeDeaths</strong></td>\
<td class=header width=24%%><strong>KnifeHeadShots</strong></td></tr>")
new toploop = min(adv_vault_sort_numresult(g_vault, g_sort), 10)
for(new position=1; position <= toploop; position++)
{
keyindex = adv_vault_sort_position(g_vault, g_sort, position)
if(!adv_vault_get_prepare(g_vault, keyindex)) continue
kills = adv_vault_get_field(g_vault, g_campos[CAMPO_KILLS])
deaths = adv_vault_get_field(g_vault, g_campos[CAMPO_DEATHS])
hs = adv_vault_get_field(g_vault, g_campos[CAMPO_HS])
new asd = adv_vault_get_keyname(g_vault, keyindex, name, 15)
server_print("debug:[%d][%s]", asd, name)
replace_all(name, 45, "<", "<")
replace_all(name, 45, ">", ">")
len += formatex(motd[len], charsmax(motd)-len,
"<tr><td>%d</td>\
<td>%s</td>\
<td>%d</td>\
<td>%d</td>\
<td>%d</td>", position, name, kills, deaths, hs)
}
add(motd, charsmax(motd), "</table></body></html>")
show_motd(id, motd, "KnifeTop")
}
public top_reset(plr,level,cid) {
if(!cmd_access(plr,level,cid,0)) {
return PLUGIN_HANDLED;
}
new name[32];
get_user_name(plr, name, 31);
static knifetop[128], len;
adv_vault_closed(g_vault);
if (!len)
{
get_localinfo("amxx_datadir", knifetop, charsmax(knifetop))
add(knifetop, charsmax(knifetop), "/adv_vault/topknife/");
len = strlen(knifetop);
}
formatex(knifetop[len], charsmax(knifetop)-len, "data.dat");
if( file_exists(knifetop))
delete_file(knifetop);
formatex(knifetop[len], charsmax(knifetop)-len, "simple.dat");
if( file_exists(knifetop))
delete_file(knifetop);
formatex(knifetop[len], charsmax(knifetop)-len, "index.dat");
if( file_exists(knifetop))
delete_file(knifetop);
formatex(knifetop[len], charsmax(knifetop)-len, "fields.dat");
if( file_exists(knifetop))
delete_file(knifetop);
new i = 0;
formatex(knifetop[len], charsmax(knifetop)-len, "sort_%d.dat", i);
while (file_exists(knifetop))
{
delete_file(knifetop);
formatex(knifetop[len], charsmax(knifetop)-len, "sort_%d.dat", ++i);
}
vault_init();
chat_color(0, "!g[SOK]!y ADMIN!t %s!y reseted the KnifeTop top", name)
return PLUGIN_HANDLED;
}
stock chat_color(const id, const input[], any:...)
{
static msg[191]
if(numargs() == 2)
copy(msg, 190, input)
else
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_msgSayText, _, id)
write_byte(id)
write_string(msg)
message_end()
}