[ENSINA-ME] A Usar DCMD SSCANF ?
#1

Bom o titulo й autoexplicativo
Obrigado
Reply
#2

Tutorial dcmd e sscanf!
Reply
#3

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.".
Reply
#4

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;
}
Reply
#5

aconselho ao mбximo usar strtok...


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

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]
Reply
#7

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!
Reply
#8

Pra mim dcmd й muito mais fбcil!
Reply
#9

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.
Reply
#10

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.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)