[Ayuda] No se muestra un mensaje
#1

Hola, nesetito ayuda con este comando:

el comanto tiene que mostrarme al dueсo del D.N.I cuando ponga el cmd EJ: /verdni 12345678
cuando pongo un D.N.I que el no existe me dice el mensaje "El jugador del nъmero de D.N.I no esta conectado o no existe el D.N.I."
cuando pongo un D.N.I de mas de 8 digitos me dice "Tienes que escribir un D.N.I de 8 digitos."
hasta ahi todo bien pero cuando pongo un D.N.I que existe no me musestra ningun mensaje y me tendria que mostrar un mensajeasн Ej: El D.N.I corresponde al jugador Kageyama.

Perdon que no sepa como explicarme bien D: igual espero que puedan ayudarme.

pawn Код:
if(strcmp(cmd,"/verdni",true)==0)
{
tmp1=strtok(cmdtext,idx);
new dni=strval(tmp1);
if(!strlen(tmp1))return SendClientMessage(playerid,COLOR_GRIS,"USO: /verdni [D.N.I]");
if(strlen(tmp1)!=8)return SendClientMessage(playerid,-1,"Tienes que escribir un D.N.I de 8 digitos.");
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&PlayerInfo[i][pDNI]==dni)break;
if(PlayerInfo[i][pDNI]!=dni)return SendClientMessage(playerid,-1,"El jugador del nъmero de D.N.I no esta conectado o no existe el D.N.I.");

format(Srt,sizeof(Srt),"El D.N.I corresponde al jugador %s[%i]",Name(i),i);
SendClientMessage(playerid,-1,Srt);
}
return 1;
}
El problema es que no se muestra el mensaje y si lo saco del bucle tira error la Name(i):
pawn Код:
format(Srt,sizeof(Srt),"El D.N.I corresponde al jugador %s[%i]",Name(i),i);
SendClientMessage(playerid,-1,Srt);
Si alguien tiene tiempo y me lo puede arreglar siria de gran ayuda :)

PD: no entiendo bien el foro todavia asi que no se si esta en la seccion correcta D:
Reply
#2

No revisaste el bucle?

pawn Код:
for(new i; i<GetMaxPlayers(); i++)
Proba asi.
Reply
#3

El problema es que cuando encuentra al jugador que estб conectado y variable pDNI es la misma que colocaste como parбmetro te saca del bucle (break) y lo que estб despuйs de ese cуdigo no se cumplirб (hablo de lo que estб despuйs PERO dentro del bucle.) por ende, cuando te saca del bucle no se chequearб el siguiente if ni ejecutarбn las funciones que vienen...

ej.

pawn Код:
new variable[MAX_PLAYERS];

for(new i; i < GetMaxPlayers(); i++)
{
    if(IsPlayerConnected(i) && variable[i] == 1) break; //Si el jugador estб conectado y la variable es 1 te saca del bucle y no se cumple lo que sigue abajo que estй dentro del bucle.
    //funciones que no se ejecutarбn si se cumpliу la condiciуn de arriba ↑
}
Prueba de йsta manera a ver

pawn Код:
if(strcmp(cmd,"/verdni",true, 7)==0)
{
    tmp1 = strtok(cmdtext,idx);
    if(strlen(tmp1) == 0) return SendClientMessage(playerid,COLOR_GRIS,"USO: /verdni [D.N.I]");
    if(strlen(tmp1) != 8) return SendClientMessage(playerid,-1,"Tienes que escribir un D.N.I de 8 digitos.");
    new dni = strval(tmp1);
    new Srt[256];
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(PlayerInfo[i][pDNI] == dni)
        {
            format(Srt,sizeof(Srt),"El D.N.I %d corresponde al jugador %s[%d]",dni,Name(i),i);
            break;
        }
        else
        {
            format(Srt,sizeof(Srt),"El jugador con el nъmero de D.N.I %d no estб conectado o no existe", dni);
        }
    }
    SendClientMessage(playerid,-1,Srt);
    return 1;
}
Reply
#4

Quote:
Originally Posted by aoEXE
Посмотреть сообщение
El problema es que cuando encuentra al jugador que estб conectado y variable pDNI es la misma que colocaste como parбmetro te saca del bucle (break) y lo que estб despuйs de ese cуdigo no se cumplirб (hablo de lo que estб despuйs PERO dentro del bucle.) por ende, cuando te saca del bucle no se chequearб el siguiente if ni ejecutarбn las funciones que vienen...

ej.

pawn Код:
new variable[MAX_PLAYERS];

for(new i; i < GetMaxPlayers(); i++)
{
    if(IsPlayerConnected(i) && variable[i] == 1) break; //Si el jugador estб conectado y la variable es 1 te saca del bucle y no se cumple lo que sigue abajo que estй dentro del bucle.
    //funciones que no se ejecutarбn si se cumpliу la condiciуn de arriba ↑
}
Prueba de йsta manera a ver

pawn Код:
if(strcmp(cmd,"/verdni",true, 7)==0)
{
    tmp1 = strtok(cmdtext,idx);
    if(strlen(tmp1) == 0) return SendClientMessage(playerid,COLOR_GRIS,"USO: /verdni [D.N.I]");
    if(strlen(tmp1) != 8) return SendClientMessage(playerid,-1,"Tienes que escribir un D.N.I de 8 digitos.");
    new dni = strval(tmp1);
    new Srt[256];
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(PlayerInfo[i][pDNI] == dni)
        {
            format(Srt,sizeof(Srt),"El D.N.I %d corresponde al jugador %s[%d]",dni,Name(i),i);
            break;
        }
        else
        {
            format(Srt,sizeof(Srt),"El jugador con el nъmero de D.N.I %d no estб conectado o no existe", dni);
        }
    }
    SendClientMessage(playerid,-1,Srt);
    return 1;
}
Gracias!!! y encima de explicarme porque no andaba me hiciste el cmd
Reply
#5

Quote:
Originally Posted by Kageyama
Посмотреть сообщение
Gracias!!! y encima de explicarme porque no andaba me hiciste el cmd
Pero no te acostumbres a que te hagan las cosas. La idea es que vos aprendas y que sepas cual fue el error.
Reply
#6

Quote:
Originally Posted by Juance
Посмотреть сообщение
Pero no te acostumbres a que te hagan las cosas. La idea es que vos aprendas y que sepas cual fue el error.
Si, eso ya lo se.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)