Menu de jugadores
#1
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
Responder
#2
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_iPlayerg_iPlayer2
new g_iName[64], g_iName2[64]
new 
g_iMap[32], g_iMap2[32]
new 
g_iMaxplayersg_iMaxplayers2
new g_round 0

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
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 
jugandototal;
    
jugando g_iPlayer g_iPlayer2
    total 
g_iMaxplayers g_iMaxplayers2
    ColorChat
(0GREEN"[EXERTENCY] ^x01Hay ^x03%d^x01/^x03%d^x01 Conectados en la^x04 exertency"jugandototal)
}
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(lencharsmax(len), "\wNAME \y[\w%s\y] \d(\r%d\d/\r%d\d)"g_iMapg_iPlayerg_iMaxplayers)
        
menu_additem(menulen)
        
formatex(lencharsmax(len), "\wNAMEE \y[\w%s\y] \d(\r%d\d/\r%d\d)^n^n"g_iMap2g_iPlayer2g_iMaxplayers2)
        
menu_additem(menulen)
        
menu_addtext(menu"\r** \wActualizada")
    }
    
menu_setprop(menuMPROP_EXITNAME"\wSalir")
    
menu_display(idmenu0)
}
public 
handler_sv(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0menu_display(idmenu0)
        case 
1menu_display(idmenu0)
            
    }
    
    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[], lensuccesslatency)
{               
    if(!
success)
        return;
    
    new 
szName[64], szMap[64], szDirectory[64], szDescription[64];
    new 
iPlayers 0;
    new 
iMaxPlayers 0;
    
    
ServerResponseParseInfo(ResponseszName63szMap63szDirectory63szDescription63iPlayersiMaxPlayers);
    
    
g_iMaxplayers iMaxPlayers
    g_iPlayer 
iPlayers
    formatex
(g_iNamecharsmax(g_iName), szName)
    
formatex(g_iMapcharsmax(g_iMap), szMap)
}

public 
cbInfo2(const szServer[], _A2A_TYPE, const Response[], lensuccesslatency)
{               
    if(!
success)
        return;
    
    new 
szName[64], szMap[64], szDirectory[64], szDescription[64];
    new 
iPlayers 0;
    new 
iMaxPlayers 0;
    
    
ServerResponseParseInfo(ResponseszName63szMap63szDirectory63szDescription63iPlayersiMaxPlayers);
    
    
g_iMaxplayers2 iMaxPlayers
    g_iPlayer2 
iPlayers
    formatex
(g_iName2charsmax(g_iName2), szName)
    
formatex(g_iMap2charsmax(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.
Responder
#3
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)
Responder
#4
(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 pacman fijate que ahi lo edite
Responder
#5
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(configfile1)
    new 
Data[255], charnum
    
new Left[64], Right[64]
    
    for(new 
ig_iServersi++)
    {
        
read_file(configfile,i,Data,255,charnum)
        if(
strlen(Data)<|| Data[0] == ';' || equali(Data,"//",2))
        continue
        
        
strbreak(DataLeft63Right63)
        
remove_quotes(Left)
        
remove_quotes(Right)
        
        
TrieSetString(g_tServersRightLeft)
        
num_to_str(iszNum2)
        
menu_additem(menuRightszNum0)    
    }
    
    
    
num_to_str(g_iServers 1szNum2)
    
menu_setprop(menu,MPROP_EXITNAME,"\wSalir")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0)
}

public 
Menu_Handler(idmenuitem
    {
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0menu_display(idmenu0)
        case 
1menu_display(idmenu0)
            
    }
    
    return 
PLUGIN_HANDLED

Responder
#6
Subí el archivo servers.ini
[Imagen: paypalqr.png]
Responder
#7
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
Responder
#8
No sería
"Nombre del Servidor" "IP del Servidor"?
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

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

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#9
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?
Responder
#10
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.
[Imagen: paypalqr.png]
Responder
#11
lo probe, y no me abre el menu pacman, en servidores.ini, probe usando tanto comillas como sin comillas y aun asi no funciona xD
Responder
#12
Ponele debug y fijate el error que tira.
[Imagen: paypalqr.png]
Responder
#13
no tira error ni en consola, ni en logs Confundido
Responder
#14
Poné /online y fijate si te tira bien los slots...

Mostrá lo que tenés adentro del servidores.ini
[Imagen: paypalqr.png]
Responder
#15
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
Responder
#16
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.
[Imagen: paypalqr.png]
Responder
#17
(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
Responder
#18
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
Responder
#19
Probá agregar esto en la 51
Código PHP:
else {
    
console_print(0"[Community Info] Archivo de configuracion inexistente");

[Imagen: paypalqr.png]
Responder
#20
(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
Responder
#21
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(configdircharsmax(configdir));
    
formatex(configdircharsmax(configdir), "%s/servidores.ini"configdir);
    
    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""");
            
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 
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("\yLista de servidores""cmdServers_callback");
    new 
szOption[128];
    
    for (new 
0g_serverCounti++){
        static 
szId[3];
        
num_to_str(iszIdcharsmax(szId));
        
formatex(szOptioncharsmax(szOption), "%s [%s][%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 
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[64], szMap[64], szDirectory[64], szDescription[64];
    new 
iPlayers 0;
    new 
iMaxPlayers 0;

    
ServerResponseParseInfo(ResponseszName63szMap63szDirectory63szDescription63iPlayersiMaxPlayers);
    
    
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 }
*/ 
Responder
#22
Te falta un corchete más después del code que agregaste.
[Imagen: paypalqr.png]
Responder
#23
(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
Responder
#24
igual no tira nada en consola, y tampoco funciona el /online y el /servers
Responder
#25
Bajense de nuevo el code del post y pruebenlo.
[Imagen: paypalqr.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)