Použitie dialógov - časť 1.
Určite (resp. dúfam, že) si každý pozrel tutoriály o dialógových oknách, lenže keď sa na to pozrel, tak si povedal, že toto je na neho ťažké... časom som sa aj ja začal zaujímať o tie dialogy, no na chvílu som od nich upustil, lebo to na mňa prišlo moc ťažké... no po tom, čo mi brácho pomohol so súradnicami, tak som zistil, že je to veľmi jednoduché, a že to ani neni komplikované a jednoduché dialógové okno sa dá spraviť behom 10 minút.
FAQ (Často kladené otázky) - priamo vycitované z Ježurovho tutoriálu...
Na čo mi bude ten dialóg?
- Dajú sa pomocou neho robiť zaujímavé veci a v dnešnej dobe platí, že každá supr misia musí obsahovať dialógové okno...
Kde sa najčastejšie vyskytujú dialogy?
- Možno to prekvapí každého, no celé OFP je vlastne jeden obrovský dialog... začínajúc menu, končiac editorom.
Okej, takže 10 minút... si si istý, že sa to dá behom 10 minút? Neni to nejak málo času?
- Keď si zobereme, že bude treba nejak doladiť súradnice, tak to možno potrvá o pár minút neskôr, no nič sa nedeje... výsledok bude stáť za to...
Začíname...
Takže si v adresári svojej misie vytvorte poznámkový blok s názvom description.ext a nakopírujte si tam nasledujúce údaje, ktoré tam VŽDY musia byť pri dialogoch...
// FONTY
#define FontS "tahomaB24"
#define FontM "tahomaB36"
#define FontHTML "courierNewB64"
#define FontHTMLBold "courierNewB64"
#define FontMAP "courierNewB64"
#define FontMAIN "SteelfishB64"
#define FontMAINCZ "SteelfishB64CE"
#define FontTITLE "SteelfishB128"
#define FontTITLEHalf "SteelfishB64"
#define FontBOOK "garamond64"
#define FontNOTES "AudreysHandI48"
// TYPY OBJEKTŮ
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
// STYLY OBJEKTŮ - ZAROVNÁNÍ
#define ST_LEFT 0
#define ST_RIGHT 1
#define ST_CENTER 2
#define ST_UP 3
#define ST_DOWN 4
#define ST_VCENTER 5
// STYLY OBJEKTŮ - VZHLED
#define ST_SINGLE 0
#define ST_MULTI 16
#define ST_TITLE 32
#define ST_PICTURE 48
#define ST_3D_BORDER 80
#define ST_NO_BORDER 96
#define ST_HUD_BACKGROUND 128
#define ST_WITH_RECT 160
#define ST_SHADOW 256
#define ST_NO_RECT 512
// PŘEDDEFINOVANÉ ČÁSTI DIALOGŮ
// OTEXTUROVANÉ POZADÍ S MALÝM RÁMEČKEM
class RscBackground
{
type = CT_STATIC
IDC = -1
style = ST_3D_BORDER
x=0.150000;
y=0.150000;
w=0.700000;
h=0.700000;
text="";
ColorBackground[]={1,1,1,1};
ColorText[]={0,0,0,0};
font="tahomaB24";
SizeEx = 0
};
// NADPIS OKNA DIALOGU
class RscTitle
{
type = CT_STATIC
IDC = -1
style = ST_TITLE + ST_CENTER;
x = 0.150000;
y = 0.164000;
w = 0.700000;
h = 0.060000;
text = "";
ColorBackground[] = {1,1,0,1};
ColorText[] = {1,1,1,1};
font = "tahomaB36";
SizeEx = "1.0714 * 0.03";
};
// MÍSTO PRO TEXT
class RscGroupBox
{
type = CT_STATIC
IDC = -1
style = ST_NO_BORDER
text = "";
ColorBackground[] = {0,0,0,0};
ColorText[] = {0,0,0,0};
font = "tahomaB24";
SizeEx = 0.020000;
};
// HORIZONTÁLNÍ JEZDEC
class RscSliderH
{
type = CT_SLIDER
style = ST_RIGHT
h = 0.028000;
color[] = {0.080000,0.080000,0.120000,0.750000};
};
// VERTIKÁLNÍ JEZDEC
class RscSliderV
{
type = CT_SLIDER
style = ST_LEFT
w = 0.021000;
color[] = {0.080000,0.080000,0.120000,0.750000};
};
// TEXT ;)
class RscText
{
type = CT_STATIC
IDC = -1
style = ST_LEFT + ST_MULTI + ST_NO_RECT;
LineSpacing = 1.000000;
h = 0.040000;
ColorBackground[] = {0,0,0,0};
ColorText[] = {0.080000,0.080000,0.120000,0.750000};
font = "tahomaB24";
SizeEx = 0.020000;
};
// OBRÁZEK
class RscPicture
{
type = CT_STATIC
IDC = -1
style = ST_PICTURE
ColorBackground[] = {0,0,0,0};
ColorText[] = {1,1,1,1};
font = "tahomaB24";
SizeEx = 0
};
// TLAČÍTKO
class RscButton
{
type = CT_BUTTON
style = ST_CENTER
w = 0.110000;
h = 0.050000;
ColorText[] = {0.080000,0.080000,0.120000,1};
font = "tahomaB24";
SizeEx = 0.020000;
default = 0
SoundPush[] = {"ui\ui_ok",0.200000,1};
SoundClick[] = {"",0.200000,1};
SoundEscape[] = {"ui\ui_cc",0.200000,1};
};
// COMBOBOX - ROLOVACÍ NABÍDKA
class RscCombo
{
type = CT_COMBO
style = ST_LEFT
h = 0.040000;
WholeHeight = 0.250000;
colorSelect[] = {0.350000,0.380000,0.360000,1};
ColorText[] = {0.080000,0.080000,0.120000,0.750000};
ColorBackground[] = {0.350000,0.380000,0.360000,0.750000};
font = "tahomaB24";
SizeEx = 0.020000;
};
// PROSTOR, DO KTERÉHO MŮŽE UŽIVATEL PSÁT
class RscEdit
{
type = CT_EDIT
style = ST_LEFT
h = 0.032000;
ColorBackground[] = {0,0,0,0};
ColorText[] = {0.080000,0.080000,0.120000,0.750000};
ColorSelection[] = {1,1,1,0.250000};
font = "tahomaB24";
SizeEx = 0.020000;
autocomplete = "";
};
Aby sme si porozumeli, tieto veci sú dôležité, ale nemenia to vaše dialógové okno... je to len definícia jednotlivých vecí, nie samotného dialógového okna. Keď mám pravdu povedať, týmto veciam moc nerozumiem, no myslím si, že ani nie sú dôležité... Prejdeme k tomu dialógovému oknu...
Mojim príkladom k tomu oknu bude autorádio v aute, ktoré sa spustí, len čo zmáčknete tlačidlo v aute ;-)... niečo podobné bude aj v mojej misi Secret agent. Upozorňujem, že tento tutoriál sa zameriava LEN na použitie niektorých možností okna, konkrétne tlačidiel...
Takže, tu máte definíciu samotného okna hneď za tým textom nad týmto:
// TADY ZAČÍNA DEFINÍCIA TOHO DIALÓGOVÉHO OKNA
class RscRadio
{
IDD = 1000;
MovingEnable = 0;
class Controls
{
class Background : RscBackground
{
x = 0.350000;
y = 0.250000;
w = 0.300000;
h = 0.350000;
};
class Title : RscTitle
{
IDC = 1001
x = 0.380000;
y = 0.270000;
w = 0.240000;
h = 0.060000;
text = "Autorádio";
};
class Cudlik : RscButton
{
IDC = 1003
x = 0.450000;
y = 0.340000;
w = 0.100000;
h = 0.035000;
text = "CD Music 1";
default = 1;
action ="playMusic ""radio""";
};
class Cudlik2 : RscButton
{
IDC = 1004
x = 0.450000;
y = 0.400000;
w = 0.100000;
h = 0.035000;
text = "CD Music 2";
default = 1;
action ="playMusic ""radio2""";
};
class Cudlik3 : RscButton
{
IDC = 1005
x = 0.450000;
y = 0.460000;
w = 0.100000;
h = 0.035000;
text = "CD Music 3";
default = 1;
action ="playMusic ""radio3""";
};
class Cudlik4 : RscButton
{
IDC = 1006
x = 0.450000;
y = 0.520000;
w = 0.100000;
h = 0.035000;
text = "Zatvoriť výber";
default = 1;
action = CloseDialog 1000;
};
};
};
Hneď vysvetlím...
RscBackground je vlastne veľkosť nášho dialogu, resp. rozmery, kde sa bude nachádzať, aký bude veľký a tak... (mrknite si obrázok pod týmto)
RscTitle s názvom Autorádio je v našom prípade nadpis nášho okna.
Cudlik, cudlik2 - 4 sú tlačidlá, v ktorých je vpísaný text, napr. Zatvoriť výber.
Action v našich tlačidlách udáva, jaká udalosť prebehne... CloseDialog 1000 znamená, že sa dialóg zatvorí, tým pádom hráč bude môcť pokračovať v hre. Ak sa má spustiť nejaký skript, zvuk alebo dokonca hudba, treba si dať pozor na definovanie...
"playMusic ""radio3"""; - SPRÁVNE
"playMusic "radio3"; - NESPRÁVNE
"playMusic "radio3""; - NESPRÁVNE
Ak by ste chceli, aby sa prehral nejaký skript, tak dajte "[hrac] exec ""nazovskriptu.sqs""";
- neni to otestované, ale malo by to ísť...
Máte to? Výborne... definovanie je v poriadku, no aby som nezabudol... predsa len býva to snáď najväčším problémom a to je umiestnenie dialógu - súradnice x, y, w, h...
Na tomto obrázku z Ježurovho tutoriálu by Vám snáď malo byť všetko jasnejšie...
Dobre, keď toto máte, tak prejdeme na tú ukážkovú misiu a spomínané autorádio skúsime použiť... V ukážkovej misi to máte, jak na to, tak verím, že si to skúsite. Inak ak chcete, aby Vám autorádio išlo bez chýb, mali by ste si nadefinovať 3 skladby (radio, radio2 a radio3).
Tak dúfam, že som aspoň takto troška ukázal praktické využitie dialógov, teda okien, čo v iných tutoriáloch nebolo. Ak by ste mali nejaké problémy alebo nejasnosti okolo tohto skriptu a ukážkovej misie vôbec, píšte, mailujte alebo si ma nájdite na ICQ... adresy a ICQ v sekcii Viac o mne.