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...