[Script] Mission-Alarm-Speaker

  • Tach zusammen,


    auf Wunsch von HiOrg-Jonas hab ich das Script mal angefertigt, auf Nachfrage von Crazycake hier jetzt die Veröffentlichung: https://github.com/jxn-30/LSS-…ion-Alarm-Speaker.user.js

    Was macht das Script? Es liest einfach nur vor, was für Fahrzeuge von welchen Wachen alarmiert wurden optional mit nem Gong davor.


    Einstellungen:

    Zeile 13: true bedeutet, dass er den Fahrzeugtyp vorliest, false, dass er den Fahrzeugnamen vorliest.

    Zeile 14: true für Gong abspielen, false für net abspielen.

    Zeile 15: URL für einen Gong.


    Dieses Script wird nur im absolutesten Notfall supported, da es schnell geschrieben wurde und ich persönlich noch keine große Bindung zum Code aufbauen konnte ^^



    Grüße

    Jan

  • Nö, kennst docj meine Standartfrage: Wirds das auch für die UK version geben? Ich habs ja schon versucht, bloß geworden ist es natürlich nix||



    // ==UserScript==

    // @name GongUK

    // @namespace http://tampermonkey.net/

    // @version 0.1

    // @description try to take over the world!

    // @author You

    // @match https://www.missionchief.co.uk/

    //https:\/\/www.missionchief.co.uk/missions/\d+/

    // @grant none

    // ==/UserScript==


    (function() {

    'use strict';


    const useVehicleType = true;

    const playGong = false;

    const gongUrl = '';


    const alarmBtns = document.getElementById('mission_alarm_btn').parentElement.children;

    Array.from(alarmBtns).forEach(btn => btn.addEventListener('click', () => {

    const vehicles = Array.from(document.querySelectorAll('#vehicle_show_table_body_all .vehicle_select_table_tr')).filter(r => r.querySelector('.vehicle_checkbox:checked'));

    const buildings = {};

    vehicles.forEach(vehicle => {

    const building = vehicle.querySelector('a[href^="/buildings/"]');

    if (!building) return;

    const buildingCaption = building.textContent.trim();

    const buildingId = building.href.match(/\d+$/)[0];

    if (!buildings.hasOwnProperty(buildingId)) buildings[buildingId] = {caption: buildingCaption, vehicles: []};

    //buildings[buildingId].vehicles.push(vehicle.querySelector('.mission_vehicle_label').textContent.trim());

    buildings[buildingId].vehicles.push(useVehicleType ? vehicle.getAttribute('vehicle_type') : vehicle.querySelector('.mission_vehicle_label').textContent.trim());

    });

    let speech = 'Alarm für: ' + Object.values(buildings).map(b => `Von der Wache ${b.caption}: ${b.vehicles}!`).join(' ') + 'Für: ' + document.getElementById('missionH1').textContent.trim();

    speech = speech.replace(/ +/g, ' ');


    tellParent(`const alarmt2s = new SpeechSynthesisUtterance();alarmt2s.text = ${JSON.stringify(speech)};alarmt2s.lang = speechSynthesis.getVoices().find(voice => voice.lang === 'de');alarmt2s.rate = 1;${playGong ? `const gong = new Audio('${gongUrl}');gong.addEventListener('ended', () => ` : ''}speechSynthesis.speak(alarmt2s)${playGong ? `);gong.play();` : ''}`);

    }));

    })();

  • Ich hab da mal ne Frage Jan (jxn_30) : Woran könnte es liegen dass wenn etwas mehr Fahrzeuge alarmiert werden, die Ansage nach 3 Fahrzeugen mitten im Satz aufhört? Hatte jetzt 6 Fahrzeuge von 5 verschiedenen Wachen alarmieren wollen

    Gibt es da eine Art Begrenzung wie viel ausgesprochen wird/werden kann?

  • Ich hab da mal ne Frage Jan (jxn_30) : Woran könnte es liegen dass wenn etwas mehr Fahrzeuge alarmiert werden, die Ansage nach 3 Fahrzeugen mitten im Satz aufhört? Hatte jetzt 6 Fahrzeuge von 5 verschiedenen Wachen alarmieren wollen

    Gibt es da eine Art Begrenzung wie viel ausgesprochen wird/werden kann?

    Wenn du in einem eigenen Tab alarmierst, dann wird nur so lang gesprochen, bis ein Seitenwechsel passiert (geht net anders). Wenn du direkt im Hauptfenster alarmierst, sollte es eigentlich nicht zum Abbruch kommen.

  • Wenn du in einem eigenen Tab alarmierst, dann wird nur so lang gesprochen, bis ein Seitenwechsel passiert (geht net anders). Wenn du direkt im Hauptfenster alarmierst, sollte es eigentlich nicht zum Abbruch kommen.

    Ich bin mir jetzt nicht sicher wie du das meinst. Ich alarmiere indem ich den Einsatz auf der Karte auswähle und in dem sich öffnenden Fenster alarmiere.


    Ist das jetzt der "eigene Tab" oder die Hauptseite? Ich habe da leider nicht so die Ahnung von 🙈

  • Dankeschön, für die schnelle Antwort. Hat geholfen.

    Du klickst im Browser oben rechts auf das Tampermonkey-Icon, wenn du im Spiel bist.

    Das war der erhellende Hinweis. Dankeschön.

    Grüße :saint:

    Oftmals sind wir doch nur der Spiegel für Andere.

    Kreisbrandmeister(in)

    Verbandsadmin(in)

  • Hi.
    Zwo Fragen:
    Welches Format muss der Sound des Gongs haben, um ihn einzuführen, und kann mir wer da vielleicht einen schicken? Meine Sounds mag er anscheinend nicht.
    Gibt es die Möglichkeit die Stimme zu ändern? Wenn ja, was müsste ich dafür tun?

    Ansonsten, nettes Skript.
    LG Thorben

  • Der Gong muss ein Format haben, das dein Browser abspielen kann.

    .ogg .wav oder .mp3 sollten eigentlich alle Browser können.

    Das Ändern der Stimme geht wenn ich das richtig versteh nur übers Betriebssystem.

    Ok. Danke. Man sollte auch True und false unterscheiden können...
    Hätte noch einen kleinen Bug gefunden, wenn es einer ist: Er liest dir auch die "Ehemaligen" Einsätze vor, wenn sich ein Einsatz ausgebreitet hat. Außerdem liest er auch immer das Einsatzstichwort mit vor (wenn das Plugin dafür aktiv ist.). Beides empfinde ich jetzt allerdings nicht als als zustörend. Wollte es nur erwähnen.

  • Hätte noch einen kleinen Bug gefunden, wenn es einer ist: Er liest dir auch die "Ehemaligen" Einsätze vor, wenn sich ein Einsatz ausgebreitet hat. Außerdem liest er auch immer das Einsatzstichwort mit vor (wenn das Plugin dafür aktiv ist.). Beides empfinde ich jetzt allerdings nicht als als zustörend. Wollte es nur erwähnen.

    Bei anderen Scripts würde ich das beheben, für dieses gibt es aber nur eingeschränkten Support, deshalb:

    It's not a Bug, it's a Feature 8o