Conversor: Strcmp para Zcmd. - rjjj - 04.04.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 Код:
//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

.
Re: Conversor: Strcmp para Zcmd. -
Hiuship - 04.04.2012
Perfeito... testado e aprovado!! sу poderia mudar o design nй
Re: Conversor: Strcmp para Zcmd. -
histire - 04.04.2012
realmente muito bom rjjj sempre com coisas boas, agora nao estou podendo testar estou indo pro ver meus curso assim que eu voltar com certesa irei testar
parabens
Re: Conversor: Strcmp para Zcmd. -
[R] ousenber [K] - 04.04.2012
Quote:
Originally Posted by histire
realmente muito bom rjjj sempre com coisas boas
parabens
|
І...
Re: Conversor: Strcmp para Zcmd. -
DouglasRodrigues - 04.04.2012
Parece ser bom, e muito util.
Vou testar '
Respuesta: Conversor: Strcmp para Zcmd. -
[NVC]iTrevaS - 04.04.2012
Perfeito ^^
Re: Conversor: Strcmp para Zcmd. -
ViniBorn - 04.04.2012
Уtimo trabalho
Re: Conversor: Strcmp para Zcmd. -
whiXґ - 04.04.2012
Olб Rjj, bom seu trabalho estб уtimo o unico problema й que nгo estou conseguindo compilar meu
GameMode, ele trava tudo e fecha bom irei postar um exemplo de comando para vocк me dar outro ex ^^.
pawn Код:
if(strcmp(cmd, "/dar", true) == 0)
{
new moneys;
new giveplayer[MAX_PLAYER_NAME];
new playermoney;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia");
return 1;
}
giveplayerid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia");
return 1;
}
moneys = strval(tmp);if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "Voce deu %d para jogador ''%s''[ID:%d].", moneys, giveplayer,giveplayerid);
SendClientMessage(playerid, 0x88FF9FAA, string);
format(string, sizeof(string), "Voce recebeu %d do jogador ''%s''[ID:%d].", moneys, sendername, playerid);
SendClientMessage(giveplayerid, 0x88FF9FAA, string);
}
else {
SendClientMessage(playerid, 0xFF0000AA, "sem grana");
}
}
else {
format(string, sizeof(string), "%d no esta on", giveplayerid);
SendClientMessage(playerid, 0x88FF9FAA, string);
}
return 1;
}
e compilado fica exatamente assim:
pawn Код:
CMD:dar(playerid, params[])
{
new moneys;
new giveplayer[MAX_PLAYER_NAME];
new playermoney;
tmp = strtok(cmd, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia");
return 1;
}
giveplayerid = strval(tmp);
tmp = strtok(cmd, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia");
return 1;
}
moneys = strval(tmp);if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "Voce deu %d para jogador ''%s''[ID:%d].", moneys, giveplayer,giveplayerid);
SendClientMessage(playerid, 0x88FF9FAA, string);
format(string, sizeof(string), "Voce recebeu %d do jogador ''%s''[ID:%d].", moneys, sendername, playerid);
SendClientMessage(giveplayerid, 0x88FF9FAA, string);
}
else {
SendClientMessage(playerid, 0xFF0000AA, "sem grana");
}
}
else {
format(string, sizeof(string), "%d no esta on", giveplayerid);
SendClientMessage(playerid, 0x88FF9FAA, string);
}
return 1;
}
Quando vou compilar trava tudo, poderia me dizer oque estou fasendo de errado ? coloco as variaveis necessarias assima do comando.
Re: Conversor: Strcmp para Zcmd. -
IgorMendes - 04.04.2012
Como eu passaria isto para Zcmd?
pawn Код:
OnPlayerCommandText(playerid,"/flymode");
Re: Conversor: Strcmp para Zcmd. - rjjj - 05.04.2012
Muito Obrigado a Todos

!
* Programa atualizado.
Agora comandos com atй 4 "atalhos" (como o atalho /an de /anuncio) sгo convertidos corretamente. A versгo anterior sу suportava 1 atalho

.
Quote:
Originally Posted by whiXґ
Olб Rjj, bom seu trabalho estб уtimo o unico problema й que nгo estou conseguindo compilar meu GameMode, ele trava tudo e fecha bom irei postar um exemplo de comando para vocк me dar outro ex ^^.
pawn Код:
if(strcmp(cmd, "/dar", true) == 0) { new moneys; new giveplayer[MAX_PLAYER_NAME]; new playermoney; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia"); return 1; } giveplayerid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia"); return 1; } moneys = strval(tmp);if (IsPlayerConnected(giveplayerid)) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); playermoney = GetPlayerMoney(playerid); if (moneys > 0 && playermoney >= moneys) { GivePlayerMoney(playerid, (0 - moneys)); GivePlayerMoney(giveplayerid, moneys); format(string, sizeof(string), "Voce deu %d para jogador ''%s''[ID:%d].", moneys, giveplayer,giveplayerid); SendClientMessage(playerid, 0x88FF9FAA, string); format(string, sizeof(string), "Voce recebeu %d do jogador ''%s''[ID:%d].", moneys, sendername, playerid); SendClientMessage(giveplayerid, 0x88FF9FAA, string); } else { SendClientMessage(playerid, 0xFF0000AA, "sem grana"); } } else { format(string, sizeof(string), "%d no esta on", giveplayerid); SendClientMessage(playerid, 0x88FF9FAA, string); } return 1; }
e compilado fica exatamente assim:
pawn Код:
CMD:dar(playerid, params[]) { new moneys; new giveplayer[MAX_PLAYER_NAME]; new playermoney; tmp = strtok(cmd, idx); if(!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia"); return 1; } giveplayerid = strval(tmp); tmp = strtok(cmd, idx); if(!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "dar id quantia"); return 1; } moneys = strval(tmp);if (IsPlayerConnected(giveplayerid)) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); playermoney = GetPlayerMoney(playerid); if (moneys > 0 && playermoney >= moneys) { GivePlayerMoney(playerid, (0 - moneys)); GivePlayerMoney(giveplayerid, moneys); format(string, sizeof(string), "Voce deu %d para jogador ''%s''[ID:%d].", moneys, giveplayer,giveplayerid); SendClientMessage(playerid, 0x88FF9FAA, string); format(string, sizeof(string), "Voce recebeu %d do jogador ''%s''[ID:%d].", moneys, sendername, playerid); SendClientMessage(giveplayerid, 0x88FF9FAA, string); } else { SendClientMessage(playerid, 0xFF0000AA, "sem grana"); } } else { format(string, sizeof(string), "%d no esta on", giveplayerid); SendClientMessage(playerid, 0x88FF9FAA, string); } return 1; }
Quando vou compilar trava tudo, poderia me dizer oque estou fasendo de errado ? coloco as variaveis necessarias assima do comando.
|
Compilei o comando e este funcionou normalmente

.
Tenha certeza de que colocou os comandos em
zcmd fora da
public OnPlayerCommandText e apagou esta depois disso.
Espero ter ajudado

.