30.12.2010, 11:55
Vou fazer melhor , explicarei Zcmd que segundo testes feitos tem melhor performance que DCMD,
primeiro ZCMD e um pouco de sscanf:
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.".
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; }
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.".