Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
17-04-2020, Friday-01:00:14
(Dieser Beitrag wurde zuletzt bearbeitet: 17-04-2020, Friday-01:09:59 von Andarix.)
(16-04-2020, Thursday-16:24:10 )Dwachs2 schrieb: Ja, das fehlt alles noch. Wenn Hangfelder da sind, und hinter dem Hang ein flaches Feld, dann wird auch gebaut (es sei denn, der Bau ist schon einmal frueher gescheitert, dann wird es erstmal nicht versucht)
mmh, also Stationen mit type=dock werden gefunden
Nur der Bau-Check funktioniert nicht wie es scheint.
ship_connector.nut
Code: static function find_anchorage(factory, planned_station, planned_harbour_flat, c_harbour_tiles)
.....
local size = planned_harbour_flat.get_size(0)
ok = finder.check_harbour_place(tile, size.x*size.y, dir.backward(d))
......
Allerdings ist es schwierig die richtige Ausgabe zu erwischen.
Muss wohl sämtliche Wasserflächen entfernen bis auf die wo die Bohrinseln drauf sind.
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
17-04-2020, Friday-09:12:40
Es gibt ja coord3d_to_string um das Array der Koordinaten in einen String zu konvertieren.
Gibt es auch den umgekehrten Weg?
Bzw liefert object.get_pos() die Position als String. Gibt es auch die die Rückgabe als Array?
Geht darum, die Position der Depots aus der Depotliste zu verarbeiten.
Beiträge: 543
Themen: 5
Registriert seit: Aug 2015
Bewertung:
19
17-04-2020, Friday-13:11:07
Die Koordinaten koennen mit object.x, object.y, object.z direkt abgefragt werden. get_pos() solte eine Tabelle mit x,y,z Eintraegen liefern.
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
17-04-2020, Friday-14:02:16
Danke
Ich blicke bei den Objekten und deren Schlüssel noch nicht so durch.
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
17-04-2020, Friday-15:49:36
(Dieser Beitrag wurde zuletzt bearbeitet: 17-04-2020, Friday-15:52:28 von Andarix.)
Wie ersetzt man in c_depot die Koordinaten?
Alles was ich bisher versucht habe mit meinem begrenztem Wissen führt zu Fehlern.
search_field definiert in welchem Umkreis um die Start- und Endstation Depots ermittelt werden.
Code: case 5: // build depot
{
if ( print_message_box == 3 ) {
gui.add_message_at(our_player, "exists depots road", world.get_time())
}
local list_exists_depot = depot_x.get_depot_list(our_player, wt_road)
local seach_field = 5
local tile_min = [c_start.x - seach_field, c_start.y - seach_field, c_end.x - seach_field, c_end.y - seach_field]
local tile_max = [c_start.x + seach_field, c_start.y + seach_field, c_end.x + seach_field, c_end.y + seach_field]
local depot_found = false
foreach(key in list_exists_depot) {
if ( print_message_box == 3 ) {
gui.add_message_at(our_player," ... depot pos: " + key.get_pos(), world.get_time())
gui.add_message_at(our_player," ... c_start pos: " + coord_to_string(c_start) + " : c_end pos: " + coord_to_string(c_end), world.get_time())
}
if ( key.x >= tile_min[0] && key.y >= tile_min[1] && key.x <= tile_max[0] && key.y <= tile_max[1] ) {
//c_depot.x = key.x
//c_depot.y = key.y
//c_depot.z = key.z
if ( print_message_box == 3 ) {
gui.add_message_at(our_player," ---> depot found c_start: " + key.get_pos(), world.get_time())
}
break
} else if ( key.x >= tile_min[2] && key.y >= tile_min[3] && key.x <= tile_max[2] && key.y <= tile_max[3] ) {
//c_depot.x = key.x
//c_depot.y = key.y
//c_depot.z = key.z
if ( print_message_box == 3 ) {
gui.add_message_at(our_player," ---> depot found c_end: " + key.get_pos(), world.get_time())
}
break
} else {
if ( print_message_box == 3 ) {
gui.add_message_at(our_player," *** depot not found *** ", world.get_time())
}
}
}
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
17-04-2020, Friday-20:54:55
(Dieser Beitrag wurde zuletzt bearbeitet: 17-04-2020, Friday-20:55:46 von Andarix.)
hab es doch noch gefunden
Code: c_depot = tile_x(key.x, key.y, key.z)
https://github.com/Andarix/simutrans-sce...er/ai/sqai
Straßendepots im Umkreis von 5 Feldern der Start- und Zielstation werden jetzt gefunden und benutzt.
Allerdings ist der Wegbauer noch nicht angepasst. Das heist, der Straßenstummel wird noch gebaut und zum gefundenen Depot wird noch keine Wegprüfung durchgeführt.
Ich widme mich erst mal den Eisenbahnstationen.
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
18-04-2020, Saturday-02:38:06
(Dieser Beitrag wurde zuletzt bearbeitet: 18-04-2020, Saturday-02:45:20 von Andarix.)
Mehrteilige Eisenbahnstationen werden jetzt gebaut, sofern in gerader Verlängerung Schienen vorhanden sind.
Es fehlen noch diverse Feldprüfungen. Aktuell wird nur auf Schiene getestet.
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
18-04-2020, Saturday-10:04:02
Wie kann ich die Ausrichtung eines Stationsfeldes abfragen?
Beiträge: 543
Themen: 5
Registriert seit: Aug 2015
Bewertung:
19
18-04-2020, Saturday-12:27:01
Am besten wahrscheinlich mit way_x::get_dir fuer das darunterliegende Gleis
Beiträge: 1.191
Themen: 126
Registriert seit: Sep 2019
Bewertung:
10
18-04-2020, Saturday-13:10:56
(Dieser Beitrag wurde zuletzt bearbeitet: 18-04-2020, Saturday-13:15:49 von Andarix.)
mmh
Ich benutze im Moment
Code: local t = tile_x(starts_field.x, starts_field.y, starts_field.z)
local d = t.get_way_dirs(wt_rail)
Also ich frage das Feld ab, wo vorher das Stationsfeld gebaut wurde.
Nur bekomme ich als Rückgabe 2, 4 oder 8.
erste Strecke
erster Aufruf Startstation ( Stationsteil ew ) = 2
zweiter Aufruf Zielstation ( Stationsteil ew ) = 8
zweite Strecke
erster Aufruf Startstation ( Stationsteil ew ) = 2
zweiter Aufruf Zielstation ( Stationsteil ns ) = 4
danach
Code: if ( d == 2 || d == 4 ) {
d1 = dir.eastwest
d2 = dir.northsouth
}
liefert
d1 in beiden Fällen 10
d2 in beiden Fällen 5
Ich aktualisiere mal das Repo, dann hasste den Code komplett. Ist alles noch etwas konfus, weil mehr rumprobiert als echt programmiert.
Müsstest da auch Schreibzugriff haben, wenn ich das richtig eingestellt hab. Tuhe mich da etwas schwer, weil alles nur in Englisch.
|