Conversor: Strcmp para Zcmd.

20 de mai. de 2012.
Conversor : Strcmp para Zcmd.
Por rjjj ou Ken

Objetivo do programa:

Transformar comandos baseados na comparação com o que foi digitado pelo jogador por meio da função strcmp em comandos do sistema zcmd, que são mais rápidos .

Informações:

Chamando comandos direitamente quando em formato de callback, zcmd é uma das mais populares bibliotecas focadas em comandos uma vez que com seu uso estes ficam mais rápidos, sobretudo os últimos do OnPlayerCommandText .

Fiz este programa em HTML e VBScript capaz de converter muitos comandos em strcmp (padrão) para zcmd porque a transformação de um por um é um processo demorado e cansativo (principalmente quando há muitos deles) .

Além disso, a ferramenta faz a identação automática dos comandos para que os mesmos fiquem organizados ao serem colocados fora da public OnPlayerCommandText .

Testado com até 15000 linhas de comandos.

Notas importantes:

Como a variável cmdtext não é acessível de dentro dos comandos em zcmd como é nos em strcmp, esse símbolo, sempre que aparecer, será substituído por cmd. Por isso, antes de mais nada :


pawn Code:

//Adicione ao Topo do GM: new cmd[128];
Obs: Dos códigos citados abaixo, apenas um poderá ser utilizado no mesmo GM.

Para atribuir a esse elemento o valor que teria o cmdtext :
pawn Code:
//Coloque no Final do GM: public OnPlayerCommandReceived(playerid, cmdtext[]) {     cmd = #;     strcat(cmd, cmdtext);     return 1; }
Para utilizar strtok nos comandos em zcmd :
pawn Code:
//Coloque no Topo do GM as variáveis que ficavam no início do OnPlayerCommandText, com exceção da "cmd" (se existisse): new string[256]; //Essas são as do GM lvdm, como exemplo. new playermoney; //Essas são as do GM lvdm, como exemplo. new sendername[MAX_PLAYER_NAME]; //Essas são as do GM lvdm, como exemplo. new giveplayer[MAX_PLAYER_NAME]; //Essas são as do GM lvdm, como exemplo. new giveplayerid, moneys, idx; //Essas são as do GM lvdm, como exemplo. //E depois, coloque no Final do GM: strtok(const string[], &index) {     new length = strlen(string);     while ((index < length) && (string[index] <= ' '))     {         index++;     }     new offset = index;     new result[20];     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))     {         result[index - offset] = string[index];         index++;     }     result[index - offset] = EOS;     return result; } public OnPlayerCommandReceived(playerid, cmdtext[]) {     cmd = strtok(cmdtext, idx);     cmd = #;     strcat(cmd, cmdtext);     return 1; } public OnPlayerCommandPerformed(playerid, cmdtext[], success) {     idx = 0;     return 1; }
A variável idx que apareceu diversas vezes acima é do GM lvdm, para achar a correspondente a ela no seu GM, apenas veja, nos comandos emstrcmp, qual o nome do dado que é passado ao segundo parâmetro do strtok .

Créditos:

rjjj ou Ken pela feitura do conversor,post.ToXi
Zeex pela criação do zcmd, com o qual o programa trabalha.

Atualizações:

Agora comandos com até 4 "atalhos" (como o atalho /an de /anuncio) são convertidos corretamente. 

Download:

Clique Aqui

OBS: Não retire os créditos !!

OBS2: Tem dicas para possíveis futuras versões ou achou bugs ? Por favor comente-os aqui no tópico .

Espero ter ajudado .

0 comentários:

Postar um comentário