Deutsches Simutransforum
Funktion was wurde gebaut - Druckversion

+- Deutsches Simutransforum (https://simutrans-forum.de/mybb)
+-- Forum: Simutrans (https://simutrans-forum.de/mybb/forumdisplay.php?fid=3)
+--- Forum: Wie spiele ich Simutrans? (https://simutrans-forum.de/mybb/forumdisplay.php?fid=6)
+---- Forum: Szenarien (https://simutrans-forum.de/mybb/forumdisplay.php?fid=7)
+---- Thema: Funktion was wurde gebaut (/showthread.php?tid=7224)



Funktion was wurde gebaut - ny911 - 01-03-2013

Momentan kann man mit is_work_allowed_here() abfragen was der Spieler beabsichtigt zu bauen/abzureisen. Dies muss aber nicht dem tatsächlich durchgeführten Operationen entsprechen, da ja beim Wegebau - z.B Tunnelende nicht am Hang - der Bau nicht durchgeführt wird.

Wie zähle ich tatsächlich gebaute Objekte (z.B. Tunnel, Straßen...) und nicht nur geplante Versuche die eventuell gebaut wurden?


RE: Funktion was wurde gebaut - Dwachs - 01-03-2013

was leicht moeglich ist, waere ein Aufruf, wenn etwas mit einem einzelnen Feld geschieht oder irgendwelche Convoy, Linien etc erstellt wurden.

Fuer Strassenbau etc wirds umstaendlich, weil eigentlich nur Anfangs- und End-Feld bekannt sind, der Rest zwischendrin wird ja intern ueber Routensuche ausgekluegelt. Man koennte dann immer noch die Route mit uebergeben, da fehlt aber immer noch die Information, ob auf einem Feld eine Strasse gebaut wurde oder ob da schon eine war...

Was willst du denn damit machen?


- ny911 - 01-03-2013

Momentan wird im Schweiz Szenario nur der Gebirgsdruck beachtet. Man kann also am Spielanfang nicht durch das Gotthard-Massiv einen Basistunnel bauen. Man kann aber noch immer geschickt im ersten und zweiten Untergrundlevel des Berghangs sich durch die ganzen Alpen bauen. Daher kam mir die Idee eine leichte Begrenzung der Tunnelbauten je Zeiteinheit auf die vorhandenen/gelieferten Beton/Stahl Mengen zu setzen.

Wenn ich in is_work_allowed_here() eine positive Abfrage für ein Tunnelbauwerk habe setze ich ein flag und speichere die aktuellen Baukosten.
Beim nächsten Aufruf sind die Baukosten dann höher und man kann, sofern für das alte Tool der Preis bekannt ist, die Anzahl der Felder berechnen.

Alternativ könnte man auch jede Ebene und jedes Feld der Karte absuchen und mit einer Methode was_ist_hier_gebaut(x,y,z) -> (player, type, traffic,...) aus der Karte alles aufbauen.


- ny911 - 18-03-2013

geht folgendes:

Abfragen einer 3D Koordinate (x,y,z) was sich dort befindet?
Also: Grund, Gebäude, Wegtyp, Weg-Verbunden mit, Schilder, Eigentümer,...

Suche für das Tutorial noch Möglichkeiten eine gebaute Strecke kontrollieren zu können. Daher also diese Idee.


- Dwachs - 18-03-2013

habe jetzt ein paar simple Abfrage-Funktionen drin:

http://dwachs.github.com/simutrans-sqapi-doc/changelog.html

kompliziertere Abfragen brauchen auch ein entsprechendes Nachbilden der Klassenstruktur auf der squirrel Seite.


- ny911 - 20-03-2013

Habe eben die Funktion tile_x().has_way() ausprobiert. Das hilft im Tutorial beim Kontrollieren ob ein Weg richtig und komplett gebaut wurde schon eine Menge. Leider kann man damit nicht kontrollieren, ob ein Weg mit einem bestimmten Nachbarfeld zusammen hängt. Dies ist wahrscheinlich mit "kompliziertere Abfragen" gemeint.

Auf der anderen Seite muss ich aber auch sagen, das man auch bei einem Tutorial nicht alles Abfragen und Kontrollieren muss. Es gibt ja spätestens beim Versuch eines Fahrzeuges den Weg zu befahren die Fehlermeldung das kein Weg zum Ziel gefunden wird.


- Dwachs - 23-03-2013

ein paar mehr Funktionen, um Objekte abzufragen:

http://dwachs.github.com/simutrans-sqapi-doc/classmap__object__x.html


- Dwachs - 24-03-2013

Zitat:Original von ny911Leider kann man damit nicht kontrollieren, ob ein Weg mit einem bestimmten Nachbarfeld zusammen hängt.

Probiere mal:

http://dwachs.github.com/simutrans-sqapi-doc/classtile__x.html#ab78a9b440e82430565ae17494897f267