SA-MP Forums Archive
[ENSINA-ME] A Usar DCMD SSCANF ? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [ENSINA-ME] A Usar DCMD SSCANF ? (/showthread.php?tid=204688)



[ENSINA-ME] A Usar DCMD SSCANF ? - TiagoPS - 30.12.2010

Bom o titulo й autoexplicativo
Obrigado


Re: [ENSINA-ME] A Usar DCMD SSCANF ? - Cнєsρıяıтσ ѓгη - 30.12.2010

Tutorial dcmd e sscanf!


Re: [ENSINA-ME] A Usar DCMD SSCANF ? - vinewood - 30.12.2010

Vou fazer melhor , explicarei Zcmd que segundo testes feitos tem melhor performance que DCMD,
primeiro ZCMD e um pouco de sscanf:

Код:
public OnPlayerCommandReceived(playerid, cmdtext[])/* 1-Passo */
{
	if(Logado_Sim_ou_Nao[playerid] == false)/* 2-Passo */
	{
		SendClientMessage(playerid, COR_BRANCA, "SERVIDOR: Voce deve estar logado para usar qualquer comando");
		return 0;
	}
	/* 3-Passo */
	return 1;
}
COMMAND:oi(playerid, params[])/* 4-Passo */
{
	new frase[32];//
	if(!sscanf(params, "s[32]", frase))/* 5-Passo */
	{
		SendClientMessage(playerid, COR_BRANCA, frase);/* 6-Passo */
    }
    else
	{
		SendClientMessage(playerid, COR_BRANCA, "USO CORRETO:/olamundocapitalistaselvagem (frase)");
		return 1;
	}
}
COMMAND:olamundocapitalistaselvagem(playerid, params[])// EX: ' /olamundocapitalistaselvagem 2 2'
{
	new dado_inteiro, dado_inteiro2;
	if(!sscanf(params, "dd", dado_inteiro, dado_inteiro2))// d й do tipo de Dado Inteiro apenas numeros inteiros caso contrario ele vai pro else com a menssagen de uso correto
	{
                dado_inteiro = dado_inteiro+dado_inteiro2;
		SendClientMessage(playerid, COR_BRANCA, dado_inteiro);// imprime "4"
    }
    else
	{
		SendClientMessage(playerid, COR_BRANCA, "USO CORRETO:/olamundocapitalistaselvagem (frase)");
		return 1;
	}
}
public OnPlayerCommandPerformed(playerid, cmdtext[], success)/* 7-Passo */
{
	printf("%d , %s , %d",playerid,cmdtext,success);/* 8-Passo */
	return 1;
}
1-Passo = "Este callback й chamado quando qualquer tentativa de comando й enviado ao server EX: Jogador ID:13 ,Joгozinho preciona a tecla "T" e digita '/oi alguem?' e presiona Enter nesse exato momento o servidor recebe o comando via o callback: OnPlayerCommandReceived(13, "/oi alguem?")";
2-Passo = "Condicao onde testa se o player jб fez login no caso aqui o jogador nгo usara um comando de texo EX:"/login minhasenha", e sim uma caixa de texto de dialogo(ShowPlayerDialog) que eu defini para aparecer quando o jogador atingir o callback OnPlayerRequestClass";
3-Passo = "No Zmcd nгo й necessario declarar nenhum dos comandos apenas ir adcionando como se fosse uma funcгo sem necessidade de forward.";
4-Passo = "Resumindo imagina que aki o zcmd compara com todas as funcхes q comecao com:"COMMAND:nomedocomando(playerid, params[]) ou CMD:nomedocomando(playerid, params[]) ou dentre outras opcoes que sгo sу questгo de estetica";
5-Passo = "Caso nгo satisfaзa a condiзгo vб para o else e retorne a mensagem de erro informando qual deve ser o uso correto, obs: s representa a string que no mбximo devera ter 32 caracteres o sscanf se params(parвmetros) satisfazer a condiзгo entгo ele ira extrair o parвmetro para a variбvel local frase que tambйm permitir 32 caracteres , agora enfim o que joгozinho escreveu pode ser mostrado.";
6-Passo = "IMPRIME: 'alguem?' ";
7-Passo = "Vamos supor que jхaozinho digitou uma besteira qualquer que resultou a falso pois o comando : '/playboy' nгo existe.";
8-Passo = "IMPRIME: '13 , /playboy , 0'";

Bom.. espero tenha esclarecido algumas de suas duvidas qualquer coisa se encontrarem qualquer erro jб tenho motivo conveniente pra editar o post: "Madruguei hoje.".


Re: [ENSINA-ME] A Usar DCMD SSCANF ? - Cнєsρıяıтσ ѓгη - 30.12.2010

No tutorial que eu passei tem todas as funзхes de zcmd, dcmd e sscanf. E jб basta usar estas funзхes:

pawn Код:
CMD:banir(playerid, params[])
{
    new id, motivo[73], string[256];
   
    if (sscanf(params, "uz", id, motivo)) return SendClientMessage(playerid, 0xFFFFFFFF, "Digite: /banir id motivo!");//U: valor, z: string!
    if (id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFFFFFFFF, "Jogador nгo conectado");
   
    format(string, sizeof(string), "%s %s", id, motivo);
    SendClientMessageToAll(0xFFFFFFFF, string);
    Ban(id);//Bani o id selecionado.
    return 1;
}



Re: [ENSINA-ME] A Usar DCMD SSCANF ? - andmeida10 - 30.12.2010

aconselho ao mбximo usar strtok...


So entender,... apartir dai й a coisa mais simples do Pawn


Re: [ENSINA-ME] A Usar DCMD SSCANF ? - blackwave - 30.12.2010

Quote:
Originally Posted by TiagoPS
Посмотреть сообщение
Bom o titulo й autoexplicativo
Obrigado
Hб pouco tempo, fiz um sobre dcmd. Mas esta ingles, ja que foi direcionado аs pessoas que falam inglкs. Ta aqui:
Click aqui [dcmd]
Click aqui [basic sscanf]


Re: [ENSINA-ME] A Usar DCMD SSCANF ? - Katros - 30.12.2010

Cara, nгo gosto muito de comandos, no meu GM o ъnico que existe e o /Comandos pois o resto й tudo Dialog!
Mais vai uma dica, й melhor usar strtok, dps que aprende jб й mano!


Re: [ENSINA-ME] A Usar DCMD SSCANF ? - Cнєsρıяıтσ ѓгη - 30.12.2010

Pra mim dcmd й muito mais fбcil!


Respuesta: Re: [ENSINA-ME] A Usar DCMD SSCANF ? - ipsBruno - 30.12.2010

Quote:
Originally Posted by andmeida10
Посмотреть сообщение
aconselho ao mбximo usar strtok...


So entender,... apartir dai й a coisa mais simples do Pawn
Nгo,ZCMD й o mais fбcil.

Vou fazer um Tutorial.

Depois que acabar de assistir Crepъsculo 2,pera.


Re: Respuesta: Re: [ENSINA-ME] A Usar DCMD SSCANF ? - zSuYaNw - 30.12.2010

Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Nгo,ZCMD й o mais fбcil.

Vou fazer um Tutorial.

Depois que acabar de assistir Crepъsculo 2,pera.
ZCMD й faciil.
queria aprender sscanf.