A Space Tactics III mesterséges intelligencia nyelve

A Space Tactics III-hoz kétféleképpen lehet MI-t készíteni: MI DLL-t írunk, vagy MI scriptet. Ez a rész az MI scriptek írásával foglalkozik.

Egy MI script megírásához csak egy szövegszerkesztő kell. Meg a makeai.exe segédprogram, ami ott van a Space Tactics III indító exéje mellett.

MI script felépítése

Az MI script szabályokból áll, hogy mi szerint kell játszania a gépnek. Ezeket egyszerűen egymás után kell írni.

A szabályok felépítése a következő:

DEFRULE
   <szabályleírás>

A szabályleírásban a változókat állítunk be, változó = érték formátumban.

Megjegyzések

Az MI script bármelyik sorának végére tehetünk megjegyzést, ha pontosvesszővel kezdjük.

MI script változói

Alias

Beállításával álnevet adhatunk a szabálynak az ENABLERULE utasítás használatához.

Status

1-re, vagy 0-ra állíthatjuk. Ha értéke 1, akkor az MI betartja a megadott szabályt, ha 0, akkor nem.

Conditionx

A szabály feltételeit adjuk meg ezzel. Egymás alá írjuk őket: condition0, condition1, condition2, condition3 stb. Fontos, hogy az első száma nulla legyen és utána sorban kövesse a többi. Egy szabály maximum 20 feltételt tartalmazhat. Akkor hajtódnak végre az utasítások, ha mindegyik teljesül.

Effectx

A szabály utasításait adjuk meg ezzel. Egymás alá írjuk őket: effect0, effect1, effect2, effect3 stb. Fontos, hogy az első száma nulla legyen és utána sorban kövesse a többi. Egy szabály maximum 20 utasítást tartalmazhat. Akkor hajtódnak végre az utasítások, ha mindegyik feltétel teljesült.

Példa:

DEFRULE ; Ha nem lehet gyűjtőhajót csinálni, akkor folyamatos 1 db mikrospirálunk lesz mindig.

Status=1
Condition0=UNITCOUNT TOTAL 2 == 0
Condition1=UNITCOUNT TOTAL 23 == 0
Condition2=UNITCOUNT TOTAL 52 < 100
Condition3=STOCKPILE IRON >= 40
Condition4=STOCKPILE METEOR >= 40
Condition5=STOCKPILE LIGHTENERGY >= 40
Condition6=STOCKPILE DARKENERGY >= 40
Effect0=TRAIN 51

MI script feltételei

A feltételeket mindig nagybetűkkel kell írni.

Amikor egy egység típusát kell beírni, akkor mindig egy számot kell beírni, azt, amelyik a kolóniaszerkesztőben az egységeket beállító ablakban a baloldali oszlopban van.

UNITCOUNT

UNITCOUNT (TOTAL|COMPLETEUNITS|NONCOMPLETEUNITS) típus reláció érték: Megszámolja a megadott típusú hajókat, majd összehasonlítja egy adott értékkel, ha a reláció igaz, igaz értéket ad. Pl. UNITCOUNT TOTAL 2 < 10

PLACECOUNT

PLACECOUNT reláció érték: Megszámolja a lerakott alapokat és összehasonlítja egy értékkel.
Pl.:
PLACECOUNT < 2

COUNTGATHERER

COUNTGATHERER erőforrás_típus reláció érték : megszámolja, hogy hányan gyűjtenek egy megadott erőforrást, majd összehasonlít.
Pl.:
COUNTGATHERER 10 < 2

ACTIVE

ACTIVE alias: Igaz értéket ad, ha a megadott aliasú feltétel aktív, (status = 1).

WEAREUNDERATTACK

Igaz értéket ad, ha éppen támadnak.

STOCKPILE

STOCKPILE (IRON|METEOR|LIGHTENERGY|DARKENERGY) reláció érték: igaz étéket ad, ha a megadott erőforrásunkból annyi van, amennyi a relációnak megfelel. Pl.: STOCKPILE IRON < 50.

DIFFICULTY

DIFFICULTY (EASYEST|EASY|MEDIUM|HARD|EXPERT|CHAMPION): igaz értéket ad, ha az adott nehézségi fokon játszol.
Pl.: DIFFICULTY MEDIUM.

AVAILABLE

AVAILABLE egységfajta: igaz értéket ad, ha létre lehet hozni egy megadott egységet.

ATTACKMAX

ATTACKMAX egységfajta:  igaz értéket ad, ha a megadott egység fajtájából támadnak a legtöbben.

VISIBLE

VISIBLE profil egységfajta: igaz értéket ad, ha észreveszünk egy megadott fajtájú egységet a megadott profilból. Ha Profil=-1, akkor az összes szövetséges profilt figyeli, ha profil=-2, akkor az összes semleges profilt, ha Profil=-3, akkor az összes ellenséges profilt. Igazat ad, ha észrevettünk egyet is a megadott típusú egységből.

MI script utasításai

Az utasításp mindig nagybetűkkel kell írni.

Amikor egy egység típusát kell beírni, akkor mindig egy számot kell beírni, azt, amelyik a kolóniaszerkesztőben az egységeket beállító ablakban a baloldali oszlopban van.

TRAIN

TRAIN egységfajta: létrehoz egy megadott fajtájú egységet. (belső építésű egységet, pl. gyűjtőhajót)

SETPLACE

SETPLACE épület: lerak egy magadott típusú épületalapot. (csak külső építésű egység esetén érdemes alkalmazni, de belső építésű egységre is működik.)

BUILD

BUILD: építés parancsa. Építeni tudó egységeket küld a lerakott épületalapok megépítésére.

GATHER

GATHER mivel mit: Egy magadott típusú hajóval gyűjtünk egy megadott típusú erőforrást.

STOPGATHER

STOPGATHER erőforrás: Megállítja egy adott típusú erőforrás gyűjtését.

EMERGENCYGATHER

EMERGENCYGATHER mire: Vészgyűjtés egy megadott típusú egységre. Például, ha nincs kreációs állomásunk, akkor mielőbb építeni kell egyet, ekkor a gyűjtőhajók módszeresen összegyűjtik a megfelelő mennyiségű erőforrást. Ilyen esetekben érdemes az összes többi GATHER utasítást tartalmazó szabályt letiltani.

DEPOSITPLACESET

DEPOSITPLACESET lerakóhely: egy megadott típusú lerakóhely alapját rakja le, ha lehet. Oda rakja le, ahol éppen gyűjtőhajók gyűjtenek.

DISABLERULE

DISABLERULE szabálynév: letilt egy megadott aliasú szabályt.

ENABLERULE

ENABLERULE szabálynév: engedélyez egy megadott szabályt.

DISABLESELF

DISABLESELF: A szabály letiltja önmagát az első végrehajtás után.

REPAIRSTOP

REPAIRSTOP: Javítandó egységek megállítása. Azokat állítja meg, amelyeknek az élete 50% alatt van. Célszerű utolsó utasításként beadni.

PROTECTORPLACESET

PROTECTORPLACESET egység: lerak egy védőépület alapot. A gyűjtőket védi vele. Célszerű a rezonátort, vagy a rakétaágyút épületnek bejelölni.

GATHERSMALLEST

GATHERSMALLEST sötét fény vas meteor mivel: Meg vannak adva az erőforrások kódjai, és az, hogy mivel kell belőlük gyűjteni, arra küldi a gyűjtőket, amiből a legkevesebb van.

SETSTRATEGICNUMBER

SETSTRATEGICNUMBER (DEPOSITPLACEDISTANCE|
PROTECTORPLACEDISTANCE|BUILDPERCENT|POPCAP) érték
: stratégiai szám beállítása megadott értékre.
- DEPOSITPLACEDISTANCE: A lerakóhelyek maximum távolsága az erőforrástól.
- PROTECTORPLACEDISTANCE: A védőépületek maximum távolsága az erőforrástól.
- BUILDPERCENT: Az építésre alkalmas hajók hány százaléka menjen építeni.
- POPCAP: Maximum hány egységet csináljunk.

EXPLORE

EXPLORE: Felderítők felderíteni küldése. Azok az egységek fognak felderíteni menni, amelyek típusának számát az MI mennyiségszerkesztő felderítők mezőjében beírtad.

SENDCHAT

SENDCHAT (ALLIES|ENEMIES|NEUTRAL|LOCAL) Üzenet: Chat üzenet küldése. Az üzenet nem tartalmazhat szóközt, de az ASCII 255-ös karakterrel helyettesíthető a szóköz.

ESCAPE

ESCAPE: támadáskori menekülés. Azok az egységek fognak támadáskor elmenekülni, amelyek típusának számát az MI mennyiségszerkesztő menekülők mezőjében. beírtad.

ADVANCEDATTACK

ADVANCEDATTACK: automatikus támadás. Azok az egységek fognak támadni, amelyek típusának számát az MI mennyiségszerkesztő menekülők mezőjében.

TRAINMIN

TRAINMIN egységszám egységkód1 egységkód2 ... : Azt az egységet hozza létre, amelyből a legkevesebb van. Az első paraméter mutatja, hogy hány db egységtípusszám van felsorolva az utána lévő listában. Max 8 db-ot lehet felsorolni.

ENABLERANDOM

ENABLERANDOM egyik másik: két megadott vezérlőjel közül az egyiket aktiválja véletlenszerűen.

GATHERPERBUILDING

GATHERPERBUILDING építmény szám gyűjtő erőforrás: Megadott építményenként, megadott számú és típusú gyűjtőt küld egy megadott típusú erőforrásra.

ENNYI...