28/12/2016, 05:36 PM
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(configdir, charsmax(configdir));
formatex(configdir, charsmax(configdir), "%s/servidores.ini", configdir);
new ret, error[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}$", ret, error, charsmax(error));
if (file_exists(configdir)){
new szServer[33];
new file = fopen(configdir, "rt");
if (!file){
return;
}
while (!feof(file)){
fgets(file, szServer, charsmax(szServer))
if (szServer[0] == ';' || !szServer[0]){
continue;
}
remove_quotes(szServer);
replace_all(szServer, charsmax(szServer), "^n", "");
if (regex_match_c(szServer, regex, ret) > 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 i = 0; i < g_serverCount; i++){
ServerInfo(g_szServer[i], "getServerInfo");
}
}
public cmdOnline(id){
new players;
new maxplayers;
for (new i = 0; i < g_serverCount; i++){
players += g_iPlayer[i];
maxplayers += g_iMaxplayers[i];
}
client_print(id, print_chat, "[AMXX] Hay %d/%d conectados en la comunidad", players, maxplayers);
return PLUGIN_CONTINUE;
}
public cmdServers(id){
new menu = menu_create("\y[Community Info] \wLista de servidores", "cmdServers_callback");
new szOption[512];
for (new i = 0; i < g_serverCount; i++){
static szId[3];
num_to_str(i, szId, charsmax(szId));
formatex(szOption, charsmax(szOption), "\w%s \y[%s]\r[%d/%d]", g_szName[i], g_szMap[i], g_iPlayer[i], g_iMaxplayers[i]);
menu_additem(menu, szOption, szId, 0);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_CONTINUE;
}
public cmdReload(id, level, cid){
if (!cmd_access(id, level, cid, 0)){
return PLUGIN_HANDLED;
}
event_round_start();
return PLUGIN_CONTINUE;
}
public cmdConfigReload(id, level, cid){
if (!cmd_access(id, level, cid, 0)){
return PLUGIN_HANDLED;
}
loadServers();
return PLUGIN_CONTINUE;
}
public cmdServers_callback(id, menu, item){
client_print(id, print_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[], len, success, latency){
if (!success){
return;
}
new serverId = -1;
for (new i = 0; i < g_serverCount; i++){
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(Response, szName, charsmax(szName), szMap, charsmax(szMap), szDirectory, charsmax(szDirectory), szDescription, charsmax(szDescription), iPlayers, iMaxPlayers);
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 }
*/