- YSI_Data\y_bit -
Å ta je y_bit?y_bit omgucÌ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_SetBit_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_SetAllBit_SetAll(name, true/false); - postavlja sve u datom BitArray-u na true/false.
@Vasic ako možeš samo da izmeniš
MAXD_PLAYERS u
MAX_PLAYERS, sorry na DP :)
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
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
Odvikavaj se od toga, imas switch. Ter.op. je malo sporiji za takve operacije :D
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