FMS Status 5 abfragen

  • für Einsätze gibt es die Funktion missionMarkerAdd, in diese kannst du dich vom Prinzip her auf die selbe Art reinhaken, wie in radioMessage.

    Cave: Die Funktion wird auch zum Updaten von bestehenden Einsätzen genutzt, du müsstest also bei Bedarf überprüfen, ob ein Einsatz bereits in der Einsatzliste vorhanden ist oder nicht.

  • Das hatte ich auch gesehen, als ich in der Konsole Mission eingegeben habe. Nur dachte ich wegen MarkerAdd das es zu dem LSS Manager gehört, um Einsätze zu markieren, habe es auch soweit hinbekommen nur habe ich nichts in

    JavaScript
    const missionMarkerAddOrigin = window.missionMarkerAdd
    window.missionMarkerAdd = e => {
    console.log(e);
    missionMarkerAddOrigin(e);
    };

    gefunden, womit ich dann wie in

    JavaScript
    if (
    e.user_id === window.user_id // Wir möchten nur eigene Sprechwünsche, keine vom Verband
    )

    das sperren kann das nur neue Einsätze gezählt werden und nicht bei jedem Update

  • Nur dachte ich wegen MarkerAdd das es zu dem LSS Manager gehört, um Einsätze zu markieren

    alle Funktionen, die global (auf window verfügbar) sind, enthalten irgendwie ein "lssm" oder "lssmv4" drin, um zu kennzeichnen, dass sie zum LSSM gehören.


    Das hatte ich auch gesehen, als ich in der Konsole Mission eingegeben habe. Nur dachte ich wegen MarkerAdd das es zu dem LSS Manager gehört, um Einsätze zu markieren, habe es auch soweit hinbekommen nur habe ich nichts in

    JavaScript
    const missionMarkerAddOrigin = window.missionMarkerAdd
    window.missionMarkerAdd = e => {
    console.log(e);
    missionMarkerAddOrigin(e);
    };

    gefunden, womit ich dann wie in

    JavaScript
    if (
    e.user_id === window.user_id // Wir möchten nur eigene Sprechwünsche, keine vom Verband
    )

    das sperren kann das nur neue Einsätze gezählt werden und nicht bei jedem Update

    Das ist auf jeden Fall schonmal ein guter Ansatz, das Reinhaken funktioniert genau so :thumbup:

    Du hast ja sicher das Objekt schon gesehen, das missionMarkerAdd übergeben wird. Wir haben das natürlich auch schon öfters benötigt und deshalb mal etwas aufgeschlüsselt. Das Ergebnis findest du unter https://github.com/LSS-Manager…pings/Ingame.d.ts#L64-L96, Zeilen 64-96.

    Für deinen Code, kannst du das natürlich wieder nicht direkt verwenden, aber es hilft zu verstehen, was die missionMarkerAdd-Funktion überhaupt übergeben bekommt.

    Wichtig ist für dich in diesem Fall das Attribut id, welches die Einsatz-ID enthält.


    Wie überprüfst du nun, ob der Einsatz neu ist?

    Ich würde das relativ einfach angehen und schauen, ob der Einsatz bereits in der Einsatzliste ist, also ob ein Element mit der ID mission_2590883096 existiert, wobei die Zahl hinten natürlich die jeweilige Einsatz-ID ist.

    Kannst du damit schon was anfangen oder brauchst du noch etwas mehr Hilfestellung?

  • Code
    const missionMarkerAddOrigin = window.missionMarkerAdd; // die Spiel-Interne Funktion radioMessage in einer lokalen Variable abspeichernwindow.missionMarkerAdd = e => { // Hier überschreiben wir jetzt die Spiel-Interne Funktion radioMessage if (e.mission_id == mission_list(mission_id)) alert('ja'); else alert('nein'); if ( e.user_id === window.user_id // Wir möchten nur eigene Sprechwünsche, keine vom Verband ) missionMarkerAddOrigin(e); // Die Originale Funktion muss wieder aufgerufen werden, sonst funktioniert das Spiel ja nicht mehr richtig};

    Ich hätte es irgendwie so gemacht, was falsch ist zumindest halb, weiß nicht wie ich aus

    Code
    <div search_attribute="Feuer in Einfamilienhaus B 49, 35792 Löhnberg" id="mission_2592019964" mission_id="2592019964" .......

    Die ID bekomme aus dem Codeblock

  • du könntest z.B. if (!document.querySelector(`#mission_${e.mission_id}`)) verwenden. Der Code im If-Block wird dann nur ausgeführt, wenn der Einsatz noch nicht in der Einsatzliste steht.

  • Lektüre dazu:
    https://developer.mozilla.org/…PI/Document/querySelector

    https://developer.mozilla.org/…I/Document/getElementById



    Edit: Erklärung von Jans Code:
    if (!document.querySelector(`#mission_${e.mission_id}`))

    ! negiert die Aussage. Also alles wahre wird unwahr (falsch) und umgekehrt. Da javascript (leider/zum Glück) nicht type safe (https://de.wikipedia.org/wiki/Typsicherheit) ist kann man die Rückgabe von einem QuerySelector/elementById (object) als wahr oder falsch lesen.


    ` sind besondere Anführungszeichen (https://developer.mozilla.org/…ference/Template_literals). Sie werden nicht durch Zeilenumbrüche beendet und werden bestimmte Elemente ${..} nicht als Text sondern als Code erkannt und ausgeführt.


    ${...} ermöglicht es Code-Variablen in Texte zu integrieren ohne Verrenkungen alà let x = "constanter Text"+variable+ "weiter konstanter Test"; machen zu müssen.

    Ein Vakuum, geschaffen durch fehlende Kommunikation,

    füllt sich in kürzester Zeit mit falscher Darstellung, Gerüchten, Geschwätz und Gift. - Cyril Northcote Parkinson


    Der beste Verband in Aachen und Umgebung: leitstellenspiel.de/alliances/1100



    Schraube manchmal am LSSM V4 rum.

    Einmal editiert, zuletzt von Crazycake ()

  • also so oder

  • also so oder

    wie heißt's so schön: Try it and see ;)

  • habe ich aber dann kommt ein fehler

    Das ist kein Fehler, sondern nur ein Hinweis bzgl. des Abspielens von Medien (z.B. Audio), hat also nichts mit deinem Script zu tun :)

  • Das hatte ich schon bearbeitet


    Das ist der code denn ich da habe

  • Tipp: Versuche mit Einrückungen zu arbeiten, dann werden dir manche Fehler schneller klar.

    Was dir jetzt gerade Probleme macht ist ein einzelnes Zeichen: Das Semikolon ; in Zeile 8. Denn das sorgt dafür, dass im if nur ein leeres Statement ("nichts") ausgeführt wird, d.h. das Aufrufen des Webhooks wird jetzt immer ausgeführt, unabhängig davon ob der Einsatz bereits existiert oder nicht. Das Aufrufen des Webhooks ist nämlich außerhalb des if-Blocks. Dem ganzen Abhilfe verschaffen könntest du z.B. durch Löschen des Semikolons in Zeile 8.

  • JavaScript
    const missionMarkerAddOrigin = window.missionMarkerAdd; // die Spiel-Interne Funktion radioMessage in einer lokalen Variable abspeichern
    window.missionMarkerAdd = e => { // Hier überschreiben wir jetzt die Spiel-Interne Funktion radioMessage
    var address = e.address
    var caption = e.caption
    if (e.user_id === window.user_id) // Wir möchten nur eigene Sprechwünsche, keine vom Verband
    {if (!document.querySelector(`#mission_${e.mission_id}`))
    fetch('https://trigger.macrodroid.com/7674ce82-2feb-4e85-b640-cb6b38b14c47/Fahrzeug?Einsatz='+caption+" in "+address)}
    missionMarkerAddOrigin(e); // Die Originale Funktion muss wieder aufgerufen werden, sonst funktioniert das Spiel ja nicht mehr richtig
    };

    Also so eig aber der sendet das dann trotzdem bei jedem Update

  • Das hier hat zwar jetzt nicht mit ls zu tun, aber ich denke, du weißt eher wie das geht. Habe zwar selber geschaut wie ich eine class in einer var speicher aber ohne Erfolg


    JavaScript
    var Now = document.getElementsByClassName("data-testid");
        {if (Now ==='now-playing-widget');    var Song = document.getElementsByClassName("aria-label");    window.alert(Song+Now)    }

    Ich wollte damit auch mein Webhook triggern (window.alert(Song+Now)) ist nur dafür um zu schauen was ausgegeben wird. Nur leider wird mir

    [object HTMLCollection][object HTMLCollection] wiedergegeben was ja falsch ist und damit du verstehst, was ich tun wollte. Über den Webplayer von Spotify mir den Song Name über das webhook senden


    Code
    <div data-testid="now-playing-widget" class="deomraqfhIAoSB3SgXpu" role="contentinfo" aria-label="Aktueller Titel: Bilder ohne Rahmen von Dame"

    wo der Songname steht, Helfen musst du nicht wäre dir aber echt dankbar

  • Ich denke, solche Probleme die das Spiel nicht betreffen sollten wir nicht hier drin lösen sondern eher im privaten Kontext, damit es nicht zu Off-Topic wird.

    Schreib mir gern mal ne Konversation mit dem Problem.

  • Ich bin heute hier über euren Austausch zum FMS-Status gestolpert. Danke Jan (jxn_30) und Crazycake für eure geduldigen Erklärungen. Da habe ich mir auch einiges für mich mitgenommen.


    Beim Status 5 habe ich regelmäßig den Effekt, dass bei Gefangentransporten, die durch den Polizei DGL veranlasst werden, sich ein FuStW oder ein GefKW oder der DGL selber mit Status 5 melden. Die tauchen dann in der Funk-Liste mit Status 5 auf, bleiben für ein paar Sekunden und verschwinden dann wieder.


    Das stört mich und ich möchte das mit einem Script unterbinden. Am Anfang meiner Überlegungen hatte ich die Hoffnung, dass sich in dem Event radioMessage der Status e.fms vom echten Status e.fms_real in diesen Fällen unterscheidet.


    Weiter oben wurde aber beschrieben, dass mit diesen beiden Attributen die Farbe und die Zahl unterschieden wird. Schade für mich.


    Kann man anhand anderer Daten unterscheiden, dass hier gar kein ernstgemeinter Status 5 vorliegt?

  • Kann man anhand anderer Daten unterscheiden, dass hier gar kein ernstgemeinter Status 5 vorliegt?

    indirekt ja:

    vehicles-API => target type & target id => rausfinden, ob ein DGL vor Ort ist => dann fake-S5.


    Aber schön, dass du es ansprichst, das nervt mich auch regelmäßig :D