Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Tutorial] Uso de funções nativas e variáveis globais

$
0
0
• Introdução
Já havia feito um tópico, mas apenas relacionado à funções nativas, e por ter voltado com uma conta nova, eu não posso editar meu tópico antigo. Vou explicar sobre a repetição de funções nativas e falar sobre variáveis globais (strings globais são o costume de algumas pessoas).
• Por que evitar repetir funções nativas?
Toda vez que você usa uma função nativa, o servidor procurar pela sua definição, então ira procurar no samp-server.exe pela função nativa com amx_function (Na realidade é amx_FindNative, apenas chamo assim por utilizar o AmxModX e ter uma macro para isso), então se possível, limite as vezes que você vai utilizar uma função.
Exemplo 1:
Ruim
PHP Code:

if(GetPlayerWeapon(playerid) == ... || GetPlayerWeapon(playerid) == ... || GetPlayerWeapon(playerid) == ...) 

     
//codigo 


Bom
PHP Code:

new arma GetPlayerWeapon(playerid); 
if(
arma == ... || arma  == ... || arma == ...) 

     
//codigo 


Por que o método acima é bom?
- No método ruim, a função nativa GetPlayerWeapon é chamada três vezes para poder verificar o ID da arma.
- No método bom, a função nativa é chamada apenas uma vez, tendo o valor retornado pela função na variável, que será usada para comparar o ID da arma, no lugar de chamar a função nativa mais de uma vez.
Exemplo 2:
Ruim
Muitas pessoas usam uma função com a keyword stock para obter o nome, como GetName(playerid), esse método é ruim, considerando que a função nativa GetPlayerName vai ser chamada toda vez que essa função ser usada, e também sem nem se quer saber para que serve a keyword stock.

Bom
PHP Code:

new nome[MAX_PLAYERS][MAX_PLAYER_NAME];  

public 
OnPlayerConnect(playerid)  
{  
     
GetPlayerName(playerid,nome[playerid],24);  
     return 
1;   


O método acima é bom por que a função GetPlayerName só é chamada uma vez na public OnPlayerConnect, assim podendo usar a matriz nome[playerid] para comparar/verificar/obter o nome de jogadores.
• Uso de variáveis globais
Algumas pessoas usam variáveis globais para certas coisas, como uma string de 256 ou 128 células para todas as mensagens do gamemode pensando que estão economizando algo, mas na realidade não estão, além de estarem desperdiçando células.

Evite variáveis globais. Elas podem ser substituídas acidentalmente ou podem mostrar o texto errado no lugar errado. Você também não economizará memória. Uma variável consome igualmente a mesma quantidade de memória, não importa onde ou quando é criada. As variáveis ​​locais são criadas na memória quando necessário e elas são descartadas após o uso, diferente de variáveis globais que permanecem na memória. Então concluindo, é recomendado que você utilize variáveis locais com a quantidade de células que você vai utilizar.

Viewing all articles
Browse latest Browse all 18226

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>