Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Script-KI - Depots
#11
Habe jetzt die Dokumentation von remove_object aufgepeppt. Und eine Methode tile.get_depot(), die das Depot auf dem Feld zurueckliefert.

Alles auf mo_depot umzustricken ist mir zu aufwendig und vor allem zu fehleranfaellig, weil dann haufenweise Code benoetigt wird, um diesen mo_depot Wert abzubilden und von den internen umzurechnen.
Zitieren
#12
danke

Hab da gleich noch eine Frage zu den Depots.

Bevor es abgerissen wird sollte man prüfen ob es leer ist. Vorhandene Fahrzeuge sollten verkauft werden.

Listet depot_x::get_convoy_list() alle Fahrzeuge im Depot auf oder nur Zusammenstellungen die oben angezeigt werden?
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#13
get_convoy_list gibt nur komplette Convoys (also die Liste oben) zurueck, nicht einzelne Wagen, die dort rumliegen.

Falls ein Convoy im Depot zerlegt wird (destroy), dann liegen die Einzelteile dort rum, und das Skript hat keine Chance, aufzuraeumen.
Taucht dieses Problem bei dir auf?
Diese Einzelfahrzeuge werden benutzt, wenn ein neuer Convoy zusammengestellt wird.
Zitieren
#14
(21-07-2021, Wednesday-09:55:20 )Dwachs2 schrieb: ...
Falls ein Convoy im Depot zerlegt wird (destroy), dann liegen die Einzelteile dort rum, und das Skript hat keine Chance, aufzuraeumen.
Taucht dieses Problem bei dir auf?
...

An sich eigentlich nicht.

Allerdings gibt es Spieler die da ggf dran rum fummeln. Bei makie seinem Spielstand stand auch ein Zug im Depot, aber die Linie war gar nicht mit Ausweichstellen ausgebaut. So was sollte eigentlich auch nicht passieren.

Im Nachhinein kann ich schwer feststellen, ob das durch Fehler beim Script passiert ist oder eben ein Mensch dafür gesorgt hat.

Depots mit Fahrzeugen können nicht abgerissen werden. Ich weis jetzt nur nicht ob dabei das Script einen Fehler wirft oder einfach weiter läuft.


Bei meinem Testspiel wurde ein Depot zu viel abgerissen. Eigentlich teste ich alle Konvoys ob deren Homedepot zum abzureißenden passt. Allerdings ist mir gerade aufgefallen, das convoy.get_home_depot() nicht tile_x zurück gibt sondern coord3d.

Muss ich nochmal nachschauen. Denn wenn ich coord3d mit tile_x vergleiche muss das schief gehen.

Code:
...
                depot = tile_x(cnv.get_home_depot().x, cnv.get_home_depot().y, cnv.get_home_depot().z)
...

        if ( check_home_depot(depot, wt) )  {
            // todo check vehicles in depot
            remove_tile_to_empty(depot, wt, 0)
        }

...

function check_home_depot(tile, wt) {

    // load vehicle list
    local list = []

    foreach(cnv in list) {
        if ( tile.x == cnv.get_home_depot().x && tile.y == cnv.get_home_depot().y && tile.z == cnv.get_home_depot().z ) {
            return false
        }
    }

    return true

}
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren
#15
Dein check_home_depot iteriert (noch?) ueber eine leere Liste. Dem Vergleich der xyz Koordinaten ist es egal, ob da ein tile_x, coord3d oder was auch immer Objekt dahinter steckt, und sollte so funktionieren wie er da steht.
Zitieren
#16
(21-07-2021, Wednesday-11:13:16 )Dwachs2 schrieb: Dein check_home_depot iteriert (noch?) ueber eine leere Liste. Dem Vergleich der xyz Koordinaten ist es egal, ob da ein tile_x, coord3d oder was auch immer Objekt dahinter steckt, und sollte so funktionieren wie er da steht.

ups, vergessen zu vervollständigen

Passiert wenn man an zu vielen Stellen gleichzeitig rum fummelt.

danke
Script-KI für Simutrans r10894+ / Simutrans Nightly Builds
Zitieren


Gehe zu:


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