Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.5k Themen 213.3k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    R
    hier noch etwas überarbeitet und ohne Warnungen // version: 0.2.6 ////////////////////////////////////////////////// const locationName = 'wo auch immer'; ////////////////////////////////////////////////// // Schriftgrößen-Konfiguration const fontSizeCurrentLabel = '1.3rem'; const fontSizeTempBig = '3.8rem'; const fontSizeDescription = '1.1rem'; const fontSizeInfoGrid = '0.85rem'; const fontSizeSunMoon = '0.8rem'; const fontSizeHourly = '0.75rem'; const fontSizeHourlyRain = '0.65rem'; const fontSizeForecastDay = '0.75rem'; const fontSizeForecastText = '0.65rem'; const fontSizeForecastTempMax = '1rem'; const fontSizeForecastTempMin = '0.85rem'; const fontSizeForecastDetails = '0.65rem'; const version = '0.2.6'; const dpBase = 'open-meteo-weather.0.' + locationName + '.weather'; const forecast = dpBase + '.forecast'; const targetDP = '0_userdata.0.Wetter_Widget_HTML'; // Sprach-Check let sysLang = 'de'; try { const systemConfig = getObject("system.config"); sysLang = systemConfig.common.language || 'de'; } catch (e) { sysLang = 'de'; } const i18n = { de: { current: "Aktuell" }, en: { current: "Current" } }; const lang = i18n[sysLang] || i18n['en']; // DP anlegen falls nicht vorhanden if (!existsState(targetDP)) { createState(targetDP, '', { name: 'Weather Widget for VIS', type: 'string', role: 'html' }); } // ------------------------------------------------------------ // Hilfsfunktionen // ------------------------------------------------------------ // HEUTE aus JavaScript, kompakt function getToday() { const d = new Date(); const day = String(d.getDate()).padStart(2, "0"); const month = String(d.getMonth() + 1).padStart(2, "0"); const year = d.getFullYear(); return `${day}.${month}.${year}`; } function getVal(id, unit = "") { if (!existsState(id)) return "--" + unit; let state = getState(id); if (!state || state.val === null || state.val === undefined) return "--" + unit; return state.val + unit; } function getImg(id, size = "20px") { if (!existsState(id)) return ""; let state = getState(id); if (!state || !state.val) return ""; return `<img src="${state.val}" style="width:${size}; height:${size}; object-fit:contain;">`; } function getNum(id) { let s = getState(id); return (!s || s.val === null || s.val === undefined) ? null : Number(s.val); } function getSunHours(id) { let sec = getNum(id); if (sec === null) return "--h"; return (sec / 3600).toFixed(1) + "h"; } // ------------------------------------------------------------ // Hauptfunktion // ------------------------------------------------------------ function updateWeatherWidget() { // ⭐ AB HIER: ALLES UNVERÄNDERT GELASSEN let html = ` <style> @keyframes moonGlow { 0% { filter: drop-shadow(0 0 2px #fbbf24); opacity: 0.85; } 50% { filter: drop-shadow(0 0 6px #fbbf24); opacity: 1; } 100% { filter: drop-shadow(0 0 2px #fbbf24); opacity: 0.85; } } .moon-anim { animation: moonGlow 3.5s ease-in-out infinite; } .w-container { font-family: 'Segoe UI', sans-serif; background: linear-gradient(160deg, #1e293b 0%, #0f172a 100%); color: #f1f5f9; padding: 10px; border-radius: 20px; border: 1px solid #334155; box-shadow: 0 10px 30px rgba(0,0,0,0.5); } .w-header { display: grid; grid-template-columns: 1.2fr 1.5fr 1fr; gap: 10px; background: rgba(255,255,255,0.05); padding: 10px; border-radius: 10px; margin-bottom: 10px; border: 1px solid rgba(255,255,255,0.1); } .w-temp-big { font-size: ${fontSizeTempBig}; font-weight: 900; color: #fbbf24; line-height: 1; } .w-desc { font-size: ${fontSizeDescription}; color: #38bdf8; font-weight: 600; } .w-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; font-size: ${fontSizeInfoGrid}; margin-top: 10px; } .w-info-item { background: rgba(0,0,0,0.2); padding: 6px 10px; border-radius: 10px; display: flex; align-items: center; gap: 5px; } .w-sun-moon { font-size: ${fontSizeSunMoon}; line-height: 1.6; border-left: 1px solid rgba(255,255,255,0.1); padding-left: 15px; } .w-hourly { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-bottom: 10px; background: rgba(0,0,0,0.15); padding: 10px; border-radius: 15px; } .w-h-item { text-align: center; font-size: ${fontSizeHourly}; } .w-h-time { font-weight: bold; color: #38bdf8; } .w-h-temp { font-weight: bold; color: #fbbf24; display: block; } .w-h-rain { font-size: ${fontSizeHourlyRain}; color: #94a3b8; } .w-forecast { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; } .w-fc-day { background: rgba(255,255,255,0.03); padding: 12px 8px; border-radius: 18px; text-align: center; border: 1px solid rgba(255,255,255,0.05); display: flex; flex-direction: column; justify-content: space-between; } .w-fc-name { font-weight: bold; color: #38bdf8; font-size: ${fontSizeForecastDay}; text-transform: uppercase; margin-bottom: 2px; } .w-fc-text { font-size: ${fontSizeForecastText}; color: #94a3b8; min-height: 2.2em; display: flex; align-items: center; justify-content: center; text-align: center; margin-bottom: 5px; } .w-fc-temp-max { color: #f87171; font-weight: bold; font-size: ${fontSizeForecastTempMax}; display: block; text-align: center; } .w-fc-temp-min { color: #60a5fa; font-size: ${fontSizeForecastTempMin}; display: block; margin-bottom: 5px; text-align: center; } .w-fc-day img { margin: 2px 0 4px 0; } .w-fc-details { font-size: ${fontSizeForecastDetails}; color: #94a3b8; border-top: 1px solid rgba(255,255,255,0.05); margin-top: 8px; padding-top: 8px; } </style> <div class="w-container"> <div class="w-header"> <div style="text-align: center;"> <div style="font-size:${fontSizeCurrentLabel}; font-weight:bold;"> ${lang.current} / ${getVal(forecast + '.day0.name_day')} </div> <div style="font-size:0.75rem; color:#94a3b8; margin-top:0;"> ${getToday()} </div> ${getImg(dpBase + '.current.icon_url', "80px")} <div class="w-desc">${getVal(dpBase + '.current.weather_text')}</div> </div> <div> <div class="w-temp-big">${getVal(dpBase + '.current.temperature_2m', " °C")}</div> <div style="font-weight:bold; margin-bottom:10px;"> <span style="color:#f87171">${getVal(forecast + '.day0.temperature_2m_max', " °C")}</span> | <span style="color:#60a5fa">${getVal(forecast + '.day0.temperature_2m_min', " °C")}</span> </div> <div class="w-info-grid"> <div class="w-info-item">💧 ${getVal(dpBase + '.current.relative_humidity_2m', "%")}</div> <div class="w-info-item">🌧️ ${getVal(forecast + '.day0.precipitation_sum', "mm")}</div> <div class="w-info-item">☀️ ${getSunHours(forecast + '.day0.sunshine_duration')}</div> <div class="w-info-item">☁️ ${getVal(dpBase + '.current.cloud_cover', "%")}</div> <div class="w-info-item">💨 Wind ${getVal(dpBase + '.current.wind_speed_10m', " km/h")}</div> <div class="w-info-item">🌬️ Böen ${getVal(dpBase + '.current.wind_gusts_10m', " km/h")}</div> </div> </div> <div class="w-sun-moon" style="position:relative;"> 🌅 ${getVal(forecast + '.day0.sunrise')}<br> 🌇 ${getVal(forecast + '.day0.sunset')}<br> 🌙 ${getVal(forecast + '.day0.moonrise')}<br> 🌘 ${getVal(forecast + '.day0.moonset')}<br> <div style="margin-top:6px;"> ${getImg(forecast + '.day0.moon_phase_icon', "34px")} <div class="moon-anim" style="font-size:0.75rem; color:#cbd5e1;"> ${getVal(forecast + '.day0.moon_phase_text')} </div> </div> <div style="margin-top:10px;"> 💨 Richtung: ${getVal(dpBase + '.current.wind_direction_text')}<br> ${getImg(dpBase + '.current.wind_direction_icon', "30px")} </div> <div style="position:absolute; bottom:-10px; right:0; font-size:0.6rem; color:#475569; opacity:0.8;"> Script Version ${version} </div> </div> </div> <div class="w-hourly"> `; // Stunden – mit Wind + Mond for (let h = 0; h <= 5; h++) { let hPath = forecast + '.hourly.next_hours.hour' + h; let isNight = getNum(hPath + '.is_day') === 0; html += ` <div class="w-h-item"> <div class="w-h-time">${getVal(hPath + '.time')}</div> ${getImg(hPath + '.icon_url', "30px")} <span class="w-h-temp">${getVal(hPath + '.temperature_2m', " °C")}</span> <span class="w-h-rain"> 🌧️${getVal(hPath + '.precipitation_probability', "%")} / ${getVal(hPath + '.precipitation', "mm")} </span> <div style="margin-top:4px; font-size:0.7rem; color:#cbd5e1;"> 💨 ${getVal(hPath + '.wind_speed_10m', " km/h")} 🌬️ ${getVal(hPath + '.wind_gusts_10m', " km/h")} </div> <div style="margin-top:2px;"> ${getImg(hPath + '.wind_direction_icon', "32px")} <span style="font-size:0.7rem; color:#94a3b8;"> ${getVal(hPath + '.wind_direction_text')} </span> </div> ${ isNight ? ` <div style="margin-top:4px;"> ${getImg(hPath + '.moon_phase_icon', "24px")} <div style="font-size:0.65rem; color:#cbd5e1;"> ${getVal(hPath + '.moon_phase_text')} </div> </div> ` : "" } </div> `; } html += ` </div> <div class="w-forecast"> `; // 6-Tage-Vorhersage for (let i = 1; i <= 6; i++) { let d = forecast + '.day' + i; html += ` <div class="w-fc-day"> <div> <div class="w-fc-name">${getVal(d + '.name_day')}</div> <div class="w-fc-text">${getVal(d + '.weather_text')}</div> ${getImg(d + '.icon_url', "50px")} <span class="w-fc-temp-max">${getVal(d + '.temperature_2m_max', " °C")}</span> <span class="w-fc-temp-min">${getVal(d + '.temperature_2m_min', " °C")}</span> </div> <div class="w-fc-details"> 🌧️ ${getVal(d + '.precipitation_sum', "mm")} (${getVal(d + '.precipitation_probability_max', "%")})<br> 💧 ${getVal(d + '.relative_humidity_2m_mean', "%")}<br> 💨 Wind ${getVal(d + '.wind_speed_10m_max', " km/h")}<br> 🌬️ Böen ${getVal(d + '.wind_gusts_10m_max', " km/h")}<br> ${getVal(d + '.wind_direction_text')}<br> ${getImg(d + '.wind_direction_icon', "32px")}<br> ${getImg(d + '.wind_gust_icon', "24px")}<br> ☀️ ${getSunHours(d + '.sunshine_duration')} </div> </div> `; } html += `</div></div>`; setState(targetDP, html, true); console.log("Weather widget: HTML successfully generated (v0.2.6-XYZ-SUN-CLOUD-C-DATE-COMPACT)."); } // Trigger updateWeatherWidget(); schedule("*/5 * * * *", updateWeatherWidget); on({id: dpBase + '.current.temperature_2m', change: 'any'}, updateWeatherWidget); on({id: forecast + '.hourly.next_hours.hour0.time', change: 'any'}, updateWeatherWidget); [image: 1770566801260-43377c6a-c836-4580-8f67-56ca3bac553b-image.png]
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    D
    Das hat leider nichts gebracht. Oder habe ich "löschen falls läuft" an der falschen sTelle angehakt? [image: 1770578718809-bildschirmfoto-vom-2026-02-08-20-24-28.png]
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Zigbee Status der LED

    7
    0 Stimmen
    7 Beiträge
    778 Aufrufe
    J
    @arteck Die Version des Zigbee Adapters ist die 1.10.4 (GIT Version) Mein Koordinator ist ein SLZB-06. Hier die entsprechende Kachel. [image: 1719342849452-screenshot_20240625-211115.png] Und die Kachel von den Lampen. [image: 1719342918691-screenshot_20240625-211034.png]
  • Zentral Status Licht

    12
    1
    0 Stimmen
    12 Beiträge
    901 Aufrufe
    paul53P
    @ft-knorr sagte: sagen kann, dass er Nullwerte ignorieren soll. Das sind keine Nullwerte, sondern der Datenpunkt hat keinen Zustand, da anscheinend "expire" verwendet wurde. Da hilft nur eine JS-Funktion mit Ergebnis: if(existsState(id)) return getState(id).val; [image: 1719212377475-blockly_temp.jpg]
  • Vorheriger Wert Baustein

    3
    1
    0 Stimmen
    3 Beiträge
    332 Aufrufe
    AsgothianA
    @darkdevil sagte in Vorheriger Wert Baustein: ich dachte das es eine gute Idee wäre auf den vorherigen Wert zu triggern. Wenn dieser von 0 (alles dunkel ) stammt müsste der Script ja nur bei aufgehender Sonne auslösen. Wenn du mit einem Vergleich von Wert und vorheriger Wert arbeitest solltest du immer darauf achten das es keine Lücken gibt. In Deinem Beispiel das Falls also so aufbauen: [image: 1718866258510-screenshot-2024-06-20-at-08.50.52.png] Insbesondere solltest du wenn du schon den "vorheriger Wert" Baustein benutzt auch den "Wert" Baustein nutzen, und den Wert nicht neu holen via Wert von Objekt ID ... Zusätzlich würde ich in Deinem Fall gleich den Trigger noch auf "ist grösser als vorher" setzen - dann löst der generell nur aus wenn es heller wird. A.
  • Rollosteuerung für Fortgeschrittene

    3
    1
    0 Stimmen
    3 Beiträge
    406 Aufrufe
    icebearI
    @adnim Ah, verstehe, da hab ich ja garnich dran gedacht, also quasi unten auswählen (Schreibe 1-x Zahl in einen DP) und über die Sichtbarkeit kann ich ja dann steuern welche von den 1-x Steuerelementen aktiv sind. Schau ich mal ob ich das so hinbekomme. Danke für den Tipp
  • Script auslösen wenn Timestamp älter als x ist

    6
    0 Stimmen
    6 Beiträge
    536 Aufrufe
    G
    Danke euch für die Antworten. Denke es wäre sowohl mit der von @OliverIO beschriebenen Methode gut möglich, allerdings werde ich mal die von @paul53 umsetzten, da es ein "Last Sync Objekt" im Adapter gibt 👌. @crunchip auch gute Idee, allerdings ist mir nur ein Datenpunkt "Online" aufgefallen. Ich werde mal im Auge behalten, ob hier der Adapter oder das Modul direkt im Adapter gemeint ist. Grüße Phil
  • JSON Datenpunkt auslesen - Problem : Doppelpunkt im Namen

    23
    0 Stimmen
    23 Beiträge
    2k Aufrufe
    paul53P
    @ralf-8 sagte: Hier ist mein Alias Richtig: Zustandstyp: Zahl nicht Writable Rolle: value.power Unit: W
  • Abfrage "wenn innerhalb von X Sekunden Wert wahr" *gelöst*

    10
    0 Stimmen
    10 Beiträge
    701 Aufrufe
    paul53P
    @surfer09 sagte: müsste ich dann nach "0" und "1" abfragen ... oder auf "ist größer als letztes" triggern - wie gezeigt. @surfer09 sagte in Blockly Abfrage "wenn innerhalb von X Sekunden Wert wahr": Den Briefkasten Status lasse ich noch in eine separate Variable schreiben Der Datenpunkt muss auch wieder zurück gesetzt werden. [image: 1718525629907-blockly_temp.jpg]
  • Telegram Bilder - Es kommt immer der Bilder Link mit

    14
    1
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    S
    @haus-automatisierung Ähm ja klar :angel: [image: 1718436717500-screenshot_2024-06-15-09-31-17-271_com.android.chrome-edit.jpg] Einziges Manko, wenn nach 4000ms das Bild noch nicht gesendet wurde ( warum auch immer ) dann kommt halt erst in 8000ms das nächste Bild. Kann man eine Abfrage einbauen um zu prüfen ob das Bild schon gesendet wurde?
  • Strom Verbrauch und separat Überschuss berechnen

    155
    1
    0 Stimmen
    155 Beiträge
    32k Aufrufe
    DuffyD
    @heidepower Klappt es jetzt ?
  • Dynamisches Licht - Farbverlauf Tag/Nacht

    javascript template
    104
    5 Stimmen
    104 Beiträge
    19k Aufrufe
    D
    Hi, ich habe mir erlaubt noch ein weiteres Skript für TUYA RGBCCT Leuchten zu schreiben, die die Farbtemperatur in einem Wert von 0-1000 darstellen. Falls es jemand benötigt: // Funktion, die den Wert liest, umrechnet und schreibt function processValue() { // Lese den Wert aus ioBroker (ersetze 'javascript.0.Dynamisches_Licht.Hilfswert_Kelvin' durch die tatsächliche Objekt-ID) let sourceValue = getState('javascript.0.Dynamisches_Licht.Hilfswert_Kelvin').val; // Kelvin range typically 2700K to 6500K const minKelvin = 2200; const maxKelvin = 6500; // Tuya temperature range 0 to 1000 const minTuyaTemp = 0; const maxTuyaTemp = 1000; // Ensure the Kelvin value is within the expected range if (sourceValue < minKelvin) sourceValue = minKelvin; if (sourceValue > maxKelvin) sourceValue = maxKelvin; // Convert Kelvin to Tuya temperature const convertedValue = ((sourceValue - minKelvin) * (maxTuyaTemp - minTuyaTemp)) / (maxKelvin - minKelvin) + minTuyaTemp; // Schreibe den umgerechneten Wert zurück zu ioBroker (ersetze 'javascript.0.Dynamisches_Licht.Hilfswert_Tuya' durch die tatsächliche Ziel-Objekt-ID, die Du noch erstellen musst) setState('javascript.0.Dynamisches_Licht.Hilfswert_Tuya', Math.round(convertedValue)); console.log(`Wert von ${sourceValue} umgerechnet zu ${Math.round(convertedValue)} und geschrieben zu javascript.0.Dynamisches_Licht.Hilfswert_Tuya`); } // Setze das Update-Intervall auf eine Minute (60.000 Millisekunden) setInterval(processValue, 60000); // Starte den Prozess sofort, ohne auf das erste Intervall zu warten processValue();
  • Frage zum Wandeln / Importieren eines Scriptes

    4
    0 Stimmen
    4 Beiträge
    286 Aufrufe
    crunchipC
    @tritanium es gibt noch den statistics Adapter
  • Tasmota Rule für Port Expander (PCF8574)

    2
    1
    0 Stimmen
    2 Beiträge
    275 Aufrufe
    oberfraggerO
    Rule1 ON PCF8574-1_INP#D0=0 DO Power3 1 ENDON ON PCF8574-1_INP#D0=1 DO Power3 0 ENDON ON PCF8574-1_INP#D1=0 DO Power5 1 ENDON ON PCF8574-1_INP#D1=1 DO Power5 0 ENDON ON PCF8574-1_INP#D2=1 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenHinten_Offen":"1"} ENDON ON PCF8574-1_INP#D2=0 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenHinten_Offen":"0"} ENDON ON PCF8574-1_INP#D3=1 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenVorne_Offen":"1"} ENDON ON PCF8574-1_INP#D3=0 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenVorne_Offen":"0"} ENDON Backlog Rule1 1 Rule1 1 Rule2 ON analog#a0=1024 DO publish stat/Schuppen/RESULT {"Keypad":"1"} ENDON ON analog#a0=816 DO publish stat/Schuppen/RESULT {"Keypad":"2"} ENDON ON analog#a0=547 DO publish stat/Schuppen/RESULT {"Keypad":"3"} ENDON ON analog#a0=289 DO publish stat/Schuppen/RESULT {"Keypad":"4"} ENDON ON analog#a0=246 DO publish stat/Schuppen/RESULT {"Keypad":"5"} ENDON ON analog#a0=216 DO publish stat/Schuppen/RESULT {"Keypad":"6"} ENDON ON analog#a0=161 DO publish stat/Schuppen/RESULT {"Keypad":"7"} ENDON ON analog#a0=148 DO publish stat/Schuppen/RESULT {"Keypad":"8"} ENDON ON analog#a0=134 DO publish stat/Schuppen/RESULT {"Keypad":"9"} ENDON ON analog#a0=103 DO publish stat/Schuppen/RESULT {"Keypad":"0"} ENDON ON analog#a0=110 DO publish stat/Schuppen/RESULT {"Keypad":"*"} ENDON ON analog#a0=98 DO publish stat/Schuppen/RESULT {"Keypad":"#"} ENDON Backlog Rule2 1 Rule2 1
  • [Gelöst] Standort via Telegram JS/Blockly

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    D
    @mcm1957 genau den hatte ich dann erstellt.
  • ioBroker Log auslesen und verarbeiten

    blockly node-red javascript
    20
    0 Stimmen
    20 Beiträge
    7k Aufrufe
    D
    @haus-automatisierung wohl eher nicht, aber zumindest starte ich den externen dienst so immer neu. bei iobroker selber arbeite ich in der Regel immer ohne sudo! evtl. kann ich den service auch ohne sudo reststarten, hab ich noch nicht probiert.
  • stdout eines ssh.exec-Aufrufs auswerten (WLAN Signalstärke)

    16
    0 Stimmen
    16 Beiträge
    964 Aufrufe
    P
    @oliverio Der Code funktioniert prima, ich hatte mich tatsächlich von der roten Markierung irritieren lassen. Deinen Tipp bzgl. des SNMP-Adapters werde ich mal prüfen. Vielen Dank für Deine Hilfe! Ergänzung: Der Weg über SNMP funktioniert in meinem Fall nicht, da es sich bei meinem AP um ein "4/32 Device" handelt, welches nur mit einer Minimalst-Version von OpenWRT läuft. SNMP kann darauf nicht zusätzlich installiert werden.
  • Hexadezimal auf Dezimal in Blockly umwandeln

    2
    1
    0 Stimmen
    2 Beiträge
    332 Aufrufe
    paul53P
    @tomsmarthome sagte: mit Blockly ins Dezimale umwandeln [image: 1717515248388-blockly_temp.jpg] return parseInt(hex, 16);
  • [gelöst] AppleTV einschalten über ioBroker

    29
    0 Stimmen
    29 Beiträge
    2k Aufrufe
    CinimodC
    @black-falcon87 ENDE
  • History-Logging für einzelnen Datenpunkt steuern

    3
    0 Stimmen
    3 Beiträge
    236 Aufrufe
    A
    @homoran Gute Idee! Da hätte ich auch selbst drauf kommen können. Vielen Dank!
  • [gelöst] zwei der Astrozeiten Datepunkte nicht aktualisiert

    8
    1
    0 Stimmen
    8 Beiträge
    453 Aufrufe
    paul53P
    @cinimod sagte: Und das JS dann nen Fehler erzeugt ist auch korrekt so ? Das ist in Version 8.4.2 behoben. Man kann unter Version 8.3.1 auch den Haken bei "Erstelle Zustände für alle Astrozeiten" in der JS-Konfiguration entfernen, sofern man die Datenpunkte unter "javascript.0.variables.astro" nicht in eigenen Skripten verwendet hat. @thomas-braun sagte in [gelöst] zwei der Astrozeiten Datepunkte nicht aktualisiert: Was soll denn angezeigt werden, wenn es den Zeitpunkt nicht gibt? Ab Version 8.4.0 wird (null) angezeigt und im Kommentar "n/a".
  • funktionierende Verzögerung für meinen Pool Skript?

    25
    0 Stimmen
    25 Beiträge
    3k Aufrufe
    A
    @homoran danke für den Hinweis. Ich werde das weiterverfolgen ;-)

712

Online

32.6k

Benutzer

82.3k

Themen

1.3m

Beiträge