vencimiento de admin, un solo mensaje
#1
Hola
me ayudarían hacer que el mensaje que envía sobre la fecha de admin que vence solo lo mande al inicio de la partida, osea solo cuando entro al servidor o cuando se cambie mapa, solo una vez.


Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <unixtime>
#include <hamsandwich>

new Trie:g_tVencimiento

public plugin_init()
{
    
register_plugin("Vencimiento de admins""1.0d""alan_el_more")
    
    
g_tVencimiento TrieCreate()
        
    
CheckAdmins()
    
    
register_clcmd("say /vencimiento""ClcmdVencimiento")
    
    
RegisterHam(Ham_Spawn"player""fw_spawn"1)
}

public 
fw_spawn(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    if(!
is_user_alive(id))
        return 
PLUGIN_HANDLED;
        
    
set_task1.0"ClcmdVencimiento"id );
    
    return 
PLUGIN_HANDLED
}

public 
ClcmdVencimiento(idlevelcid)
{
    if(!
is_user_admin(id))
        return 
PLUGIN_HANDLED
        
    
new szAuth[32], szExp[12]
    
get_user_authid(idszAuthcharsmax(szAuth))
    
    if(!
TrieGetString(g_tVencimientoszAuthszExpcharsmax(szExp)))
    {
        
get_user_name(idszAuthcharsmax(szAuth))
        
        if(!
TrieGetString(g_tVencimientoszAuthszExpcharsmax(szExp)))
        {
            
get_user_ip(idszAuthcharsmax(szAuth), 1)
            
            
TrieGetString(g_tVencimientoszAuthszExpcharsmax(szExp))
        }
    }
        
    if(
szExp[0])
        
ChatColor(id"^4[Admin]^1 Tu admin vence el^3 %s"szExp)
    else
        
ChatColor(id"^4[Admin]^1 Tu admin no tiene un vencimiento determinado")
    
    return 
PLUGIN_HANDLED
}

CheckAdmins()
{
    new 
szFile[64], szData[160], szAuth[44], szPw[32], szAccess[32], szFlags[32], szDate[12]
    new 
iLinebAdmRemoved
    
    get_configsdir
(szFilecharsmax(szFile))
    
add(szFilecharsmax(szFile), "/users.ini")
        
    new 
file fopen(szFile"rt")
    
    while(!
feof(file))
    {
        
fgets(fileszDatacharsmax(szData))
        
        
trim(szData)
        
        
iLine++
        
        if(!
szData[0] || szData[0] == ';')
            continue
        
        
parse(szDataszAuthcharsmax(szAuth), szPwcharsmax(szPw), szAccesscharsmax(szAccess), szFlagscharsmax(szFlags), szDatecharsmax(szDate))
        
        if(!
szDate[0])
            continue
        
        
replace_all(szDatecharsmax(szDate), "/"" ")
            
        new 
szDay[3], szMonth[3], szYear[5]
        
parse(szDateszDaycharsmax(szDay), szMonthcharsmax(szMonth), szYearcharsmax(szYear))
        
        if(
get_systime() >= TimeToUnix(str_to_num(szYear), str_to_num(szMonth), str_to_num(szDay), 000UT_TIMEZONE_SERVER))
        {
            
formatex(szDatacharsmax(szData), ";ADMIN VENCIDO - ^"%s^" en la fecha %s/%s/%s"szAuthszDayszMonthszYear)
            
write_file(szFileszDataiLine 1)
            
            
bAdmRemoved true
        
}
        else
        {            
            
replace_all(szDatecharsmax(szDate), " ""/")
            
            
TrieSetString(g_tVencimientoszAuthszDate)
        }
    }
    
    if(
bAdmRemoved)
    {
        
server_cmd("amx_reloadadmins")
        
server_exec()
    }
    
    
fclose(file)
}

stock ChatColor(id, const input[], any:...)
{
    static 
szMsg[191], msgSayText
    
    
if(!msgSayText)
        
msgSayText get_user_msgid("SayText")
    
    
vformat(szMsg190input3)
    
    
message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id)
    
write_byte(id id 33)
    
write_string(szMsg)
    
message_end()

Responder
#2
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <unixtime>
#include <hamsandwich>

new Trie:g_tVencimiento

public plugin_init()
{
    
register_plugin("Vencimiento de admins""1.0d""alan_el_more")
    
    
g_tVencimiento TrieCreate()
        
    
CheckAdmins()
    
    
register_clcmd("say /vencimiento""ClcmdVencimiento")
}

public 
client_putinserver(id)
    
set_task5.0"ClcmdVencimiento"id );

public 
ClcmdVencimiento(idlevelcid)
{
    if(!
is_user_admin(id))
        return 
PLUGIN_HANDLED
        
    
new szAuth[32], szExp[12]
    
get_user_authid(idszAuthcharsmax(szAuth))
    
    if(!
TrieGetString(g_tVencimientoszAuthszExpcharsmax(szExp)))
    {
        
get_user_name(idszAuthcharsmax(szAuth))
        
        if(!
TrieGetString(g_tVencimientoszAuthszExpcharsmax(szExp)))
        {
            
get_user_ip(idszAuthcharsmax(szAuth), 1)
            
            
TrieGetString(g_tVencimientoszAuthszExpcharsmax(szExp))
        }
    }
        
    if(
szExp[0])
        
ChatColor(id"^4[Admin]^1 Tu admin vence el^3 %s"szExp)
    else
        
ChatColor(id"^4[Admin]^1 Tu admin no tiene un vencimiento determinado")
    
    return 
PLUGIN_HANDLED
}

CheckAdmins()
{
    new 
szFile[64], szData[160], szAuth[44], szPw[32], szAccess[32], szFlags[32], szDate[12]
    new 
iLinebAdmRemoved
    
    get_configsdir
(szFilecharsmax(szFile))
    
add(szFilecharsmax(szFile), "/users.ini")
        
    new 
file fopen(szFile"rt")
    
    while(!
feof(file))
    {
        
fgets(fileszDatacharsmax(szData))
        
        
trim(szData)
        
        
iLine++
        
        if(!
szData[0] || szData[0] == ';')
            continue
        
        
parse(szDataszAuthcharsmax(szAuth), szPwcharsmax(szPw), szAccesscharsmax(szAccess), szFlagscharsmax(szFlags), szDatecharsmax(szDate))
        
        if(!
szDate[0])
            continue
        
        
replace_all(szDatecharsmax(szDate), "/"" ")
            
        new 
szDay[3], szMonth[3], szYear[5]
        
parse(szDateszDaycharsmax(szDay), szMonthcharsmax(szMonth), szYearcharsmax(szYear))
        
        if(
get_systime() >= TimeToUnix(str_to_num(szYear), str_to_num(szMonth), str_to_num(szDay), 000UT_TIMEZONE_SERVER))
        {
            
formatex(szDatacharsmax(szData), ";ADMIN VENCIDO - ^"%s^" en la fecha %s/%s/%s"szAuthszDayszMonthszYear)
            
write_file(szFileszDataiLine 1)
            
            
bAdmRemoved true
        
}
        else
        {            
            
replace_all(szDatecharsmax(szDate), " ""/")
            
            
TrieSetString(g_tVencimientoszAuthszDate)
        }
    }
    
    if(
bAdmRemoved)
    {
        
server_cmd("amx_reloadadmins")
        
server_exec()
    }
    
    
fclose(file)
}

stock ChatColor(id, const input[], any:...)
{
    static 
szMsg[191], msgSayText
    
    
if(!msgSayText)
        
msgSayText get_user_msgid("SayText")
    
    
vformat(szMsg190input3)
    
    
message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id)
    
write_byte(id id 33)
    
write_string(szMsg)
    
message_end()

Responder
#3
EDIT: Me ganó Exertency.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)