KI-Frage!

Fragen zum Szenarienbau und Mapdesign

Moderatoren: Henning, Björn_Jernside

Hallo!

Ich mache zur Zeit eine eigene KI und möchte dabei, dass der Compi einen Steinwall um das Dorf baut.

Könnt ihr mir den Code dafür geben?

Mfg BlauerHund
Ganz einfach:

Code: Alles auswählen

[i][color=darkgreen]; Kann optional auch 2 sein, d.h. größerer Umfang[/color][/i]
[color=darkred]([/color][color=darkblue]defconst[/color] wall-groesse [color=goldenrod]1[/color][color=darkred])[/color]

[i][color=darkgreen]; Aktiviert und berechnet die Wall-Position[/color][/i]
[color=darkred]([/color][color=darkblue]defrule[/color]
[color=darkred]([/color]true[color=darkred])[/color]
[color=darkblue]=>[/color]
[color=darkred]([/color]enable-wall-placement wall-groesse[color=darkred])[/color]
[color=darkred]([/color]disable-self[color=darkred])[/color]
[color=darkred])[/color]

[i][color=darkgreen]; Baut den Wall (Steinwall oder Befestigter Wall, je nach Entwicklungsstand)[/color][/i]
[color=darkred]([/color][color=darkblue]defrule[/color]
[color=darkred]([/color]can-build-wall wall-groesse stone-wall-line[color=darkred])[/color]
[color=darkblue]=>[/color]
[color=darkred]([/color]build-wall wall-groesse stone-wall-line[color=darkred])[/color]
[color=darkred])[/color]
Ich hoffe, ich konnte dir helfen! ;)
Danke, und wie kann ich machen, dass er nicht über die ganze Karte läuft um Wild und Fische zu töten, sondern lieber Wildschweine in der Umgebung jagt, und/oder danach die Dorfis zum Holz schickt?

Ausserdem hab ich so einen Befehl gemacht:

(defrule
(current-age greater-or-equal castle-age)
(unit-type-count-total knight > 4)
=>
(attack-now)
)

Nun greift er also an, jedoch nur Gebäude und Militäreinheiten. Warum keine Dorfis?
Du kannst per Ai einstellen, welche Einheiten favourisiert angegriffen werden sollen, das geht über die ID-Nummern... Den genauen Befehl habe ich grade nicht auf Lager ... :rolleyes:
Kennt den jemanden?
Ach du bist erb6@hotmail.com!
Ich hab dir das ganze doch schonmal in einer E-Mail erläutert! :confused:

Aber nochmal:

Code: Alles auswählen

[i][color=darkgreen]; Definiert die Einheiten-ID (bei männl. Dorfis 83, bei weibl. Dorfis 293 (laut GeniEd2)[/color][/i]
[color=darkred]([/color][color=darkblue]defconst[/color] unitID [color=goldenrod]83[/color][color=darkred])[/color]

[i][color=darkgreen]; Setzt die strategische Nummer "sn-special-attack-type1" auf die oben definierte Einheiten-ID[/color][/i]
[color=darkred]([/color][color=darkblue]defrule[/color]
[color=darkred]([/color]true[color=darkred])[/color]
[color=darkblue]=>[/color]
[color=darkred]([/color]set-strategic-number sn-special-attack-type1 unitID[color=darkred])[/color]
[color=darkred])[/color]
Wie heißen diese Befehle denn auf deutsch?(In deinem KI-Editor)
In deiner (älteren) Alpha-Version so:

Code: Alles auswählen

[i][color=darkgreen]; Definiert die Einheiten-ID (bei männl. Dorfis 83, bei weibl. Dorfis 293 (laut GeniEd2)[/color][/i]
[color=darkblue]#KONSTANTE[/color] userID [color=goldenrod]83[/color]

[i][color=darkgreen]
; Setzt die strategische Nummer "Vorrangig-angegriffener-Objekttyp1" auf die oben definierte Einheiten-ID[/color][/i]
[color=darkblue]#REGEL[/color]
Wahr
[color=darkblue]=>[/color]
Setze-Strategische-Nummer Vorrangig-angegriffener-Objekttyp1 userID
[color=darkblue]#ENDE REGEL[/color]
Aber ich bin gerade dabei, die strategischen Nummern noch einmal zu überarbeiten, und diese hier werde ich wahrscheinlich auch noch ändern... :)
Eine weitere Frage:

Die KI baut seit kurzem keine Gebäude mehr, an was kann das liegen? Was muss ich da tun?
Kann ja an etwas ganz simplem liegen. Hat sie überhaupt Rohstoffe bzw. baut welche ab?
Und eine ES-KI hat mal ihre ganze Stadt mit Lagern zugepflastert! Das sah lustig aus!
Noch kurze erwiterung zu blauerhunds frage:
Wie bringt man ein KI dazu wildschwine anzulocken?
geht das überhaupt? :confused: :KopfgegenWand:
Klar hat sie Rohstoffe. Sogar 200 Holz, und baut trotzdem kein Haus. Das weiss ich so genau, weil ich dazu neige, die KI als mein Stellvertreter einzusetzen und sie gegen die Schwierigkeit Standard antreten zu lassen...

Edit: Meine KI greift noch immer keine Dorfis an! Was mache ich nur falsch???

Mein Code sieht so aus:

(defconst unitID 83)
(defrule
(true)
=>
(set-strategic-number sn-special-attack-type1 unitID)
)
(defconst unitID2 293)
(defrule
(true)
=>
(set-strategic-number sn-special-attack-type2 unitID2)
)

Oder muss auch im "attack-now" Befehl:

(defrule
(current-age == imperial-age)
(unit-type-count-total skirmisher-line >= 10)
(unit-type-count-total spearman-line >= 10)
(unit-type-count-total militiaman-line >= 20)
(unit-type-count-total archer-line >= 10)
(unit-type-count-total longbowman-line >= 10)
=>
(attack-now)
)

etwas davon stehen?
(defconst unitID2 293)
(defrule
(true)
=>
(set-strategic-number sn-special-attack-type2 unitID2)
)
muss erstmal so heißen:

(defrule
(true)
=>
(set-strategic-number sn-special-attack-type1 unitID2)
)

Kann sein, dass du einen "(disable-self)"-Befehl verwenden musst, da sich die Regeln sonst immer gegenseitig innerhalb von Millisekunden überschreiben.

Das Problem ist dabei leider, dass es zwei Dorfi-Typen gibt...und aufgrund (wie ich schon oft sagte) mangelndem Quellcode des Spiels kann ich auch nicht sagen, ob das Spiel zwischen weibl. und männl. Dorfis unterscheidet.
Noch kurze erwiterung zu blauerhunds frage:
Wie bringt man ein KI dazu wildschwine anzulocken?
geht das überhaupt? :confused: :KopfgegenWand:
frei schnauze wuerde ich sagen:
ja.

das selbe prinzip macht die KI ja auch mit ihren Bogis...immer vor dem gegner wegrennen und schiessen, wegrennen, schiessen ect.
muesste also auch rein theoretisch auch fuer wildschweine gehen...

wobei bogis das glaube ich auch beim wilden eber machen, falls der die angreift.
du muesstest das dann nur noch fuer die Dorfbewohner umschreiben...