« Előző oldal- - - ^Tartalom^- - - Következő oldal »



A JÁTÉKBAN SZEREPLŐ TÁRGYAK:

A játék alapegységei a benne szereplő tárgyak, melyeknek több példányai (instance) is lehetnek.

object_index - objektum jelzése. Értéke nem változtatható meg.
id - a példány egyéni azonosítószáma (>= 100000). (Az egérmutató alatt mindig látható a pálya szerkesztésekor.) Értéke nem változtatható meg.
mask_index - ütközésekkor maszkként használt kép jelzése. A -1 érték adásakor ugyanaz lesz, mintha a sprite_index lenne.
solid - szilárd-e a példány. A játék alatt megváltoztatható.
persistent - amikor egy példány ismétlődő és újra feltűnik, mikor egy másik pályára kerül. (Pl. egy vezérlőobjektumnál lehet szükséges, hogy ne semmisüljön meg, hanem változatlanul maradjon meg a következő pályán is.) Például olyankor szokás kikapcsolni (hamisra állítani), ha visszamegyünk az első pályára.

Az egyéni példányokat nem olyan könnyű azonosítani, mert nincs nevük. Ha egy tárgynak csak egy példánya van, akkor használható a tárgy neve, de egyébként meg kell adni a példány id-jét, vagyis egyéni azonosítóját. Ez használható a with utasításban és mint tárgy azonosító. Szerencsére számos változó és függvény nyújt segítséget a példány egyéni azonosítójának megállapítására.
A következő két függvény egyikének sem változtatható meg az értéke (vagyis csak lekérdezhető):

instance_count - az aktuális pályán létező tárgyak száma.
instance_id[0..n-1] - külön tárgyak azonosítója. Itt n a tárgyak száma.

Példaként tételezzük fel, hogy a játékban minden egységnek egyéni erőssége van és meg akarjuk találni a legerősebbet:

maxazonosito = -1;
maxero = 0;
for (i=0; i<instance_count; i+=1)
{
iii = instance_id[i];
if (iii.object_index = = unit)
{
if (iii.ero > maxero)
{maxazonosito = iii; maxero = iii.ero;}
}
}


A ciklus végeztével a maxero változó tartalmazza a legerősebb egység azonosítóját. (Ne semmisüljenek meg példányok a ciklus közben, mert azok automatikusan eltávolítódnak a tömbből, és ennek következtében példányok kihagyásával fog kezdeni.)

instance_find(obj,n) - az obj objektumtípus (n+1)-edik tagjának azonosítóját adja.
Ha a megadott objektum nem létezik, a visszatérő érték a noone kulcsszó lesz.
instance_exists(obj) - létezik-e az obj objektumtípus tagja. Obj lehet egy tárgy, példány id, vagy az all kulcsszó.
instance_number(obj) - mennyi létezik az obj objektumtípusból. Obj lehet egy tárgy, példány id, vagy az all kulcsszó.
instance_position(x,y,obj) - az (x,y) helyen lévő obj típusú objektum azonosítóját adja. Ha több tárgy van azon a helyen, csak az elsőt adja. Obj lehet egy tárgy vagy az all kulcsszó. Ha nincs, a visszatérő érték a noone.
instance_nearest(x,y,obj) - (x,y) ponthoz legközelebbi obj típusú objektum azonosítója. Obj lehet egy tárgy vagy az all kulcsszó.
instance_furthest(x,y,obj) - (x,y) ponttól legtávolabbi obj típusú objektum azonosítója. Obj lehet egy tárgy vagy az all kulcsszó.
instance_place(x,y,obj) - annak az obj típusú példánynak az id-jét adja, mellyel az aktuális példány találkozott, mikor (x,y) helyen volt. Obj lehet egy tárgy vagy az all kulcsszó. Ha nem létezett, akkor a noone a visszatérési érték.

instance_create(x,y,obj) - obj objektum létrehozása (x,y) pontra. A függvény az új objektum azonosítójával tér vissza.
instance_copy(v) - aktuális objektum másolatának létrehozása. A v argumentum jelzi, hogy a létrehozás eseményt kell-e végrehajtani a másolathoz. A függvény az új példány azonosítójával tér vissza.
instance_destroy() - megsemmisíti az aktuális tárgyat.
instance_change(obj,v) -az aktuális tárgyat az obj-nak megfelelővé változtatja. A v jelzi, hogy a végrehajtás a megsemmisítés és létrehozás eseményből álljon-e (pl. true).
position_destroy(x,y) - megsemmisíti az összes objektumot, melyek érintkeznek (x,y) hellyel.
position_change(x,y,obj,v) - az (x,y) helyen lévő összes tárgyat az obj-nak megfelelővé változtatja. A v jelzi, hogy a végrehajtás a megsemmisítés és létrehozás eseményből álljon-e.

visible - ha értéke igaz, az alak kirajzolódik a képernyőn, különben nem lesz látható, de ennek ellenére pl. beléjük lehet ütközni.
sprite_index - az objektumhoz tartozó aktuális kép (sprite) indexe. Értéke megváltoztatható, hogy egy másik kép tartozzon az objektumhoz (pl. ha van egy alak nevű tárgy, valamint a mozgási irányainak megfelelő alakfel, alakle, stb. sprite-ok, akkor a létrehozásakor hozzárendelhető egy kép, ha még nem tartozott hozzá semmilyen, vagy átállítható egy másikra, vagy éppen a játék során a mozgási irányától függően változtatható pl. a sprite_index=alakfel módon). A kép megváltoztatása nem változtatja meg az éppen látható alkép indexét.
image_number - egy sprite gyakran több képből, vagyis alképekből áll (a Sprite editor-ban látható a képek száma; az első az image0). Ez a függvény az adott objektumhoz aktuálisan tartozó sprite alképeinek számát adja (csak lekérdezhető).
image_index - ha egy kép alképekből áll, akkor a program egymás után, körforgásszerűen váltogatja őket. Ez a függvény az éppen kirajzolt alképet jelzi (0-tól kezdve van számozva). Értéke meg is változtatható, és akkor a program ettől az új értéktől kezdve folytatja az alképek kirajzolását.
image_single - néha szeretnénk csak az egyik alképet látni és felfüggeszteni a váltogatásukat. Ez érhető el, ha ehhez a függvényhez rendeljük hozzá a látni kívánt alkép indexét (az első alkép indexe a 0). Értékként -1-et adva ciklikusan váltogatja az alképeket.
Ha szeretnénk egy olyan képet körbeforgatni, melynek alképei az egyes irányoknak megfelelően helyezkednek el (az óramutató járásával ellentétesen), akkor ez a következő utasítással érhető el a tárgy lépés eseményében:
{
image_single = direction * image_number/360;
}

Az image_single a GM 6-os változatában már nincs benne (legalábbis "hivatalosan", de azért még alkalmazható). Helyette az image_index függvény használható az alkép kiválasztásához és az image_speed 0-ra állítása. Ennek alapján az előző példa:
{
image_index = direction * image_number/360;
image_speed = 0;
}

image_speed - az alképek váltogatásának sebessége. Ha értéke 1, akkor minden lépéskor kirajzolódik a következő alkép. Kisebb érték esetén lassul, nagyobb esetén egyes alképek kimaradnak a gyorsabb mozgás érdekében.
depth - mélység. A pályára legelőször elhelyezett alak van a legmélyebben, vagyis ezt az összes többi takarni fogja, ha keresztülmennek rajta. A mélység alapértéke 0. Ha csökkentjük, akkor az adott objektum egyre föntebb kerül, míg ha növeljük, egyre lentebb. Egy tárgy (pl. saját egérmutató) mindig legfelül lesz, ha a Lépés Vége (End Step) eseményébe (hogy az összes többi esemény már feldolgozva legyen a mélység alkalmazása előtt) a depth=-y utasítást helyezzük el.
image_xscale - ezzel a függvénnyel a kép szélessége állítható. A normális méretet az 1 jelenti.
image_yscale - a kép függőleges méretezése. 1 jelenti, ha nincs méretezés. Jó tudni, hogy a méretezés (különösen a kicsinyítés) időigényesebbé teszi a rajzolást, ezenkívül mivel a kép szélességét és magasságát megváltoztatja, az ütközés eseményre is befolyással van. A méretezés változtatása használható 3D-s hatások keltésére.
image_angle - a szög, amellyel a sprite elfordul. Megadható fokokban, óramutató járásával ellentétes irányban. A regisztrált GM 7-től használható.
image_alpha - a kép átlátszósága. 1 a normális beállítás, 0 a teljes áttetszőség. A részben áttetsző képek kirajzolása lassítja a játékot.
image_blend - keverőszín, mely a sprite rajzolásánál használt. A c_white az alapértelmezett érték. Más érték megadásakor a sprite keveredik ezzel a színnel. A regisztrált GM 7-től használható.

A következő függvények értéke nem megváltoztatható, csak lekérdezhető:

sprite_width - az alak szélessége
sprite_height - az alak magassága
sprite_xoffset - a kép vízszintes eltolása, ahogy az meg van adva a Sprite properties-ben
sprite_yoffset - a kép függőleges eltolása, ahogy az meg van adva a Sprite properties-ben
bbox_left - a képet magába foglaló doboz bal oldala (Bounding box a Sprite properties-ban)
bbox_right - a képet magába foglaló doboz jobb oldala
bbox_top - a képet magába foglaló doboz teteje
bbox_bottom - a képet magába foglaló doboz alja.

« Előző oldal- - - ^Tartalom^- - - Következő oldal »