Mam problem z Top 15. Sam problem to wyswietlanie danych.Czyli imię gracza jest, ale nie ma znaczenia level`a.
Kod poniżej:
Spoiler
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault_util>
#define PLUGIN "PL"
#define VERSION "1.0"
#define AUTHOR "RoCk-MaN"
new g_vault, level[32], exp[32];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /top", "cmd_top");
register_event("DeathMsg", "DeathMsg", "a")
g_vault = nvault_open( "rock_top" );
register_clcmd("say /test", "test");
}
public test(id)
{
level[id] = 90;
exp[id] = 5000;
}
public DeathMsg()
{
new killer = read_data(1);
new victim = read_data(2);
if( !is_user_connected(killer) || !is_user_connected(victim) || killer == victim)
return PLUGIN_HANDLED;
exp[killer]++;
return PLUGIN_CONTINUE;
}
public cmd_top(id)
{
if(g_vault == INVALID_HANDLE)
set_fail_state("nVault returned invalid handle")
enum _:VaultData
{
VD_Key[33],
VD_Value,
VD_szName[33]
};
new Vault2 = nvault_util_open("rock_top")
new iSize = nvault_util_count(Vault2)
new Array:entries = ArrayCreate(VaultData);
new sizeEntries
new data[VaultData], value[256], data2[VaultData]
for(new i = 0, pos, timestamp; i < iSize; i++)
{
pos = nvault_util_read(Vault2, pos, data[VD_Key], charsmax(data[VD_Key]), value, charsmax(value), timestamp);
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s", data[VD_Key])
nvault_get(g_vault, data[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
data[VD_Value] = str_to_num(value);
if(sizeEntries == 0)
{
ArrayPushArray(entries, data);
sizeEntries++;
continue;
}
else
{
for(timestamp = 0; timestamp <= sizeEntries; timestamp++)
{
if(timestamp == sizeEntries)
{
if(sizeEntries < id)
{
ArrayPushArray(entries, data);
sizeEntries++;
}
break;
}
ArrayGetArray(entries, timestamp, data2);
if(data[VD_Value] >= data2[VD_Value])
{
ArrayInsertArrayBefore(entries, timestamp, data);
if(sizeEntries < id)
{
sizeEntries++;
}
else
{
ArrayDeleteItem(entries, sizeEntries);
}
break;
}
}
}
}
new iLen
new g_szTopMotd[1024];
new len = charsmax(g_szTopMotd)
iLen = formatex(g_szTopMotd, len, "<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
iLen += formatex(g_szTopMotd[iLen], len - iLen, "<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s", "#", "Player Name", "LeveL")
new i
for(i = 0; i < sizeEntries; i++)
{
ArrayGetArray(entries, i, data);
data[VD_Key][32] = 0;
data[VD_szName][32] = 0
replace_all(data[VD_szName], charsmax(data[VD_szName]), "<", "<")
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">", ">")
iLen += formatex(g_szTopMotd[iLen], len - iLen, "<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d", " bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
}
ArrayDestroy(entries);
iLen += formatex(g_szTopMotd[iLen], len - iLen, "</table></body>")
show_motd( id, g_szTopMotd, "Top Points" )
}
public client_putinserver(id)
{
LoadTop(id);
level[id] = 5;
}
public client_disconnect(id)
{
SaveTop(id);
}
stock SaveTop(id)
{
if(g_vault == INVALID_HANDLE)
set_fail_state("nVault returned invalid handle")
new szAuthId[35];
get_user_authid(id, szAuthId, charsmax(szAuthId))
new szName[32];
get_user_name(id, szName, 31)
new szData[256];
formatex(szData, charsmax(szData), "%i %i", level[id], exp[id]);
nvault_remove(g_vault, szAuthId)
nvault_set(g_vault, szAuthId, szData)
format(szAuthId, charsmax(szAuthId), "%s", szAuthId)
nvault_remove(g_vault, szAuthId)
nvault_set(g_vault, szAuthId, szName)
}
stock LoadTop(id)
{
if(g_vault == INVALID_HANDLE)
set_fail_state("nVault returned invalid handle")
new szSavedName[32]
new szName[32]; get_user_name(id, szName, charsmax(szName))
new szAuthId[33]; get_user_authid(id, szAuthId, charsmax(szAuthId))
new szData[256], iTimeStamp
if( !nvault_lookup(g_vault, szAuthId, szData, charsmax(szData), iTimeStamp) )
{
nvault_set(g_vault, szAuthId, "0")
format(szAuthId, charsmax(szAuthId), "%s", szAuthId)
nvault_set(g_vault, szAuthId, szName)
return 0
}
ParseLoadData(id, szData);
format(szAuthId, charsmax(szAuthId), "%s", szAuthId)
nvault_get(g_vault, szAuthId, szSavedName)
if(!equal(szName, szSavedName))
{
nvault_remove(g_vault, szAuthId)
nvault_set(g_vault, szAuthId, szName)
}
return 0
}
ParseLoadData(id, szData[256])
{
static szNum[11];
strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
level[id] = str_to_num(szNum);
strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
exp[id] = str_to_num(szNum);
}


Dodatki SourceMod












