[Script] EinsatzCredits v3.0

  • Hier ist das Bild eines Einsatzes. Und dort im Einsatzhelfer sind nur die Credits Aktiv. Das ist dir schon zu Groß?

    Und dann kannst den auch noch in den Overlay-Modus bringen, dann isser noch kleiner :saint:

  • Ich persönlich nutze auch den LSSM und hatte gar nicht bedacht, dass das als "Nicht-LSSM-Nutzer" dort ja gar nicht einsehbar ist.
    Falls Interesse besteht, kann ich es natürlich gerne auch auf der Seite anzeigen lassen. Ansonsten würde ich es einfach so lassen wie es jetzt ist. :)

  • Ich persönlich nutze auch den LSSM und hatte gar nicht bedacht, dass das als "Nicht-LSSM-Nutzer" dort ja gar nicht einsehbar ist.
    Falls Interesse besteht, kann ich es natürlich gerne auch auf der Seite anzeigen lassen. Ansonsten würde ich es einfach so lassen wie es jetzt ist. :)

    Ich würde mir es wünschen.

  • Aufgrund der Änderungen der Einsatz api scheint das Skript momentan nicht zu funktionieren
    ViperAC hast du dies schon mitbekommen?

    ViperAC war schon seit Februar nichtmehr aktiv.


    Hotfix:

    Im Script in den Zeilen 61, 86 und 89 den code parseInt(missionTypeID) durch missionTypeID austauschen müsste klappen.

  • Guten Tag!!


    Ich habe leider paar probleme mit den Einsatzcredits zu sehen ?

    Kann mir da einer helfen bin noch sehr neu hier hab wohl scribt darüber bekommen aber mit vielen gelben !!!!! Rufzeichen

    wie kann ich das aktuliesieren ?

    Würde mich freuen wenn mir einer bitte helfen Könnte?


    Danke im vorraus


    Zamira

  • Zeig mal, was im Tampermonkey steht. die gelben Ausrufezeichen in Tampermonkey kann man in der Regel ignorieren.

  • // ==UserScript==

    // @name EinsatzCredits

    // @namespace http://havenith.nrw/

    // @version 3.1.2

    // @description Dieses Script zeigt zu jedem Einsatz an, wie viele Credits man im Durchschnitt bekommt

    // @author ViperAC (Original by itsDreyter)

    // @match https://www.leitstellenspiel.de/

    // @updateURL https://havenith.nrw/lss/EinsatzCredits.user.js

    // @downloadURL https://havenith.nrw/lss/EinsatzCredits.user.js

    // @grant none

    // ==/UserScript==

    (function () {

    'use strict';

    var requirements;

    function getResponseText(credits) {

    if (credits === null) {

    return 'Credits im Durchschnitt: <span style="font-weight:bold;">Vergütung durch Rettungsdienst</span>';

    } else {

    return `Credits im Durchschnitt: <span style="font-weight:bold;">${credits}</span>`;

    }

    }

    var originalFunc = missionMarkerAdd;

    missionMarkerAdd = function (e) {

    originalFunc.apply(this, arguments);

    update(e);

    }

    async function update(e) {

    if (!window.sessionStorage.hasOwnProperty('aMissions') || JSON.parse(window.sessionStorage.aMissions).lastUpdate < (new Date().getTime() - 24 * 1000 * 60)) {

    await fetch('/einsaetze.json')

    .then(res => res.json())

    .then(data => window.sessionStorage.setItem('aMissions', JSON.stringify({

    lastUpdate: new Date().getTime(),

    value: data,

    user_id: window.user_id

    })));

    }

    requirements = JSON.parse(window.sessionStorage.getItem("aMissions"));

    let missionList = $('.missionSideBarEntry');

    for (let i = 0; i < missionList.length; i++) {

    let childList = missionList[i].firstElementChild.firstElementChild.children;

    let isExist = false;

    if (e.id !== parseInt(missionList[i].getAttribute('mission_id'))) continue;

    for (let ic = 0; ic < childList.length; ic++) {

    if (childList[ic].className === 'missionCredits') {

    isExist = true;

    break;

    }

    }

    if (isExist === true && e.mtid !== null) {

    for (let j = 0; j < childList.length; j++) {

    if (childList[j].className !== 'missionCredits') continue;

    let credits = requirements.value.filter(r => r.id === parseInt(e.mtid))[0]['average_credits'];

    let child = childList[j];

    missionList[i].firstElementChild.firstElementChild.removeChild(child);

    child.innerHTML = getResponseText(credits);

    missionList[i].firstElementChild.firstElementChild.appendChild(child);

    }

    } else {

    let missionTypeID = missionList[i].getAttribute('mission_type_id');

    if (missionTypeID === "null") continue;

    let credits = requirements.value.filter(e => e.id === parseInt(missionTypeID))[0]['average_credits'];

    let missionRow = document.createElement('div');

    missionRow.innerHTML = getResponseText(credits);

    missionRow.setAttribute("class", "missionCredits");

    missionRow.setAttribute("id", "missionCredits_" + missionList[i].getAttribute('mission_id'));

    missionList[i].firstElementChild.firstElementChild.appendChild(missionRow);

    }

    }

    }

    async function init() {

    if (!window.sessionStorage.hasOwnProperty('aMissions') || JSON.parse(window.sessionStorage.aMissions).lastUpdate < (new Date().getTime() - 24 * 1000 * 60)) {

    await fetch('/einsaetze.json')

    .then(res => res.json())

    .then(data => window.sessionStorage.setItem('aMissions', JSON.stringify({

    lastUpdate: new Date().getTime(),

    value: data,

    user_id: window.user_id

    })));

    }

    requirements = JSON.parse(window.sessionStorage.getItem("aMissions"));

    let missionList = $('.missionSideBarEntry');

    $('.missionCredits').remove();

    for (let i = 0; i < missionList.length; i++) {

    let missionTypeID = missionList[i].getAttribute('mission_type_id');

    if (missionTypeID === "null") continue;

    let credits = requirements.value.filter(e => e.id === parseInt(missionTypeID))[0]['average_credits'];

    if (credits === undefined) {

    requirements = await getMissionListByAPI();

    credits = requirements.value.filter(e => e.id === parseInt(missionTypeID))[0]['average_credits'];

    }

    let missionRow = document.createElement('div');

    missionRow.innerHTML = getResponseText(credits);

    missionRow.setAttribute("class", "missionCredits");

    missionRow.setAttribute("id", "missionCredits_" + missionList[i].getAttribute('mission_id'));

    missionList[i].firstElementChild.firstElementChild.appendChild(missionRow);

    }

    }

    init();

    }

    )();



    so hab ich das abgespeichet im tampermonkey aber es funktioniert net man kann keine einsatzcredis sehen

  • Das gehört in den Thread [Script] EinsatzCredits v3.0. (@Mods verschieben?)


    Ein Hotfix habe ich in den Thread geschrieben:

    ViperAC war schon seit Februar nichtmehr aktiv.


    Hotfix:

    Im Script in den Zeilen 61, 86 und 89 den code parseInt(missionTypeID) durch missionTypeID austauschen müsste klappen.

  • Wenn du im Spiel bist, drück mal F12 und geh dann auf "Konsole". Dann lade das Spiel neu und schau, ob dort eine rote Fehlermeldung kommt. Wenn ja, was steht da drin?


  • Hatte gerade mal in die Console geschaut und habe dort diesen Fehler gefunden. Das Script funktioniert auch soweit , nur hat es meine komplette Console voll damit.


    Jemand eine Idee, wie ich das beheben kann?


  • Hatte gerade mal in die Console geschaut und habe dort diesen Fehler gefunden. Das Script funktioniert auch soweit , nur hat es meine komplette Console voll damit.


    Jemand eine Idee, wie ich das beheben kann?

    let credits = requirements.value.filter(e => e.id === missionTypeID)[0] ? requirements.value.filter(e => e.id === missionTypeID)[0]['average_credits'] : 0;

  • let credits = requirements.value.filter(e => e.id === missionTypeID)[0] ? requirements.value.filter(e => e.id === missionTypeID)[0]['average_credits'] : 0;

    was allerdings Performancetechnisch nicht besonders sinnvoll ist, weil du zwei mal komplett durch requirements.value iterierst und dir das Ergebnis nicht merkst.

    Seit letztem Jahr oder so lässt sich das mit optional Chaining lösen: let credits = requirements.value.filter(e => e.id === missionTypeID)[0]?.average_credits; ;)


    Ist trotzdem natürlich beides korrekt und auf die paar µs kommt es in dem Fall sicher nicht an ^^