PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault_util>
#include <fun>
#include <cstrike>
#include <ColorChat>
#define PLUGIN ""
#define VERSION "1.0"
#define AUTHOR ""
#define TopNumber 15
#define MAX_PLAYERS 32
new gPoints[ MAX_PLAYERS + 1 ]
new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
g_iVault = nvault_open("POINTS")
FormatTop(TopNumber)
register_clcmd("say /btop15", "show_top15");
}
public client_connect(id)
{
Load_Points(id);
}
public client_disconnect(id)
{
Save_Points(id);
}
stock Save_Points( id )
{
if(g_iVault == 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", gPoints[id]);
nvault_remove(g_iVault, szAuthId)
nvault_set(g_iVault, szAuthId, szData)
format(szAuthId, charsmax(szAuthId), "%s%s", szAuthId, SPECIAL_CHAR)
nvault_remove(g_iVault, szAuthId)
nvault_set(g_iVault, szAuthId, szName)
}
stock Load_Points( id )
{
if(g_iVault == 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_iVault, szAuthId, szData, charsmax(szData), iTimeStamp) )
{
nvault_set(g_iVault, szAuthId, "0")
format(szAuthId, charsmax(szAuthId), "%s%s", szAuthId, SPECIAL_CHAR)
nvault_set(g_iVault, szAuthId, szName)
return 0
}
ParseLoadData(id, szData);
format(szAuthId, charsmax(szAuthId), "%s%s", szAuthId, SPECIAL_CHAR)
nvault_get(g_iVault, szAuthId, szSavedName)
if(!equal(szName, szSavedName))
{
nvault_remove(g_iVault, szAuthId)
nvault_set(g_iVault, szAuthId, szName)
}
return 0
}
ParseLoadData(id, szData[256])
{
static szNum[11];
strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
gPoints[id] = str_to_num(szNum);
}
public show_top15(id)
show_motd( id, g_szTopMotd, "Top Points" )
stock FormatTop(iNum)
{
if(g_iVault == INVALID_HANDLE)
set_fail_state("nVault returned invalid handle")
enum _:VaultData
{
VD_Key[33],
VD_Value,
VD_szName[33]
};
new Vault2 = nvault_util_open("POINTS")
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);
if(contain(data[VD_Key], SPECIAL_CHAR) != -1)
continue;
else
{
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s", data[VD_Key], SPECIAL_CHAR)
nvault_get(g_iVault, 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 < iNum)
{
ArrayPushArray(entries, data);
sizeEntries++;
}
break;
}
ArrayGetArray(entries, timestamp, data2);
if(data[VD_Value] >= data2[VD_Value])
{
ArrayInsertArrayBefore(entries, timestamp, data);
if(sizeEntries < iNum)
{
sizeEntries++;
}
else
{
ArrayDeleteItem(entries, sizeEntries);
}
break;
}
}
}
}
new iLen
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", "#", "Name", "Points")
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>")
}
Error: Doesn't show player name in motd. Shows only first 7 players (points). Shows '<tr align=left bgcolor=#2b5b' instead players points...