SA-MP Forums Archive
[Tutorial] Usando rBits - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Usando rBits (/showthread.php?tid=284396)



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 arrayValor mбximo armazenбvel (limite)
arrays de 1-bitLimitado a valores atй 1 (0x1). " "
arrays de 2-bitLimitado 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-bitLimitado a valores atй 65535 (0xFFFF). " "
arrays de 32-bitUtilize 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
View Post
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
View Post
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
View Post
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.