#include <amxmodx>
#include <amxmisc>
#include <fvault>
#include <colorchat>
#define PLUGIN "plugin"
#define VERSION "1.0"
#define AUTHOR "author"
#define MAXPLAYERS 32
#define MAX_BUFFER_LENGTH 2047
new szVault[] = "Time";
new iTotalLevels = 6;
new szLevels[][64] = {
"Kezdő, 0 óra játékidő.",
"Haladó, 5 óra játékidő.",
"Kocka, 1 nap (24 óra) játékidő.",
"Hős, 1 hét (168 óra) játékidő.",
"Legenda, 2 hét (336 óra) játékidő.",
"Isten, 4 hét (672 óra) játékidő."
};
new szTimes[][64] = {
"0",
"5",
"24",
"168",
"336",
"672"
};
new Trie:SaveTime;
new Trie:Rank;
new Trie:Name;
new TotalRanks;
new iCurrentTime[MAXPLAYERS+1];
new sBuffer[MAX_BUFFER_LENGTH + 1]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /ido2", "CmdTimeTop");
register_clcmd("say /ido", "CmdTime");
register_clcmd("say /rangok", "CmdLevels");
}
public plugin_cfg()
{
SaveTime = TrieCreate();
Rank = TrieCreate()
Name = TrieCreate()
LoadData();
}
public plugin_end()
{
TrieDestroy(SaveTime);
TrieDestroy(Rank);
}
LoadData()
{
new iTotal = fvault_size(szVault);
new szSteamId[32], szName[32], szTime[32], szData[64], szKey[32];
for( new i = 0; i < iTotal; i++ )
{
fvault_get_keyname(szVault, i, szSteamId, sizeof(szSteamId) - 1);
fvault_get_data(szVault, szSteamId, szData, sizeof(szData) - 1);
parse(szData, szName, sizeof(szName) - 1, szTime, sizeof(szTime) - 1)
TrieSetCell(SaveTime, szSteamId, str_to_num(szTime))
num_to_str(TotalRanks, szKey, sizeof(szKey) - 1)
TrieSetString(Name, szKey, szName)
TrieSetCell(Rank, szKey, str_to_num(szTime))
TotalRanks++
}
}
SaveData(id)
{
new szSteamId[32], szName[32], szTime[32], szData[64];
get_user_authid(id, szSteamId, 31)
get_user_name(id, szName, 31)
TrieSetCell(SaveTime, szSteamId, iCurrentTime[id])
num_to_str(iCurrentTime[id], szTime, sizeof(szTime) - 1)
formatex(szData, sizeof(szData) - 1, "^"%s^" %s", szName, szTime)
fvault_set_data(szVault, szSteamId, szData)
}
public client_authorized(id)
{
new szSteamId[32];
get_user_authid(id, szSteamId, sizeof(szSteamId) - 1)
TrieGetCell(SaveTime, szSteamId, iCurrentTime[id]);
}
public client_disconnect(id)
{
new iAddTime = get_user_time(id);
iCurrentTime[id] += iAddTime;
SaveData(id)
}
public CmdTimeTop(id)
{
new iRanks[10], iRanking[10], szKey[5], iTemp, z
for(new x; x < 10; x++)
{
for(new i=0; i <= TotalRanks; i++)
{
num_to_str(i, szKey, sizeof(szKey) - 1)
TrieGetCell(Rank, szKey, iTemp)
if(x == 0)
{
if(iRanks[x] < iTemp)
{
iRanks[x] = iTemp
iRanking[x] = i
if(z<x)
z=x
}
}
else
{
if(iRanks[x] < iTemp && iRanks[x-1] > iTemp)
{
iRanks[x] = iTemp
iRanking[x] = i
if(z<x)
z=x
}
}
}
}
new szName[32]
new iLen
iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#%s %s %s^n", "Rank", "Nev", "Jatekido")
for(new y; y <= z; y++)
{
num_to_str(iRanking[y], szKey, sizeof(szKey) - 1)
TrieGetCell(Rank, szKey, iTemp)
TrieGetString(Name, szKey, szName, sizeof(szName) - 1)
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#%i %s %i ^n", y + 1, szName, iTemp)
}
show_motd(id, sBuffer, "Top 10 Jatekido")
}
public CmdTime(id)
{
new iSecTempTime, iLevel, iRank, iTime, szKey[5];
iSecTempTime = (iCurrentTime[id] + get_user_time(id))
for(new i; i < iTotalLevels; i++)
{
if((iSecTempTime/3600) >= str_to_num(szTimes[i]))
{
iLevel++
}
}
iRank=1
for(new i; i < TotalRanks + 1; i++)
{
num_to_str(i, szKey, sizeof(szKey) - 1)
TrieGetCell(Rank, szKey, iTime)
if(iCurrentTime[id] < iTime)
{
iRank++
}
}
ColorChat(id,RED,"^x04[WorldDustII]^x03 A te játékidőd ^x04%i ^x03 óra, Rank :^x04 %i/%i ^x03[%i Másodperc].", iSecTempTime/3600, iRank, TotalRanks, iSecTempTime);
ColorChat(id,RED,"^x04[WorldDustII] ^x03%s", szLevels[iLevel])
}
public CmdLevels(id)
{
ColorChat(id,RED,"^x04[WorldDustII] ^x03 Kérlek nézd meg a ^x04játék konzolt. ^x03Nyomd meg a nullát.");
for(new i; i < iTotalLevels; i++)
{
console_print(id, "%s", szLevels[i])
}
}