Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Script-KI - Brückensuche
#11
War die Strasse von einer anderen KI?
Zitieren
#12
nur eine Script-KI ( Platz 3 ) aktiv

und die Straße ist öffentlich ( hab jetzt aber nicht nachgeschaut )

384x320_1940.sve ~ 650 kbyte ( bis Mitte Sep. 2020 )
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#13
Ich glaube die Ursache liegt in der Wahl der Baufunktion des Weges.

(26-04-2020, Sunday-18:40:40 )Andarix schrieb: Was ist der Unterschied zwischen command_x.build_way() und command_x.build_road()?

Benutzt man command_x.build_road() für wt_rail, dann erkennt er Straßen als zugehörig zu den Schienen.

Hatte nämlich gerade den Fall, das sich 2 Fremde Schienenstrecken kreuzten. Normalerweise wird eine Brücke gebaut. Aber der wollte eine Kreuzung bauen.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#14
D.h. die Schienen von zwei verschiedenen Spielern haben sich gekreuzt?? Verstehe gar nicht, wie das gehen kann... die beiden build_* -Kommandos machen eigentlich das Gleiche, wie entsprechende Mausklicks.

Wie kann ich das reproduzieren?

Edit: habe jetzt bei meiner KI im road-connector alles auf Schiene gestellt, der baut jetzt tonnenweise Schienen, aber keine Kreuzungen zwischen Strecken verschiedener Spieler.
Zitieren
#15
(02-05-2020, Saturday-11:52:30 )Dwachs2 schrieb: D.h. die Schienen von zwei verschiedenen Spielern haben sich gekreuzt?? ...

Der wollte die Schienen kreuzen, was aber nicht ging und daher eine Fehlermeldung produzierte.

Ich hab das jetzt getrennt beim Wegbau und jetzt wird da eine Brücke drüber gebaut.

Reproduzieren geht mit map_1930_1 und mehreren Script-KI.

Bei der build_road wird ja mit vorhandenen Straßen verbunden. Da funktioniert aber bei Spieler-Schienen nicht direkt. Sondern nur über die öffentliche Hand.

Und da ist das bei den Brücken. Es wird versucht mit dem öffentlichen Weg ( hier die Straße ) zu verbinden, das aber mit Schienen nun mal nicht geht. Hier ist nur verwirrend, das die Richtung ( quer zur Brücke ) nicht erkannt wird.



Eben den umgekehrten Fall. Straße auf Feld mit Schiene. Kann aber sein das die eine KI beim bauen schneller war als die andere ( gleichzeitige Planung ) und somit keine Brücke eingeplant wurde. Lasse gerade bis zu 4 Script-KIs auf die Karte map_1930_1 los um schneller zu testen.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#16
Fehler: rprt_road ist null. Weiter unten wird auch nicht abgefangen, dass marine==null ist.


Angehängte Dateien Thumbnail(s)
   
Zitieren
#17
Vielleicht habe ich dich falsch verstanden: Die KIs wollten Kreuzungen bauen und konnten nicht? Ober haben tatsaechlich welche gebaut?

Das letztere waere merkwuerdig (Bug), bei ersteren koennte es sein, dass beide KI gleichzeitig gebaut haben, und dann die eine KI nicht mehr weiterkam. Das sieht dann so aus, als wollte sie eine Kreuzung bauen, es war aber noch keine Schiene da, als die Route geplant wurde.
Zitieren
#18
Ich habe jetzt deine KIs ein paar Mal laufen lassen, habe aber keine Probleme mit Bruecken gesehen.

Noch ein Screenshot von einem Fehler.


Angehängte Dateien Thumbnail(s)
   
Zitieren
#19
(02-05-2020, Saturday-15:13:42 )Dwachs2 schrieb: Vielleicht habe ich dich falsch verstanden: Die KIs wollten Kreuzungen bauen und konnten nicht? Ober haben tatsaechlich welche gebaut?
....

genau

Ich hab es nicht ganz genau mitbekommen, dachte aber das die eine Strecke schon länger da war.

In solchen Fällen wäre dann das Undo halt schön, um die unnützen Strecken wieder zu entfernen. Nach dem entfernen wird dann neu geplant und gebaut.

Aufgefallen ist mir aber auch, seit ich für wt_road build_road verwende und für wt_rail build_way, das bei einer Verbindung wo er vorher immer Straße gebaut hat jetzt auch Eisenbahn baut. Da ist dann eine Brücke der Eisenbahn über eine diagonale Straße.

astar.nut
function search_route
Code:
        local err
        // build
        if (route[i-1].flag == 0) {
          if ( way.get_waytype() == wt_road ) {
            err = command_x.build_road(our_player, route[i-1], route[i], way, true, true)
            if (err) gui.add_message_at(our_player, "Failed to build " + way.get_name() + " from  " + coord_to_string(route[i-1]) + " to " + coord_to_string(route[i]) +"\n" + err, route[i]) 
           
          } else {
            err = command_x.build_way(our_player, route[i-1], route[i], way, true)
            if (err) gui.add_message_at(our_player, "Failed to build " + way.get_name() + " from  " + coord_to_string(route[i-1]) + " to " + coord_to_string(route[i]) +"\n" + err, route[i])             
          }
        }
        else if (route[i-1].flag == 1) {
          err = command_x.build_bridge(our_player, route[i], route[i-1], bridger.bridge)
          if (err) gui.add_message_at(our_player, "Failed to build bridge from  " + coord_to_string(route[i-1]) + " to " + coord_to_string(route[i]) +"\n" + err, route[i])
        }

(02-05-2020, Saturday-15:39:57 )Dwachs2 schrieb: Ich habe jetzt deine KIs ein paar Mal laufen lassen, habe aber keine Probleme mit Bruecken gesehen.
...

seit der Trennung der Funktionen ( siehe vorherigen Post ) hab ich das Problem auch nicht mehr.

Zitat:...
Noch ein Screenshot von einem Fehler.

mmh, da wurde bestimmt die zugehörige Station nicht gebaut ( müsste was in der Message-Box im Spiel stehen ) bzw wurde die so gebaut das die Industrie nicht mehr im Einzugsgebiet liegt. Da bin ich gerade dran. Ist bei mir aber noch nicht wieder passiert.

EDIT: ups da ist ein Leerzeichen zwischen get_factory_list und den ()
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#20
Ja, da kamen tausend Fehlermeldungen im Chat, das Leerzeichen sollte nichts machen, das st ist null.
Zitieren


Gehe zu:


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