Právě je ned 20. kvě 2012 7:38:14
Hosting WEDOS.cz
SLEVA 25% (slevový kód:PAWNO25)

Nejnovější témata:
[Prezentace]GameMix Hosting a Adminka od No.Wolf
[HOSTING] Hledáme od MarekH
[SCRIPT/INC] Colored Checkpoint v1 (QCCP v1) od QWER
[HLEDAM] Status hračov od aburi
[GM] Lucky Adventures od martanius

Vyzkoušejte antivirus ESET Smart Security 5

Vyhledat témata bez odpovědí | Zobrazit aktivní témata Zobrazit nové příspěvky | Zobrazit vaše příspěvky


Všechny časy jsou v UTC + 1 hodina [ Letní čas ]





Odeslat nové téma Odpovědět na téma  [ Příspěvek: 1 ] 

Jako ve škole
1 50%  50%  [ 3 ]
2 17%  17%  [ 1 ]
3 17%  17%  [ 1 ]
4 0%  0%  [ 0 ]
5 17%  17%  [ 1 ]
Celkem hlasů : 6
Autor Zpráva
PříspěvekNapsal: pon 29. bře 2010 22:59:29 
Marc Wayne "B-Dup"
Marc Wayne "B-Dup"
Registrován: pát 28. lis 2008 22:39:53
Příspěvky: 873

V tomhle tutoriálu vás seznámím s takzvanými směrnicemi. Pomocí nich, no jak jen to říct, si můžeme usnadnit a upřesnit práci s pawnem. Komunikují s kompilerem a programem jako takovým, díky nim můžeme např. řídit compiler, jeho errory apod..

Jelikož je toto velmi obsáhlá kapitola, rozdělím to tak do 5 tutoriálů.

V tomto:
Citace:
assert (podmínka)
define (definice)
error

[hr][/hr]
define

[hr][/hr]
Pomocí tohoto můžeme např pod znak X nadefinovat číslo 5
Zapis:
Kód:
#define X 5

v tomto případě pokud někam dosadíme X, při kompilaci se zamění za 5
Např.:
Citace:
#define X 5
new pole[X];

Bude to samé jako
Citace:
new pole[5];

k tomuto účelu yb to bylo ale poněkud nepraktické.
Jenže define dokáže i jiné věci. Můžeme nadefinovat dokonce celý řetězec kódu nebo textu
Např.:
Citace:
#define ALL new i = 0; i < MAX_PLAYERS; i++

a potom použijeme
Citace:
for(ALL) SendClientMessage(i, 0xFFFFFF, "Ahoj");

A dále jde definovat i text
Citace:
#define Zprava "Ahoj"

a použijeme
Citace:
for(ALL) SendClientMessage(i, 0xFFFFFF, Zprava);

V případě že píšeme delší definice a nechceme v nich mít zmatek, je nejvýhodnější používat znak "\", který určuje, že definice pokračuje na dalším řádku.
Např.:
Citace:
#define ALL \
new i = 0; i < MAX_PLAYERS; i++)

Tato definice má 2 řádky. Myslím že ji můžeme odřádkovávat do nekonečna...

Další zajímavostí je používání parametrů. Parametrů můžeme použít maximálně 9 a to ve tvaru %0 %1 %2... %9 - první parametr je %0, druhý je %1 atd...
A využití je následovné:
Citace:
#define X(%0) \
((%0) * 7)

printf("%d", X(6));

X(%0) - X definice s 1 parametrem definující ((%0) * 7) - tedy vložený parametr * 7
printf tedy vypíše hodnotu 42.

Pomocí tohoto všeho lze později skládat u užitečné definice
Citace:
#define pT(%0,%1) \
printf(#%0, %1)

pT(%s %s %s, "ahoj", "nazdar", "cus");

pT - definice a můžeme umístit kamkoli v modu
%s %s %s - je vlastně parametr %0 a do printf se nastaví jako definice #%0
"ahoj", "nazdar", "cus" - je vlastně parametr %1
Pokud jste toto správně pochopili, je vám jasné že to vypíše "Ahoj nazdar cus"
[hr][/hr]
assert

[hr][/hr]
Jeho úkolem je ověřit, je-li něco pravda, a pokud ne zastaví kompilaci.
Zapis:
Kód:
#assert X<Y

v tomto případě pokud je X větší než Y tak zastaví kompilaci.
Např.:
Citace:
#define X 5
#define Y 6
#assert X<Y

Takhle to projde bezproblémů
Ale pokud bychom dali:
Citace:
#define X 7
#define Y 6
#assert X<Y

tak nám to vyhodí fatal error 110: assertion failed: 7<6
[hr][/hr]
error

[hr][/hr]
Jeho úkolem je vypsat do kompileru error.
Zapis:
Kód:
#error Zákaz kompilace

v tomto případě pokud spustíte kompiler tak to vypíše error
Citace:
fatal error 111: user error: Zákaz kompilace

Bezvýhradně se používá v kombinaci s podmínkami, které budou v dalším tutoriálu
[hr][/hr]
Související návody:
Citace:


Offline
 Profil  
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvek: 1 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


 Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na: