03-09-2020, Thursday-20:20:43
(Dieser Beitrag wurde zuletzt bearbeitet: 03-09-2020, Thursday-20:54:51 von Andarix.)
Dachte eigentlich das ich da ein Array zurückgebe. Sonst würde ja der Stationsabriss nicht funktionieren.
Statt true sollte das Stations-Array zurückgegeben werden.
Aber ich hab inzwischen auch etwas den Überblick verloren.
check_station gibt true zurück, wenn es mit build = 0 aufgerufen wird. Was aber aktuell nicht passiert, da es in der Funktion selber auf 1 gesetzt wird und in rail_connector nicht angegeben ist. Das war ein Vorgriff für eine Prüfung bei der Planung.
Ansonsten gibt check_station das Ergebnis von expand_station zurück. Und das ist entweder false oder das Array fields.
Allerdings wird ggf c_start und c_end bereits in check_station neu gesetzt. Nämlich dann, wenn die Station quer ( mit anderer Ausrichtung ) gebaut wurde.
Aktuell wohl nicht sehr elegant gelöst, hat sich aber so ergeben.
Funktioniert nur teilweise Dein Patch. Fehler _nexti kommt nicht mehr. way_get_dirs kommt noch.
Und die Änderung in astar.nut ist in einer unbenutzten Funktion.
function set_marker(pos) war als Reservierung gedacht. Nur Marker lassen sich überbauen auch von fremden Spielern.
Aber ich hab einen Verdacht, das expand_station ein leeres Array zurück gibt statt false.
Statt true sollte das Stations-Array zurückgegeben werden.
Aber ich hab inzwischen auch etwas den Überblick verloren.
check_station gibt true zurück, wenn es mit build = 0 aufgerufen wird. Was aber aktuell nicht passiert, da es in der Funktion selber auf 1 gesetzt wird und in rail_connector nicht angegeben ist. Das war ein Vorgriff für eine Prüfung bei der Planung.
Code:
function check_station(pl, starts_field, st_lenght, wt, select_station, build = 1) {
Code:
// check place and build station to c_start
local s_src = check_station(pl, c_start, count, wt_rail, planned_station)
Ansonsten gibt check_station das Ergebnis von expand_station zurück. Und das ist entweder false oder das Array fields.
Allerdings wird ggf c_start und c_end bereits in check_station neu gesetzt. Nämlich dann, wenn die Station quer ( mit anderer Ausrichtung ) gebaut wurde.
Code:
// build station
if ( b_tile.len() == st_lenght && build == 1) {
st_build = expand_station(pl, b_tile, wt, select_station, starts_field)
if ( starts_field.x != b_tile[0].x || starts_field.y != b_tile[0].y ) {
err = command_x.build_way(pl, starts_field, b_tile[0], planned_way, true)
// station move then set c_start/c_end new
if ( starts_field.x == c_start.x && starts_field.y == c_start.y ) {
c_start = tile_x(b_tile[0].x, b_tile[0].y, b_tile[0].z)
}
if ( starts_field.x == c_end.x && starts_field.y == c_end.y ) {
c_end = tile_x(b_tile[0].x, b_tile[0].y, b_tile[0].z)
}
}
} else if ( b_tile.len() == st_lenght && build == 0 ) {
st_build = true
} else {
b_tile.clear()
}
}
Aktuell wohl nicht sehr elegant gelöst, hat sich aber so ergeben.
Funktioniert nur teilweise Dein Patch. Fehler _nexti kommt nicht mehr. way_get_dirs kommt noch.
Und die Änderung in astar.nut ist in einer unbenutzten Funktion.
function set_marker(pos) war als Reservierung gedacht. Nur Marker lassen sich überbauen auch von fremden Spielern.
Aber ich hab einen Verdacht, das expand_station ein leeres Array zurück gibt statt false.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds