Wassertank Logik [1.2.1]

    Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Dienste bereitzustellen und die Zugriffe auf unsere Website zu analysieren. Außerdem werden durch unsere Partner Informationen zu Ihrer Nutzung für soziale Medien, Werbung und Analysen erfasst. Weitere Informationen

    • Wassertank Logik [1.2.1]

      Wie die ein oder anderen von euch bereits wissen, habe ich vor etwa einem Jahr begonne eine Wassertank-Logik zu erstellen, bin dann aber nicht weiter gekommen wodurch ich irgendwann die Lust an dem Projekt verloren habe. Im Zuge der Arbeiten an der New Creek Modifikation habe ich mich wieder hingesetzt und eine komplett neue Wassertank-Logik erstellt.
      Um eine großes Forum zu haben, in dem die Logik getestet werden kann, habe ich beschlossen, das Ganze Original-Em5 fähig zu machen. Dass einige Spieler auch außerhalb von Modifikationen einen Wassertank nutzen wollen, ist auch ein bisschen die Hoffnung.




      Wie funktioniert die Sache nun für den Spieler:

      Zuerst war das Licht...ähm..nein...der Schlauch. Ist ein Feuerwehrmann mit einem Schlauch ausgerüstet könnt ihr ein Fahrzeug als Ziel wählen, an dem sich die Person anschließen soll.
      An Hydranten kann sich nicht manuell angeschlossen werden, jedoch funktioniert das automatische Anschließen immernoch.
      screen_1.png

      Ist die Person an einem Hydranten oder einen Fahrzeug angeschlossen, so kann man durch ein Klick auf die Person selber bewirken, dass die Person sich vom momentanen Anschluss löst (ein bisschen wie Gott)
      screen_3.png

      Ist die Person an einem Fahrzeug angeschlosse, ihr wollt aber anstatt sie wieder abkuppel lassen, eine Wasserversorgung aufbauen, könnt ihr das mit einem einfachen Klick auf einen Hydranten machen. Die Person wird sich umgehent in Bewegung setzten und eine Schlauchleitung zwischen Fahrzeug und gewähltem Hydranten aufbauen
      screen_4.png

      Wollt ihr nun die Schlauchleitung zwischen Hydrant und Fahrzeug wieder abbauen, dann wählt hierzu einen Feuerwehrmann aus, der nicht mit Schlauch oder Spritze (Schlauch angeschlossen) ausgerüstet ist und macht ein Klick auf das Fahrzeug, von dem ihr die Wasserversorgung aufheben wollt. Die Person wird zum Hydranten laufen an dem das gewählte Fahrzeug angeschlossen ist und den Schlauch vom Hydranten abkuppeln und steht euch dann neben dem Hydranten mit einem am Fahrzeug angeschlossenem Schlauch wieder zur Vergügung (irgendwie logisch)
      screen_5.png


      Wie wird der Wasserstand angezeigt:

      Ist der Wassertank randvoll, seht ihr am Fahrzeug nichts. Ist der Tank jedoch nicht voll, seht ihr einen blauen Balken über dem Fahrzeug schweben
      screen_2.png

      Anhand der Pfeile in dem Balken könnt ihr euch schnell ein Bild darüber machen, ob ihr gerade mehr Wasser aus dem Fahrzeug nehmt als in den Tank in der gleichen Zeit hinein geht.
      Zeigen die Pfeile nach links, solltet ihr das Fahrzeug mit einem Hydranten verbinden oder weniger Wasser aus dem Tank nehmen.
      Zeigen die Pfeile nach rechts, seid ihr auf der sicheren Seite. Der Wasserstand nimmt zu.
      Ist der Tank leer, werden alle Personen und auch der Dachwerfer, ihre Lösch- bzw. Kühlarbeit einstellen. Ein Löschen ist erst wieder möglich, wenn der Tank nicht mehr leer ist.

      Verteiler-Logik:



      Ein Verteiler kann gesetzt werden, in dem man einen Feuerwehrmann an ein Fahrzeug anschließt und zur gewünschten Stelle für den Verteiler laufen lässt.
      Durch ein Klick auf den Command-Icon für den Verteiler, wird der Feuerwehrmann einen Verteiler auf dem Boden platzieren.

      screen_11.png



      Die blaue Welle über einem Verteiler erscheint immer dann, wenn das Fahrzeug mit dem der Verteiler verbunden ist noch Wasser im Tank hat. Verschwindet diese Symbol, weiß man also direkt auf einem Blick, dass irgendein Fahrzeug einen leeren Wassertank hat.
      screen_12.png

      Der Verteiler kann durch ein Rechtsklick auf den Verteiler mit einem Feuerwehrmann ohne Schlauch oder Strahlrohr wieder ganz einfach abgebaut werden. Der Feuerwehrmann hebt darauf den Verteiler vom Boden auf und ist wieder mit dem Fahrzeug verbunden.
      screen_13.png


      Die Sache stelle ich hier zur Verfügung mit der Bitte an alle Nutzer, alle gefunden Fehler in diesem Thread zu melden. Von einer möglichst fehlerfreien Tanklogik profitieren mehr Leute, als von einer verbugten. Die Logik funktionierte in meinen Test sehr zuverlässig und mir sind keine Bugs aufgefallen, was jedoch nicht heißt, dass doch irgendwo welche versteckt sein können.


      Es kann sein, dass euer Antiviren-Programm anspringt. Das liegt daran, dass das Plugin die Icons bei Spielstart registriert (erst nach dem zweiten Spielstart). Damit ihr mir aber nicht nur vertrauen müsst, dass ich keine Viren eingebaut habe, ist der Code neben der Mod-Datei in der Webdisk verfügbar. Wer mir überhaupt nicht vertraut, kann sich die .dll-Datei gerne selber kompilieren. Dazu solltet ihr nur auf das Ausgabeverzeichnis der .dll achten.

      Anmerkungen für Modder:

      Die Wassertank-Logik darf gerne in euren Projekten verwendet werden. Der Mod liegt das Prefab hydrant_01_watertank_mod unter misc bei, das als Hydrant auf einen Karten verwendet werden sollte.

      Wollt ihr ein anderes Prefab benutzen, müssen folgende Voraussetzungen erfüllt sein:

      • eine Debug-Box als Child mit der Component EM5 Hydrant
      • ein Bone am zu verwendenden Anschluss mit dem Namen hose_bone_hydrant_1, anderenfalls wird der Pivot-Point des Base-Prefab zum Anschließen herangezogen
      • das Base-Prefab muss die Component Watertank besitzen mit den Wert Watertank Level=1 (oder mehr, hauptsache über null, hat aber keinen Einfluss auf den "Wassertank" des Hydranten. Nur für das System)


      Ein Fahrzeug, welches einen Wassertank haben soll, muss ebenfalls die Component Watertank besitzen.

      Die Werte bedeuten:
      • Watertank Level: das Volumen des Wassertank im vollsten Zustand in Litern
      • Outtake Hose: Durchflussmenge von Schläuchen an diesem Fahrzeug in Litern pro Sekunde
      • Outtake Cannon: verfügt das Fahrzeug über einen Dachwerfer, wird hier die Durchflussmenge pro Sekunde in Litern festgelegt
      • volume Supplyline: die Menge an Wasser in Litern pro Sekunde, die das Fahrzeug als Wasserversorger leisten kann. Zur Zeit noch ohne Bedeutung, da die Einspeißungen von Fahrzeug von Fahrzeug nicht möglich ist. Jedoch wird dieser Wert bei Hydranten berücksichtigt. Hier sollte ein logischer Wert angegeben werden. Der Wert sagt dann aus, wie viel Liter pro Sekunde aus dem Hydranten herauslaufen.


      Um die die Ankoppel und Abkoppeln Commands nutzten zu können, muss einer Person folgende Commands zugeordnet werden:
      • watertank::ConnectHoseCommand
      • watertank::DisconnectHoseCommand
      Um die Verteiler-Logik nutzten zu können, muss einer Person folgende Commands zugeordnet werden:
      • divider::SetDividerCommand
      • divider::DividerOffCommand"


      Grüße
      Carli

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von carli96 ()

    • Sieht gut aus

      Idee:
      -Das Entkoppeln per Klick auf Hydrant oder Fahrzeug :D
      -neuer LöschCommand/CoolCommand, welcher gedisabled wird wenn Watertank leer ist
      ->checkAvailable() ->return false

      screenshot_2017-02-16-19-01-37.jpg
      Bug: Icon bei Feuerwehrmann
      screenshot_2017-02-16-19-08-14.jpg
      Bug: Feuerwehmann kann nicht mehr löschen nachdem er sich woanders angeschlossen hat
      sonstiges
      -das automatische Einfügen von Iconeinträgen haste fein gemacht :D
    • Danke schon mal für eure Rückmeldung.
      - Verteiler wird es vielleicht geben, wenn die Logik komplett funktioniert. Also auch das einspeisen von Fahrzeug zu Fahrzeug
      - Schnellangriff macht meiner Meinung nach erst Sinn, wenn auch die Möglichkeit eines Verteilers gegeben ist
      - Schaumtank wird es nicht geben, außer du kannst mir einen wirklich nutzen darlegen
      - mit PA ausrüsten ist mit aufgenommen

      - meinst du das entkoppeln, wenn eine Person angeschlossen ist oder wenn ein Fahrzeug am Hydranten angeschlossen ist und man die hydrantenleitung abbauen will?
      - die neuen lösch und kühlen commands finde ich eine gute Idee. Die code gibt es glaube ich auch öffentlich, sollte also nicht das größte Problem sein
      - das Problem, dass nicht mehr gelöscht werden kann ist mir auch schon aufgefallen
      - Danke für das Lob. Ich hoffe dir ist diese Lösung "genug"
    • geht relativ einfach:

      hier mal Codesnippets

      Im Konstruktor (Variable sollte im Header erstellt werden)

      C-Quellcode

      1. em5::TreatPersonCommand* origcommand = static_cast<em5::TreatPersonCommand*>(QSFGAME_COMMAND.getCommandManager().getById<em5::Command>("em5::TreatPersonCommand")); QSF_CHECK(nullptr != liftUpByCraneCommand, "GetupWithMedikit: Could not find em5::TreatPersonCommand", return);



      C-Quellcode

      1. bool MoveAndPlaySoundCommand::checkAvailable()
      2. {
      3. if(watertanklogic(...))
      4. return origCommand->checkAvailable();
      5. return false;
      6. }
      7. bool MoveAndPlaySoundCommand::checkCaller(qsf::Entity& caller)
      8. {
      9. return origCommand->checkCaller(caller);
      10. }
      11. bool MoveAndPlaySoundCommand::checkContext(const qsf::game::CommandContext& context)
      12. {
      13. return origCommand->checkContext(context);
      14. }
      15. void MoveAndPlaySoundCommand::execute(const qsf::game::CommandContext& context)
      16. {
      17. origCommand->execute(context);
      18. }
      Alles anzeigen
      Entkoppeln: Fahreug ist an Hydrant angeschlossen ->man muss mit FW Mann auf Fahrzeug klicken ->wäre schön wenn man auch auf Hydrant klicken kann
    • Ich habe mal die Version 1.1 in der Webdisk hochgeladen. Der Code der neuen Version ist ebenfalls vorhanden.

      Changelog 1.1:

      - Verteiler-Logik wurde integriert
      - die Feuerwehrleute rüsten sich jetzt vor dem Anschließen des Schlauchs mit Pressluftatmer aus
      - Das Aufbauen einer Wasserversorgung von Fahrzeug zu Fahrzeug ist jetzt möglich
      - Bug gefixt, dass Personal manchmal nicht mehr löschen könnte
      - Icon-Bug gefixt. Alle Icons werden jetzt korrekt angezeigt
      - mit dem Drücken einer Shift-Taste, lässt sich die Priorität der Ankoppeln/Abkoppel-Commands herabsetzten. Nützlich bei zwei konkurierenden Commands.

      Das Abbauen der Wasserversorgung durch einen Klick auf das Fahrzeug wurde nicht eingebaut, da es sich als nicht intuitiv hergestellt hat, nachdem jetzt eine Verbindung von Fahrzeug zu Fahrzeug möglich war.

      Eine genaue Besschreibung der Verteiler-Logik ist im ersten Post verfügbar.
      Ein großes Dankeschön geht an @Grisu83 für das Modell des Verteiler.

      Jetzt wünsche ich allen eine gute Nacht und hoffentlich viel Spaß mit dieser Mod. Bugs und Wünsche bitte wieder hier melden.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von carli96 ()

    • Habe einen "Bug" gefunden.

      Sobald ich mit 2 Feuerwehrleuten gleichzeitig zwei Leitungen abbauen will,
      rennen sie beide zu einer Leitung und es stürzt ab.

      emergency5.exe caused ACCESS_VIOLATION in module "D:\Spiele\SteamLibrary\steamapps\common\Emergency 2017\data\my_project\x64\watertank_plugin.dll" at 0033:00000000E46D25D5, watertank::MessageListener::shutdown()+58440 byte(s)
    • Danke für den Bugreport. Der wurde behoben, jetzt ist ein Anschließen/Abschließen nur noch möglich, wenn nur eine Person selektiert ist. Ist aber noch nicht hochgeladen. Hier muss erst noch mehr kommen, was ich umsetzten kann, damit sich ein Update lohnt

      Was ich vergessen habe:
      Ebenfalls enthalten in Version 1.1:

      - mit dem Drücken einer Shift-Taste, lässt sich die Priorität der Ankoppeln/Abkoppel-Commands herabsetzten. Nützlich bei zwei konkurierenden Commands.
    • Ein Wunsch:
      -Wenn ein Feuerwehrmann nicht mehr genug Schlauchlänge besitzt rennt er direkt zum Fahrzeug und kuppelt alles ab.
      Das ist sehr lästig. Dies eventuell zu beheben.

      Ein weiterer Bug:
      -Verteiler lässt sich erst abbauen wenn alles andere Abgekuppelt ist.
      -->Ansonsten stürzt es ab oder er macht die Animation und es passiert nichts

      emergency5.exe caused ACCESS_VIOLATION in module "D:\Spiele\SteamLibrary\steamapps\common\Emergency 2017\bin\x64r\em5.dll" at 0033:00000000D3337B00, em5::GotoObjectFrontsideTargetPointProvider::calculateTargetPoints()+1056 byte(s)
      emergency5.exe caused ACCESS_VIOLATION in module "D:\Spiele\SteamLibrary\steamapps\common\Emergency 2017\data\my_project\x64\watertank_plugin.dll" at 0033:00000000E2BE2252, watertank::MessageListener::shutdown()+57541 byte(s)

      -TLF Monitor lässt sich manuell nicht mehr steuern

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von AirStrike01 ()

    • Wenn keiner weiteren Wünsche kommen, werde ich heute Abend die Bugfixes hochladen und den Wassertank Wassertank sein lassen




      AirStrike01 schrieb:

      -Wenn ein Feuerwehrmann nicht mehr genug Schlauchlänge besitzt rennt er direkt zum Fahrzeug und kuppelt alles ab.
      Das ist sehr lästig. Dies eventuell zu beheben.
      Was wäre denn ein alternativer Umgang deiner Ansicht, wenn der Punkt zu weit weg ist? Gar nicht erst laufen oder eine unendliche Schlauchleitung?


      AirStrike01 schrieb:

      Ein weiterer Bug:
      -Verteiler lässt sich erst abbauen wenn alles andere Abgekuppelt ist.
      -->Ansonsten stürzt es ab oder er macht die Animation und es passiert nichts
      Ich kann den Fehler insofern nicht reproduzieren, dass der Verteiler nur anklickbar ist, wenn kein anderer angeschlossen ist.
      Ich hatte aber bei einer bestimmten Konfiguration mit einer Hydrantenleitung auch ein BTD bekommen. Dieser Fehler wurde auch gefunden und behoben

      AirStrike01 schrieb:

      -TLF Monitor lässt sich manuell nicht mehr steuern
      wurde ebenfalls behoben
    • carli96 schrieb:

      Gar nicht erst laufen
      Das wäre meiner Meinung nach besser. Oder es kommt eine kurze Fehlermeldung.
      Wie z.B. Die Schhlauchlänge ist für diesen Weg nicht ausreichend.

      Eventuell zur "Schönheit":
      Eine Person die den Verteiler besetzen muss?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AirStrike01 ()

    • Hallo Carli,

      vorneweg schon mal, tolle Sache gefällt mir sehr gut.

      Wäre es denn möglich auch Schläuche auf dem TLF zu verlasten. Ich finde das irgendwie seltsam wenn ich zusätzlich zum TLF immer noch einen "RW"
      zur Einsatzstelle schicken muss um Schläuche vor Ort zu haben.

      Was mir noch aufgefallen ist: klickt man mit einem Feuerwehrmann welcher bereits mit einem Schlauch & PA ausgerüstet ist auf einen Hydranten, ein Fahrzeug oder
      einen Verteiler setzt er erst nochmal die Atemmaske auf bevor er los startet. Ich weiß nicht ob es machbar ist, das er das nur macht wenn noch kein PA ausgerüstet ist.
    • Danke für dein Lob.

      Das mit den Schläuchen am TLF ist möglich. In der Webdisk gibt es meines Wissens nach eine solche Modifikationen

      Zum PA. Das ist mir auch schon aufgefallen und ich habe gemerkt, dass dieser "Fehler" auch im Originalspiel ist.
      Ich habe nur einen Befehl gefunden, mit dem man die Maske auf und ab setzten lassen kann, aber keinen, mit dem man überprüfen kann, ob die Maske bereits aufgesetzt ist. Falls da jemand mehr weiß als ich, lasse ich mich gerne belehren