I don't know if this is relevant but the permission of the user.ini file is 700
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "admin date"
#define VERSION "1.1"
#define AUTHOR "Wilian M."
#define FLAG_VIP ADMIN_RESERVATION
new xText[256], xMyDays[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
xRegisterSay("admin", "xShowDays")
xRegisterSay("date", "xShowDays")
xCheckDate()
}
public client_disconnected(id) xMyDays[id] = false
public client_authorized(id)
{
static xUserFlags; xUserFlags = get_user_flags(id)
if(!(xUserFlags & FLAG_VIP))
return PLUGIN_HANDLED
static xAdmin[32], xPass[32], xFlags[32], xAccess[32], xDays[32], xMySteam[64], xMyIp[32], xMyName[32],
xConfigsName[256], xFilename[256]
get_user_name(id, xMyName, charsmax(xMyName))
get_user_authid(id, xMySteam, charsmax(xMySteam))
get_user_ip(id, xMyIp, charsmax(xMyIp), true)
get_configsdir(xConfigsName, charsmax(xConfigsName))
formatex(xFilename, charsmax(xFilename), "%s/users.ini", xConfigsName)
new xFile = fopen(xFilename, "rt")
if(xFile)
{
new xData[256]
while(!feof(xFile))
{
fgets(xFile, xData, charsmax(xData))
trim(xData)
switch(xData[0])
{
case EOS, ';', '/' && '/': continue
case '"':
{
if(xData[strlen(xData)-1] == '"')
{
if(parse(xData, xAdmin, charsmax(xAdmin), xPass, charsmax(xPass), xFlags, charsmax(xFlags), xAccess, charsmax(xAccess), xDays, charsmax(xDays)) == 5)
{
if(equal(xAdmin, xMyName) || equal(xAdmin, xMySteam) || equal(xAdmin, xMyIp))
{
xMyDays[id] = str_to_num(xDays)
}
else continue
}
else
{
xMyDays[id] = -1
continue
}
}
else continue
}
}
}
fclose(xFile)
}
set_task(15.0, "xShowDays", id)
return PLUGIN_CONTINUE
}
public xShowDays(id)
{
if(!is_user_connected(id))
return
new xUserFlags = get_user_flags(id)
if(!(xUserFlags & FLAG_VIP))
return
if(xMyDays[id] == -1)
client_print_color(id, print_team_default, "^4»» ^1your admin is ^4PERMANENT")
else if(xMyDays[id] >= 1)
client_print_color(id, print_team_default, "^4»» ^1left: ^4%d ^1day%s for your admin to expire.", xMyDays[id], xMyDays[id] <= 1 ? "" : "s")
}
public xCheckDate()
{
new xFilename[256], xConfigsName[256]
get_configsdir(xConfigsName, charsmax(xConfigsName))
formatex(xFilename, charsmax(xFilename), "%s/currentdate.ini", xConfigsName)
if(!file_exists(xFilename))
write_file(xFilename, ";Day: 00.00.0000")
new xDate[25], xLine, txtlen = 0
read_file(xFilename, xLine, xText, charsmax(xText), txtlen);trim(xText)
get_time(";Day: %d.%m.%Y", xDate, charsmax(xDate))
if(equal(xText, xDate))
return
else
write_file(xFilename, xDate, xLine)
xCheckAdmins()
}
public xCheckAdmins()
{
new xFilename[256], xConfigsName[256]
get_configsdir(xConfigsName, charsmax(xConfigsName))
formatex(xFilename, charsmax(xFilename), "%s/users.ini", xConfigsName)
new xAdmin[32], xPass[32], xFlags[32], xAccess[32], xDays[32], xData[256], xIdays, xLine = 0
new xFile = fopen(xFilename, "r")
while(!feof(xFile))
{
fgets(xFile, xData, charsmax(xData))
trim(xData)
xLine ++
switch(xData[0])
{
case EOS, ';', '/' && '/': continue
case '"':
{
if(xData[strlen(xData)-1] == '"')
{
if(parse(xData, xAdmin, charsmax(xAdmin), xPass, charsmax(xPass), xFlags, charsmax(xFlags), xAccess, charsmax(xAccess), xDays, charsmax(xDays)) == 5)
{
xIdays = str_to_num(xDays) -1
if(xIdays <= 0)
xIdays = 0
if(xIdays)
formatex(xText, charsmax(xText), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%d^"", xAdmin, xPass, xFlags, xAccess, xIdays)
else
formatex(xText, charsmax(xText), "; expired! ^"%s^" ^"%s^" ^"%s^" ^"%s^"", xAdmin, xPass, xFlags, xAccess)
if(xLine)
write_file(xFilename, xText, xLine-1)
}
else continue
}
else continue
}
}
}
fclose(xFile)
server_cmd("amx_reloadadmins")
}
stock xRegisterSay(szsay[], szfunction[])
{
new sztemp[64]
formatex(sztemp, 63 , "say /%s", szsay)
register_clcmd(sztemp, szfunction)
formatex(sztemp, 63 , "say .%s", szsay)
register_clcmd(sztemp, szfunction)
formatex(sztemp, 63 , "say_team /%s", szsay)
register_clcmd(sztemp, szfunction )
formatex(sztemp, 63 , "say_team .%s", szsay)
register_clcmd(sztemp, szfunction)
}