y_bit

Započeo Osamu Dazai
20. Avg. 2019.
5,354
pregleda
27
postova
VinlandRP
4
Made Man
20. Avg. 2019.
- YSI_Data\y_bit -


Å ta je y_bit?
y_bit omgućava jednostavno skladištnje true / false boolean vrednosti. Jedna ćelija ima 32 bita, ali se ona često (...ako ne i uvek) koristi za skladištenje jednog bool-a što nam prouzrokuje bačenih 31 mesta ( jer je bit single cell, a u PAWN jeziku bool: tag "iskoristi" sve 32 ćelije ). ( u prevodu y_bit štedi 97% više memorije tj vi bacate 97% memorije na svaki 32 bitni bool )


Kako se koristi?
Kao i uvek, najbolje je da vam objasnim kroz primere, tako se najbolje shvati 🙂
//new BitArray:name;
new BitArray:playerSpawned;

public OnPlayerConnect(playerid)
{
//Bit_Set(BitArray:array<>, slot, bool:set);
Bit_Set(playerSpawned, playerid, false); // Postoji i Bit_(V/L)et funkcija koju ja koristim ali o tome cemo posle :)
// Postavili smo playerSpawned bit na slotu playerid na false.
printf(" playerSpawned za playerid-a je sada %d", Bit_Get(playerSpawned, playerid));
// out: playerSpawned za playerid-a je sada 0 (0 : false | 1 : true)
return 1;
}

public OnPlayerSpawn(playerid)
{
Bit_Set(playerSpawned, playerid, true); // Postavalja playerSpawned na slotu playerid na true
// out: playerSpawned za playerid-a je sada 1 (0 : false | 1 : true)
return 1;
}



Bit_Set
Bit_Set funkcija zapravo poziva Bit_(V/L)et funkciju, brže Vam je odmah da pozovete ove dve funkcije nego da koristite Bit_Set.
//new BitArray:name;
new BitArray:playerSpawned;

public OnPlayerConnect(playerid)
{
Bit_Vet(playerSpawned, playerid); // Bit_Vet postavlja playerSpawned na slotu playerid na false
printf(" playerSpawned za playerid-a je sada %d", Bit_Get(playerSpawned, playerid));
// out: playerSpawned za playerid-a je sada 0 (0 : false | 1 : true)
return 1;
}

public OnPlayerSpawn(playerid)
{
Bit_Let(playerSpawned, playerid); // Bit_Let postavlja playerSpawned na slotu playerid na true
printf(" playerSpawned za playerid-a je sada %d", Bit_Get(playerSpawned, playerid));
// out: playerSpawned za playerid-a je sada 1 (0 : false | 1 : true)
return 1;
}



Korištenje u if uslovu
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
if(Bit_Get(playerSpawned, playerid) == false)
printf(" Igrac %d koji nije spawnovan je zadao štetu!!!", playerid);
}



Bit_SetAll
Bit_SetAll(name, true/false); - postavlja sve u datom BitArray-u na true/false.
VinlandRP
4
Made Man
20. Avg. 2019.
@Vasic ako možeÅ¡ samo da izmeniÅ¡ MAXD_PLAYERS u MAX_PLAYERS, sorry na DP 🙂
Nikola-.-
6
Kingpin
20. Avg. 2019.
Veoma korisno 🙂
VinlandRP
4
Made Man
20. Avg. 2019.
ʙᴜɴᴛᴀ ꜰᴜᴊɪᴡᴀʀᴀ wrote on August 20, 2019, 8:36 am:
Veoma korisno 🙂

Pa jedan bool za 100 igraca (32bitni) zauzme 400 bytes a ovako sa y_bit samo 20
FunnyGamingDay - FGD
6
OG Legend
20. Avg. 2019.
Osamu Dazai wrote on August 20, 2019, 7:35 am:
@Vasic ako možeÅ¡ samo da izmeniÅ¡ MAXD_PLAYERS u MAX_PLAYERS, sorry na DP 🙂

sredjeno

Former SA:MP server developer

Muma Rascall
6
Forum Don
20. Avg. 2019.
veri najs, haj fajv♥
VinlandRP
4
Made Man
20. Avg. 2019.
mumitza. wrote on August 20, 2019, 10:40 am:
veri najs, haj fajv♥

Hvala pajdo <3
Exnas.pwn
5
Godfather
20. Avg. 2019.
Dobarrr
VinlandRP
4
Made Man
20. Avg. 2019.
002 wrote on August 20, 2019, 1:57 pm:
Dobarrr

Hwaawwa OwO
xFqris
5
Godfather
20. Avg. 2019.
veoma korisno  😕
VinlandRP
4
Made Man
20. Avg. 2019.
Fqris wrote on August 20, 2019, 2:53 pm:
veoma korisno  😕

Hvala batice 😄
cadilab
10
Administrator
🔥61
20. Avg. 2019.
Nisam radio sa y_bit al sam siguran da se moze koristiti
if(!Bit_Get(val, playerid))


umjesto
if(Bit_Get(val, playerid) == false)


xD
Nikola-.-
6
Kingpin
20. Avg. 2019.
6cadilab9 wrote on August 20, 2019, 8:06 pm:
Nisam radio sa y_bit al sam siguran da se moze koristiti
if(!Bit_Get(val, playerid))


umjesto
if(Bit_Get(val, playerid) == false)


xD

Tako je 😉
Rax_King
5
Godfather
20. Avg. 2019.
6cadilab9 wrote on August 20, 2019, 8:06 pm:
Nisam radio sa y_bit al sam siguran da se moze koristiti
if(!Bit_Get(val, playerid))


umjesto
if(Bit_Get(val, playerid) == false)


xD


Pravilno je

if ((!Bit_Get(...)) == !(false)) ...
VinlandRP
4
Made Man
20. Avg. 2019.
// xunder wrote on August 20, 2019, 8:13 pm:
Pravilno je

if ((!Bit_Get(...)) == !(false)) ...

Navikao sam tako, ne znači ništa po performansi bar

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha