Deutsches Simutransforum

Normale Version: Skripts fuer KI Spieler
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
Also mein Verdacht war richtig, rail_connector case 2: wird doppelt ausgeführt.

im Bild

rot ist der erste Aufruf
grün der zweite Aufruf, der den ersten Aufruf torpediert, weil dort die Station nicht mehr gebaut werden kann und den Abriss auslöst

[Bild: attachment.php?aid=17491]

Testcode mit den Ausgaben ist auf Git


Ich hab nur keinen blassen Schimmer, wo ich den Fehler eingebaut hab.
Der Fehler liegt im tile_x-Objekt.

Das zurückgelieferte Array von expand_station hat scheinbar ungültige tile_x-Objektdaten, weshalb die Funktionen von tile_x.get_*() nicht funktionieren. Auf Grund des Scriptfehlers ruft er dann immer wieder case 2 von rail_connector auf.

Hab den Code nach check_station verschoben. Dort ist er wohl besser aufgehoben.
Neue Nuss zum knacken bei der Ermittlung paralleler Verbindungen zwischen 2 Industrien.

Die Script-KI baut 4-teilige Strecken.

Ölbohrinsel -(Schiff)- Dock -(Land)- Dock -(Schiff)- Dock -(Land)- Empfänger
Ist das Pause-Tool von der Script-KI aus erreichbar?

Da bei Fehlern im Streckenbau sofort abgerissen wird möchte ich da eine aktive Pause setzen um die Fehler nachvollziehen zu können.
Weiss nicht, ob man das Pause-Tool ankriegt: probiere mal
Code:
local pause_tool = command_x(0x2000) // id's aus simmenu.h
try {
pause.work(our_player, coord3d(0,0,0)) // koordinate irrelevant
} catch(ev) { } // tool wirft einen Fehler, den hier auffangen und ignorieren
(07-09-2020, Monday-10:33:05 )Dwachs2 schrieb: [ -> ]... 
Code:
local pause_tool = command_x(0x2000) // id's aus simmenu.h
...

das funktioniert schon nicht

Hat jetzt nicht die höchste Priorität.
Notfalls kommentiere ich aus oder baue eine dummy-Schleife ein.
In r9219 ist debug.pause bzw debug.set_pause_on_error(true/false) drin.
danke
(08-09-2020, Tuesday-11:46:15 )Dwachs2 schrieb: [ -> ]In r9219 ist debug.pause bzw debug.set_pause_on_error(true/false) drin.

Wo und wie muss ich debug.set_pause_on_error setzen?

Bei debug.set_pause_on_error(true) bekomme ich den Fehler, das es den Index set_pause_on_error nicht gibt.
Das Problem ist, dass es in den ganzen Klassen in der sqai auch einen debug-Parameter gibt. Da musst du statt debug.set_bla ::debug.set_bla schreiben
Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38