[Ajuda] Comando Bugado
#1



Sempre que eu digito o comando sу aparece essa mensagem nгo funciona direito

Код:
command(pm, playerid, params[])
{
    new pPara, mensagem[35], pName[MAX_PLAYER_NAME], pEnviou[MAX_PLAYER_NAME];
    if(sscanf(params, "ii", pPara, mensagem)) return SendClientMessage(playerid,-1,"Uso Correto: /pm [ID de Jogador(a)] [Mensagem]");
   // if(!IsPlayerConnected(pPara)) return SendClientMessage(playerid,-1,"Jogador(a) nгo connectado!");
    else
    {
    new string[128];
    GetPlayerName(pPara, pName, sizeof(pName));
    GetPlayerName(playerid, pEnviou, sizeof(pEnviou));
    format(string, sizeof(string),"[>>] Mensagem Privada de:%s [%d]: %s",pEnviou, playerid, mensagem);
    SendClientMessage(pPara,-1,string);
    format(string, sizeof(string),"[<<] Mensagem Enviada para:%s [%d]: %s",pName, pPara, mensagem);
    SendClientMessage(playerid,-1,string);
    }
    return 1;
}
Reply
#2

Код:
if(sscanf(params, "is", pPara, mensagem))
O seu scanff estava esperando 2 dados inteiros, mas o seu comando, pelo o que pude ver necessita de 1 parametro inteiro, que й o id, e outro string, que й a mensagem. Entгo o certo й "is"(inteiro e string) e nгo "ii"(inteiro inteiro)
Reply
#3

pawn Код:
command(pm, playerid, params[])
{
    new String[128], Mensagem[128], ID, Mandou[MAX_PLAYER_NAME], Recebeu[MAX_PLAYER_NAME];
    if(sscanf(params, "us[128]", ID, Mensagem)) return SendClientMessage(playerid, -1, "Digite: /pm <id> <mensagem>");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "Jogador nгo conectado!");
    GetPlayerName(playerid, Mandou, sizeof(Mandou));
    GetPlayerName(ID, Recebeu, sizeof(Recebeu));
    format(String, sizeof(String), "[>>] Mensagem Privada de: %s [%d]: %s", Mandou, playerid, Mensagem);
    SendClientMessage(ID, -1, String);
    format(String, sizeof(String), "[<<] Mensagem Enviada para: %s [%d]: %s", Recebeu, ID, Mensagem);
    SendClientMessage(playerid, -1, String);
    return 1;
}
Reply
#4

Quote:
Originally Posted by Ouro
Посмотреть сообщение
pawn Код:
command(pm, playerid, params[])
{
    new String[128], Mensagem[128], ID, Mandou[MAX_PLAYER_NAME], Recebeu[MAX_PLAYER_NAME];
    if(sscanf(params, "us[128]", ID, Mensagem)) return SendClientMessage(playerid, -1, "Digite: /pm <id> <mensagem>");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "Jogador nгo conectado!");
    GetPlayerName(playerid, Mandou, sizeof(Mandou));
    GetPlayerName(ID, Recebeu, sizeof(Recebeu));
    format(String, sizeof(String), "[>>] Mensagem Privada de: %s [%d]: %s", Mandou, playerid, Mensagem);
    SendClientMessage(ID, -1, String);
    format(String, sizeof(String), "[<<] Mensagem Enviada para: %s [%d]: %s", Recebeu, ID, Mensagem);
    SendClientMessage(playerid, -1, String);
    return 1;
}
Ouro, eu sei que vocк estб de boa fй, porйm, entregar o comando pronto nгo vai fazer o usuбrio evoluir. Nгo vai adiantar de nada se ele pegar o seu cуdigo, ele nгo vai saber porque dava esse erro. Se possнvel nгo faзa o cуdigo, explique apenas o que й necessбrio para o membro saber porque o problema existe.
Reply
#5

Quote:
Originally Posted by Joao Pedro
Посмотреть сообщение
Ouro, eu sei que vocк estб de boa fй, porйm, entregar o comando pronto nгo vai fazer o usuбrio evoluir. Nгo vai adiantar de nada se ele pegar o seu cуdigo, ele nгo vai saber porque dava esse erro. Se possнvel nгo faзa o cуdigo, explique apenas o que й necessбrio para o membro saber porque o problema existe.
Ok.
Reply
#6

Obrigado a todos mais seria melhor dizer aonde eu errei para eu ir aprendendo mais mesmo assim obrigado
Reply
#7

pawn Код:
command(pm, playerid, params[])
{
    new pPara, mensagem[35], pName[MAX_PLAYER_NAME], pEnviou[MAX_PLAYER_NAME];
    if(sscanf(params, "us[35]", pPara, mensagem)) return SendClientMessage(playerid,-1,"Uso Correto: /pm [ID de Jogador(a)] [Mensagem]");
   // if(!IsPlayerConnected(pPara)) return SendClientMessage(playerid,-1,"Jogador(a) nгo connectado!");
    else
    {
    new string[128];
    GetPlayerName(pPara, pName, sizeof(pName));
    GetPlayerName(playerid, pEnviou, sizeof(pEnviou));
    format(string, sizeof(string),"[>>] Mensagem Privada de:%s [%d]: %s",pEnviou, playerid, mensagem);
    SendClientMessage(pPara,-1,string);
    format(string, sizeof(string),"[<<] Mensagem Enviada para:%s [%d]: %s",pName, pPara, mensagem);
    SendClientMessage(playerid,-1,string);
    }
    return 1;
}
Reply
#8

Quote:
Originally Posted by Thung_.
Посмотреть сообщение
Obrigado a todos mais seria melhor dizer aonde eu errei para eu ir aprendendo mais mesmo assim obrigado
Vocк errou em duas partes.
Sendo elas:

1. sscanf
2. else

#Explicaзхes

Vocк usou:

pawn Код:
if(sscanf(params, "ii", ID, Mensagem)) return SendClientMessage(playerid, -1, "Digite: /comando <id> <mensagem>");
Completamente errado, pois com "ii" vocк pegaria apenas nъmeros inteiros. O que nгo daria muito certo para o comando necessitado.

O certo seria:

pawn Код:
if(sscanf(params, "us[128]", ID, Mensagem)) return SendClientMessage(playerid, -1, "Digite: /comando <id> <mensagem>");
Por que? O "u" й usado quando se quer pegar um ID e/ou nome de um certo jogador. O "s[128]" й usado quando se quer pegar uma string que no caso seria uma mensagem/texto. [128] no caso seria as cйlulas para aparecer no chat do GTA.

--

Vocк usou:

pawn Код:
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "Jogador nгo conectado!");
else
{
// ...
}
Entгo no caso, nгo era necessбrio o uso do else, pois jб tinha returnado o mesmo com a mensagem de erro.

O uso do else seria assim:

pawn Код:
if(!IsPlayerConnected(ID))
{
// ...
}
else
{
// ...
}
Porem, com o return ocupa menos linha e nгo dб tanto trabalho como o else.

Estб ai uma breve explicaзгo do que vocк errou (que vocк pediu) e espero ter ajudado.
Reply
#9

Quote:
Originally Posted by Ouro
Посмотреть сообщение
pawn Код:
command(pm, playerid, params[])
{
    new String[128], Mensagem[128], ID, Mandou[MAX_PLAYER_NAME], Recebeu[MAX_PLAYER_NAME];
    if(sscanf(params, "us[128]", ID, Mensagem)) return SendClientMessage(playerid, -1, "Digite: /pm <id> <mensagem>");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "Jogador nгo conectado!");
    GetPlayerName(playerid, Mandou, sizeof(Mandou));
    GetPlayerName(ID, Recebeu, sizeof(Recebeu));
    format(String, sizeof(String), "[>>] Mensagem Privada de: %s [%d]: %s", Mandou, playerid, Mensagem);
    SendClientMessage(ID, -1, String);
    format(String, sizeof(String), "[<<] Mensagem Enviada para: %s [%d]: %s", Recebeu, ID, Mensagem);
    SendClientMessage(playerid, -1, String);
    return 1;
}
voce tem certeza que esse comando seu funciona ?
teste seus codigos antes de postar coisas por ae!
Reply
#10

pawn Код:
command(pm, playerid, params[])
{
    static
        mensagem[35],
        pPara
    ;
   
    mensagem[0] = '\0';
   
    if(sscanf(params, "us[35]", pPara, mensagem))
        return SendClientMessage(playerid,-1,"Uso Correto: /pm [ID de Jogador(a)] [Mensagem]");
       
    if(!IsPlayerConnected(pPara))
        return SendClientMessage(playerid,-1,"Jogador(a) nгo connectado!");
   
   
    static
        string[128],
        Nome[24]
    ;
   
    string[0]   = '\0';
    Nome[0]     = '\0';
   
    GetPlayerName(pPara, pName, sizeof(pName));
    GetPlayerName(playerid, pEnviou, sizeof(pEnviou));
   
    format(string, sizeof(string),"[>>] Mensagem Privada de:%s [%d]: %s"  , (GetPlayerName(playerid, Nome, 24), Nome), playerid, mensagem);     SendClientMessage(pPara,-1,string);
    format(string, sizeof(string),"[<<] Mensagem Enviada para:%s [%d]: %s", (GetPlayerName(playerid, pPara, 24), Nome), pPara, mensagem);       SendClientMessage(playerid,-1,string);
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)