Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Skripts fuer KI Spieler
#71
(19-04-2020, Sunday-15:01:38 )Dwachs2 schrieb: gui_message_at(player, text, coord) <- Koordinate als dritten Parameter (get_time macht da nix). Zeit wird automatisch genommen.
....

Da ich da bei den Debug-Ausgaben Scriptfehler bekommen hab, hab ich da dann standardmäßig get_time() angegeben. Lässte man den Parameter ganz weg, weil man den nicht braucht, kommt ebenfalls ein Scriptfehler.

[Bild: attachment.php?aid=17411]

Ich durchschaue es halt noch nicht, was wie bei welchen Aufrufen angegeben werden muss. Bzw was da als Parameter erwartet wird.

Hab aber 2 Koordinaten.

Vieles ist bei mir halt hinschreiben und testen. Das frisst halt sehr viel Zeit.

Aktuell hab ich wieder so ein Problem. Nämlich die Verbindung zu bestehenden Depots wenn es keine gibt.

(19-04-2020, Sunday-15:01:38 )Dwachs2 schrieb: ...
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.
....

Ich hab ja ein bisschen die Hoffnung, das meine Erweiterungen in Simutrans übernommen werden. Von daher ist eine Vorgabe für so was schon hilfreich.
Dadurch wird ein nachträgliches umschreiben vermieden.

Nahezu identischer Code in verschiedenen Dateien macht halt wenig Sinn. Ergibt aber einen Haufen Arbeit und ist fehleranfällig weil Änderungen nicht in allen Dateien gemacht werden.

Würde sich astar.nut oder basic.nut anbieten.

Kommentare am Anfang der Dateien was diese Enthalten wären auch hilfreich.


Angehängte Dateien Thumbnail(s)
   
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#72
gui_message_at: der dritte Parameter muss irgendwas sein, das xy-Koordinaten hat. Ohne den dritten Parameter gehts nicht. Wenn der dritte Parameter keine Koordinaten hat, dann passiert nix, da kann auch 0, [], null oder sonstwas stehen - behaupte ich mal. Muss ich mir anschauen.

Dateien: wie du den Code organisierst ist deine Sache Smile Kommentare kann ich noch nachliefern.
Zitieren
#73
(20-04-2020, Monday-14:51:13 )Dwachs2 schrieb: gui_message_at: der dritte Parameter muss irgendwas sein, das xy-Koordinaten hat. Ohne den dritten Parameter gehts nicht. Wenn der dritte Parameter keine Koordinaten hat, dann passiert nix, da kann auch 0, [], null oder sonstwas stehen - behaupte ich mal. Muss ich mir anschauen.
...

mein häufigster Fehler bei der Ausgabe

[Bild: attachment.php?aid=17414]


Angehängte Dateien Thumbnail(s)
   
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#74
Ok, der akzeptiert nicht alle Datentypen, sondern nur table, class oder instance. Eine leere Tabelle {} geht. Oder

Code:
gui.add_message_at(our_player, "Build depot", c_depot)
Zitieren
#75
Ich musste in den *_connector.nut eine Unterscheidung einbauen, weil mal das eine mal das andere einen Fehler brachte.

Code:
         if (err && c_start.len()>0  &&  c_end.len()>0) {
           print("Failed to build way from " + coord_to_string(c_start[0])+ " to " + coord_to_string(c_end[0]))
           return error_handler()
         } else if (err) {
           print("Failed to build way from " + coord_to_string(c_start)+ " to " + coord_to_string(c_end))
           return error_handler()
         }

Es ist so, das wenn die *_connector direkt aufgerufen werden dann funktioniert das eine.

Werden die aber über die combined_connections aufgerufen, dann funktioniert das andere. In diesem Fall sind die Variablen nicht gesetzt oder mit anderen Werten gesetzt.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#76
Kann mir nicht vorstellen, woher das Problem mit c_start/c_end kommt. Vor construct_road ist das ein Array, wenn das construct funktioniert hat, dann nicht mehr. Aber dann ist err == null.
Zitieren
#77
Ich hab mir combined_connections noch nicht so genau angeschaut. Kann es sein das dort statt c_start[x, y, z] auf Grund der 2 verschiedenen Strecken c_start[[x, y, z], [x, y, z]] speichert? Also aus dem einfachen Array ein mehrdimensionales Array wird.

Oder es wird c_start[[x, y, z]] gespeichert.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#78
(24-04-2020, Friday-14:13:41 )Dwachs2 schrieb: ...
Strecken bleiben so stehen, wie sie sind. Es wird nicht mal repariert, wenn jemand eine Strecke kaputtmacht.

Lässt sich eigentlich auf Ereignisse wie so was reagieren?

Also Statusmeldungen das keine Route gefunden wird usw.

Bei den leeren Karten vom mir passiert das mit der Brücke bei map_1930_1 beim Wald auf der Insel. Wenn statt Schiff die Brücke gebaut wird.
Der rote Strich im Bild.
[Bild: attachment.php?aid=17415]

Da baut der dann auch bei der Druckerei (27,139) eine Brücke über die LKW-Station um die LKW-Station daneben anzubinden. Da ist es dann besser an vorhandene Stationen anzubauen. Bedingung dafür ist, das die Depots etwas weiter weg gebaut werden und nicht über Eck. auch die Depots an den Stirnseiten von Bahnsteigen ist nachteilig. Weil dann, wenn andere Strecken es mitbenutzen blockiert der Zug in der Station die Ausfahrt.



Wie ist das dann bei Fahrzeugen?

Wird da nur einmal vorhandenes kopiert oder neu zusammengestellt, wenn mehr Fahrzeuge nötig sind?
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#79
upgrade_link_line im industry_manager sollte auch neue Fahrzeuge planen und obsolete ersetzen.
Zitieren
#80
Bei meinem aktuellen Code entstand diese Verbindung.

[Bild: attachment.php?aid=17416]

Das keine direkte Verbindung der Eisenbahn möglich war, dürfte am Flußverlauf liegen. Bei solchen Flüssen tut er sich der Wegbauer schwer mit Brücken. Und eine Kreuzung ist nicht möglich beim Geländeverlauf. Kreuzungen mit Flüssen kommen dem Wegbauer entgegen. Sind die nicht enthalten gibt es viel weitläufigere Strecken.

Aber das er nicht Straße genommen hat wundert mich.

Er baut Eisenbahn hoch zum Wasser. Dann dort mit Schiff drüber. Und dann wieder mit Eisenbahn bis zum Buchladen. Die Schiffsverbindung ist gescheitert, da er das Dock da bauen wollte wo die Eisenbahnstation hin erweitert wurde. Auf der anderen Seite mehr oder weniger das gleiche. Feld für Dock überbaut und Bahnsteig nur 2 Felder weil durch Wasser und Straße begrenzt.

Das liegt daran, das die Bahnsteiglänge nicht schon bei der Planung berücksichtigt werden zur Zeit. Erst Hafen/Dock bauen und dann Bahnsteig geht gut bei entsprechendem Platz. Umgekehrt wird es vermutlich immer scheitern, weil der Bahnsteig auf das Hafen-/Dockfeld verlängert wurde. Da beim bau der Eisenbahn nicht bekannt ist das da noch ein Hafen/Dock hin soll. Eventuell geht es bei der Planung auf die Felder Marker zu setzen die man dann wieder abfragen kann. Nur die sollten auch wieder entfernt werden, wenn die Strecke nicht gebaut wird. Beengte Platzverhältnisse bleiben aber auch dann ein Problem. Da braucht es dann größere Umbauten. Wenn die Strecke direkt am Bahnsteig abknickt müsste das abgerissen gerade gebaut und wieder mit der bestehenden Strecke verbunden werden. Solche 180° Kurven sind zwar nicht schön aber relativ leicht machbar. Geländeänderungen sind schwieriger, zumal ich da noch nicht durchblicke und eine Unterscheidung zwischen 1 und 2 Höhenstufen erfolgen muss. Den entsprechenden Parameter auslesen macht es vermutlich leichter eine Unterscheidung zu machen. Hab da aber noch nicht weiter nach geschaut.

Alternativ müsste man den Bauplatz für Hafen/Dock verändern.

Hier die Bewertung der Planung. Ich vermute das es an der Schiffsverbindung liegt. Da die keine Wegkosten hat und auf Grund der hohen Schiffskapazitäten wird die immer hohe Gewinne per Monat liefern und deshalb bevorzugt werden.

Bei solchen kombinierten Strecken wird aktuell nach gain_per_m  entschieden ob Straße oder Eisenbahn zum Zuge kommt. Meist Gewinnt die Eisenbahn. Bei direkten Strecken Gewinnt aber auch die Straße, obwohl gain_per_m  kleiner ist als bei der Eisenbahn. Deshalb gehe ich davon aus, das das nicht der einzige Entscheidungsfaktor ist.

Zitat:___________________________ End  plan_simple_connection __________________________
Report: station = 324500 depot = 250000
Report: dist = 77 way_cost = 0
Report: gain_per_m  = 5879610, nr_convoys = 2, 1/12 cost_build = 74916, cost_monthly = 11040
Plan: way = open water, station = midleShipStop, depot = ShipDepot
-----
___________________________ Start plan_simple_connection __________________________
___________________________ End  plan_simple_connection __________________________
Report: station = 135600 depot = 486900
Report: dist = 77 way_cost = 4000
Report: gain_per_m  = 231614, nr_convoys = 9, 1/12 cost_build = 88841, cost_monthly = 84520
Plan: way = gavel_road, station = LKW_Station_1, depot = CarDepot
-----
___________________________ Start plan_simple_connection __________________________
___________________________ End  plan_simple_connection __________________________
Report: station = 1126900 depot = 100000
Report: dist = 77 way_cost = 17800
Report: gain_per_m  = 2494834, nr_convoys = 1, 1/12 cost_build = 686000, cost_monthly = 155904
Plan: way = Gleis_100, station = PSFreightTrainStop, depot = TrainDepot
-----
Plan link for Buecher from Druckerei at 27,139 to Buchladen at 97,146
___________________________ Start plan_simple_connection __________________________


Angehängte Dateien Thumbnail(s)
   
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren


Gehe zu:


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