[size=32]Pegar item de uma enum[/size]
Este truque é legal para pegar o item de uma enum sem saber o nome do item
Basta fazer:
PHP como:Este truque é legal para pegar o item de uma enum sem saber o nome do item
Basta fazer:
- Código:
enum bruno {
a,b,c,d,e
}
printf( "E enum tem %d itens", bruno:2 ); // mesmo que "c"
}
[size=32]Pegar números de itens de uma enum[/size]
Este truque é legal para fazer loop em enums, de maneira bem fácil. É como um sizeof para enum.
Basta fazer:
PHP como:Este truque é legal para fazer loop em enums, de maneira bem fácil. É como um sizeof para enum.
Basta fazer:
- Código:
enum bruno {
a,b,c,d,e
}
printf( "E enum tem %d itens", _:bruno ); // note _:bruno
}
[size=32]Referenciar parametros[/size]
Digamos que você tenha:
PHP como:Digamos que você tenha:
- Código:
oi_amigo ( amigo1 = 0, amigo2 ) {
printf( "%d e %d ", amigo1 , amigo2 );
}
e você quer apenas mudar o valor de amigo2 sem mexer no amigo1
Para isto basta referenciar o parâmetro pelo próprio nome, use:
peão Код:Para isto basta referenciar o parâmetro pelo próprio nome, use:
oi_amigo ( .amigo2 = 3 ) ; // amigo2 referenciado
E o valor 3 irá para o amigo2
[size=32]Declaraзгo fбcil[/size]
Quando vocк estб com preguiзa de contar quantos dados contйm em uma array para declara-la corretamente.
Como:
peão Код:[size=32]Declaraзгo fбcil[/size]
Quando vocк estб com preguiзa de contar quantos dados contйm em uma array para declara-la corretamente.
Como:
nova var [ 5 ] = { 1 , 2 , 3 , 4 , 5 } ;
Basta fazer:
peão Код:nova var [ ] = { 1 , 2 , 3 , 4 , 5 } ;
Limitações : Neste caso, não pode fazer elipse ( ... ). Pois desconhece o tamanho da
[size=32]incompatibilidade de tag[/size]
variável Em alguns casos, você pode facilmente resolver este erro adaptando usando tag:
Exemplo
- Código:
new Text: oi ;
ao usar
PHP como:- Código:
oi = 10;
Dará aviso, entгo você faz:
peão Код:- Código:
oi = Texto : 10 ;
e irá funcionar
[size=32]Else e Operador NOT[/size]
A maioria das vezes você nгo dб conta, mas vocк acaba fazendo:
peão Код:[size=32]Else e Operador NOT[/size]
A maioria das vezes você nгo dб conta, mas vocк acaba fazendo:
- Código:
[size=14][size=13]if ( ! var ) {
// código var == 0
}
else {
// código var != 0
}[/size][/size]
Quando é melhor
peão Код:- Código:
if ( var ) {
// codigo var != 0
}
else {
// codigo var == 0
}
É bobo, mas muita gente esquece disto. Observe que o operador NÃO "!" nгo foi utilizado, sendo mais rбpido
[size=32]Diminuindo MAX_PLAYERS[/size]
O MAX PLAYERS da SA:MP tem valor 500. Mas tem gente que nгo tem nem 20 slots no servidor, estй MUITO І desotimizado.
Use isto no topo do gamemode, abaixo de include a_samp
peão Код:[size=32]Diminuindo MAX_PLAYERS[/size]
O MAX PLAYERS da SA:MP tem valor 500. Mas tem gente que nгo tem nem 20 slots no servidor, estй MUITO І desotimizado.
Use isto no topo do gamemode, abaixo de include a_samp
- Código:
#if definido MAX_PLAYERS
#undef MAX_PLAYERS
#endif
#define MAX_PLAYERS 20
[size=32]Char Arrays[/size]
Essa é outra dica interessante para economizar memória. Em Pawn não tem arrays diferentes de 32 bits, exceto, se usar char .
novo arr[100 caracteres];
Então o acesso deve ser feito da seguinte forma:
PHP como:Essa é outra dica interessante para economizar memória. Em Pawn não tem arrays diferentes de 32 bits, exceto, se usar char .
novo arr[100 caracteres];
Então o acesso deve ser feito da seguinte forma:
- Código:
arr{0}
Cada parte da array vai ocupar 4 vezes a menos que as arrays normais
Limites : O problema disto é que o valor armazenado nгo pode ser maior que 255. Mas isto é suficiente para bool, ou textos, por exemplo.
Como já disse no tópico de Slice
[size=32]Static e New[/size]
Na grande maioria dos casos usa static é mais viável que new. Porque?
static é criada uma vez, e nгo é criada novamente, assim nгo precisa criar a cada execuзгo do cуdigo tornando-se mais rбpido.
Limitações : O problema disto é que ela abriga sempre um último valor, então você precisa limpar uma string (caso for uma array, claro) usando
PHP como:Limites : O problema disto é que o valor armazenado nгo pode ser maior que 255. Mas isto é suficiente para bool, ou textos, por exemplo.
Como já disse no tópico de Slice
[size=32]Static e New[/size]
Na grande maioria dos casos usa static é mais viável que new. Porque?
static é criada uma vez, e nгo é criada novamente, assim nгo precisa criar a cada execuзгo do cуdigo tornando-se mais rбpido.
Limitações : O problema disto é que ela abriga sempre um último valor, então você precisa limpar uma string (caso for uma array, claro) usando
- Código:
string[0] = 0;
// caso nгo for
valor = 0;
Mas normalmente as funções da SA:MP como GetPlayerName, GetPlayerHealth, Format, já fazem a limpeza da variável nelas, logo é mais otimizado usar:
peão Код:- Código:
nome de jogador estático [ MAX_PLAYER_NAME ] ;
GetPlayerName ( playerid, playername, MAX_PLAYER_NAME ) ;
faça o que
peão Код:- Código:
novo nome de jogador [ MAX_PLAYER_NAME ] ;
GetPlayerName ( playerid, playername, MAX_PLAYER_NAME ) ;
[size=32]Loop players rápido s/ foreach[/size]
Com este código você deixa o loop em jogadores mais rápido, inclusive mais rápido que foreach, se estiver com slots praticamente lotado (porque este método nгo acessou arrays para contar os jogadores)
peão Код:Com este código você deixa o loop em jogadores mais rápido, inclusive mais rápido que foreach, se estiver com slots praticamente lotado (porque este método nгo acessou arrays para contar os jogadores)
- Código:
i estático ; // static mais otimizado, como disse antes
for ( i = GetMaxPlayers ( ) - 1 ; i > - 1 ; -- i ) {
if ( IsPlayerConnected ( i ) ) {
// code
}
}
Limitações: Isto faz o loop inverso, do id maior para o id menor, mas na maioria das vezes não tem problema e é MUITO otimizado
[size=32]Operador OR[/size]
Quando para checar valores máximos ou se várias matrizes são nulas, é aconselhável usar o operador bit a bit OU
Em vez dê
peão Код:[size=32]Operador OR[/size]
Quando para checar valores máximos ou se várias matrizes são nulas, é aconselhável usar o operador bit a bit OU
Em vez dê
- Código:
if ( var1 == 0 && var2 == 0 && var3 == 0 )
Você faz:
peão Код:- Código:
if ( var1 | var2 | var3 == 0 )
É muito mais rápido
[size=32]Floatpower c/ 2[/size]
Caso você esteja fazendo
Por exemplo:
peão Код:[size=32]Floatpower c/ 2[/size]
Caso você esteja fazendo
Por exemplo:
- Código:
floatpower ( 2 , 40 ) ;
é mais otimizado:
peão Код:- Código:
1 << 40
É bastante mais otimizado. Como o prуprio Ken disse em um post.
[size=32]Menos acesso nas variáveis[/size]
Essa dica, bem como a do OR. É interessante para quem está acessando a variável mais de uma vez sem necessidade, mas preste atenção ao usar ISTO.
Exemplo lento:
peão Код:[size=32]Menos acesso nas variáveis[/size]
Essa dica, bem como a do OR. É interessante para quem está acessando a variável mais de uma vez sem necessidade, mas preste atenção ao usar ISTO.
Exemplo lento:
// caso 0 for menor que var e var for menor que 9
- Código:
if ( 0 >= var && var <= 9 )
Exemplo rápido:
peão Код:// caso 0 for menor que var. var para menor que 9
- Código:
if ( 0 <= var <= 9 )
Ambas fazem a mesma diversão. Mas o segundo método é mais otimizado, por nгo processador o operador "&&" e nem acessa a variбvel duas vezes
[size=32]Parentese de Retorno[/size]
Outra dica interessante para quem quer economizar linha em cуdigo й fazer o parвmetro retornar o ъltimo valor tido nele:
Exemplo longo:
peão Код:[size=32]Parentese de Retorno[/size]
Outra dica interessante para quem quer economizar linha em cуdigo й fazer o parвmetro retornar o ъltimo valor tido nele:
Exemplo longo:
- Código:
formato ( string, 12 , "%d" , 15 ) ;
nova var [ ] = string;
Exemplo curto:
peão Код:- Código:
new var [ ] = ( formato ( string, 12 , "%d" , 15 ) , string ) ;
Isto é, se você faz
PHP como:- Código:
printf("%d", (5,4));
apenas o valor 4 serб impresso, o valor 5 serб processo mas nгo impresso.
[size=32]Strings #[/size]
Se você é o cara que curte deixe seus cуdigos dнficeis e de chato entenda use # para representar strings
PHP como:[size=32]Strings #[/size]
Se você é o cara que curte deixe seus cуdigos dнficeis e de chato entenda use # para representar strings
- Código:
print( # oi amigo );
[size=32]Concatenar Strings Pre Compiladas[/size]
Para strings que nгo estгo alocadas em variбveis vocк pode "junta-las" - concatena-las fazendo:
PHP como:Para strings que nгo estгo alocadas em variбveis vocк pode "junta-las" - concatena-las fazendo:
- Código:
printf("oi bruno da" " ips team");
[size=32]Limpar Arrays rapidamente[/size]
Um método super rápido para limpar strings fazendo a cópia uma a outra
Método lento:
peão Код:Um método super rápido para limpar strings fazendo a cópia uma a outra
Método lento:
- Código:
for ( new i ; i != sizeof arrayaserlimpa ; i ++ ) {
arrayaserlimpa [ i ] = 0 ;
}
Método rápido
peão Код:- Código:
new arrayaserlimpa [ 200 ] = { 1 ,... } ;
novo arrreset [ sizeof arrayaserlimpa ] ;
arrayaserlimpa = arrreset;
[size=32]Condicionando/Colocando valor em variáveis rapidamente[/size]
Como eu disse anteriormente, colocando parêntese você retorna o valor do que há dentro. Logo outro truque interessante é que você pode condicionar variáveis em condicional com menos instruções, fazendo:
Invйs de
peão Код:Como eu disse anteriormente, colocando parêntese você retorna o valor do que há dentro. Logo outro truque interessante é que você pode condicionar variáveis em condicional com menos instruções, fazendo:
Invйs de
- Código:
cmdindex = strfind ( string, "" ) ;
if ( cmdindex != - 1 ) {
// coisas
}
Você faz:
peão Код:- Código:
if ( ( cmdindex = strfind ( string, " " ) ) != - 1 ) {
// coisas
}
[size=32]VÁRIAS CONDICIONAIS x &&[/size]
JÁ foi feito os testes e usando && você acaba fazendo mais instruções do que aplicando VÁRIAS CONDICIONAIS
Logo
Método lento:
peão Код:JÁ foi feito os testes e usando && você acaba fazendo mais instruções do que aplicando VÁRIAS CONDICIONAIS
Logo
Método lento:
- Código:
if ( var1 && ! var2 ) {
// coisas
}
Mais rápido
peão Код:- Código:
if ( var1 ) {
if ( ! var2 ) {
// coisas
}
}
[size=32]stock sгo inъteis[/size]
Normalmente o pessoal nгo sabe. Mas " stock func" serve para nгo dar "unused function". Mas caso a função seja usada, o "não usado" não será exibido. Logo :copyright: redundante
Logo:
Lento
peão Код:Normalmente o pessoal nгo sabe. Mas " stock func" serve para nгo dar "unused function". Mas caso a função seja usada, o "não usado" não será exibido. Logo :copyright: redundante
Logo:
Lento
- Código:
função de estoque ( ) {
}
Rápido:
peão Код:- Código:
função ( ) {
}
[size=32]Checar se a string é packeada[/size]
Para checar se o cуdigo usa "packet" strings basta fazer uma coisinha simples:
- Código:
if ( str [ 0 ] > 0xff ) {
// é compactado
}
Isto porque o modo correto de uso é str{0}. Quando são embalados a declaração correta é ! "string"
[size=32]Alfabeto com Elipse[/size]
Nгo posso deixar de publicar este, hehe. Fiz isso esses dias porque estava com a preguiçã de fazer o alfabeto inteiro e por numa array:
PHP como:[size=32]Alfabeto com Elipse[/size]
Nгo posso deixar de publicar este, hehe. Fiz isso esses dias porque estava com a preguiçã de fazer o alfabeto inteiro e por numa array:
- Código:
new alfabeto [ 1 + ('z' - 'a') ] = { 'a', 'b', ...} ;
--
Dicas de rjj
[size=32]Igualar variáveis[/size]
Método lento:
- Código:
x = 2
y = 2
Método rápido
PHP como:- Código:
x = y = 2;
- Tutorial por Bruno da Silva. Pendente de Modificaзхes