[AJUDA] Strtok
#1

Galera, alguem pode me dizer oque estб errado nesse code: http://pastebin.com/yHE0qUGV
Ele nгo da nenhum erro/warning, compila normal, mas quando eu digito /dargrana id quantia, o server manda uma mensagem de que o comando nгo existe
Reply
#2

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[128];
    cmd = strtok(cmdtext, idx);
    if (strcmp("/dargrana", cmdtext, true, 10) == 0 && IsPlayerAdmin(playerid))
    {
        new tmp[128], tmp2[128];
        tmp = strtok(cmdtext, idx);
        tmp2 = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Use: /dargrana [ID] [Quantia]");
            return 1;
        }
        if(!strlen(tmp2))
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Use: /dargrana [ID] [Quantia]");
            return 1;
        }
        new recebedor, quantia;
        recebedor = strval(tmp);
        quantia = strval(tmp2);

        if(IsPlayerConnected(recebedor))
        {
            new string[128], string2[128], pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME];
            GetPlayerName(recebedor, pname, MAX_PLAYER_NAME);
            GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
            format(string, 128, "O Admin %s deu R$%d para vocк!", aname, quantia);
            format(string2, 128, "Vocк enviou R$%d para o jogador %s", pname, quantia);
            SendClientMessage(playerid, 0xFFFF00FF, string2);
            SendClientMessage(recebedor, 0xFFFF00FF, string);
            GivePlayerMoney(recebedor, quantia);
            return 1;
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador nгo encontrado!");
            return 1;
        }
        return true;
    }
    return 0;
}
Reply
#3

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[128];
    cmd = strtok(cmdtext, idx);
    if (strcmp("/dargrana", cmdtext, true, 10) == 0 && IsPlayerAdmin(playerid))
    {
        new tmp[128], tmp2[128];
        tmp = strtok(cmdtext, idx);
        tmp2 = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Use: /dargrana [ID] [Quantia]");
            return 1;
        }
        if(!strlen(tmp2))
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Use: /dargrana [ID] [Quantia]");
            return 1;
        }
        new recebedor, quantia;
        recebedor = strval(tmp);
        quantia = strval(tmp2);

        if(IsPlayerConnected(recebedor))
        {
            new string[128], string2[128], pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME];
            GetPlayerName(recebedor, pname, MAX_PLAYER_NAME);
            GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
            format(string, 128, "O Admin %s deu R$%d para vocк!", aname, quantia);
            format(string2, 128, "Vocк enviou R$%d para o jogador %s", pname, quantia);
            SendClientMessage(playerid, 0xFFFF00FF, string2);
            SendClientMessage(recebedor, 0xFFFF00FF, string);
            GivePlayerMoney(recebedor, quantia);
            return 1;
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador nгo encontrado!");
            return 1;
        }
        return true;
    }
    return 0;
}
O problema ainda continua

To ficando doido ja, nгo sei aonde ta o problema, no code que vocк mandou manda uma warning: warning 225: unreachable code

Mas parece que o problema й nos retornos nй?
Reply
#4

Porque ao invez disto, nгo utiliza zcmd com sscanf...
bem mais simples, mais rбpido, etc...

pawn Код:
CMD:dargrana(playerid, params[])
{
    static PlayerID, Quantia, string[54], nome2[24];
    if(!IsPlayerAdmin(PlayerID)) return SendClientMessage(playerid, 0xFFFFFFAA, "Vocк nгo й administrador !!");
    if(sscanf(params, "dd", PlayerID, Quantia)) return SendClientMessage(playerid, 0xFFFFFFAA, "Use: /dargrana [playerid] [quantia]");
    if(!IsPlayerConnected(PlayerID)) return SendClientMessage(playerid, 0xFFFFFFAA, "Jogador nгo conectado !!");
   
    GivePlayerMoney(PlayerID, Quantia);
    GetPlayerName(playerid, nome, sizeof(nome));
    GetPlayerName(PlayerID, nome2, sizeof(nome2));
    format(string, sizeof(string), "Vocк enviou R$%d para o jogador: %s", nome2);
    SendClientMessage(playerid, 0x00FF00AA, string);
    format(string, sizeof(string), "Vocк recebeu R$ do admin %s", nome);
    SendClientMessage(PlayerID, 0x00FF00AA, string);
    return 0x1;
}
Reply
#5

Quote:
Originally Posted by Falcon.Sixe
Посмотреть сообщение
Porque ao invez disto, nгo utiliza zcmd com sscanf...
bem mais simples, mais rбpido, etc...

pawn Код:
CMD:dargrana(playerid, params[])
{
    static PlayerID, Quantia, string[54], nome2[24];
    if(!IsPlayerAdmin(PlayerID)) return SendClientMessage(playerid, 0xFFFFFFAA, "Vocк nгo й administrador !!");
    if(sscanf(params, "dd", PlayerID, Quantia)) return SendClientMessage(playerid, 0xFFFFFFAA, "Use: /dargrana [playerid] [quantia]");
    if(!IsPlayerConnected(PlayerID)) return SendClientMessage(playerid, 0xFFFFFFAA, "Jogador nгo conectado !!");
   
    GivePlayerMoney(PlayerID, Quantia);
    GetPlayerName(playerid, nome, sizeof(nome));
    GetPlayerName(PlayerID, nome2, sizeof(nome2));
    format(string, sizeof(string), "Vocк enviou R$%d para o jogador: %s", nome2);
    SendClientMessage(playerid, 0x00FF00AA, string);
    format(string, sizeof(string), "Vocк recebeu R$ do admin %s", nome);
    SendClientMessage(PlayerID, 0x00FF00AA, string);
    return 0x1;
}
Po cara, do zcmd eu uso aqui pra falar a verdade, eu sei a estrutura, etc...

Vou baixar o sscanf, ja vi muita gente falando que zcmd e sscanf й melhor e mais facil.

Valeu falcon, vou tentar aqui.
Reply
#6

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[128], tmp[128], idx;
    cmd = strtok(cmdtext, idx);
    if (!strcmp("/dargrana", cmd, true))
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Vocк nгo й Admin.");
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Use: /dargrana [ID] [Quantia]");
            return 1;
        }
        new giveplayerid = strval(tmp);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Use: /dargrana [ID] [Quantia]");
            return 1;
        }
        new Value = strval(tmp);
        if(IsPlayerConnected(giveplayerid))
        {
            new string[128], string2[128], pname[MAX_PLAYER_NAME], aname[MAX_PLAYER_NAME];
            GetPlayerName(giveplayerid, pname, MAX_PLAYER_NAME);
            GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
            format(string, 128, "O Admin %s deu R$%d para vocк!", aname, Value ;
            format(string2, 128, "Vocк enviou R$%d para o jogador %s", pname, Value);
            SendClientMessage(playerid, 0xFFFF00FF, string2);
            SendClientMessage(giveplayerid, 0xFFFF00FF, string);
            GivePlayerMoney(giveplayerid, Value);
            return 1;
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Jogador nгo encontrado!");
            return 1;
        }
    }
    return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)