NEWS
Sayit: Variierende Ansagen
-
Hallo,
Sayit sagt mir "Gute Nacht!" wenn ich schlafen gehe und "Auf Wiedersehen!" wenn ich die Wohnung verlasse. Diese Ansagen kommen nicht aus Höflichkeit, sondern damit ich weiß, ob der gewünschte Zustand "Nachtruhe" oder "Abwesenheit" eingeschaltet wurde. Mir wurde das aber mit der Zeit zu langweilig. Also habe ich nach Variationen gesucht. Anbei ein globales Skript "zufallsansage", welches genau das macht.
Im auslösenden Skript, dort wo der Sayit-Datenpunkt gefüllt wird, gebe ich das Thema vor (0=Abwesenheit, 1=Anwesenheit, 2=Nachtruhe) und übergebe es an das globale Skript.
setState(sayit, '30;' + zufallsansage(0)); // Lautstärke 30%, Zufallsansage Thema 0 (Verabschiedung)
Dieses Skript wählt per http://wiki.selfhtml.org/wiki/JavaScript/Anwendung_und_Praxis/Zufallszahlen eine Position im Array aus und gibt den hinterlegten Text zurück an Sayit. Voilà.
Diesen Code als globales Skript abspeichern:
! ````
/* global sayit_zufallsansage
Skript varriert bestimmt Ansagen zu bestimmten Ereignissen
Zufallsfunktion von hier: http://wiki.selfhtml.org/wiki/JavaScript/Anwendung_und_Praxis/Zufallszahlen
! Im 2stufigen Array sind verschiedene Sätze zu bestimmten Ereignissen gespeichert
0 = Verabschiedung
1 = Begrüßung
2 = Nachtruhe ein
! 21.10.2015 erstellt von Pix
*/
! var ansagen = [];
// 0 = Verabschiedung
ansagen[0] = new Array('Auf Wiedersehen!',
'Auf Wiedersehen!',
'Auf Wiedersehen!',
'Auf Wiedersehen!',
'Auf Wiedersehen!',
'Mach es gut!',
'Bis bald!',
'Bis bald!',
'Komm nicht so spät nach Hause!',
'Tschüß!',
'Hast du eine warme Jacke an?',
'Wennste jetzt gehst, brauchste nicht mehr wiederkommen!',
'Ich warte hier auf dich!',
'Lass mich nicht so lang allein',
'Bringst du mir was mit?');
// 1 = Bergüßung
ansagen[1] = new Array('Hallo!',
'Schön, dass du wieder da bist!',
'Freu mich, dich zu sehen!',
'Wo warst du so lange?',
'Hereinspaziert',
'Gut, dass du da bist.',
'Herzlich willkommen!',
'Komm rein, kannste rausgucken!',
'Hast du mir was mitgebracht?',
'Guck mal, wer da ist?');
// 2 = Nachtruhe ein
ansagen[2] = new Array('Gute Nacht!',
'Gute Nacht!',
'Gute Nacht!',
'Schlaf gut!',
'Bis morgen!',
'Leg jetzt dein Telefon weg!',
'Schön zudecken!',
'Bist du schon müde?');
! // Zufallszahl ermitteln
function rand (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
! // Ansage aus Array "ansagen" im passenden Thema (zB Verabschiedung/0) zurückgeben
function zufallsansage(thema) {
var min = 0,
max = ansagen[thema].length; // Zahl der verschiedenen Sätze im Thema
return ansagen[thema][rand(min,max)];
}Die Arrays können beliebig erweitert werden. Soll eine Ansage häufiger als andere kommen, einfach mehrmals ins Array schreiben. Viel Spass und Gruß, Pix Edit: Wenn man die Arrays von Anfang an richtig benennt ('Abwesenheit', 'Anwesenheit', 'Nachtruhe' statt 0,1,2, dann kann man den Code im auslösenden Skript etwas menschenlesbarer machen setState(sayit, '30;' + zufallsansage('Abwesenheit'));. Das geht natürlich genauso.