Code: Select all
"admin" "admin_pw" "abcd" "a" ""10/9/2022" (DD/MM/YYYY)
Code: Select all
"admin" "admin_pw" "abcd" "a" ""10/9/2022 - 14:30:00" (DD/MM/YYYY - HH:MM:SS)
Code: Select all
#include <amxmodx>
#include <amxmisc>
#include <zb_stocks>
#include <unixtime>
new Trie:g_tVencimiento
public plugin_init()
{
register_plugin("admin expiration", "1.0", "kolo")
register_clcmd("say /expire", "Show_Expire_Date")
register_clcmd("say_team /expire", "Show_Expire_Date")
RegisterHam(Ham_Spawn, "player", "expire_date", 1);
g_tVencimiento = TrieCreate()
CheckAdmins()
}
public expire_date(id)
set_task(5.0, "Show_Expire_Date", id)
public Show_Expire_Date(id)
{
if (!(get_user_flags(id) & ADMIN_LEVEL_G))
{
return PLUGIN_HANDLED;
}
new szAuth[32], szExp[12], Name[32]
get_user_authid(id, szAuth, charsmax(szAuth))
get_user_name(id, Name, charsmax(Name))
if(!TrieGetString(g_tVencimiento, szAuth, szExp, charsmax(szExp)))
{
get_user_name(id, szAuth, charsmax(szAuth))
if(!TrieGetString(g_tVencimiento, szAuth, szExp, charsmax(szExp)))
{
get_user_ip(id, szAuth, charsmax(szAuth), 1)
TrieGetString(g_tVencimiento, szAuth, szExp, charsmax(szExp))
}
}
if(szExp[0])
{
ColorChat(id, "!g%s !tYour !gV.I.P !texpires on !g%s", Name, szExp)
return PLUGIN_HANDLED
}
else
{
}
return PLUGIN_HANDLED
}
public Show_Expire_Date(id)
{
if (!(get_user_flags(id) & ADMIN_LEVEL_G))
{
return PLUGIN_HANDLED;
}
new szAuth[32], szExp[12], Name[32]
get_user_authid(id, szAuth, charsmax(szAuth))
get_user_name(id, Name, charsmax(Name))
if(!TrieGetString(g_tVencimiento, szAuth, szExp, charsmax(szExp)))
{
get_user_name(id, szAuth, charsmax(szAuth))
if(!TrieGetString(g_tVencimiento, szAuth, szExp, charsmax(szExp)))
{
get_user_ip(id, szAuth, charsmax(szAuth), 1)
TrieGetString(g_tVencimiento, szAuth, szExp, charsmax(szExp))
}
}
if(szExp[0])
{
ColorChat(id, "!g%s !tYour !gV.I.P !texpires on !g%s", Name, szExp)
}
else
{
ColorChat(id, "!g%s !tYour !gV.I.P !tis permanent", Name)
}
return PLUGIN_HANDLED
}
CheckAdmins()
{
new szFile[64], szData[160], szAuth[44], szPw[32], szAccess[32], szFlags[32], szDate[12]
new iLine, bAdmRemoved
get_configsdir(szFile, charsmax(szFile))
add(szFile, charsmax(szFile), "/users.ini")
new file = fopen(szFile, "rt")
while(!feof(file))
{
fgets(file, szData, charsmax(szData))
trim(szData)
iLine++
if(!szData[0] || szData[0] == ';')
continue
parse(szData, szAuth, charsmax(szAuth), szPw, charsmax(szPw), szAccess, charsmax(szAccess), szFlags, charsmax(szFlags), szDate, charsmax(szDate))
if(!szDate[0])
continue
replace_all(szDate, charsmax(szDate), "/", " ")
new szDay[3], szMonth[3], szYear[5]
parse(szDate, szDay, charsmax(szDay), szMonth, charsmax(szMonth), szYear, charsmax(szYear))
if(get_systime() >= TimeToUnix(str_to_num(szYear), str_to_num(szMonth), str_to_num(szDay), 0, 0, 0, UT_TIMEZONE_SERVER))
{
formatex(szData, charsmax(szData), ";^"%s^" Admin Expired in %s/%s/%s", szAuth, szDay, szMonth, szYear)
write_file(szFile, szData, iLine - 1)
bAdmRemoved = true
}
else
{
replace_all(szDate, charsmax(szDate), " ", "/")
TrieSetString(g_tVencimiento, szAuth, szDate)
}
}
if(bAdmRemoved)
{
server_cmd("amx_reloadadmins")
server_exec()
}
fclose(file)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/