[ARHIIV] mängumeistrid
Pole sisse logitud. [Logi sisse ]
Mine lehekülje algusesse
Prinditav versioon | Telli teema e-mailile | Lisa lemmikutesse  
Õpetus: Käsud lihtsaks! [ehk kiirem ja lihtsam koodimine]
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 23.7.2010 08:39 Tsiteeri
Õpetus: Käsud lihtsaks! [ehk kiirem ja lihtsam koodimine]



Paljud GM funktsioonid on mitme-mitme argumendiga. See muudab koodimise aja pikaks ja mängutegemise oma ka. Korduvaid asju aga saab palju lihtsamaks teha.
Võtame näiteks heliefektid. Heli mängib

sound_play(heli nimetus);

Kui sa nüüd kasutad seda mitme-mitme objekti koodis ja tahad pärast näiteks heli välja lülitamist teha, edu. Jäädki objekti koodidest iga sound_play rida otsima.

Lihtsam on teha uus script:

Script snd:
//snd(heli nimetus);

Ja scripti kirjutad

Kood:
sound_play(argument0);


Lihtne? Iga kord, kui on vaja heli mängida, kirjutad snd_play asemel snd. Näiteks

Kood:
snd(heli_tulistamine);


Miks see hea on?

Ütleme et tahad mängu testida ilma helideta. Pole midagi lihtsamat kui minna scripti snd ja põrutada selle ainsa rea ette kaks kaldkriipsu... Lihtne on ka teha pärast heli sisse/välja lülitamist, muudad scripti snd näiteks nii:


Kood:
if (global.heliefektid) sound_play(argument0);


Ja sisse-välja lülitamise nupp teeb nii:


Kood:
if (global.heliefektid) global.heliefektid = -1;
else global.heliefektid = 1;


Lihtne? Pealegi on "snd" märksa lühem kirjutada kui "sound_play"...

Jätkub...

A window is technically a wallhack.
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 23.7.2010 09:37 Tsiteeri


Aga proovime midagi, kus on rohkem argumente:

Näiteks draw_text. Kirjutab ekraanile teksti, onju.
Argumente on 3: x, y ja tekst ise. Aga eri tekstide jaoks peame käsitsi lisama rea, mis määrab fondi, rea, mis määrab värvi... jne.


Script jutt
// jutt(x,y,tekst,värv)

Scripti kirjutame sellised read:
Kood:

draw_set_font(font0);
draw_set_color(c_black);
draw_text(argument0+1,argument1+1,argument2);
if !(argument3)
draw_set_color(c_white);
else
draw_set_color(argument3);
draw_text(argument0,argument1,argument2);


Mida see script teeb?

Kasutame näiteks nii:
Kood:
jutt(10,10,"elud: "+string(elud),c_yellow);


Tulemuseks tekib ekraanile kiri "elud:", elude arv ja... see on kollane ja musta varjuga... üheainsa rea abil! Muidu oleks seda kõike pidanud tegema nii:

Kood:

draw_set_font(font0);
draw_set_color(c_black);
draw_text(11,11,"elud: "+string(elud));
draw_set_color(c_yellow);
draw_text(10,10,"elud: "+string(elud));


Ja nii iga kord, kui tahame varjuga teksti teha!

Aga tänu scriptile tekitasime enamuse asju automaatselt.
Natuke lihtsam või mis?
Lisaks, kui me ei määra scripti kasutades värvi, näiteks

Kood:
jutt(10,10,"elud: "+string(elud));

On tekst automaatselt valge!

Samamoodi võiksime lisada veel terve rodu argumente, mis - kui me eraldi ei määra real, on automaatselt midagi. Näiteks võime lisada argument4 fondi tüübi valikuks (ja scriptis määrab draw_set_font käsuga vastava), argument5 võime panna läbipaistvuse (vastavalt draw_set_alpha) ja nii edasi. Ja iga kord kui ei ole vaja muuta, script paneb mingi vaikimisi väärtuse.

Ise kasutan alati korduvate käskude puhul sellist sriptiga "mähkimist" -- läheb koodimine kiiremini ja vigu parandada on lihtsam, sest muudad scripti, mitte ei kaeva objektide koodides.

Näiteks draw_sprite_ext(sprite,frame,x,y,xscale,yscale,rot,color,alpha) on ropult pikk funktsioon. Palju mugavam on sellest teha script "maali" mis automatselt paneb xscale ja yscale 1-ks, rotationi directioniks, colori c_whiteks ja alpha 1-ks KUI ma ei määra teisti (nagu värv tekstiga näites).

maali(sprite0,0,x,y)

sisuliselt ikkagi see rõve käsk, aga scriptiga muudame ta lühikeseks KUIGI kõik keerulised omadused on vajadusel lihtsalt ligipääsetavad.

Onju mugavam?

A window is technically a wallhack.
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
Karneval
Level 6
Avatar

Liitunud: 2.2.2010
Postitusi: 267
[EEMAL]




postitati 26.7.2010 09:15 Tsiteeri


Mugavam kindlasti. Ma ise proovisin kunagi midagi sellist teha, aga ei õnnestunud.

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i

Hetkel loevad seda teemat:
Mitte ühtegi - 1 külaline

Mine lehekülje lõppu





Foorumi algbaas põhineb XMB mootoril, modifitseeritud Valter Pundi poolt
Kodulehekülg on tehtud Valter Pundi poolt vpundi ät gmail punkt komm