[Ajuda] Problema em comando
#1

Estou com um problema nesse comando, quando coloco /vender maconha ou outro pega normal, mas se eu por o resto /vender maconha ou cocaina ou armas 0 2 100 nгo executa nada, qual o problema?

pawn Код:
CMD:vender(playerid, params[])
{
    new id, quantia, preco, cmd, arma, balas;

    if(isnull(params)) return SendClientMessage(playerid, USOCORRETO, "Uso correto: /vender [maconha/cocaina/armas]");
   
    if(PlayerInfo[playerid][Logado] == false)
        return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo estб logado!");

    if(id == playerid)
        return SendClientMessage(playerid, COR_ERRO, "ERRO: Nгo pode vender para vocк mesmo!");

    if(strcmp(params, "maconha", true)==0)
        cmd = 1;
    else if(strcmp(params, "cocaina", true)==0)
        cmd = 2;
    else if(strcmp(params, "armas", true)==0)
        cmd = 3;
   
    if(cmd == 1)
    {
        if(sscanf(params, "ddd", id, quantia, preco))
            return SendClientMessage(playerid, COR_USOCORRETO, "Uso correto: /vender [maconha] [id do player] [quantia] [preзo]");
       
        if(quantia < 1 || quantia > 100)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Venda somente atй 100 gramas.");

        if(quantia > PlayerInfo[playerid][Maconha])
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo possui essa quantidade de droga com vocк!");

        if(preco < 1 || preco > 300)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Preзo minimo de 1 e mбximo 300.");
       
        SendFormattedMessage(playerid, COR_PRINCIPAL, "Vocк ofereceu a %s, %d gramas de maconha por R$%d", Nome(id), quantia, preco);
        SendFormattedMessage(id, COR_PRINCIPAL, "%s ofereceu a vocк %d gramas de maconha por R$%d, para comprar use: /aceitar [maconha]", Nome(playerid), quantia, preco);
        MaconhaOferecer[id] = playerid;
        MaconhaPreco[id] = preco;
        MaconhaGrama[id] = quantia;
    }
   
    if(cmd == 2)
    {
        if(sscanf(params, "ddd", id, quantia, preco))
            return SendClientMessage(playerid, COR_USOCORRETO, "Uso correto: /vender [cocaina] [id do player] [quantia] [preзo]");
       
        if(quantia < 1 || quantia > 100)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Venda somente atй 100 gramas.");

        if(quantia > PlayerInfo[playerid][Cocaina])
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo possui essa quantidade de droga com vocк!");

        if(preco < 1 || preco > 300)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Preзo minimo de 1 e mбximo 300.");
           
        SendFormattedMessage(playerid, COR_PRINCIPAL, "Vocк ofereceu a %s, %d gramas de cocaina por R$%d", Nome(id), quantia, preco);
        SendFormattedMessage(id, COR_PRINCIPAL, "%s ofereceu a vocк %d gramas de cocaina por R$%d, para comprar use: /aceitar [cocaina]", Nome(playerid), quantia, preco);
        CocainaOferecer[id] = playerid;
        CocainaPreco[id] = preco;
        CocainaGrama[id] = quantia;
       
    }
   
    if(cmd == 3)
    {
        if(sscanf(params, "dddd", arma, balas, id, preco))
            return SendClientMessage(playerid, COR_USOCORRETO, "Uso correto: /vender [armas] [id da arma] [balas] [id do player] [preзo]");

        if(PlayerInfo[playerid][Materiais] == 0)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo possui materiais com vocк!");
           
        if(arma > 22 || arma == 3 || arma == 4 || arma == 8 || arma == 9 || arma == 10 || arma == 11 || arma == 12 || arma == 14 || arma == 15 || arma == 16 || arma == 18 || arma == 25 || arma == 26)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: ID de Arma Proibida!");
           
        if(preco < 1 || preco > 300)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Preзo minimo de 1 e mбximo 300.");
           
        SendFormattedMessage(playerid, COR_PRINCIPAL, "Vocк ofereceu б %s uma arma com id: %d com %d de muniзгo!", Nome(id), arma, balas);
        SendFormattedMessage(id, COR_PRINCIPAL, "Vendedor(a) Ambulante %s lhe ofereceu uma arma id: %d com %d de muniзгo, para comprar use: /aceitar [armas]", Nome(playerid), arma, balas);
        ArmaOferecer[id] = playerid;
        ArmaPreco[id] = preco;
        ArmaID[id] = arma;
        ArmaBalas[id] = balas;
    }
    return 1;
}
Reply
#2

Desculpa o double, mas ninguйm sabe?
Reply
#3

Em vez dos else if tente sу com if.
Reply
#4

O erro й que vocк estб usando o sscanf de forma errada e nгo precisaria tambйm estar usando strcmp.
O sscanf nгo vai pegar os valores, pois o primeiro parвmetro й uma string (no caso maconha, cocaнna ou armas) e nгo um numero inteiro como vocк determina na tipagem e eu acredito que nгo й tгo necessбrio usar strcmp nesse cуdigo.

Como vocк deveria fazer caso nгo quisesse usar strcmp:
No caso do primeiro parвmetro ser maconha
pawn Код:
sscanf(params, "'maconha'iii", valor1, valor2, valor3)
Dessa forma ele nгo sу pego os valores, como identifica o parametro maconha e faz com que vocк nem precisa usar strcmp (e nгo vai dar o problema dele tentar identificar o primeiro parвmetro como int como devia estar acontecendo no seu cуdigo).
Reply
#5

Poderia explicar melhor kreison?

Tentei desta forma, mais qualquer coisa que eu digitar maconha ou qualquer outro nome aparece "Uso correto: /vender [maconha] [id do player] [quantia] [preзo]" e nem um outro parametro pega:



pawn Код:
CMD:vender(playerid, params[])
{
    new id, quantia, preco;

    if(isnull(params)) return SendClientMessage(playerid, COR_USOCORRETO, "Uso correto: /vender [maconha/cocaina/armas]");

    if(PlayerInfo[playerid][Logado] == false)
        return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo estб logado!");

    //if(id == playerid)
      //    return SendClientMessage(playerid, COR_ERRO, "ERRO: Nгo pode vender para vocк mesmo!");

    if(sscanf(params, "'maconha'iii", id, quantia, preco))
        return SendClientMessage(playerid, COR_USOCORRETO, "Uso correto: /vender [maconha] [id do player] [quantia] [preзo]");
    else
    {
        if(quantia < 1 || quantia > 100)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Venda somente atй 100 gramas.");

        if(quantia > PlayerInfo[playerid][Maconha])
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo possui essa quantidade de droga com vocк!");

        if(preco < 1 || preco > 300)
            return SendClientMessage(playerid, COR_ERRO, "ERRO: Preзo minimo de 1 e mбximo 300.");

        SendFormattedMessage(playerid, COR_PRINCIPAL, "Vocк ofereceu a %s, %d gramas de maconha por R$%d", Nome(id), quantia, preco);
        SendFormattedMessage(id, COR_PRINCIPAL, "%s ofereceu a vocк %d gramas de maconha por R$%d, para comprar use: /aceitar [maconha]", Nome(playerid), quantia, preco);
        MaconhaOferecer[id] = playerid;
        MaconhaPreco[id] = preco;
        MaconhaGrama[id] = quantia;
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)