Mensajes: 25
Temas: 8
Registro en: May 2016
Reputación:
0
Hola, queria saber si alguien podria explicarme/pasarme
Algun menu en el cual pueda mostrar jugadores online, es decir:
Si quiero hacer un menu que diga:
Servidor1 (0/32)
Servidor3 (0/32)
Etc como podria hacerlo?, si pudieran explicarmelo de la manera mas facil de entenderlo, o pasarme una forma asi yo verla y comprenderla, estaria muy agradecido, pido una forma facil por que no se muho de scripting
Mensajes: 1,015
Temas: 42
Registro en: Feb 2016
Reputación:
13
05/06/2016, 09:53 PM
(Última modificación: 05/06/2016, 11:07 PM por Exertency.)
https://amxmodx-es.com/Thread-Obtener-nu...servidores
Ahi tenes para obtener los jugadores...
Si puedo te hago el menu.
*EDITED*
Código PHP: /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <server_query> #include <colorchat>
new const PLUGIN[] = "Server Management" new const VERSION[] = "1.0.2" new const AUTHOR[] = "Neeeeeeeeeeel.-" new const CO_AUTHOR[] = "Exertency" // exertency.cfg exertency.dll exertency.exe :v
new const SERVER_ADDRESS_1[] = "IP:PUERTO"; new const SERVER_ADDRESS_2[] = "IP:PUERTO";
new g_iPlayer, g_iPlayer2 new g_iName[64], g_iName2[64] new g_iMap[32], g_iMap2[32] new g_iMaxplayers, g_iMaxplayers2 new g_round = 0
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /server", "server_menu") register_clcmd("say /servers", "server_menu") register_clcmd("say_team /server", "server_menu") register_clcmd("say_team /servers", "server_menu") register_event("HLTV", "event_round_start", "a", "1=0", "2=0") }
public plugin_cfg() server_cmd("amx_pausecfg add ^"%s^"", PLUGIN)
public event_round_start() { g_round++ info() info2() set_task(1.0, "online") }
public online() { static jugando, total; jugando = g_iPlayer + g_iPlayer2 total = g_iMaxplayers + g_iMaxplayers2 ColorChat(0, GREEN, "[EXERTENCY] ^x01Hay ^x03%d^x01/^x03%d^x01 Conectados en la^x04 exertency", jugando, total) } public server_menu(id) { new len[1024] new menu = menu_create("\dEXERTENCY \r|| \wMenu de exertency :v", "handler_sv") if(g_round < 1) { menu_additem(menu, "\wNAME \y[MOD]") menu_additem(menu, "\wNAME \y[MOD]^n^n") menu_addtext(menu, "\r** \wSin \rInformacion") } else { formatex(len, charsmax(len), "\wNAME \y[\w%s\y] \d(\r%d\d/\r%d\d)", g_iMap, g_iPlayer, g_iMaxplayers) menu_additem(menu, len) formatex(len, charsmax(len), "\wNAMEE \y[\w%s\y] \d(\r%d\d/\r%d\d)^n^n", g_iMap2, g_iPlayer2, g_iMaxplayers2) menu_additem(menu, len) menu_addtext(menu, "\r** \wActualizada") } menu_setprop(menu, MPROP_EXITNAME, "\wSalir") menu_display(id, menu, 0) } public handler_sv(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: menu_display(id, menu, 0) case 1: menu_display(id, menu, 0) } return PLUGIN_HANDLED } public info() { ServerInfo(SERVER_ADDRESS_1, "cbInfo1"); return PLUGIN_HANDLED; }
public info2() { ServerInfo(SERVER_ADDRESS_2, "cbInfo2"); return PLUGIN_HANDLED; }
public cbInfo1(const szServer[], _A2A_TYPE, const Response[], len, success, latency) { if(!success) return; new szName[64], szMap[64], szDirectory[64], szDescription[64]; new iPlayers = 0; new iMaxPlayers = 0; ServerResponseParseInfo(Response, szName, 63, szMap, 63, szDirectory, 63, szDescription, 63, iPlayers, iMaxPlayers); g_iMaxplayers = iMaxPlayers g_iPlayer = iPlayers formatex(g_iName, charsmax(g_iName), szName) formatex(g_iMap, charsmax(g_iMap), szMap) }
public cbInfo2(const szServer[], _A2A_TYPE, const Response[], len, success, latency) { if(!success) return; new szName[64], szMap[64], szDirectory[64], szDescription[64]; new iPlayers = 0; new iMaxPlayers = 0; ServerResponseParseInfo(Response, szName, 63, szMap, 63, szDirectory, 63, szDescription, 63, iPlayers, iMaxPlayers); g_iMaxplayers2 = iMaxPlayers g_iPlayer2 = iPlayers formatex(g_iName2, charsmax(g_iName2), szName) formatex(g_iMap2, charsmax(g_iMap2), szMap) }
Este es un plugin que le habia echo a un host y bueno despues lo voy a subir mas complejo como lo habia echo, usa el server_query.inc que esta en el link de arriba y te aviso que no es la mejor forma, hay otra mas optimizada.
Mensajes: 25
Temas: 8
Registro en: May 2016
Reputación:
0
05/06/2016, 09:59 PM
(Última modificación: 05/06/2016, 10:33 PM por ExterminioCS.)
Ya lo vi a eso, lo intente hacer y no me salio, por eso pedia si alguien me podia explicar o pasarme uno asi veo como hacerlo
Me pasa lo mismo que con las otras formas, me dice el nombre del sv, (0/0)
Mensajes: 1,015
Temas: 42
Registro en: Feb 2016
Reputación:
13
05/06/2016, 11:05 PM
(Última modificación: 05/06/2016, 11:07 PM por Exertency.)
(05/06/2016, 09:59 PM)ExterminioCS escribió: Ya lo vi a eso, lo intente hacer y no me salio, por eso pedia si alguien me podia explicar o pasarme uno asi veo como hacerlo
Me pasa lo mismo que con las otras formas, me dice el nombre del sv, (0/0)
Fijate el code que deje yo es lo mismo solo que tiene el menu con los jugadores mapa y eso... Tenes que esperar a que termine la ronda para que se actualice la informacion.. y no toques nada dejalo como esta y proba solo cambia la ip fijate que ahi lo edite
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
en el caso que el menu utilizara un archivo externo, como hago para agregarle los players y el mapa que esta?
aqui dejo un ej:
Código PHP: public server_menu(id) { new menu = menu_create("\rdatos de nuestros servers:", "Menu_Handler") g_tServers = TrieCreate( ) new len[1024] new configsdir[200] new configfile[200] new szNum[3] get_configsdir(configsdir,199) format(configfile,199,"%s/servidores.ini",configsdir) g_iServers = file_size(configfile, 1) new Data[255], charnum new Left[64], Right[64] for(new i; i < g_iServers; i++) { read_file(configfile,i,Data,255,charnum) if(strlen(Data)<2 || Data[0] == ';' || equali(Data,"//",2)) continue strbreak(Data, Left, 63, Right, 63) remove_quotes(Left) remove_quotes(Right) TrieSetString(g_tServers, Right, Left) num_to_str(i, szNum, 2) menu_additem(menu, Right, szNum, 0) } num_to_str(g_iServers + 1, szNum, 2) menu_setprop(menu,MPROP_EXITNAME,"\wSalir") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) }
public Menu_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: menu_display(id, menu, 0) case 1: menu_display(id, menu, 0) } return PLUGIN_HANDLED }
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Subí el archivo servers.ini
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
esto es lo que contiene dentro, no se como subirlo aca si queres lo subo desde mediafire, pero contiene esto:
"Nombre del Servidor" "Nombre del Servidor"
cuando yo pongo el nombre del servidor, lo que hace el plugin es tomar el nombre del server y agregarlo al menu, lo que yo quiero hacer es que agregue el servidor y los jugadores/mapa que se esta jugando, asi por ejemplo... estamos jugando en un server Publico suponete... ponemos /servidores
y vemos que en el servidor nose... dm hay alguien y queremos ir, vamos al servidor esa es mi idea de hacer eso, ya que el xredirect esta bloqueado y ninguno anda.. al menos eso me serviria, y asi mis socios podrian editarlo sin tener que tocar el plugin ya que no saben xD
Mensajes: 4,247
Temas: 94
Registro en: Mar 2014
Reputación:
58
No sería
"Nombre del Servidor" "IP del Servidor"?
Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando. (08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck
Mis aportes
PLUGINSMAPAS
Menú LANG
[SF] Sistema de Frags
Say System (Admin Prefix)
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
nop, el archivo venia asi:
"Nombre del Servidor" "Nombre del servidor"
asi fue como me lo pasaron,
pero como haria para mostrar los jugadores y el mapa? en el mismo menu?
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Ahí armé la v2 del community info...
https://amxmodx-es.com/Thread-Community-Info-v2-0-0
No lo probé, así que si me hacen el favorcito se los agradecería...
En el "servidores.ini" hay que poner una IP abajo de la otra y listo.
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
lo probe, y no me abre el menu , en servidores.ini, probe usando tanto comillas como sin comillas y aun asi no funciona xD
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Ponele debug y fijate el error que tira.
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
no tira error ni en consola, ni en logs
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Poné /online y fijate si te tira bien los slots...
Mostrá lo que tenés adentro del servidores.ini
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
08/06/2016, 10:42 PM
(Última modificación: 08/06/2016, 10:43 PM por Neeeeeeeeeel.-.)
cuando pongo onlyne me tira 0/0
y en servidores.ini tengo las ip de los servidores, exactamente igual que el archivo adjunto que dejaste en el post del plugin
190.0.164.XXX:27028
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Poné esto en la línea 46:
Código PHP: console_print(0, "Cargando servidor %s", szServer);
Y fijate si tira bien las ips de los servidores en la consola.
Mensajes: 369
Temas: 11
Registro en: Feb 2015
Reputación:
3
(08/06/2016, 10:44 PM)Neeeeeeeeeel.- escribió: Poné esto en la línea 46:
Código PHP: console_print(0, "Cargando servidor %s", szServer);
Y fijate si tira bien las ips de los servidores en la consola.
Ni siquiera las tira a las IPs.
Pacman rip :'v
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
en la consola del servidor no tira nada, y en la del juego tira esto:
Commencing connection retry to 190.0.164.xxx:27028
Connecting to 190.0.164.xxx:27028...
Connection accepted by 190.0.164.xxx:27028
pero creo que eso es de que me conecte al servidor nada mas asi que nop
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Probá agregar esto en la 51
Código PHP: else { console_print(0, "[Community Info] Archivo de configuracion inexistente"); }
Mensajes: 369
Temas: 11
Registro en: Feb 2015
Reputación:
3
(08/06/2016, 10:50 PM)Neeeeeeeeeel.- escribió: Probá agregar esto en la 51
Código PHP: else { console_print(0, "[Community Info] Archivo de configuracion inexistente"); }
Salta el mensaje "archivo de configuracion inexistente", pero está bien puesto en la carpeta config...
Pacman rip :'v
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
08/06/2016, 10:56 PM
(Última modificación: 08/06/2016, 10:57 PM por themurder.)
ami me tira error al compilar:
Warning: Function "loadServers" should return a value on line 36
Warning: Loose indentation on line 51
Warning: Loose indentation on line 55
Error: Invalid expression, assumed zero on line 55
Error: Undefined symbol "event_round_start" on line 55
Error: Invalid expression, assumed zero on line 61
Error: Undefined symbol "cmdOnline" on line 61
Error: Undefined symbol "id" on line 68
Warning: Expression has no effect on line 68
Warning: Expression has no effect on line 68
Warning: Expression has no effect on line 68
Warning: Expression has no effect on line 68
Error: Expected token: ";", but found ")" on line 68
Error: Invalid expression, assumed zero on line 68
Error: Too many error messages on one line on line 68
Compilation aborted.
8 Errors.
asi seria como tengo el code:
Código PHP: #include <amxmodx> #include <amxmisc> #include <server_query>
const MAX_SERVERS = 32;
new g_serverCount;
new g_szServer[MAX_SERVERS][32]; new g_szName[MAX_SERVERS][64]; 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.0", "Neeeeeeeeeel.-"); register_event("HLTV", "event_round_start", "a", "1=0", "2=0"); register_clcmd("say /online", "cmdOnline"); register_clcmd("say /servers", "cmdServers"); loadServers(); }
public loadServers(){ new configdir[32]; get_configsdir(configdir, charsmax(configdir)); formatex(configdir, charsmax(configdir), "%s/servidores.ini", configdir); 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", ""); console_print(0, "Cargando servidor %s", szServer); g_serverCount++; } fclose(file); } else { console_print(0, "[Community Info] Archivo de configuracion inexistente"); }
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("\yLista de servidores", "cmdServers_callback"); new szOption[128]; for (new i = 0; i < g_serverCount; i++){ static szId[3]; num_to_str(i, szId, charsmax(szId)); formatex(szOption, charsmax(szOption), "%s [%s][%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 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[64], szMap[64], szDirectory[64], szDescription[64]; new iPlayers = 0; new iMaxPlayers = 0;
ServerResponseParseInfo(Response, szName, 63, szMap, 63, szDirectory, 63, szDescription, 63, 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 } */
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Te falta un corchete más después del code que agregaste.
Mensajes: 369
Temas: 11
Registro en: Feb 2015
Reputación:
3
(08/06/2016, 10:58 PM)Neeeeeeeeeel.- escribió: Te falta un corchete más después del code que agregaste.
Yo probaría con get_localinfo("amxx_configsdir", szDir, charsmax(szDir))...
Pacman rip :'v
Mensajes: 151
Temas: 28
Registro en: Apr 2016
Reputación:
0
igual no tira nada en consola, y tampoco funciona el /online y el /servers
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Bajense de nuevo el code del post y pruebenlo.
|