Jump to content

Boolean


Guest XmEn

Recommended Posts

Alias "Bool"..

 

Pokročilý pawneři určitě znají a využívají, nováčci o tom možná jenom četli. Nebudu tu rozebírat teoretickou část, jako například že boolean zabírá v paměti tolik a tolik RAM oproti obyčejné proměné apd., ale spíš se zaměřím na příklad kde se to dá využít prakticky.

Boolean zabírá v paměti 1bit zatímco hodnotné proměnné zabírá v paměti 32bitů :d To je dost velkej rozdíl.

 

 

Script "Vrata" + Vysvětlení

V tomto prvním scriptu i vysvětlím Co to vůbec bool je apd.

Máme udělaný script na vrata, někdo přijede (máme to např. nastavené na klávesu H), zmáčkne klávesu H, vrata se otevřou, on projede a zmáčkne zase H a vrata se zavřou. Teď musíme zařadit do scriptu podmínku, protože bez podmínky by script nepoznal jestli při stisku H má vrata zavřít a nebo otevřít.. a proč zavírat zavřená vrata? :? Nováček by (pokud umí) použil proměnou new vrata; - Sice je to funkční, ale my se bavíme o booleanu, který je lepší kvůli optimalizaci. Použijeme inicializici bool: tedy

new bool:vrata;
Link to comment
Share on other sites

Možná bys ještě mohl něco napsat o "!", k čemu slouží atd, on by se správně měl používat pouze při boolean ale většina lidí ho používá snad všude kde se dá.

 

Také bych dopsal, že některé funkce vrací boolean hodnotu (IsPlayerConnected, ...)

 

Jinak dobré.

PS: Zařazuji do seznamu návodů

Link to comment
Share on other sites

  • Globální moderátor

Jenze ukladani booleanu zavisi na jakym principu ukladani ma, jestli dini, dubd, mysql, nebo vlastni takze to ukladani si budou muset udelat sami...( omlouvam se za text bez diakritiky :d) a xmen oprav mi tam hrubku "promenne" na "promene" :d

 

EDIT: nebo jak to ma byt vubec spravne? :d je vecer a dobre mi to nemysli

Link to comment
Share on other sites

Jenze ukladani booleanu zavisi na jakym principu ukladani ma, jestli dini, dubd, mysql, nebo vlastni takze to ukladani si budou muset udelat sami...( omlouvam se za text bez diakritiky :d) a xmen oprav mi tam hrubku "promenne" na "promene" :d

 

EDIT: nebo jak to ma byt vubec spravne? :d je vecer a dobre mi to nemysli

 

Pokud si este spravne pamatuju tak bool ukladat pres dudb neslo jen pres Dini

Link to comment
Share on other sites

":21qaxbdm]Možná bys ještě mohl něco napsat o "!", k čemu slouží atd, on by se správně měl používat pouze při boolean ale většina lidí ho používá snad všude kde se dá.

 

Také bych dopsal, že některé funkce vrací boolean hodnotu (IsPlayerConnected, ...)

Dopsáno :)

 


 

Jo a jeste by bylo dobre kdybys tam udelal i ukladani Booleanu ptze hodne lidi s tim ma problemy

Stejný názor jak HighPrint, navíc tohle je teoretická část.

Link to comment
Share on other sites

Boolean zabírá v paměti 1bit zatímco hodnotné proměnné zabírá v paměti 32bitů :d To je dost velkej rozdíl.

 

Není tohle blbost ?

 

Bool zabíá 32Bit v paměti, a klasická proměnná podle řetězce ..

 

Takže když mááme :

 

new
Link to comment
Share on other sites

new bool:neco; - Zabere 1b

new neco; - Zabere 32b

 

new bool:neco[MAX_PLAYERS]; - 500b

new neco[MAX_PLAYERS]; - 16 000b

 

Tak jaká blbost?

 

ffredyk (13:03:39 6/07/2011)

bool 32 bitů :d:D:D:D:D

ffredyk (13:03:44 6/07/2011)

to je nějaká blbost :d

Link to comment
Share on other sites

  • Globální moderátor
Dobryyy, ten boolean je trocha ako php ! = false :d

 

http://cs.wikipedia.org/wiki/Boolean

 

2 ALGOL

3 Pascal

4 C#

5 Fortran

6 Objective-C

7 Ocaml

8 PHP

9 Python

10 Java

 

Takže v podstatě skoro všude se to používá :d

Link to comment
Share on other sites

Pěkný Tutorial :)

Ale měl bych k tomu boolu ještě dotaz:

 

Jak se dá udělat, aby byl bool, jako výsledná hodnota ve stocku? Myslel jsem si, že ve stocku může být jako výsledná hodnota vše(integer, string, float...), ale jak to vypadá, tak bool asi nejde.

 

stock funkce()
{
return true;
}
public OnGameModeInit()
{	
       new bool:promena;
promena = funkce();
return 1;
}

 

No a háže to tag mismatch. Jak je to možné? :o

 

Díky :)

Link to comment
Share on other sites

Pěkný Tutorial :)

Ale měl bych k tomu boolu ještě dotaz:

 

Jak se dá udělat, aby byl bool, jako výsledná hodnota ve stocku? Myslel jsem si, že ve stocku může být jako výsledná hodnota vše(integer, string, float...), ale jak to vypadá, tak bool asi nejde.

 

stock funkce()
{
return true;
}
public OnGameModeInit()
{	
       new bool:promena;
promena = funkce();
return 1;
}

 

No a háže to tag mismatch. Jak je to možné? :o

 

Díky :)

 

Bool využívá jen true / false tudíš nemůže jako normální přeměnná něco vyolávat...

 

stock

Link to comment
Share on other sites

  • Globální moderátor

A proč by to nešlo? Stačí to přeměnit na bool...Sice nevím k čemu ti to bude, ale dá se to.

 

 

new bool:troll;

stock funkce()

{

    return true;

}

public OnGameModeInit()

{

        troll = bool:funkce();

        printf("%d",int:troll); 

/* nevím jak vypsat přes printf bool, takže jsem to 

přeměnil do intergeru :d jestli to vypíše "1" tak to funguje ;)*/

        return 1;

}

Link to comment
Share on other sites

A proč by to nešlo? Stačí to přeměnit na bool...Sice nevím k čemu ti to bude, ale dá se to.

 

 

new bool:troll;
stock funkce()
{
   return true;
}
public OnGameModeInit()
{
       troll = [b]bool:[/b]funkce();
       printf("%s",int:troll); // nevím jak vypsat přes printf bool, takže jsem to přeměnil do intergeru  jestli to vypíše "1" tak to funguje 
   	return 1;
}

 

 

OO, jsi borec ;) To že bych měl dát před funkci "bool:" by mně fakt nenapadlo. Moc jsi mi pomohl :)

Link to comment
Share on other sites

  • Globální moderátor

Vždyť v podstatě to přeměňujete furt, akorát si to neuvědomujete. Tím, že vytváříte proměnu už "bool:" tak jakoby proměnujete tu normální proměnu na boolean :d

 

teda aspoň jsem to takhle pochopil v pawn

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...