[AJUDA] Qual o problema nesse comando?
#1

Pessoal to com um problema nesse comando de Abastecimento:

pawn Код:
if(strcmp(cmdtext, "/abastecer", true) == 0)
    {
        PostoInfo[pInfo][Litros] = pgd_CarregarInt(ArquivoPosto(), "Litros", ":");
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ERRO, "Vocк nгo estб em um Veнculo");
        if(!PostodeGasolina(playerid)) return SendClientMessage(playerid, ERRO, "Vocк nгo estб em um Posto de Gasolina");
        if(PostoInfo[pInfo][Litros] == 0) return SendClientMessage(playerid, ERRO, "Esse posto nгo tem litros de gasolina");

        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result))
        {
            SendClientMessage(playerid, BRANCO, "USO: /abastecer [litros]");
            return 1;
        }
       
        if(IsPlayerConnected(playerid))
        {
            Abastecendo[playerid] = 1;
            TextDrawSetString(td_fuel[playerid],"Reabastecimento...");
            SetTimerEx("Tempo_Ab",4500,false,"i",playerid);
            return 1;
        }
        return 1;
    }
Quando eu digito /abastecimento, aparece: "USO: /abastecer [litros]" mais quando eu digito os litros aparece SERVER: Unknown Command. Nгo й GF
Reply
#2

pawn Код:
new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
Atй aonde me lembro, esta parte й para strings.
"/abastecer [string]"

usa sscanf ou strtock para isto.
Reply
#3

Jб que, pelo visto, vocк nem ao menos estб utilizando "strtok", e nem outro sistema de comandos, tal serб bem rъstico.

Entretanto, cada um com seus gostos. Deve resolver seu problema:
Код:
if( strcmp( cmdtext, "/abastecer", true, 10 ) == 0 )
{
	PostoInfo[pInfo][Litros] = pgd_CarregarInt( ArquivoPosto(  ), "Litros", ":" );
	
	if( !IsPlayerInAnyVehicle( playerid ) ) return SendClientMessage( playerid, ERRO , "Vocк nгo estб em um Veнculo" );

	if( !PostodeGasolina( playerid ) ) return SendClientMessage( playerid, ERRO , "Vocк nгo estб em um Posto de Gasolina" );

	if( PostoInfo[pInfo][Litros] == 0 ) return SendClientMessage( playerid, ERRO , "Esse posto nгo tem litros de gasolina" );
		
	if( !strlen( cmdtext[ 11 ] ) )
	return SendClientMessage( playerid, BRANCO, "USO: /abastecer [litros]" );
	
	Abastecendo[ playerid ] = 1;
	TextDrawSetString( td_fuel[playerid], "Reabastecimento..." );
	SetTimerEx( "Tempo_Ab", 4500 , false , "i" , playerid );
	printf("%d", strval( cmdtext[ 11 ] ) ); //Teste
	return 1;
}
Й altamente recomendбvel que vocк use algum sistema de comandos (zcmd,dcmd,y_cmd,kcmd...), e/ou "sscanf" para a verificaзгo.
Reply
#4

pawn Код:
if(strcmp(cmdtext, "/abastecer", true) == 0)
    {
        PostoInfo[pInfo][Litros] = pgd_CarregarInt(ArquivoPosto(), "Litros", ":");
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ERRO, "Vocк nгo estб em um Veнculo");
        if(!PostodeGasolina(playerid)) return SendClientMessage(playerid, ERRO, "Vocк nгo estб em um Posto de Gasolina");
        if(PostoInfo[pInfo][Litros] == 0) return SendClientMessage(playerid, ERRO, "Esse posto nгo tem litros de gasolina");

        tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFAA, "/abastecer [quantia]");
        new qtd;
            qtd = strval(tmp);
            if(qtd <= 0 && qtd >= 99) return SendClientMessage(playerid,0xFFFFFFAA,"0-99.");               
        if(IsPlayerConnected(playerid))
        {
            Abastecendo[playerid] = 1;
            TextDrawSetString(td_fuel[playerid],"Reabastecimento...");
            SetTimerEx("Tempo_Ab",4500,false,"i",playerid);
            return 1;
        }
        return 1;
    }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)