in Zeile 59 steht 'planned_convoy = prototyper.best'
Damit sollte die Abfrage planned_convoy.max_speed danach doch die Geschwindigkeit zurückgeben.
Versuche ich aber für die Wegauswahl ( Fahrzeuggeschwindigkeit + 20 als Obergrenze für die Wegauswahl ) ein
local way_max = planned_convoy.max_speed + 20
kommt es zum Scriptfehler.
Die Auswertung
if (cnv_valuator.way_max_speed >= planned_convoy.max_speed && cnv_valuator.way_max_speed < way_max )
geht auch ins Leere, da Wege mit wesentlich geringerer Geschwindigkeit gewählt werden. Die Weggeschwindigkeit soll gleich oder größer der Fahrzeuggeschwindigkeit sein aber nicht mehr als 20 km/h über der Fahrzeuggeschwindigkeit liegen.
Quote from: Frank on March 29, 2017, 10:15:28 AM
in Zeile 59 steht 'planned_convoy = prototyper.best'
Damit sollte die Abfrage planned_convoy.max_speed danach doch die Geschwindigkeit zurückgeben.
....
nun ja, im log steht folgendes für planned_convoy.max_speed
Quote...
Script: Print: industry_connection_planner_t: planned_convoy.max_speed = -727379968
...
Dabei ist es egal welches Fahrzeug drüber steht. Sind immer diese -727379968.
Allerdings ist best ein geschachteltes Array ( Array mit weiteren Arrays in den Feldern ).
Quote...
Script: Print: Best[0] = Ochsen2
Script: Print: Best[1] = Horsecoalcariage
Weis aber gerade auch nicht wo diese Ausgabe her kommt. Muss ich erst suchen.
also bei mir gibt dieser Code hier
// original industry_connection_planne
if (planned_convoy == null) {
if (prototyper.step().has_failed()) {
return r_t(RT_ERROR)
}
planned_convoy = prototyper.best
}
// eingefuegt
print("best " + planned_convoy.min_top_speed + " / " + planned_convoy.max_speed)
was vernuenftiges aus. Dabei ist max_speed die Maximalgeschwindigkeit, die das Ding fahren darf, min_top_speed ist die maximal erreichbare Geschwindigkeit des vollbeladenen convois.
if (planned_convoy == null) {
if (prototyper.step().has_failed()) {
return r_t(RT_ERROR)
}
planned_convoy = prototyper.best
}
print("best " + planned_convoy.min_top_speed + " / " + planned_convoy.max_speed)
// fill in report when best way is found
local r = report_t()
// plan way
if (planned_way == null) {
local way_list = way_desc_x.get_available_ways(wt_road, st_flat)
local best_way = null
local best = null
foreach(way in way_list) {
cnv_valuator.way_maintenance = way.get_maintenance()
cnv_valuator.way_max_speed = way.get_topspeed()
print("planned_convoy.max_speed = " + planned_convoy.max_speed)
print("cnv_valuator.way_max_speed = " + cnv_valuator.way_max_speed)
Ausgabe:
Script: Print: best 10817536 / -727379968
Script: Print: planned_convoy.max_speed = -727379968
Script: Print: cnv_valuator.way_max_speed = 40
das sind meine Ergebnisse mit v120.2.2 GDI pak64.german 112.3.5
Dateien von hier (http://forum.simutrans.com/index.php?topic=16904.msg160910#msg160910)
allerdings ohne dem ' print("best " + planned_convoy.min_top_speed + " / " + planned_convoy.max_speed)'
Kanns nicht reproduzieren. Was wird denn als bester Convoy ausgegeben?
script-ai-4.log (http://simutrans-germany.com/tmp/script-ai-4.log)
und die leeren Test-Karten dazu ( alle mit 120.2.2 erstellt )
1936_pak64german.sve (http://simutrans-germany.com/sve/1936_pak64german.sve)
1956_pak64german.sve (http://simutrans-germany.com/sve/1956_pak64german.sve)
1976_pak64german.sve (http://simutrans-germany.com/sve/1976_pak64german.sve)
glaube zwar nicht das es daran liegt
Win 10 ( 1607 ) 64bit
AMD Athlon(tm) X4 740 Quad Core Processor 3.20 GHz