ERM

A WoG nagy újítása, hogy a játék eseményeihez (belépés é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 lekérdezhetjük 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 össszes 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) A részletes súgó angol és orosz nyelven van meg 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ő hajtja végre. A 3.58 verziónál a hibakezelés a SoD-tól átkerült a héjprogramhoz. Maga a parancsértelemző 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, héjjal és a szkriptekkel felfogható egy olyan bővíthető exe-ként is, amihez változó számú dll file tartozik.