Skripts fuer KI Spieler - Druckversion +- Deutsches Simutransforum (https://simutrans-forum.de/mybb) +-- Forum: Simutrans (https://simutrans-forum.de/mybb/forumdisplay.php?fid=3) +--- Forum: Programmierung und Patches (https://simutrans-forum.de/mybb/forumdisplay.php?fid=38) +--- Thema: Skripts fuer KI Spieler (/showthread.php?tid=8408) |
RE: Skripts fuer KI Spieler - Dwachs2 - 02-09-2020 Im Aufruf zu search_route muessen Start und Ende Arrays sein, das sind sie hier nicht. Danach werden sie in construct_rail auf die konkret gebauten Felder gesetzt. (Nicht sehr elegant.) Die Zeilennummern hier passen nicht zu dem Code auf github. Hast du die Fehlermeldung zu get_way_dirs gepostet? RE: Skripts fuer KI Spieler - Andarix - 02-09-2020 (02-09-2020, Wednesday-10:49:23 )Dwachs2 schrieb: Im Aufruf zu search_route muessen Start und Ende Arrays sein, das sind sie hier nicht. Danach werden sie in construct_rail auf die konkret gebauten Felder gesetzt. (Nicht sehr elegant.) Bin mir nicht bewussst da was geändert zu haben. Zumindest nicht in den letzten Tagen. Und die ganze Zeit hat es auch funktioniert. Zitat:.... nein die beiden geänderten Dateien angehängt RE: Skripts fuer KI Spieler - Dwachs2 - 02-09-2020 Zeile 78 in rail_connector sollte statt Code: local err = construct_rail(pl, c_start[0], c_end[0], planned_way ) Code: local err = construct_rail(pl, c_start, c_end, planned_way ) Code: local err = construct_rail(pl, [ c_start[0] ], [ c_end[0] ], planned_way ) RE: Skripts fuer KI Spieler - Andarix - 02-09-2020 Ja schon, da hatte ich aber am Anfang schon mal Probleme, falls Du Dich errinnerst. Es gab da einen Unterschied, ob es eine Normale Station ist oder eine kombinierte Station. Bei normalen Stationen war es ein einfaches Array ( x, y, z ) und bei kombinierten war es ein geschachteltes Array ( [0] - x, y, z ; [1] - x, y, z ). RE: Skripts fuer KI Spieler - Andarix - 03-09-2020 (02-09-2020, Wednesday-13:27:21 )Dwachs2 schrieb: ... funktioniert auch nicht Was ich nicht verstehe ist, das es die ganze Zeit funktioniert hat und jetzt plötzlich nicht mehr. RE: Skripts fuer KI Spieler - Dwachs2 - 03-09-2020 Kannst du mal deinen ganzen Code auf github schieben? Dann koennte ich mir das anschauen. RE: Skripts fuer KI Spieler - Andarix - 03-09-2020 (03-09-2020, Thursday-09:24:24 )Dwachs2 schrieb: Kannst du mal deinen ganzen Code auf github schieben? Dann koennte ich mir das anschauen. Bis auf die 2 Dateien oben ist der aktuell. Hab es hochgeladen. Und die Platzsuche für die Stationen hab ich nicht angefasst soweit ich mich errinnere. Das sollte unveränderter Code von Dir sein. siehe https://www.simutrans-forum.de/mybb/showthread.php?tid=8408&pid=117601#pid117601 und folgende RE: Skripts fuer KI Spieler - Andarix - 03-09-2020 Die Ursache könnte sein, das phase ++ nicht ausgeführt wird. Es wird scheinbar ein 2. mal bei case 1: angefangen. Oder ich hab mir irgendwo einen doppelten Aufruf eingebaut. RE: Skripts fuer KI Spieler - Dwachs2 - 03-09-2020 Hab dir mal 2 fixes ins github gepusht. Das Problem mit get_way_dirs ist, dass check_station nur true/false zurueckgibt, aber die Abfragen in rail_connector Zeilen 151ff so tun, als waere s_src ein Array mit Weg-Objekten. Am besten waere doch den Rueckgabe-Wert von check_station anzupassen: null statt false und ein Array mit Wegen statt true. RE: Skripts fuer KI Spieler - Andarix - 03-09-2020 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. Code: function check_station(pl, starts_field, st_lenght, wt, select_station, build = 1) { Code: // check place and build station to c_start 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 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. |