| BaD CopY |
07-03-2016 00:59 |
Re: Nvault top15
What is wrong with my code ?
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...
|