Community Info, Cambiar Lectura
#1
Quisiera remover el archivo donde se guardan las ip y editarlas dentro del mismo code, algo asi como un enum.

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <server_query>
#include <regex>

const MAX_SERVERS 32;

new 
g_serverCount;

new 
g_szServer[MAX_SERVERS][32];
new 
g_szName[MAX_SERVERS][256];
new 
g_szMap[MAX_SERVERS][32];
new 
g_iPlayer[MAX_SERVERS];
new 
g_iMaxplayers[MAX_SERVERS];

public 
plugin_init(){
    
register_plugin("Community Info""v2.0.3""Neeeeeeeeeel.-");
    
    
register_event("HLTV""event_round_start""a""1=0""2=0");
    
    
register_clcmd("say /online""cmdOnline");
    
register_clcmd("say /servers""cmdServers");
    
register_clcmd("amx_ci_reload""cmdReload"ADMIN_KICK" - Recarga la información de los servidores");
    
register_clcmd("amx_ci_config_reload""cmdConfigReload"ADMIN_KICK" - Recarga la lista de servidores del archivo de configuracion");
    
    
loadServers();
}

public 
loadServers(){
    new 
configdir[128];
    
get_configsdir(configdircharsmax(configdir));
    
formatex(configdircharsmax(configdir), "%s/servidores.ini"configdir);
    
    new 
reterror[128];
    new 
Regex:regex regex_compile("^^(?=\d+\.\d+\.\d+\.\d+\:[0-9]{1,5}$)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4}\:[0-9]{1,5}$"reterrorcharsmax(error));
    
    if (
file_exists(configdir)){
        new 
szServer[33];
        
        new 
file fopen(configdir"rt");
        if (!
file){
            return;
        }
        
        while (!
feof(file)){
            
fgets(fileszServercharsmax(szServer))
            if (
szServer[0] == ';' || !szServer[0]){
                continue;
            }
            
remove_quotes(szServer);
            
replace_all(szServercharsmax(szServer), "^n""");
            
            if (
regex_match_c(szServerregexret) > 0){
                
console_print(0"[Community Info] Cargando servidor %s"szServer);
                
copy(g_szServer[g_serverCount], charsmax(g_szServer[]), szServer);
                
g_serverCount++;
            }
        }
        
fclose(file);
    } else {
        
console_print(0"[Community Info] Archivo de configuracion inexistente");
    }
    
    
regex_free(regex);
}

public 
event_round_start(){
    for (new 
0g_serverCounti++){
        
ServerInfo(g_szServer[i], "getServerInfo");
    }
}

public 
cmdOnline(id){
    new 
players;
    new 
maxplayers;
    for (new 
0g_serverCounti++){
        
players += g_iPlayer[i];
        
maxplayers += g_iMaxplayers[i];
    }
    
client_print(idprint_chat"[AMXX] Hay %d/%d conectados en la comunidad"playersmaxplayers);
    return 
PLUGIN_CONTINUE;
}

public 
cmdServers(id){
    new 
menu menu_create("\y[Community Info] \wLista de servidores""cmdServers_callback");
    new 
szOption[512];
    
    for (new 
0g_serverCounti++){
        static 
szId[3];
        
num_to_str(iszIdcharsmax(szId));
        
formatex(szOptioncharsmax(szOption), "\w%s \y[%s]\r[%d/%d]"g_szName[i], g_szMap[i], g_iPlayer[i], g_iMaxplayers[i]);
        
menu_additem(menuszOptionszId0);
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
    
    return 
PLUGIN_CONTINUE;
}

public 
cmdReload(idlevelcid){
    if (!
cmd_access(idlevelcid0)){
        return 
PLUGIN_HANDLED;
    }
    
event_round_start();
    
    return 
PLUGIN_CONTINUE;
}

public 
cmdConfigReload(idlevelcid){
    if (!
cmd_access(idlevelcid0)){
        return 
PLUGIN_HANDLED;
    }
    
loadServers();
    
    return 
PLUGIN_CONTINUE;
}

public 
cmdServers_callback(idmenuitem){
    
client_print(idprint_chat"La IP del servidor ^"%s^" es %s"g_szName[item], g_szServer[item]);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}  

public 
getServerInfo(const szServer[], _A2A_TYPE, const Response[], lensuccesslatency){
    if (!
success){
        return;
    }
    
    new 
serverId = -1;
    for (new 
0g_serverCounti++){
        if (
equal(g_szServer[i], szServer)){
            
serverId i;
            break;
        }
    }
    
    if (
serverId == -1){
        return;
    }
    
    new 
szName[256], szMap[64], szDirectory[64], szDescription[64];
    new 
iPlayers 0;
    new 
iMaxPlayers 0;

    
ServerResponseParseInfo(ResponseszNamecharsmax(szName), szMapcharsmax(szMap), szDirectorycharsmax(szDirectory), szDescriptioncharsmax(szDescription), iPlayersiMaxPlayers);
    
    
copy(g_szName[serverId], charsmax(g_szName[]), szName);
    
copy(g_szMap[serverId], charsmax(g_szMap[]), szMap);
    
g_iPlayer[serverId] = iPlayers;
    
g_iMaxplayers[serverId] = iMaxPlayers;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/ 
[Imagen: 76561198090851442.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)