Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Skripts fuer KI Spieler
#61
Diese Richtungen sind 4bits. Das entsprechende bit ist gesetzt, wenn in diese Richtung ein Weg geht. Sieht alles ok aus hier. Die Zahlen bekommt man auch, wenn man mit der Lupe auf einen Weg klickt.
Zitieren
#62
(18-04-2020, Saturday-16:11:48 )Dwachs2 schrieb: Diese Richtungen sind 4bits. Das entsprechende bit ist gesetzt, wenn in diese Richtung ein Weg geht. Sieht alles ok aus hier. Die Zahlen bekommt man auch, wenn man mit der Lupe auf einen Weg klickt.

Das mag ja sein, aber wenn 2 identische Felder bei der Ausrichtung unterschiedliche Werte liefern, wie soll man das dann auswerten?

Vorhin hat er mir auch noch 10 ausgegeben. Da wahr unmittelbar vor dem Halt ein Bahnübergang.

Bei Nord-Süd Feldern sollte dann auch immer der gleiche Wert geliefert werden oder nicht?
Genau so bei Ost-West.

Mir fehlt da gerade das Verständnis. Vor allem für was die Zahlen häufig stehen erschließt sich mir nicht.
Auch welche Schlüssel die Objekte haben ist für mich aktuell nicht ersichtlich.

Über der Ermittlung der Ausrichtung brüte ich jetzt über 6 Stunden schon und komme nicht weiter.

Kann ich das nicht vorher festlegen, dann stürzt der Wegbauer ab. Logischerweise weil er in die falsche Richtung bauen will.

jetzt gab es als Rückgabewert eine 1

also zusammen 1, 2, 4, 8, 10

und das alles bei der Abfrage eines Feldes wo ein gerades Stück Gleis drauf ist und eine Station, welches nur 2 Ausrichtungen ( ns oder ew ) haben kann

Wer immer das versteht, ich verstehe das nicht mehr.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#63
Also wenn ich in der Karte die Info der Stationsgleise aufrufe zeigt es 5 ( ns ) und 10 ( ew ) an.

Also müsste die Rückgabe von get_way_dirs 5 oder 10 sein. Ist es aber nicht, wie die Ausgabe zeigt.

Spielstand dazu 1950_384x320-test-1.sve ~ 610 KByte
Simutrans r9028 + pak64

Zitat:------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 4
--- field test : 172,204,4
------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 2
--- field test : 132,225,1
______________________ build rail ______________________
Flugzeug 'Super Constellation' ist nun verfügbar.
______________________ build rail ______________________
Da fliegt die Pleuelstange weg. Lokführer Braun holt 119.9km/h heraus aus (7) DB Br 01.
Bernd Bleifuß erreicht 61.4km/h auf (16) H-Trans Lkw MK2. Neuer Weltrekord!
------ test northsouth : (null : 0x00000000)
------ test eastwest : (null : 0x00000000)
------ get_way_dirs : 1
--- field test : 186,201,4
------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 2
--- field test : 178,184,4
______________________ build rail ______________________
------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 2
--- field test : 178,179,3
------ test northsouth : (null : 0x00000000)
------ test eastwest : (null : 0x00000000)
------ get_way_dirs : 8
--- field test : 195,176,2
______________________ build rail ______________________
Bernd Bleifuß erreicht 60.6km/h auf (8) H-Trans Lkw MK2. Neuer Weltrekord!
------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 4
--- field test : 185,205,4
------ test northsouth : (null : 0x00000000)
------ test eastwest : (null : 0x00000000)
------ get_way_dirs : 1
--- field test : 97,249,0
______________________ build rail ______________________
------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 4
--- field test : 185,206,4
------ test northsouth : 5
------ test eastwest : 10
------ get_way_dirs : 2
--- field test : 140,253,0
______________________ build rail ______________________
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#64
Das Feld, was getestet wird ist doch der Endpunkt der Strecke? Dann kann nur 1,2,4,8 rauskommen. Dann wird dahinter ein Depot gebaut, also der Weg um eine Richtung erweitert, dann kommt 5 oder 10 zurueck. Nord/Ost/Sued/West sind die Zahlen 1,2,4,8. Wenn mehr als eine Rictung vorhanden ist, dann werden die einfach addiert.

Mit get_dirs().to_coord() kann man Richtung in Koordinaten umrechnen. Dann musst du nicht um das eine Feld rum nach passenden weiteren Felden suchen in check_station
Zitieren
#65
(18-04-2020, Saturday-20:58:16 )Dwachs2 schrieb: Das Feld, was getestet wird ist doch der Endpunkt der Strecke? Dann kann nur 1,2,4,8 rauskommen. Dann wird dahinter ein Depot gebaut, also der Weg um eine Richtung erweitert, dann kommt 5 oder 10 zurueck. Nord/Ost/Sued/West sind die Zahlen 1,2,4,8. Wenn mehr als eine Rictung vorhanden ist, dann werden die einfach addiert.
...

Danke

grade eben hat es bei mir auch Klick gemacht, das 1, 4 und 5 = Nord - Süd ist und 2, 8 und 10 = West - Ost ist

(18-04-2020, Saturday-20:58:16 )Dwachs2 schrieb: ....
Mit get_dirs().to_coord() kann man Richtung in Koordinaten umrechnen. Dann musst du nicht um das eine Feld rum nach passenden weiteren Felden suchen in check_station

Optimierungspotenzial besteht mit Sicherheit.

Im Moment geht es mir um funktionierenden Code. Das der umständlich ist ergibt sich daraus das ich, wie schon erwähnt, mit der Doku nicht gut zurecht komme.
Und mit meinem sehr begrenztem Wissen über die Funktionen und Datenstrukturen und Objektprogrammierung insgesamt bin ich froh überhaupt was funktionierendes hin zu bekommen.

Der Bauplatz der Depots gefällt mir auch noch nicht. Bei der Straße über Eck ist ungünstig. Und bei der Eisenbahn hinten am Bahnsteig ist auch ungünstig.

Die Stationslänge müsste auch schon bei der Bauplatzplanung berücksichtigt werden, statt hinter her das eine Feld zu verlängern. Weil beim anpassen hinter her wird es nötig diverse andere Anpassungen zu machen. Vor allem dann, wenn das eine Stationsfeld oben auf einem kleinem Hügel ist oder sehr beengte Platzverhältnisse herrschen.

Die Fahrzeug-Zusammenstellung ist auch noch nicht so richtig sinnvoll.

Auch das keine Docks an flachen Ufern gebaut werden ist noch zu lösen.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#66
Das anbauen von einem Gleisfeld mit

Code:
construct_rail(pl, t, b2_tile, planned_way)

führt immer zu einem Fehler Sad



Fehler gefunden

Es lag an der Wegsuche, die darüber stolpert das es benachbarte Felder sind.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#67
(19-04-2020, Sunday-00:07:12 )Andarix schrieb: ....
Fehler gefunden

Es lag an der Wegsuche, die darüber stolpert das es benachbarte Felder sind.

Das hab ich abgefangen aber der Wegbauer baut trotzdem nicht. Und spuckt auch keinen Error aus.

Wäre ja zu schön gewesen, wenn mal was auf Anhieb funktionieren würde.

Muss ich wohl einen eigenen Wegbauer schreiben. Das geht am Ende wohl schneller als das ich den vorhandenen verstehe.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#68
Anbauen von Rail-Stationen funktioniert jetzt.

Des Verbinden vorhandener Straßendepots funktioniert nicht. Also wenn zwischen Station und gefundenem Depot keine Straße existiert wird die nicht gebaut.

Der direkte Aufruf des Wegbauers wirft einen Fehler. Hab da wohl wieder einen Denkfehler.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#69
Ganz andere Frage, bei den Scenarios gibt man mit coor.href die Koordinaten als Link im Meldungsfenster aus.

Wie macht man das bei der KI.

Code:
gui.add_message_at(our_player, pl.name() + "Build rail from " + coord_to_string(c_start) + " to " + coord_to_string(c_end), world.get_time())

Und eine Übersetzung wäre schön.
Die Texte dafür gibt es ja schon.



und noch ne organisatorische Frage

Wenn ich Funktionen ( Depot-Suche, Stations-Check für *_tracks ) global machen will, wo schreib ich die am besten hin?
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#70
gui_message_at(player, text, coord) <- Koordinate als dritten Parameter (get_time macht da nix). Zeit wird automatisch genommen.

globale Funktionen: einfach als Funktion im globalen Scope (nicht in einer Klasse). Das kann auch in einer beliebigen Datei sein, die per include eingebunden wird.

Uebersetzung: muesste man noch extra einbinden diese Strings.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste