Rundenmeldung bei lang anhaltenden Measures

    • Rundenmeldung bei lang anhaltenden Measures

      Moin,

      ich versuche aktuell, die Handelsrouten zu überarbeiten. Unter anderem hätte ich gern eine Nachricht über den Profit/Saldo der Handelsroute, um das Feature attraktiver zu machen.

      Allerdings weiß ich noch nicht genau, wie ich diesen Saldo am besten anbiete. Die folgenden Varianten fallen mir ein:
      1) Eine Nachricht am Ende der Runde wäre mir am liebsten. Gibt es dafür Beispiele, wo etwas ähnliches passiert? In den AI-Skripten gibt es ja ein "PingHour()", aber im Measure-Ordner wird die Methode nicht verwendet. Gibt es weitere Möglichkeiten?
      2) Manuelles Anzeigen durch eigenes Measure am Karren. Allerdings unterbricht die Anzeige des Saldo dann die Handelsroute. Kann dieses Unterbrechen verhindert werden?
      3) Anzeige pro Routendurchlauf. Das ist tatsächlich einfach, weil es direkt in der Durchführung der Handelsroute integriert ist. Allerdings wird das sehr schnell zu viel werden.

      Viele Grüße
      ThreeOfMe
    • Hey!

      Falls du den profit in einem Property des karrens speicherst, oder des dynasty Objects, könntest du die Measure ja auch am Betrieb oder Wohnsitz oder Dynastycharakter aufrufen, dann würde die Route weiterlaufen

      Bin gespannt!

      Alternativ hat jedes Gebäude eine Pinghour, dh wenn man dort zb 0 Uhr angibt, könnte man dich die bilanz auch ründlich anzeigen lassen (sollte dann aber deaktivierbar sein)
    • Hi,

      danke für die Ideen! Bisher hatte ich es als Property am Karren, weil ich es auf die Handelsroute dieses Karren bezogen hatte. Aber eine Übersicht über die Erträge der Routen eines Betriebes klingt auch gut. Und mit "GetHomeBuilding(..., ...)" kann ich die Property schnell umbiegen.

      Ich werde das bei nächster Gelegenheit mal ausprobieren.

      Etwas weiter gesponnen... Ich hatte einen Measure für "Verschicken und Abladen" gefunden. Aber kann man auch in den direkten Ein-/Verkauf am Markt per Skript eingreifen? Dann ließe sich der gesamte Saldo aller Karren eines Betriebes erfassen...

      Dass die PingHour für jedes Gebäude verfügbar ist, ist schon interessant. Hast du ein Beispiel für Abfragen auf eine bestimmte Tageszeit?

      Viele Grüße
    • schau mal in die citypinghour. Das schema dort ist prinzipiell auch bei gebäuden möglich, ich nutze die building pinghours derzeit, um die KI produktion zu manipulieren.

      Direkter drag and drop Verkauf ist leider hardcoded, daher konnte ich meinen feilschenmod auch nicht auf diesen bereich ausdehnen ... Falls dir dazu was einfällt, wäre das natürlich großartig. Viel erfolg, bin gespannt, was am ende bei rumkommt!
    • Hallo Fajeth,

      vielen Dank für die Hinweise!

      Tatsächlich bin ich damit bei der Rundenmeldung voran gekommen, auch wenn ich es noch beim Führen von "Saldo dieser Runde" und "Saldo der letzten Runde" belasse und die Informationen analog zu "Ladengeschäfte" auf Nachfrage bereitstelle. Die beiden Ansätze lassen sich vermutlich gut kombinieren, das habe ich aber bisher nicht näher verfolgt.

      Hier sind noch meine Erkenntnisse dazu:
      1. Die "CityPingHour.lua" war hilfreich, um das Auswerten von "GetGametime()" in der Praxis zu sehen. Allerdings ist es mir nicht gelungen, meine Aktion bei Rundenwechsel dort einzufügen.
      2. Der Einbau in die PingHour() der Produktionsgebäude wäre zwar möglich und hat prototypisch funktioniert -- aber es wäre zu wartungsintensiv.
      3. Letztendlich habe ich in der "PingHour()" der "townhall.lua" den Rundenwechsel für alle Produktionsgebäude realisiert:


      Lua-Quellcode: townhall.lua

      1. if (currentGameTime == 0) then
      2. local WorkshopCount = CityGetBuildings("city", GL_BUILDING_CLASS_WORKSHOP, -1, -1, -1, FILTER_HAS_DYNASTY, "Workshop")
      3. for l=0,WorkshopCount-1 do
      4. Alias = "Workshop"..l
      5. if HasProperty(Alias,"balanceAutoRoute") then
      6. SetProperty(Alias, "balanceAutoRouteLast", GetProperty(Alias, "balanceAutoRoute"))
      7. SetProperty(Alias, "balanceAutoRoute", 0)
      8. end
      9. end
      10. end


      Eine passende Rundenmeldung ist jetzt nur noch wenig Arbeit :)

      Im Übrigen hat mich dieser Code-Abschnitt aus 0.9 verwirrt:

      Lua-Quellcode: ms_hpfz_AutoRoute.lua

      1. elseif ablauf[k][2] == 2 then--unload
      2. local SrcID = GetDynastyID("")
      3. local DestID = GetDynastyID(ablauf[k][1])
      4. if SrcID ~= DestID and BuildingGetClass(ablauf[k][1]) ~= GL_BUILDING_CLASS_MARKET then
      5. local cartDriver
      6. ...
      Unter welchen Umständen kann ich als Spieler Waren beim Betrieb einer anderen Dynastie abladen?

      Viele Grüße