Took it off my VIP Expire plugin, just removed some parts:
PHP Code:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
#define parseTime(%1) parse_time(%1, "%m/%d/%Y %H:%M:%S")
const iYearSeconds = 31536000
const iMonthSeconds = 2629800
const DaySeconds = 86400
const HourSeconds = 3600
const MinuteSeconds = 60
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_display_time", "cmdDateCommand", ADMIN_KICK, "<date format> - example: 05/01/2025 18:00:00")
}
public cmdDateCommand(id, iLevel, iCid)
{
if(!cmd_access(id, iLevel, iCid, 2))
return PLUGIN_HANDLED
new szTime[60]
read_argv(1, szTime, charsmax(szTime))
new szMessage[192], iTime = parseTime(szTime)
formatTime(iTime, szMessage, charsmax(szMessage))
console_print(id, "Time remaining: %s", szMessage)
return PLUGIN_HANDLED
}
formatTime(iTime, szMessage[] = "", iLen = 0)
{
if(!iTime)
{
formatex(szMessage, iLen, "No time to expire")
return
}
iTime -= get_systime()
new iYear, iMonth, iDays
new iHour, iMinute, iSecond
iTime -= iYearSeconds * (iYear = iTime / iYearSeconds)
iTime -= iMonthSeconds * (iMonth = iTime / iMonthSeconds)
iTime -= DaySeconds * (iDays = iTime / DaySeconds)
iTime -= HourSeconds * (iHour = iTime / HourSeconds)
iTime -= MinuteSeconds * (iMinute = iTime / MinuteSeconds)
iSecond = iTime
new szMessageFmt[64]
if(iYear)
{
formatex(szMessageFmt, iLen, "%s%d year%s", szMessageFmt, iYear, (iYear > 1) ? "s" : "")
}
if(iMonth)
{
formatex(szMessageFmt, iLen, "%s, %d month%s", szMessageFmt, iMonth, (iMonth > 1) ? "s" : "")
}
if(iDays)
{
formatex(szMessageFmt, iLen, "%s%s %d day%s", szMessageFmt, iHour ? "," : " and", iDays, (iDays > 1) ? "s" : "")
}
if(iHour)
{
formatex(szMessageFmt, iLen, "%s%s %d hour%s", szMessageFmt, iMinute ? "," : " and", iHour, (iHour > 1) ? "s" : "")
}
if(iMinute)
{
formatex(szMessageFmt, iLen, "%s%s %d minute%s", szMessageFmt, iSecond ? "," : " and", iMinute, (iMinute > 1) ? "s" : "")
}
if(iSecond)
{
formatex(szMessageFmt, iLen, "%s and %d second%s", szMessageFmt, iSecond, (iSecond > 1) ? "s" : "")
}
copy(szMessage, iLen, szMessageFmt)
}
To use the command properly:
amx_display_time month/day/year
If you want to know by hour/minute/second, just pass them as hour:minute:second
Example: amx_display_time "10/30/2023"
Code:
Time remaining: 1 year and 1 day
Example: amx_display_time "6/30/2027"
Code:
Time remaining: 4 years, 8 months, 1 day and 12 hours
Example: amx_display_time "6/30/2027 18: 30:15"
Code:
Time remaining: 4 years, 8 months, 1 day, 13 hours, 24 minutes and 52 seconds
__________________