Feldbauer-Schleife

Fragen zum Szenarienbau und Mapdesign

Moderatoren: Henning, Björn_Jernside

Hallöchen,
ich hätte mal ne Frage zu den Bauern:
Ich benutze die "Immobile Units" KI und möchte die Bauer auf den Feldern arbeiten lassen, was ja per Schalter recht einfach ist. Nun möchte ich aber erreichen, dass nach dem Abernten des Feldes an gleicher Stelle ein neues Feld erschaffen wird und der Bauer dieses Feld wieder bearbeitet (sodass die Bauern also nicht nach zehn Minuten tatenlos rumstehen).

Gibt es da irgendeinen Schaltertrick? Ich habe nämlich keine Möglichkeit gefunden, ein abgeerntetes Feld als Auslöser für einen Schalter zu nehmen.
Oder braucht man dazu spezielle KI? :confused:
Hm, es gibt eigentlich einen mega-simplen Trick um zu erreichen daß das Feld GAR NICHT abgeerntet wird:

setze auf jedes Feld einen "patrouillieren"-Effekt (Bedingung ein Zeitgeber von etwa 100 sec) und in Endlos-Schleife, und das Feld erneuert sich regelmäßig.
Das mit dem Patrouillieren hat irgendwie nicht funktioniert (oder ich habs nicht richtig kapiert).
Dafür habe ich einen anderen Trick gefunden
Schalter 1: keine Bedingung; Effekte: Dorfbewohner auf Feld(der) zuweisen; Schalter 2 aktivieren

Schalter 2 (aus): Bedingung: Zeitgeber 400 Sek. (bis kurz bevor das Feld abgeerntet ist); Effekte: ERST die Felder zu einem Vebündetem Spieler wechseln lassen, DANN wieder zurück zum ersten Cumputerspieler; Schalter 1 aktivieren.

Beim Besitzwechsel bekommen die Felder ihren vollen Nahrungsanteil zurück (manchmal sogar noch mehr) und die Dorfbewohner sammeln weiter, als ob nichts gewesen wäre.

Kann sein, dass es den Trick schon gibt (hab ihn vorhin aber selbst rausgefunden! :D :D ).
Ist jedenfalls ganz wirksam.

EDIT: Das ganze funktioniert auch mit Reusen!
Das mit dem Patrouillieren hat irgendwie nicht funktioniert (oder ich habs nicht richtig kapiert).
Dafür habe ich einen anderen Trick gefunden
Schalter 1: keine Bedingung; Effekte: Dorfbewohner auf Feld(der) zuweisen; Schalter 2 aktivieren

Schalter 2 (aus): Bedingung: Zeitgeber 400 Sek. (bis kurz bevor das Feld abgeerntet ist); Effekte: ERST die Felder zu einem Vebündetem Spieler wechseln lassen, DANN wieder zurück zum ersten Cumputerspieler; Schalter 1 aktivieren.

Beim Besitzwechsel bekommen die Felder ihren vollen Nahrungsanteil zurück (manchmal sogar noch mehr) und die Dorfbewohner sammeln weiter, als ob nichts gewesen wäre.

Kann sein, dass es den Trick schon gibt (hab ihn vorhin aber selbst rausgefunden! :D :D ).
Ist jedenfalls ganz wirksam.
EDIT: Das ganze funktioniert auch mit Reusen!

Jepp, für Felder kannte ich den auch, nur an Reusen hab ich den bisher noch nicht ausprobiert.

Ist bei Feldern aber unnötig kompliziert.

Du mußt einfach nur bei "Objekt patrouillieren" auf das Feld klicken (KEINEN Zielort definieren!!!).
Der Effekt wird grün, sobald man das Feld anklickt.

Ist wesentlich einfacher, da man nur einen Dauer-Schalter und für jedes Feld nur einen Effekt braucht.
Machen nicht zu viele von diesen Dauerschaltern das Spiel n bisschen laggy auf schwachen Rechnern?
Richtig. Deswegen sollte man den Zeitgeber von Schalter 2 auch auf einen möglichst hohen Wert setzen. Oder aber man benutzt den "Patrouillieren-Trick" von Barbossa, wobei der bei mir irgendwie nicht funktionieren will...
Oder per KI...
Hab davon zwar keine ahnung, aber babarossa hat mir eine gemacht:) ... Damit funktioniert das recht gut.
Genau Belisar,
die Schalter-Tricks klappen schon gut - aber nur solange das Feld nicht zerstört wird ^^ :eek: !

Mit einer KI ist es sicherer.
Der Befehl zum Felder bauen ist ganz einfach:
<pre><div style="color:blue";>
(defrule
(sheep-and-forage-too-far)
(idle-farm-count less-than 1)
(can-build farm)
=>
(build farm))
</div></pre>

Bedeutet:
(Regel
(Schafe-und-Beeren-zu-weit-weg)
(übrige-Felder-Weniger-1)
(kann-Feld-gebaut-werden)
=>
(baue-feld))

Die Bedingung (can-build farm) veranlasst den CS nicht dazu, die notwendigen Vorkehrungen zu treffen um ein Feld bauen zu können (Mühle, genug Holz, etc.).
Das muss natürlich ebenfalls alles in der KI geregelt werden.

Beispiel:
<pre><div style="color:blue";>
(defrule
(building-type-count mill less-than 2)
(can-build mill)
=>
(build mill))
</div></pre>

Hab ich jemand neugierig gemacht? :D
Ja hast du...

Warum muss man das denn so


Beispiel:


(defrule
(building-type-count mill less-than 2)
(can-build mill)
=>
(build mill))

machen? also die 2 mein ich. warum soll der CS denn noch ne mühle bauen opbwohl der schon eine hat? oder seh ich das falsch?
Machen nicht zu viele von diesen Dauerschaltern das Spiel n bisschen laggy auf schwachen Rechnern?
Na ja, auch nicht mehr als andere.
Daher setze ich ja auch immer einen etwas höheren Zeitgeber ein (damit die Felder sich nicht sekundenweise erneuern) und staffele die Zeitgeber in den Schaltern, d.h. für jeden Spieler mind. 1 Feldschalter mit eigenem Zeitgeber).

@Belisar:

das mit der Anzahl ist variabel.
"(Building-type-count mill < 2)" bedeutet ja konkret nur: Bei Mühlenanzahl von 1 oder 0.

Und es werden ja meistens deutlich mehr Mühlen gebaut als eine.
Wenn deine KI nur max. eine bauen soll, stellst du halt
"(Building-type-count mill < 1)" ein.

Wenn du übrigens willst, daß der Befehl nur EIN EINZIGES MAL ausgeführt wird, fügst du am Ende den Befehl
(disable-self)
ein.

Bsp:
(defrule
(building-type-count castle < 1)
(can-build castle)
=>
(build castle)
(disable-self)
)

Die KI baut dann nur eine einzige Burg im gesamten Spiel, auch wenn diese zerstört wird.
Dieses "limitierte Bauen" kann manchmal sehr nützlich sein.
Geht natürlich auch bei allen anderen Befehlen... :)
Klar :rolleyes:

Wie mach ich das denn das ich die KI benzutzen kann? hab das schonmal probiert aber mit der Ai datei glaub das hat nicht gefunzt.. und ich hab nciht die muße die ganze KI bibel danach zu durchforsten
Ganz einfach:
Die Datei mit der Endung *.ai ist nur zur Editorerkennung.
Das tatsächliche Skript steht in der Datei mit der Endung *.per ...
Diese beiden speicherst du in deinen Ordner AI im AGE2-Verzeichnis.
Du kannst dann im Editor im Spieler-Menü unter Charakter jedem CS eine eigene KI zuweisen.
Was muss denn in die AI datei rein?
Irgendnen verweis oder so?
Nö, unnötig.

Die kann ruhig komplett leer sein.
Sie muß nur natürlich exakt genauso heißen wie die per-Datei.
Die Erkennung funktioniert dann automatisch.

Ich schreibe allerdings immer soviel rein, daß die Datei mindestens 1 kb groß wird, da manche Festplatten-Reinigungstools alle 0 Byte-Dateien automatisch als Daten-Abfall betrachten. :D

Ist aber nicht wirklich notwendig da was reinzuschreiben.

Du kannst sogar KI's erstellen, die aus mehreren *.per-Dateien bestehen. Dazu muß man nur in der Haupt-Datei den Befehl
(load "Datei-Name" )
eingeben.
Hab ich schonmal gesehn glaub bei der The Duke.Ai oder so^^
Jepp.
Die ist von Tim Koschützki glaube ich.
Ist mit eine der besten Allround-KI's.

Allerdings ziehe ich es vor, so weit es geht alles in eine per-Datei zu packen.
Ist einfach übersichtlicher.