Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Osamu Dazai poslato Avgust 20, 2019, 09:29:08 PRE PODNE

Naslov: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 09:29:08 PRE PODNE
- 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 :)

[pawn]//new BitArray:name<size>;
new BitArray:playerSpawned<MAX_PLAYERS>;

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("[tutorial] playerSpawned za playerid-a je sada %d", Bit_Get(playerSpawned, playerid));
   // out: [tutorial] 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: [tutorial] playerSpawned za playerid-a je sada 1 (0 : false | 1 : true)
   return 1;
}[/pawn]


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.
[pawn]//new BitArray:name<size>;
new BitArray:playerSpawned<MAX_PLAYERS>;

public OnPlayerConnect(playerid)
{
   Bit_Vet(playerSpawned, playerid); // Bit_Vet postavlja playerSpawned na slotu playerid na false
   printf("[tutorial] playerSpawned za playerid-a je sada %d", Bit_Get(playerSpawned, playerid));
   // out: [tutorial] 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("[tutorial] playerSpawned za playerid-a je sada %d", Bit_Get(playerSpawned, playerid));
   // out: [tutorial] playerSpawned za playerid-a je sada 1 (0 : false | 1 : true)
   return 1;
}[/pawn]


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


Bit_SetAll
Bit_SetAll(name, true/false); - postavlja sve u datom BitArray-u na true/false.
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 09:35:16 PRE PODNE
@Vasic ako možeš samo da izmeniš MAXD_PLAYERS u MAX_PLAYERS, sorry na DP :)
Naslov: Odg: y_bit
Poruka od: bunta poslato Avgust 20, 2019, 10:36:18 PRE PODNE
Veoma korisno :)
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 11:04:30 PRE PODNE
Citat: ʙᴜɴᴛᴀ ꜰᴜᴊɪᴡᴀʀᴀ poslato Avgust 20, 2019, 10:36:18 PRE PODNE
Veoma korisno :)
Pa jedan bool za 100 igraca (32bitni) zauzme 400 bytes a ovako sa y_bit samo 20
Naslov: Odg: y_bit
Poruka od: Vasic poslato Avgust 20, 2019, 11:28:32 PRE PODNE
Citat: Osamu Dazai poslato Avgust 20, 2019, 09:35:16 PRE PODNE
@Vasic ako možeš samo da izmeniš MAXD_PLAYERS u MAX_PLAYERS, sorry na DP :)
sredjeno
Naslov: Odg: y_bit
Poruka od: Muma poslato Avgust 20, 2019, 12:40:25 POSLE PODNE
veri najs, haj fajv♥
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 12:53:01 POSLE PODNE
Citat: mumitza. poslato Avgust 20, 2019, 12:40:25 POSLE PODNE
veri najs, haj fajv♥
Hvala pajdo <3
Naslov: Odg: y_bit
Poruka od: __vedran.xyz77 poslato Avgust 20, 2019, 15:57:28 POSLE PODNE
Dobarrr
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 15:59:18 POSLE PODNE
Citat: 002 poslato Avgust 20, 2019, 15:57:28 POSLE PODNE
Dobarrr
Hwaawwa OwO
Naslov: Odg: y_bit
Poruka od: Fqris poslato Avgust 20, 2019, 16:53:29 POSLE PODNE
veoma korisno  ???
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 17:12:28 POSLE PODNE
Citat: Fqris poslato Avgust 20, 2019, 16:53:29 POSLE PODNE
veoma korisno  ???
Hvala batice :D
Naslov: Odg: y_bit
Poruka od: CADILAB poslato Avgust 20, 2019, 22:06:03 POSLE PODNE
Nisam radio sa y_bit al sam siguran da se moze koristiti

[pawn]if(!Bit_Get(val, playerid))[/pawn]

umjesto

[pawn]if(Bit_Get(val, playerid) == false)[/pawn]

xD
Naslov: Odg: y_bit
Poruka od: bunta poslato Avgust 20, 2019, 22:07:20 POSLE PODNE
Citat: 6cadilab9 poslato Avgust 20, 2019, 22:06:03 POSLE PODNE
Nisam radio sa y_bit al sam siguran da se moze koristiti

[pawn]if(!Bit_Get(val, playerid))[/pawn]

umjesto

[pawn]if(Bit_Get(val, playerid) == false)[/pawn]

xD
Tako je ;)
Naslov: Odg: y_bit
Poruka od: // xunder poslato Avgust 20, 2019, 22:13:54 POSLE PODNE
Citat: 6cadilab9 poslato Avgust 20, 2019, 22:06:03 POSLE PODNE
Nisam radio sa y_bit al sam siguran da se moze koristiti

[pawn]if(!Bit_Get(val, playerid))[/pawn]

umjesto

[pawn]if(Bit_Get(val, playerid) == false)[/pawn]

xD

Pravilno je

if ((!Bit_Get(...)) == !(false)) ...
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 23:30:38 POSLE PODNE
Citat: // xunder poslato Avgust 20, 2019, 22:13:54 POSLE PODNE
Pravilno je

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

Navikao sam tako, ne znači ništa po performansi bar
Naslov: Odg: y_bit
Poruka od: // xunder poslato Avgust 20, 2019, 23:42:44 POSLE PODNE
Citat: Osamu Dazai poslato Avgust 20, 2019, 23:30:38 POSLE PODNE
Navikao sam tako, ne znači ništa po performansi bar

Malo sale :D
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 23:44:53 POSLE PODNE
Jebajga, svakako je lepo objašnjeno i sve je tačno :P
Naslov: Odg: y_bit
Poruka od: // xunder poslato Avgust 20, 2019, 23:48:24 POSLE PODNE
Citat: Osamu Dazai poslato Avgust 20, 2019, 23:44:53 POSLE PODNE
Jebajga, svakako je lepo objašnjeno i sve je tačno :P

Ali nije else if :PP
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 20, 2019, 23:55:22 POSLE PODNE
Dobro de, iskreno znao sam to nego pre nego Å¡to sam uopÅ¡te Å¡ta krenuo pisat razmislio sam dal može viÅ¡e od 2 uslova i ako se dobro sećam da sam jednom koristio kao 3 uslova uz pomoć zagrada tako da je if, else if ili tako  neÅ¡to. uglavnom objasnio sam kako nekome skratit muke i poboljÅ¡at sam kod :D
Naslov: Odg: y_bit
Poruka od: // xunder poslato Avgust 20, 2019, 23:58:44 POSLE PODNE
Citat: Osamu Dazai poslato Avgust 20, 2019, 23:55:22 POSLE PODNE
Dobro de, iskreno znao sam to nego pre nego Å¡to sam uopÅ¡te Å¡ta krenuo pisat razmislio sam dal može viÅ¡e od 2 uslova i ako se dobro sećam da sam jednom koristio kao 3 uslova uz pomoć zagrada tako da je if, else if ili tako  neÅ¡to. uglavnom objasnio sam kako nekome skratit muke i poboljÅ¡at sam kod :D


(gender == 1) ? ((gender == 2) ? ("Zensko") : ("Musko")) : ("sta si ti sine moj")
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 21, 2019, 00:04:28 PRE PODNE
Citat: // xunder poslato Avgust 20, 2019, 23:58:44 POSLE PODNE

(gender == 1) ? ((gender == 2) ? ("Zensko") : ("Musko")) : ("sta si ti sine moj")

E da, na taj fazon sam uradio (ne tako, bilo je mnogo manje uslova), nisam skriptao 4mj eto neki izgovog haha, pajdo sam
Naslov: Odg: y_bit
Poruka od: // xunder poslato Avgust 21, 2019, 00:05:11 PRE PODNE
Odvikavaj se od toga, imas switch. Ter.op. je malo sporiji za takve operacije :D
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 21, 2019, 00:07:04 PRE PODNE
Ma ne koristim ga za 3, nego kažem da sam jednom iskoristio i da sam zato mislio da li da stavim if, else ili if, else if :D
Naslov: Odg: y_bit
Poruka od: CADILAB poslato Avgust 21, 2019, 00:08:21 PRE PODNE
Sad sam se malo zezao sa ovim, kul stvar
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 21, 2019, 00:27:28 PRE PODNE
Citat: 6cadilab9 poslato Avgust 21, 2019, 00:08:21 PRE PODNE
Sad sam se malo zezao sa ovim, kul stvar
Hvala
Naslov: Odg: y_bit
Poruka od: imnaithan poslato Avgust 21, 2019, 00:59:11 PRE PODNE
Citat: imnaithan poslato Avgust 21, 2019, 00:58:52 PRE PODNE
Gledam ovo i isto se osecam kao neko ko bi uzeo da radi muziku bez ikakvog znanja... Valjda zato nisam skripter niti se bavim time , ako kazu svi da je dobro , slazem se i ja  8)
Naslov: Odg: y_bit
Poruka od: Osamu Dazai poslato Avgust 21, 2019, 01:00:49 PRE PODNE
Citat: imnaithan poslato Avgust 21, 2019, 00:59:11 PRE PODNE

Bog. Otac, ali nemoj quote jer bude prazno kad quoteam haha