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.