13.10.2013, 23:09
Eu que expliquei pro Will essa de declarar as arrays e ajustar o tamanho exato para os bits. hehehe.
Muito bom trabalho, parabйns para nуs.
Abraзos
Muito bom trabalho, parabйns para nуs.
Abraзos
new var[MAX_PLAYERS char];
var {playerid} = 5;
Boa Willian (y) (Jб dei muita rep nas ultimas 24h :/)
char = character em quase todas as linguagens, e no Pawn significa 8 bits? o.O |
00000000000000000000000000000000 //32 bits
00000000 00000000 00000000 00000000 // 32 bits
Char nas demais linguagem й um objeto e tambйm um tipo primitivo de variбvel.
No Pawn й utilizado para compactar valores. Como foi explicado no tуpico, vocк tem um valor comum que lhe rende 32 bits(espaзos, por exemplo): pawn Code:
Com essa include vocк consegue controlar melhor isto, e alйm disto, utilizando char tambйm(sу que somente para valores 0-255). Ficando mais ou menos assim: Code:
00000000 00000000 00000000 00000000 // 32 bits Assim vocк consegue utilizar valores com um tamanho menor de memуria ocupada, visando que vocк nгo utilizaria um nъmero de 32 bits... Logo se vocк usa MAX_PLAYERS em char, ao invйs de um vetor de 500, vocк teria 500 / 4 = 125, oque й uma reduзгo muito, muito grande. |
Beleza entendi
O primeiro bit da sequencia й o significativo (acho), que й usado para sinalizar se o nъmero й negativo ou positivo, certo? |
00000000 00000000 00000000 00000000
new bit4: var <6>;
new bit4: var2 <9>;
printf("%d", size(var, bit4)); //retorna 8, significando que vocк estб utilizando uma variбvel de apenas 8 casas(possibilidades) de 4 bits.
printf("%d", size(var2, bit4); //retorna 16, significando que vocк estб utilizando uma variбvel de 16 casas(possibilidades) de 4 bits.
new bit4: var <2>;
setBit4(var, 0, 10);
setBit4(var, 1, 0);
printf("%d", any(var, 0, bit4)); //retorna 1/true, significando que o slot 0 tem algum bit ativo.
printf("%d", any(var, 1, bit4); //retorna 0/false, significando que o slot 1 nгo tem nenhum bit ativo.
new bit4: var <2>;
setBit4(var, 0, 10);
setBit4(var, 1, 0);
printf("%d", none(var, 0, bit4)); //retorna 0/false, significando que o slot 0 tem algum bit ativo.
printf("%d", none(var, 1, bit4); //retorna 1/true, significando que o slot 1 nгo tem nenhum bit ativo.
bit_var nome <MAX_PLAYERS @bit1>;
bit_array matriz <MAX_PLAYERS, 10 @bit2>;
bit_var_set:2(nome, 0, 1);
bit_var_get:2(nome, 0);
bit_array_set:2(matriz, 0, 0, 1);
bit_array_get:2(matriz, 0, 0);