[ENSINA-ME] A Usar DCMD SSCANF ?
#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


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)