Duda con guardado de ip
#1

Hola. Hice un sistema con el cual quiero que se guarde en la informacion de cada user la ip que tiene.
Una vez salga y entre se compruebe la ip guardada y si es la misma le avise que es la misma y si es diferente que le diga que es distinta.

Aquн lo que hice:

Asi la obtengo y guardo:

pawn Код:
if (strcmp("/vIp", cmdtext, true, 10) == 0)
    {
        new ip[32];

        GetPlayerIp(playerid,ip,sizeof(ip));
        format(string, sizeof(string), "Tu IP es %s", ip);
        SendClientMessage(playerid, Rojo, string);
        GetPlayerIp(playerid, PlayerInfo[playerid][pIP], 32);
        return 1;
    }
Y en onplayerconect

pawn Код:
GetPlayerIp(i, PlayerInfo[i][pIP], 32);

        new tempip[32];
        GetPlayerIp(playerid, tempip, 32);
        if(strcmp(tempip, Info[playerid][pIP], true))
        {
            SendClientMessage(playerid, COLOR_WHITE, "Ip distinta");
            return 1;
        }
        else if
        {
            SendClientMessage(playerid, COLOR_WHITE, "Ip igual");
            return 1;
        }
Y asi lo guardo:

pawn Код:
pIP[32],
pawn Код:
PlayerConect
pawn Код:
PlayerInfo[playerid][pIP] = 0;
OnPlayerLogin

pawn Код:
if( strcmp( key , "IpJugador" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(PlayerInfo[playerid][pIP], val, 0, strlen(val)-1, 255); }

OnPlayerRegister

pawn Код:
format(var, 32, "IpJugador=%.1f\n",PlayerInfo[playerid][pIP]);fwrite(hFile, var);
OnPlayerUpdate

pawn Код:
format(var, 32, "IpJugador=%.1f\n",PlayerInfo[playerid][pIP]);fwrite(hFile, var);

Pero o la guarda con 2 numeros o con 0.0

їAlguna ayuda?
Reply
#2

%.1f eso es float ejemplo 14124.12

guardalo con %d o con %i
Reply
#3

Para que muestre la IP, usa %d.
Reply
#4

Quote:
Originally Posted by Jordan98
Посмотреть сообщение
Para que muestre la IP, usa %d.
No repitas.
Se lo dije arriba.
Reply
#5

Usa %Ў o %d
Reply
#6

Si lo defino con %d me sale solo 2 numeros aleatorios.
Reply
#7

Quote:
Originally Posted by Jose_grana
Посмотреть сообщение
Si lo defino con %d me sale solo 2 numeros aleatorios.
entonces con %i o metelo en una cadena de texto
Reply
#8

Estan todos mal. La ip retornada por la funcion GetPlayerIp devuelve un string y no puede ser guardado como float ni como integer. Para insertar cadenas de texto (strings) mediante la funcion format, se utiliza '%s'.
Reply
#9

Muchнsimas gracias The Chaoz lo probй y efectivamente, ahora ya las guarda correctamente!. Muchнsimas gracias una vez mas
Reply
#10

Esto estб mal:

pawn Код:
if (strcmp("/vIp", cmdtext, true, 10) == 0)    
{        
    new ip[32];        
    GetPlayerIp(playerid,ip,sizeof(ip));        
    format(string, sizeof(string), "Tu IP es %s", ip);        
    SendClientMessage(playerid, Rojo, string);        
    GetPlayerIp(playerid, PlayerInfo[playerid][pIP], 32);        
    return 1;    
}
Serнa:

pawn Код:
if(strcmp("/vIp", cmdtext, true) == 0)    
{        
    new ip[20];        
    GetPlayerIp(playerid,ip,sizeof(ip));        
    format(string, sizeof(string), "Tu IP es %s", ip);        
    SendClientMessage(playerid, Rojo, string);        
    format(PlayerInfo[playerid][pIP], 20, "%s", ip);
    return 1;    
}
Esto tambiйn:

pawn Код:
GetPlayerIp(i, PlayerInfo[i][pIP], 32);        
new tempip[32];        
GetPlayerIp(playerid, tempip, 32);        
if(strcmp(tempip, Info[playerid][pIP], true))        
{            
    SendClientMessage(playerid, COLOR_WHITE, "Ip distinta");            
    return 1;        
}        
else if        
{            
    SendClientMessage(playerid, COLOR_WHITE, "Ip igual");            
    return 1;        
}
Serнa:

pawn Код:
//Quitar lo que tienes aquн
new tempip[20];        
GetPlayerIp(playerid, tempip, sizeof(tempip));
if(strcmp(tempip, Info[playerid][pIP], true) == 0)  
{            
    SendClientMessage(playerid, COLOR_WHITE, "Ip igual");            
    return 1;        
}        
else        
{            
    SendClientMessage(playerid, COLOR_WHITE, "Ip distinta");            
    return 1;        
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)