Quote:
Originally Posted by zCyan
Com certeza vocк quer saber como otimizar seus cуdigos certo? Blz ai vai uma base
Esse aqui й um cуdigo funcionando perfeitamente, mais pode economizar linhas em seu gamemode:
PHP код:
//Topo do gamemode
new Tutorial[MAX_PLAYERS];
//Em OnPlayerCommandText
if (strcmp("/teste", cmdtext, true, 10) == 0)
{
if(Tutorial[playerid] == 1)
{
SendClientMessage(playerid,-1,"Codigo Funcionando");
return 1;
}
}
Viu? Esse cуdigo acima estб funcionando, agora vamos economizar linhas em seu gamemode:
PHP код:
if (strcmp("/teste", cmdtext, true, 10) == 0)
{
if(Tutorial[playerid] == 1) return SendClientMessage(playerid,-1,"Cуdigo Funcionando E Otimizado!");
}
Viu a diferenзa? й basicamente isso ae man, qualquer dъvida poste ae
|
Economia de linhas nгo significa um cуdigo optimizado, a ъnica diferenзa vai ser na velocidade da compilaзгo, mas essa velocidade й bem insignificante.
O compilador ignora espaзos e linhas, os dois cуdigos acima iram gerar um amx bem semelhantes a ъnica diferenзa й no retorno do comando que no segundo cуdigo retorna o valor retornado pela funзгo
SendClientMessage, se a funзгo retornar 0 o servidor vai entender que o comando nгo existe enquanto o primeiro sempre vai retornar 1.
Um cуdigo bem optimizado significa nгo desperdiзar memoria e processamento.
Exemplo de um loop que joga processamento fora:
PHP код:
for(new i; i < MAX_PLAYERS; i++)
Supondo que a definiзгo MAX_PLAYERS nгo seja alterada (o valor padrгo й 500) e tenha 5 jogadores online no servidor, esse loop vai rodar de 0 a 499, executando muito mais vezes do que deveria.
PHP код:
for(new i, j = GetPlayerPoolSize(); i <= j; i++)
Supondo que tenha 5 players online no servidor e o id mais alto й 5, o loop vai rodar de 0 a 5, rodando somente 6 vezes.
Exemplo de desperdнcio de memуria:
Й muito comum ver pessoas ao declararem uma array para formatar um mensagem para ser enviada para um jogador declarando arrays com cйlulas muito acima do que precisam.
PHP код:
new name[MAX_PLAYER_NAME], str[128];
GetPlayerName(playerid, name, sizeof name);
format(str, sizeof str, "Olб %s", name);
SendClientMessage(playerid, -1, str);
No exemplo acima foi declarado a array str com 128 cйlulas, mas na formataзгo foi usado apenas 28. Jogando fora 100 cйlulas.
PHP код:
new name[MAX_PLAYER_NAME], str[MAX_PLAYER_NAME + 4];
GetPlayerName(playerid, name, sizeof name);
format(str, sizeof str, "Olб %s", name);
SendClientMessage(playerid, -1, str);
A array str foi declarada com o valor de MAX_PLAYER_NAME (24) + 4 que seria: 23 caracteres do nome + 4 caracteres da formataзгo +
EOS (End of string).