ERM
A WoG nagy újítása, hogy a játék eseményeihez (belépés egy épületbe, csata,
egérkattintás stb. ..) saját szkripteket lehet írni. Ezek minden alkalommal
végrehajtódnak, amikor a beállított típusú esemény bekövetkezik. A wogosítási
menüben kiválaszthatjuk, hogy mely szkriptek legyenek bekapcsolva. Ezt az
"Eseményekhez rendelt bővítményt"-t (kb.) nevezzük angolul "Event Related Model"-nek,
ERM-nek.
Az ERM szkriptnyelvben az általános célú programozási nyelveknél szokásos
aritmetikai műveleteken, IF-THEN-ELSE szerkezeten, ugróutasításokon,
funkcióhívásokon és FOR-NEXT/DO-LOOP ciklusokon stb. kívül rengeteg speciális
utasítás is van, pl. van egy, a hősök aktuális manapontjának a lekérdezésére.
Az ERM editor és a hozzá tartozó HTML alapú, angol nyelvű súgó letölthető a
Magyar Honlapról (erm_tools.wog), és kiegészítőként telepíthető fel. / Másolás a
játék Update könyvtárába, és a h3wupd.exe futtatása angol területi beállítások
mellett./
***
Az ERM nyelv rövid áttekintése
Azokhoz az eseményekhez lehet szkriptet írni, amelyekhez a H3WOG.EXE-ben létezik
trigger. Minden szkript, valamilyen triggerrel kezdődik. Például, ha egy hős
meglátogat egy manakutat (48-as típusú objektum), akkor az "!?OB48;" kezdetű
szkriptek mind aktív állapotba kerülnek, és a beolvasás sorrendjében
végrehajtódnak. A WoG beépített parancsértelmezője a soronkénti végrehajtást a
következő trigger elérésekor befejezi, és átugrik a következő aktivált triggerre.
Az utolsó aktív triggerhez tartozó kódrészlet lefutása után a végrehajtás
visszakerül az alapprogramhoz (H3 SoD). A kezdő trigger utáni részben
kérdezhetjük le a különböző dolgok aktuális értékeit (pl. a hős neve), és különböző
parancsokat adhatunk ki. Ezeket a parancsokat egységesen receiver-nek ("fogadó")
nevezzük. Az összes trigger "!?", vagy "!$" kezdetű, és az összes receiver
eleje "!!".
Pl.: az !!IF:M^Helló^;
sor az előbbi trigger után írva, minden manakút
látogatáskor köszön a hősöknek (AI hősöknek is). Részletes súgó angol és orosz
nyelven van az ERM editorhoz, ráérő fordítókat szívesen látunk.
A szkripteket az éppen szerkesztett pálya, mapeditor - térkép - opciók/timed events
részébe, vagy a játék data/s könyvtárban létrehozott scriptxx.erm nevű file-okba
lehet bemásolni. Az első esetben a szkript csak az aktuális pályán lesz aktív, a
wogosítási beállításoktól függetlenül, a második esetben viszont minden pályán.
Minden szkriptet tartalmazó timed event, vagy *.erm file tartalmaz "ZVSE" sort
az első trigger előtt, ez szükséges a szkriptek lefutásához.
A szkript integrálása a wogosítási menübe két úton történhet:egy scriptxx.ers
file létrehozásával, ill. a data mappában található zsetup01.txt
szerkesztésével. Mindkét esetben az erm editorral tábla nézetben való újranyitás
után létre kell hozni egy új sort, amiben megadjuk a szkript adatait. A
szkriptet szintén módosítani kell: meg kell szakítania a futását, ha a hozzá
rendelt wogosítási opció ki van kapcsolva.
***
Erős idegzetűeknek
Kicsit részletesebben a WoG technikai hátteréről:
A h3WoG.exe alapja a H3SoD exe-je (v3.2). A játék betöltésekor, a Wogosítási
opciók beállításakor igazából az opció számának megfelelő 1 bites system flag-ek
állítódnak 0-ra, vagy egyre. A pálya betöltésekor a WoG parancsértelemző
beolvassa az összes elérhető timed event-ből és *.erm file-ból a szkripteket,
sorokra bontva. A beolvasás sorrendje: timed events: a mapeditorban megadott
sorrend; *.erm file-ok: script00.erm első sortól script99.erm utolsó sorig.
Hibaüzenet esetén a hibakezelőt elindító sor beolvasáskor kapott sorszáma fog
díszelegni az ablakban. Ha játék közben mentünk, akkor ezek a sysflagek, és az
összes beolvasott szkript is bekerül a mentésbe. Éppen ezért játék közben a
beállításokon már csak a mentés hexaeditorral történő szerkesztésével, vagy a
játék kezdetekor már betöltött, erre szolgáló szkripttel tudunk változtatni. (az
ERM debugger szkript lehetővé teszi opciók ki/be kapcsolgatását játék közben)
Ha a játék futás közben elér egy kilépési pontot, akkor a SoD-ot futtató
héjprogram azonosítja a kilépési pont (trigger) típusát, és az egyező típusú
trigger utasításokról listát készít. A triggerek végrehajtási sorrendje egyezik
a beolvasási sorrendjükkel. Az utánuk következő kódrészeket a WoG
parancsértelmezője hajtja végre. A 3.58 verziónál a hibakezelés a SoD-tól átkerült
a héjprogramhoz. Maga a parancsértelmező a sorokon belül balról jobbra halad,
aritmetikai műveleteknél is. /2+4*5=30, pl.:)/
A (feltételes) ugró utasítások 3.58 alatt csak kerülő úton hajthatók végre,
(feltételes) funkcióhívásokkal. Az egész szerkezet, a SoD maggal, a héjjal és a szkriptekkel felfogható egy olyan bővíthető exe-ként is, amihez változó számú
dll file tartozik.
Forrás: doom3d.uw.hu