22.11.2012, 13:25
Conversor : Strcmp para Zcmd v2.0
Por rjjj & [NRG]Dark
Por rjjj & [NRG]Dark
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:
Essa й uma versгo um pouco melhorada do conversor programado por rjjj
As reediзхes por mim realizadas no programa bem como a criaзгo desse post foi permitida pelo autor original do programa.
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 .
Programa desenvolvido em HTML e VBScript capaz de converter muitos comandos de strcmp (padrгo) para zcmd
Alйm disso, a ferramenta faz a identaзгo automбtica dos comandos.
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 Код:
//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 Код:
//Coloque no Final do GM:
public OnPlayerCommandReceived(playerid, cmdtext[])
{
cmd = #;
strcat(cmd, cmdtext);
return 1;
}
Para utilizar strtok nos comandos em zcmd :
pawn Код:
//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 em strcmp, qual o nome do dado que й passado ao segundo parвmetro do strtok .
Crйditos:
rjjj ou Ken pela programaзгo da ferramenta
[NRG]Dark por programaзгo de melhoria no code original
Download:
Clique Aqui
OBS: *Nгo retire os crйditos !!
*Partes relevantes desse post foi escrito por rjjj
*Post criado com permissгo do autor original do programa