04.04.2012, 17:59
(
Последний раз редактировалось rjjj; 19.05.2012 в 04:36.
)
Conversor : Strcmp para Zcmd.
Por rjjj ou Ken
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 Код:
//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 feitura do conversor.
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 .