[Tutorial] Descomplicando o ZCMD e SSCANF
#5

Jб tem muitos tutoriais de zcmd, mas й sempre bem vindo outro, atй porque muitos membros tem perguiзa de usar search, mas vou fazer uma observaзгo.

pawn Код:
CMD:meucomando(playerid, params[])
{
    #pragma unused params // <- Й utilizado em comandos que nгo vгo usar os parametros
    return 1;
}
Em vez de #pragma unused params basta fazer

pawn Код:
CMD:meucomando(playerid)
{
    return 1;
}
Outra coisa

pawn Код:
CMD:pm(playerid, params[])
{
    new playerdestino, playerNome[MAX_PLAYER_NAME], pdestinoNome[MAX_PLAYER_NAME], mensagem[128], string[128], stringsender[128];
    if(sscanf(params, "ds", playerdestino, mensagem)) return SendClientMessage(playerid, -1, "Use /pm [ID] [mensagem].");
   
    if(playerdestino == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "ID invбlida ou inexistente.");
   
    if(!strlen(mensagem)) return SendClientMessage(playerid, -1, "Digite uma mensagem.");

    GetPlayerName(playerid, playerNome, MAX_PLAYER_NAME);
    GetPlayerName(playerdestino, pdestinoNome, MAX_PLAYER_NAME);
   
    format(string, sizeof(string), "* PM de %s (%d): %s", playerNome, playerid, mensagem);
    format(stringsender, sizeof(stringsender), "* PM para %s(%d): %s", pdestinoNome, playerdestino, mensagem);
    SendClientMessage(playerdestino, 0xFFFF80AA, string);
    SendClientMessage(playerid, 0x6F6F00AA, stringsender);    
    return 1;
}
pawn Код:
if(sscanf(params, "ds", playerdestino, mensagem)) return SendClientMessage(playerid, -1, "Use /pm [ID] [mensagem].");
lembre-se sempre de definir o tamanho mбximo de caracteres, ou seja.

pawn Код:
if(sscanf(params, "ds[128]", playerdestino, mensagem))
Assim o sscanf irб funcionar corretamente.

Deu para ver que vocк usou 2 strings, eu no inicio do sa-mp tinha uma confusгo porque pensava que cada string ficava com os dados ocupados lб para sempre entгo fazia o que vocк fez.

pawn Код:
format(string, sizeof(string), "* PM de %s (%d): %s", playerNome, playerid, mensagem);
format(stringsender, sizeof(stringsender), "* PM para %s(%d): %s", pdestinoNome, playerdestino, mensagem);
SendClientMessage(playerdestino, 0xFFFF80AA, string);
SendClientMessage(playerid, 0x6F6F00AA, stringsender);
Em vez disso faзa

pawn Код:
format(string, sizeof(string), "* PM de %s (%d): %s", playerNome, playerid, mensagem);
SendClientMessage(playerdestino, 0xFFFF80AA, string);
format(stringsender, sizeof(string), "* PM para %s(%d): %s", pdestinoNome, playerdestino, mensagem);
SendClientMessage(playerid, 0x6F6F00AA, string);
Assim vocк nгo irб usar variaveis desnecessбrias obviamente.

Mais uma coisa

pawn Код:
if(playerdestino == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "ID invбlida ou inexistente.");
Covem vocк juntar outra verificaзгo, ou seja, verificar se o jogador estб conectado.

pawn Код:
if(playerdestino == INVALID_PLAYER_ID && !IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "ID invбlida ou inexistente.");
Bem, por agora й sу isto.

Todos nуs cometemos erros, esses erros nгo sгo erros de sintaxe em si, sгo outro tipos de erros que nem sempre vemos mas que tambйm contam muito, espero que isto o ajude

Fora isso bom tutorial
Reply


Messages In This Thread
Descomplicando o ZCMD e SSCANF - by Linow - 10.01.2013, 14:52
Re: Descomplicando o ZCMD e SSCANF - by .FuneraL. - 10.01.2013, 14:58
Re: Descomplicando o ZCMD e SSCANF - by Abravanel - 10.01.2013, 15:06
Re: Descomplicando o ZCMD e SSCANF - by Gii - 10.01.2013, 15:06
Re: Descomplicando o ZCMD e SSCANF - by RebeloX - 10.01.2013, 15:13
Re: Descomplicando o ZCMD e SSCANF - by zSuYaNw - 10.01.2013, 15:26
Re: Descomplicando o ZCMD e SSCANF - by MegaStyle157 - 10.01.2013, 15:33
Re: Descomplicando o ZCMD e SSCANF - by Schocc - 10.01.2013, 15:40
Re: Descomplicando o ZCMD e SSCANF - by DrTHE - 10.01.2013, 15:45
Re: Descomplicando o ZCMD e SSCANF - by Maklister - 10.01.2013, 16:06

Forum Jump:


Users browsing this thread: 1 Guest(s)