Usando rBits -
Shelby - 19.09.2011
Sumбrio:
...• Oque й rBits?
...• Porque usar rBits?
...• Como usar rBits?
...• Poupando memуria:
...• Quais sгo os limites?
...• Onde posso encontrar rBits?
...• Quem desenvolveu rBits?
...• Agradecimentos.
O que й rBits?
rBits й uma forma pratica e fбcil de manipular bits nas arrays.
Porque usar rBits?
Usando-a corretamente vocк irб economizar
muita memуria!
Muita gente utiliza arrays de 32bits
( as famosas new array[tamanho]; ) que podem armazenar valores atй 2147483647, quando sу precisam armazenar valores de 0 e 1.
Com rBits vocк pode criar uma array que armazena apenas os valores que vocк precisa
( Assim, poupando memуria ).
Como usar rBits?
Para declarar uma
bit array vocк apenas deve criar uma array com o nome Bit e em seguida o seu tipo
( 16, 8, 4, 2 ou 1 ) e o tamanho entre '<' e '>'.
pawn Code:
new Bit16: MinhaArray <5>;
Para definir um valor а essa array apenas use Bit seguida de seu tipo e entгo adicione '_Set'. Usando nosso exemplo, uma
array 16-bit ficaria:
pawn Code:
Bit16_Set(bitArr[], arrIdx, value);
// ...
Bit16(MinhaArray, 1, 250);
Para obter o valor й muito similar, vocк apenas troca o '_Set' para '_Get'.
pawn Code:
Bit16_Get(bitArr, arrIdx);
// ...
Bit16_Get(MinhaArray, 1);
Poupando memуria:
Aqui estб o que eu quero dizer com a poupanзa de memуria. Veja esse exemplo
( note que isto й apenas um exemplo ):
Muitas pessoas escrevem seus cуdigos desse jeito.
pawn Code:
#include <a_samp>
new
bool: g_PlayerSpawned[MAX_PLAYERS]
;
public OnPlayerSpawn(playerid)
{
g_PlayerSpawned[playerid] = true;
return 1;
}
public OnPlayerDeath(playerid)
{
g_PlayerSpawned[playerid] = false;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
g_PlayerSpawned[playerid] = false;
return 1;
}
stock IsPlayerSpawned(playerid)
return g_PlayerSpawned[playerid];
O tamanho do arquivo .amx й de 726 bytes. Estamos usando
arrays 32-bits neste exemplo quando nуs precisamos apenas armazenar valores entre 0 e 1. Sendo que poderнamos usar
arrays de 1-bit:
pawn Code:
#include <a_samp>
#include <rBits>
new
Bit1: g_PlayerSpawned <MAX_PLAYERS>
;
public OnPlayerSpawn(playerid)
{
Bit1_Set(g_PlayerSpawned, playerid, true);
return 1;
}
public OnPlayerDeath(playerid)
{
Bit1_Set(g_PlayerSpawned, playerid, false);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
Bit1_Set(g_PlayerSpawned, playerid, false);
return 1;
}
stock IsPlayerSpawned(playerid)
return Bit1_Get(g_PlayerSpawned, playerid);
Agora o tamanho do arquivo .amx й de 473 bytes. Nгo й muita coisa aqui, mas imagine em um script grande com muitas arrays!
Aqui, outro exemplo (Um exemplo meio bobo, mas nгo consegui pensar em outro.):
Vamos dizer que o valor mбximo que o nosso veнculo pode ter й 65535 e estamos usando
arrays de 32-bits:
pawn Code:
#include <a_samp>
new
g_VehiclePrice[MAX_VEHICLES]
;
public OnVehicleSpawn(vehicleid)
{
g_VehiclePrice[vehicleid] = random(65535); // Vamos dizer que o valor mбximo permitido seria 65535.
return 1;
}
O tamanho do arquivo compilado seria 2.12 kB.
Agora, vamos usar
arrays de 16-bits
( porque sу precisamos armazenar valores atй no mбximo 65535 ):
pawn Code:
#include <a_samp>
#include <rBits>
new
Bit16: g_VehiclePrice <MAX_VEHICLES>
;
public OnVehicleSpawn(vehicleid)
{
Bit16_Set(g_VehiclePrice, vehicleid, random(65535));
return 1;
}
O tamanho agora й somente 1.37 kB.
Quais sгo os limites?
Nome da array | Valor mбximo armazenбvel (limite) |
arrays de 1-bit | Limitado a valores atй 1 (0x1). " " |
arrays de 2-bit | Limitado a valores atй 3 (0x3). " " |
arrays de 4-bit (nibble arrays) | Limitado a valores atй 15 (0xF). " " |
arrays de 8-bit (tambйm conhecidas como char arrays no PAWN) | Limitado a valores atй 255 (0xFF). " " |
arrays de 16-bit | Limitado a valores atй 65535 (0xFFFF). " " |
arrays de 32-bit | Utilize as arrays comuns. |
Atenзгo:
" " = Significa que vocк pode usar valores entre 0 e 1. Caso vocк adicionar um valor mais alto ele irб repetir sempre entre 1 e 0.
Onde posso encontrar rBits?
https://sampforum.blast.hk/showthread.php?tid=275142
Quem desenvolveu rBits?
Ryder`
Agradecimentos:
Agradecimentos a Ryder` por disponibilizar em seu tуpico cуdigos para o uso neste tutorial.
Re: Usando rBits -
Macintosh - 19.09.2011
LOOOL parabйns! muito lecal!

first ^^
Re: Usando rBits -
WLSF - 19.09.2011
Nem sabia que isso existia, legal o tutorial vou comeзar a estudar isso hm.
Re: Usando rBits -
Dolby - 19.09.2011
Otimo Tutorial Larceny...
Re: Usando rBits -
guilhermegtu - 19.09.2011
Quote:
Originally Posted by Willian_Luigi
Nem sabia que isso existia, legal o tutorial vou comeзar a estudar isso hm.
|
Tambйm nгo sabia que isso existia.
Boa tutorial! :}
Re: Usando rBits -
[R] ousenber [K] - 19.09.2011
Bem legal como vocк disse se for em um grande script economizara bastante .. 100/10
Re: Usando rBits -
MiTToS - 19.09.2011
Quote:
Originally Posted by Willian_Luigi
Nem sabia que isso existia, legal o tutorial vou comeзar a estudar isso hm.
|
Eu jб tinha ouvido falar, mas nunca tinha pesquisado/estudado/interessado..
Vou comeзar a usar, a partir de hoje
Re: Usando rBits -
BrunoBSF - 19.09.2011
Muito Bom
Re: Usando rBits -
[NWD]Jim._.Carrey - 19.09.2011
Sem dъvidas уtimo tutorial.
Re: Usando rBits -
RockFire - 19.09.2011
Ele manipula arrays, nгo variбveis, apenas uma correзгo. Уtimo tutorial
Re: Usando rBits -
Leeo_Perez - 19.09.2011
PERFEITO!
nem sabia que existia esse negocio!
talvez eu use
Re: Usando rBits -
Shelby - 19.09.2011
Quote:
Originally Posted by RockFire
Ele manipula arrays, nгo variбveis, apenas uma correзгo. Уtimo tutorial 
|
Verdade, pequeno engano meu.
Valeu, corrigido.
Re: Usando rBits -
Vai_Besta - 19.09.2011
ja tinha visto mas nao me interessado
vou usar apartir de hj
Re: Usando rBits -
Y_Baby - 19.09.2011
Jб tinha usado ela em um pequeno GM que eu fiz.
------->
Bom tutorial
[10/10].
Re: Usando rBits -
[O.z]Caroline - 20.09.2011
agora que vi o tutorial!,
muito bom, eu precisava aprender *---*
+rep!
Re: Usando rBits -
Joao_VS - 20.09.2011
UFF axei q era o unico q nгo conhecia... valeu por compartilhar isso, vou comeзar a estudar....
Re: Usando rBits -
[O.z]Caroline - 20.09.2011
obrigada novamente, com este tutorial aprendi tambйm a ajeitar minha assinatura ^^'
Re: Usando rBits -
Ricop522 - 20.09.2011
Jб usei, sу que nгo gostei, bom!
Re: Usando rBits -
RebeloX - 20.09.2011
Muito bem, gostei do tutorial por os seguintes motivos.
Organizaзгo, Boa Explicaзгo e um Bom Estilo.
10/10 (:
Re: Usando rBits -
StrondA_ - 20.09.2011
Уtimo tutorial.