Tuyo
Tuyo
Tuyo
[list]Bem, vejo ainda muitos membros desta board,a usar a "velhinha" strtok feita
pelo DarcoBlue.
[size=2][color=red][b][u][color=green][url="http://wiki.sa-mp.com/wiki/
Strtok"]Fun��o strtok:[/url][/color][/u][/b][/color][/size]
Mas, n�o sabem que ela al�m de ser velha � tamb�m lenta em rela��o a atuais
comparadores de par�metros.
Bem, eu recomendo que usem [url="http://forum.sa-mp.com/showthread.php?
t=120356"]sscanf[/url] criada pelo [url="http://forum.sa-mp.com/member.php?
u=29176"]Y_Less[/url], n�o s� pela facilidade de uso, mas tamb�m pela velocidade
desta e n�o s�;
[size=1][color=red][b][u][color=green]Em strtok[/color][/u][/b][/color][/size]
[pawn]
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
if(strlen(tmp) == 0)
return SendClientMessage(playerid, 0xFFFFFFFF, "Uso: /kick
[playerid]");
Kick(strval(tmp));
return 1;
}
return 0;
}
[/pawn]
[size=1][color=red][b][u][color=green]Em sscanf[/color][/u][/b][/color][/size]
[pawn]
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmd, "/kick", true) == 0)
{
new id;
if(sscanf(cmdtext, "u", id))
return SendClientMessage(playerid, 0xFFFFFFFF, "Uso: /kick
[playerid]");
Kick(id);
return 1;
}
return 0;
}
[/pawn]
Viram? Os comandos acima fazem exatamente o mesmo, por�m como podem ver, a sua
elabora��o � diferente, pessoalmente acho que � sem d�vida o segundo, mais f�cil
que o primeiro.[/list]
[list]Bem, ainda muito usam strcmp para criar comandos. Isto atualmente normalmente
diz muito sobre o programador do GM, ou � pregui�oso e n�o quer atualizar os seus
comandos para processador de comandos, ou, usa um gamemode da Internet e n�o faz a
m�nima ideia do que � um processador de comandos (embora atualmente tenha mais
gamemodes na internet com processador de comandos). Antes de tudo strcmp tem como
finalidade comparar string's e nao criar comandos.
Viram a diferen�a?
E sim criar comandos com processadores de comandos nao precisa de colocar o comando
dentro de qualquer callback.
[size=1][color=red][b][u][color=green]Em zcmd[/color][/u][/b][/color][/size]
[pawn]CMD:kick(playerid, params[])
{
if(sscanf(params, "u", params[0]))
return SendClientMessage(playerid, 0xFFFFFFFF, "Uso: /kick [playerid]");
Kick(params[0]);
return 1;
}[/pawn]
[size=1][color=red][b][u][color=green]Em ycmd[/color][/u][/b][/color][/size]
[pawn]YCMD:kick(playerid, params[], help)
{
#pragma unused help
if(sscanf(cmdtext, "u", params[0]))
return SendClientMessage(playerid, 0xFFFFFFFF, "Uso: /kick [playerid]");
Kick(params[0]);
return 1;
}
[/pawn][/list]
[list][url="http://forum.sa-mp.com/member.php?u=29176"]Y_Less[/url], n�o s� pela
facilidade de uso, mas tamb�m pela velocidade
[/list]
-Porque s�o os mais r�pidos (apesar de ycmd ser o mais r�pido), j� criados em pawn
atualmente e s�o os que a maioria dos programadores de sa-mp que usam processadores
de comandos usam.
Sim, eu sei que ainda existem mais r�pidos desenvolvidos em C++, por�m s�o mais
complexos o seu uso para quem ainda est� a aprender, porque mexe com plugins, etc.
[/list]
[list]Bem isso � o ideal e sim est� a agir corretamente, por�m para quem n�o est� a
usar a e quer come�ar, deixo aqui uns links de uns tutoriais para come�arem.[/list]
[list][list]ZCMD: http://forum.sa-mp.com/showthread.php?t=91354[list][list]
[list][list]YCMD: http://forum.sa-mp.com/showthread.php?t=169029[/list][/list]
[list][list]SSCANF: http://forum.sa-mp.com/showthread.php?t=120356
[/list][/list]
[/list]
LOOPS:
-N�o � que esteja errado, por�m podem fazer com que os loops tenham um
processamento (velocidade) maior, como?
Qual a diferen�a?
-No outro toma como valor de objetivo o MAX_PLAYERS que para quem n�o sabe est�
definido por default pela SA-MP Team na Include a_samp.inc como valor padr�o 500 (a
n�o ser que seja um "pacote" de 1000 players), ou seja, ir� sempre realizar o loop
de 500, ao contr�rio do outro que vai obter o valor m�ximo de players que podem
entrar no servidor (valor que fica no server.cfg) e faz o loop desse valor como o
valor de slots da maioria dos membros aqui na board portuguesa quase nunca � 500,
este tipo de loop � muito mais r�pido que o outro;
-Por�m, tamb�m pode continuar a usar o mesmo tipo de loop e torna-lo mais r�pido,
simplesmente alterando o valor do MAX_PLAYERS que o seu servidor t�m, assim:
-Com este simples code acima, vo�� j� ganha processamento, contudo pode ainda
melhorar mais recorrendo ao uso da include foreach, criada pelo
[url="http://forum.sa-mp.com/member.php?u=29176"]Y_Less[/url].
- Ao ler o t�tulo, oassunto � engra�ado , por�m o assunto � s�rio por vezes, ve-se
os c�digos assim:
-Quando me deparo com um c�digo deste, pergunto se n�o seria mais f�cil faze-lo
assim:
-Com isto vejo que muitos membros ainda n�o sabem os operadores l�gicos, se � que
ao menos sabem que eles existem, por isso decidi deixar aqui alguns links de
tutoriais de operadores l�gicos, para quem quiser saber mais sobre este assunto.
- Es+ero que aprendam algo com este tutorial, se quiserem acrescentar algo ou
melhorar o tutorial em algum aspeto, estejam � vontade.