Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Skripts fuer KI Spieler
Lässt sich die Bäumezahl auf einem Feld ermitteln?
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
Nein, da muss man durch die Objektliste. Na gut, man koennte eine einfache Routine implementieren ...

Kosten fuers Baumfaellen lassen sich mit tree_desc_x.get_price() abfragen (r9527)
Zitieren
(06-01-2021, Wednesday-14:52:21 )Dwachs2 schrieb: Nein, da muss man durch die Objektliste. Na gut, man koennte eine einfache Routine implementieren ...

Die Anzahl ist ja in der simuconf.tab definiert.

Ich hab jetzt einfach 4 drin. Letztlich wird man die Kosten eh nie genau ermitteln können. Wenn hier etwas mehr ist gleicht das anderes was nicht berücksichtigt wird aus.

Hab halt festgestellt, das ich ohne Berücksichtigung der Bäume auf langen Strecken beträchtlich höhere Baukosten effektiv hatte als bei der Planung. 48k geplant und 92k Baukosten
Wenn die tatsächlichen Baukosten niedriger sind als geplant, bleibt mehr Puffer für Optimierungen der Strecke.

Was mir aktuell mehr zu schaffen macht, sind die unterschiedlichen Rückgabewerte für Beträge. Da gehen dann die Vergleiche vor den Baum, wenn ich 1/1 mit 1/100 vergleiche oder zusammen rechne.

Zitat:Kosten fuers Baumfaellen lassen sich mit tree_desc_x.get_price() abfragen (r9527)

danke
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
Zitat:Was mir aktuell mehr zu schaffen macht, sind die unterschiedlichen Rückgabewerte für Beträge. Da gehen dann die Vergleiche vor den Baum, wenn ich 1/1 mit 1/100 vergleiche oder zusammen rechne.
Die Rueckgabewerte von player_x - Funktionen sollten in 1/1 credit, alle anderen sollten in 1/100 credit sein. (Im Spiel wird alles in credits angezeigt mit 2 Nachkommastellen) Fall was nicht passt, bitte melden.

Wozu brauchst du cost_set_slope? Ich frage, weil u.U. dieser Wert alleine nicht aussagekraeftig ist und vielleicht die Kosten einer bestimmten Aktion gefragt sind.
Zitieren
(06-01-2021, Wednesday-16:33:51 )Dwachs2 schrieb: ...
Wozu brauchst du cost_set_slope? Ich frage, weil u.U. dieser Wert alleine nicht aussagekraeftig ist und vielleicht die Kosten einer bestimmten Aktion gefragt sind.

Beim Bau von Stationen und Ausweichstellen wird der Boden angepasst. Auch gibt es inzwischen eine Prüfung um Sinnlose Brücken zu vermeiden, die nur wegen unpassenden Grund gebaut werden.

Die Slope-Kosten sind aber in den Sets unterschiedlich, so das eine Pauschale schwierig zu definieren ist. Hinzu kommt das bei mehreren Höhen die doppelten Kosten fällig werden können, wenn eine doppelte Höhe angepasst werden muss.

Beim pak64.german sind das 7.500 je Aktion.

Eine pauschale Anzahl von zu ändernden Feldern lässt sich durchaus definieren. Nur ergibt das in den verschiedenen Sets stark unterschiedliche Kosten. Hier kommt auch ins Spiel wie die Karten beschaffen sind. Also die Bergigkeit und die Kartengröße.

Nachteilig ist, das die Industrie-Generation sich nicht unbedingt an die definierte maximale Entfernung hält.
siehe hier

Ich teste aktuell mit einer größeren Karte die früher ist als beim letzten Test. Auch die Bergigkeit ist höher. Das führt dazu, das die Baukosten höher ausfallen und die Gewinne kleiner. Auch dauert es wesentlich länger das die Gewinne gebucht werden. Deswegen braucht es einen größeren Puffer um die Instandhaltung zu finanzieren ohne das die Pleite kommt.

Und statt die kürzeren Verbindungen zu wählen werden die langen bevorzugt.

Muss wohl auch den Bau von Ausweichstellen ändern. Nämlich das die nur einzeln gebaut werden statt alle auf einmal bei langen Strecken. Die Baukosten fressen sonst zu viel Kapital auf. Gerade wenn Bodenanpassungen dabei sind.



Lässt sich eigentlich die Simutrans-Revision per Script abfragen?

Geht darum, die Baumkosten schon einzubauen aber trotzdem Version v122.0 benutzen zu können. So lange die Linien-/Fahrplanverwaltung buggi ist möchte ich nicht auf neuere Revisionen wechseln.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
Du koenntest folgenden Code einbauen:

Code:
try {
  cost = tree_desc_x.get_price()
}
catch(ev) {
// hat nicht funktioniert
cost = 10000
}
Das versucht (try) get_price abzufragen. Wenn das nicht existiert (weil alte Revision), dann faengt catch den Fehler, und das  Skript laeuft unten normal weiter
Zitieren
werde es probieren

Hab mir aber erst mal die Routensuche kaputt gemacht.

Da ich die durch falschen Vergleich die ganze Zeit deaktiviert hatte, weis ich nicht im Ansatz wo jetzt der Fehler ist.

[Bild: attachment.php?aid=17563]


Angehängte Dateien Thumbnail(s)
   
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
An der Stelle scheint weder start noch end definiert zu sein. Vielleicht start_l/end_l gemeint?
Zitieren
(06-01-2021, Wednesday-19:48:13 )Dwachs2 schrieb: An der Stelle scheint weder start noch end definiert zu sein. Vielleicht start_l/end_l gemeint?

Die werden erst weiter unten definiert aus dem Ergebnis obiger Funktion.

Ich vermute eher, das ich mir in class astar_builder extends astar Fehler rein gebaut habe.

Bzw. verändert sich wieder was unbeabsichtigt.

[start]/[end] sind die Rückgabewerte der Zeile drüber.

Code:
            local asf = astar_route_finder(cnv.get_waytype())
            local result = asf.search_route([start], [end])

Rückgabe von astar_route_finder (astar.nut Zeile 279)
Code:
        if (route.len() > 0) {
            return { start = route[route.len()-1], end = route[0], routes = route }
        }
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
Zitat:[start]/[end] sind die Rückgabewerte der Zeile drüber.
nein, die Zeile drueber initialisiert asf, der search_route-Aufruf braucht doch Start/Ziel Parameter als Eingabe. Die Rueckgabe von search_route hat dann start/end als Komponenten.
Zitieren


Gehe zu:


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