Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Script-KI - Linienmanagement
#51
Die Hateliste ist im Planquadrat des Haltes und die Linie daraus yu loeschen kann durchaus einen in einem ungueltigen Zustand hinterlassen. Das saubere loeschen einer LInie ist ueber den Aufruf des Linientools (SIMPLE_TOOL CHANGE_LINE(=25) parameter "d,line_id") line_id ist die nummer (ID) der Linie. Das schliesst offene Fenster und ruft dann player->simlinemgmt.delete_line(line); auf, aber ich weiss nicht, ob das skript lettere direkt aufrufen kann.

Das Linehandle eingach zu loeschen ist jedenfalls Sabotage.
Zitieren
#52
prissi Du bist schon zu weit. Zum Linie löschen komme ich ja gar nicht.

Ich hole mir das Linien-Objekt vom Halt. Und das wird ungültig sobald alle Fahrzeuge von der Linie entfernt wurden. Da hab ich weder den Halt noch die Linie angefasst.

Deshalb wird die Linie ja nicht gelöscht und bleibt als weise Linie in der Linienverwaltung stehen.


Von daher müsste ich mir vor dem löschen der Fahrzeuge die Linie erst umständlich aus der Linienliste raus suchen um ein gültiges Linien-Objekt zu haben.

Ich weis halt nicht, ob das Verhalten so sein soll oder nicht, das beim entfernen aller Fahrzeuge von einer Linie die Linie bei den Halten nicht mehr gelistet wird.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#53
(11-07-2021, Sunday-16:00:26 )Andarix schrieb: ...
Von daher müsste ich mir vor dem löschen der Fahrzeuge die Linie erst umständlich aus der Linienliste raus suchen um ein gültiges Linien-Objekt zu haben.
...

War doch nicht so umständlich. Funktioniert jetzt wie es soll.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#54
Ich denke, das Problem ist folgendes: halt.get_line_list() generiert keine Liste, sondern merkt sich nur: hier werden von Halt xy Linien abgefragt. Wenn dann alle Fahrzeuge von einer Linie geloescht werden, dann ist diese Linie nicht mehr mit dem Halt verbunden, und taucht bei Abfragen der Liste nicht mehr auf. Um das zu fixen, muss vorher die Liste kopiert werden:
Code:
local my_line_list = [];
foreach(line in halt.get_line_list()) my_line_list.append(line)
Das betrifft alle diese get_**_list Methoden.
Zitieren
#55
Hab es etwas anders gelöst.

Code:
        local halt_lines = halt.get_line_list()
....

            local line_list = player_x(our_player.nr).get_line_list()
            foreach(line in line_list) {
                //gui.add_message_at(player_x(our_player.nr), "####### line check " + line.get_name(), world.get_time())
                if ( halt_lines[0].id == line.id ) {
                    halt_lines = line
                    break
                }
            }
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#56
mmh, ich hab wieder mal das Problem das bei einem Spieler der Liniencheck nicht aufgerufen wird über Monate hinweg

Irgendwo hängt da was und ich hab keinen blassen Schimmer wo.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#57
Kannst du da mal ein Savegame hochladen? (und welchen Spieler es betrifft). Es kann ja sein, dass der irgendwo anders in einer Endlosschleife haengt.
Zitieren
#58
Die Sache ist die, wenn die anderen deaktiviert werden dann springt die Linienprüfung wieder an.

Ich bin mir auch nicht sicher, ob das nach dem Speichern und Laden immer noch so ist.


Es fällt mir halt immer dann auf, wenn bei den Ausgaben der Linienprüfung Farben ständig fehlen.

Ich vermute das es eher an der Scriptlaufzeit liegt. Wenn die Linienanzahl steigt, dann wird irgendwann das Script bei Spielern nicht mehr ausgeführt.

1920_512x448_128g-1927.sve ~900 kByte (bis 18.9.21)

Simutrans r9950
pak128.german v2.0
sqai_rail vom Git

Wenn Du das Meldungsfenster runter scrollst, dann siehst Du das Grün von Februar 1922 - September 1925 nicht dabei ist.

August 1924 hab ich die anderen 3 deaktiviert. Trotzdem hat es noch ein Jahr gedauert bis bei Grün wieder was passiert ist.
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#59
Die Frage ist halt, was der Gruene zwischendurch macht. Kann auch sein, dass er in einer Routensuche oder was auch immer festhaengt. Die einzelnen KI-Skripte sollten sich nicht beeinflussen, die bekommen immer eine feste ``Rechenzeit'', nach der sie schlafen geschickt werden bis zum naechsten Mal. Ich schaue es mir mal an.
Zitieren
#60
Simutrans r9953 und r9950

Ich verstehe es nicht. Die ganze Zeit geht es und jetzt Scriptfehler.

An der Stelle hab ich gar nichts geändert.

[Bild: attachment.php?aid=17716]

1920_512x448_128g-1928.sve ~ 900 kByte (bis 19.8.21)

Simutrans r9953
pak128.german v 2.0
sqai_rail code vom Git


Angehängte Dateien Thumbnail(s)
   
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste