[Ajuda] Problema loop.
#1

[I]Meu loop esta com um problema, nao sei oque pode ser..

pawn Код:
if(dialogid == 3)
        {
            if(!response)
            {
                SendClientMessage(playerid,0xff5555ff,"SMS Cancelado.");
                return 1;
            }
            new id;
            if(PlayerInfo[playerid][pCreditos] == 0)
            return SendClientMessage(playerid, -1, "Vocк nгo possui Crйditos.");

            new playeridName[20], idName[20], String[128];

            GetPlayerName(playerid, playeridName, 20);
            GetPlayerName(id, idName, 20);

            format(String, 128, "%s ID:%i Torpedгo: %s", playeridName, playerid, inputtext);
            SendClientMessage(gPMDestinationID[playerid], 0xaaffaaff, String); //Envia a mensagem ao id que foi digitado
            for(new i; i < MAX_PLAYERS; i++)
            {
               if(IsPlayerConnected(i) && PlayerInfo[i][pAdmin] > 0)
               {
                   printf("PLAYER ID %d | Admin level = %d", i, PlayerInfo[i][pAdmin]);

                   format(String, sizeof(String), "{00F51D} %s {FFFFFF}enviou para {F5AB00}%s: {00F51D}%s", playeridName, idName, inputtext);
                   SendClientMessage(i, COLOR_PCC, String);
               }
            }
            PlayerInfo[playerid][pCreditos]--;
            format(String, 128, "Torpedгo enviado a %s, gasto 1 Crйditos. Seus Crйditos: %i.", idName, PlayerInfo[playerid][pCreditos]);
            SendClientMessage(playerid, COLOR_CV, String);
            return 1;
        }[/i]


ele apenas envia ao player que a mensagem enviada vai para todos que estiverem com o id 0.
EX:
Код:
 id 0 - joao
id 1 - marcos
id 2 - fabricio
o id 1 vai enviar a mensagem pro id 2.
ao inves de aparecer "marcos enviou parar fabricio: taltaltal aparece marcos enviou para joao porem a mensagem vai pro fabricio, mas o nome fica errado. alguem? pls
Reply
#2

posta o seu comando de enviar torpedo
Reply
#3

Vamos fazer uma breve anбlise do cуdigo para que possamos identificar o problema.

Obviamente, como o problema estб na mensagem de envio, vamos comeзar pela formataзгo da mensagem.

PHP код:
 format(Stringsizeof(String), "{00F51D} %s {FFFFFF}enviou para {F5AB00}%s: {00F51D}%s"playeridNameidNameinputtext); 
Como vocк disse, o problema estб no nome do destinatбrio, certo?
Vemos que na formataзгo acima:
playeridName = Jogador que estб enviando a mensagem (remetente);
idName = Jogador que vai receber a mensagem (destinatбrio);
inputtext =Mensagem a ser enviada.

Pois bem. Nota-se que o problema estб na idName. Entгo vamos voltar um pouquinho e ver o que foi feito com ela no decorrer do cуdigo.

Uau! Encontramos isto:
PHP код:
GetPlayerName(ididName20); 
Okay! Estamos obtendo o nome do jogador id e armazenando ele na idName. Agora precisamos descobrir quem й, ou melhor, qual o valor de id. Voltemos mais um pouquinho no cуdigo e...

PHP код:
new id
Acho que descobrimos o problema, certo? Vocк criou a variбvel id e nгo atribuiu um valor a ela, sendo assim, seu valor й nulo (0), por isso o destinatбrio da mensagem aparece como se fosse o ID 0.

E por que o jogador correto estб recebendo a mensagem?
Bom, isso estб nessa parte do cуdigo:

PHP код:
format(String128"%s ID:%i Torpedгo: %s"playeridNameplayeridinputtext);
    
SendClientMessage(gPMDestinationID[playerid], 0xaaffaaffString); //Envia a mensagem ao id que foi digitado 
Sendo assim, creio que uma provбvel soluзгo seria:
PHP код:
GetPlayerName(gPMDestinationID[playerid], idName20); 
Cуdigo completo:

PHP код:
if(dialogid == 3)
{
    if(!
response) return SendClientMessage(playerid,0xff5555ff,"SMS Cancelado.");
    if(
PlayerInfo[playerid][pCreditos] == 0) return SendClientMessage(playerid, -1"Vocк nгo possui Crйditos.");
    new 
playeridName[20], idName[20], String[128];
    
GetPlayerName(playeridplayeridName20);
    
GetPlayerName(gPMDestinationID[playerid], idName20);
    
format(String128"%s ID:%i Torpedгo: %s"playeridNameplayeridinputtext);
    
SendClientMessage(gPMDestinationID[playerid], 0xaaffaaffString); //Envia a mensagem ao id que foi digitado
    
    
for(new iMAX_PLAYERSi++)
    {
       if(
IsPlayerConnected(i) && PlayerInfo[i][pAdmin] > 0)
       {
           
printf("PLAYER ID %d | Admin level = %d"iPlayerInfo[i][pAdmin]);
           
format(Stringsizeof(String), "{00F51D} %s {FFFFFF}enviou para {F5AB00}%s: {00F51D}%s"playeridNameidNameinputtext);
           
SendClientMessage(iCOLOR_PCCString);
       }
    }
    
PlayerInfo[playerid][pCreditos]--;
    
format(String128"Torpedгo enviado a %s, gasto 1 Crйditos. Seus Crйditos: %i."idNamePlayerInfo[playerid][pCreditos]);
    
SendClientMessage(playeridCOLOR_CVString);
    return 
1;

Espero que tenha entendido e que o problema seja resolvido. Se falei bobeira ou algo errado, me desculpe, escrevi a postagem com pressa e estou me sentindo enferrujada com pawn, kkk'
Reply
#4

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
Vamos fazer uma breve anбlise do cуdigo para que possamos identificar o problema.

Obviamente, como o problema estб na mensagem de envio, vamos comeзar pela formataзгo da mensagem.

PHP код:
 format(Stringsizeof(String), "{00F51D} %s {FFFFFF}enviou para {F5AB00}%s: {00F51D}%s"playeridNameidNameinputtext); 
Como vocк disse, o problema estб no nome do destinatбrio, certo?
Vemos que na formataзгo acima:
playeridName = Jogador que estб enviando a mensagem (remetente);
idName = Jogador que vai receber a mensagem (destinatбrio);
inputtext =Mensagem a ser enviada.

Pois bem. Nota-se que o problema estб na idName. Entгo vamos voltar um pouquinho e ver o que foi feito com ela no decorrer do cуdigo.

Uau! Encontramos isto:
PHP код:
GetPlayerName(ididName20); 
Okay! Estamos obtendo o nome do jogador id e armazenando ele na idName. Agora precisamos descobrir quem й, ou melhor, qual o valor de id. Voltemos mais um pouquinho no cуdigo e...

PHP код:
new id
Acho que descobrimos o problema, certo? Vocк criou a variбvel id e nгo atribuiu um valor a ela, sendo assim, seu valor й nulo (0), por isso o destinatбrio da mensagem aparece como se fosse o ID 0.

E por que o jogador correto estб recebendo a mensagem?
Bom, isso estб nessa parte do cуdigo:

PHP код:
format(String128"%s ID:%i Torpedгo: %s"playeridNameplayeridinputtext);
    
SendClientMessage(gPMDestinationID[playerid], 0xaaffaaffString); //Envia a mensagem ao id que foi digitado 
Sendo assim, creio que uma provбvel soluзгo seria:
PHP код:
GetPlayerName(gPMDestinationID[playerid], idName20); 
Cуdigo completo:

PHP код:
if(dialogid == 3)
{
    if(!
response) return SendClientMessage(playerid,0xff5555ff,"SMS Cancelado.");
    if(
PlayerInfo[playerid][pCreditos] == 0) return SendClientMessage(playerid, -1"Vocк nгo possui Crйditos.");
    new 
playeridName[20], idName[20], String[128];
    
GetPlayerName(playeridplayeridName20);
    
GetPlayerName(gPMDestinationID[playerid], idName20);
    
format(String128"%s ID:%i Torpedгo: %s"playeridNameplayeridinputtext);
    
SendClientMessage(gPMDestinationID[playerid], 0xaaffaaffString); //Envia a mensagem ao id que foi digitado
    
    
for(new iMAX_PLAYERSi++)
    {
       if(
IsPlayerConnected(i) && PlayerInfo[i][pAdmin] > 0)
       {
           
printf("PLAYER ID %d | Admin level = %d"iPlayerInfo[i][pAdmin]);
           
format(Stringsizeof(String), "{00F51D} %s {FFFFFF}enviou para {F5AB00}%s: {00F51D}%s"playeridNameidNameinputtext);
           
SendClientMessage(iCOLOR_PCCString);
       }
    }
    
PlayerInfo[playerid][pCreditos]--;
    
format(String128"Torpedгo enviado a %s, gasto 1 Crйditos. Seus Crйditos: %i."idNamePlayerInfo[playerid][pCreditos]);
    
SendClientMessage(playeridCOLOR_CVString);
    return 
1;

Espero que tenha entendido e que o problema seja resolvido. Se falei bobeira ou algo errado, me desculpe, escrevi a postagem com pressa e estou me sentindo enferrujada com pawn, kkk'
anбlise ? ou uma aula kkk
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)