1. Uhrzeitanzeige, am besten mit dem Befehl !time
2. datumsanzeige, am besten mit dem befehl !date
in den dazugehörigen foren habe ich nichts gefunden, und ich kenne mich leider auch nur sehr wenig mit javascript aus, könnte mir jemand reinposten wie der quellcode für die beiden aktionen aussieht??
achja und nochwas, ich kann einstellen dass der bot auf vorgegebene wörter mit dafür vorgegebenen sätzen reagiert. wie kann ich es realisieren, dass der bot mehrere sätze zur auswahl hat und einen davon auswählt per zufallsprinzip?? habe da auch nirgends eine lösung gefunden. ich hoffe mir kann jemand weiterhelfen
greetz cheaterboy
EDIT: Vielleicht hilfts ja was wenn ich den Code des Scripts mal hier poste, dann könnt ihr mir vlt. eher helfen...
Quellcode
- // MaiZ - Version 0.5 - 20. Juni 2007
- // HTML-Tags entfernen
- // Rückgabe: von HTML-Tags geklärter Text
- function removeTags (str) {
- return str.replace(/<[^>]*>/g, "");
- }
- // Entfernen von kritischen Zeichen
- // Sollte bei Links, etc. immer aufrufen werden
- // Rückgabe: ein entsprechend modifizierter Text
- function removeBadChars (str, m) {
- if (m == 0) {
- str = encodeURIComponent(str);
- } else {
- str = str.replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
- }
- return str;
- }
- // Erfassung der Chatzeilendaten
- // Gibt ein Array wieder wenn die Zeile eine normale erfassbare Chatzeile ist, ansonsten FALSE.
- // Rückgabe: ZEILENTYP (0 = normaler Text, 1 = geflüsteter/kursiver Text, 2 = nicht definierbar), ZEILENAUTHOR, ZEILENTEXT
- function lineData (str) {
- var r = RegExp(/^\s*\(\d+:\d+\) (\w+)(\W)\s*(.*)$/).exec(removeTags(str));
- if (r) {
- switch (r[2]) {
- case ":": r[2] = 0; break;
- case " ": r[2] = 1; break;
- default: r[2] = 2; break;
- }
- return [r[2],r[1],r[3]];
- } else {
- return false;
- }
- }
- // Streamzeilen-Counter
- // Nötig damit das Script Zeilen nicht mehrfach erfasst
- strLen = 0;
- // Chatbot-Klasse
- ChatBot = function (name) {
- // Assoziatives Array für die Bot-Befehle
- this.cmd = new Object();
- // Assoziatives Array für die Wörter, auf die der Bot reagieren soll
- this.rcwd = new Object();
- // Prüft einen Text auf ein ChatBot-Command und ruft den zugehörigen Befehl, falls vorhanden, auf
- // Befehlstexte werden immer mit einem Ausrufezeichen eingeleitet, gefolgt von dem Befehlsnamen.
- // Beispiel: !CMD TEXT
- this.checkForCmd = function (d) {
- var t = d[2];
- var cmdname = t.split(" ")[0].replace(/!/, "")
- if (this.cmd[cmdname]) {
- this.echo(this.cmd[cmdname](t, this.getAttr(t)));
- } else {
- this.echo("Sollte das ein Botbefehl sein <b>"+d[1]+"</b>? Wenn ja... Ist er mir nicht bekannt... o.O");
- }
- }
- // Prüft einen Text auf Wörter, auf die der Bot reagiert (Groß/Kleinschreibung wird beachtet)
- this.checkForRcwd = function (t) {
- for (w in this.rcwd) {
- if (t.match(w)) {
- this.echo(this.rcwd[w]);
- break;
- }
- }
- }
- // Gibt einen ChatBot-Text im Chat aus
- this.echo = function (t) {
- var tr = document.createElement("tr");
- var td = document.createElement("td");
- td.innerHTML = name + ": " + t;
- tr.appendChild(td);
- document.getElementsByTagName("table")[strLen].getElementsByTagName("tbody")[0].appendChild(tr);
- }
- // Filtert die Befehlsattribute aus einem Text
- // Attribute werden immer mit einem # eingeleitet, Ausnahmen bilden die letzten Text-Attribute (zum Beispiel der zu sagende Grundtext bei !say)
- // Beispiel: !CMD #ATTR1 TEXT
- this.getAttr = function (t) {
- t = t.split(" ");
- var attr = new Array();
- for (i = 1; i < t.length; i++) {
- if (t[i].indexOf("#") == 0) {
- attr[i-1] = t[i].toLowerCase().replace(/#/, "");
- } else {
- break;
- }
- }
- return attr;
- }
- // Für den Bot definierte Befehle
- // Attribute in Klammern sind optional, müssen jedoch in der angegeben Reihenfolge genutzt werden.
- // Befehle werden von "checkForCmd" immer nach dem Schema "FUNCTION(CHATTEXT, ATTRIBUTE)" aufgerufen
- // Befehle geben immer einen String zurück, der mit "echo" im ChatBot-Format ausgegeben wird
- // SAY: gibt den angegebenen Text aus.
- // Syntax: !SAY (#MODUS) (#FARBE) TEXT
- // #MODUS: Ausgabeart des Textes. Mögliche Angaben: leet, crazy, haxor, reverse
- // #FARBE: Farbe des Textes. Mögliche Angaben: Farbe als Hex-Zahl
- this.cmd.say = function (t, attr) {
- t = t.substr(5);
- if (attr[0] && !(attr[0].match(/\W/))) {
- if (attr[0].match(/[^a-f0-9]/)) {
- if (attr[1] && attr[1].length == 6 && !(attr[1].match(/[^0-9a-f]/))) {
- var col = attr[1];
- t = t.substr(8);
- }
- t = t.substr(attr[0].length+2).toLowerCase();
- switch (attr[0]) {
- case "leet":
- var lett = [['a','b','e','g','i','l','o','q','s','t','z'], ['4','8','3','6','1','1','0','9','5','7','2']];
- break;
- case "crazy":
- lett = [['a','b','c','e','i','l','r','s','y'], ['@','ß','©','€','!','£','®','$','¥']];
- break;
- case "haxor":
- lett = [['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'], ['4','8','(','|)','3','|=','6','|-|','1','1','|<','|_','|\\/|','|\\|','0','|°','9','|2','5','7','|_|','\\/','\\/\\/','><','°/','2']];
- break;
- case "reverse":
- t = "<bdo dir=\"rtl\">"+t+"</bdo>";
- break;
- default:
- break;
- }
- if (lett) {
- for (i = 0; i < lett[0].length; i++) {
- while (t.search(lett[0][i]) > -1) {
- t = t.replace(lett[0][i], lett[1][i]);
- }
- }
- }
- } else if (attr[0].length == 6) {
- var col = attr[0];
- t = t.substr(8);
- }
- if (col) {
- t = "<font color=\"#"+col+"\">"+t+"</font>";
- }
- }
- return t;
- }
- // SEARCH: gibt einen Suchlink des Textes im Chat aus.
- // Syntax: !SEARCH #SERVICE TEXT
- // #SERVICE: Suchservice. Mögliche Angaben: google, yahoo, wiki, imdb, leo, icq, live, ebay
- this.cmd.search = function (t, attr) {
- if (attr[0]) {
- t = t.substr(10+attr[0].length);
- if (t.length > 0) {
- var s, l;
- switch (attr[0]) {
- case "google":
- s = "Google";
- l = "http://www.google.de/search?q="
- break;
- case "yahoo":
- s = "Yahoo!";
- l = "http://de.search.yahoo.com/search?p=";
- break;
- case "wiki":
- s = "Wikipedia-Artikel";
- l = "http://de.wikipedia.org/wiki/Spezial:Suche?fulltext=Volltext&search=";
- break;
- case "imdb":
- s = "IMDb-Film-Datenbank";
- l = "http://www.imdb.com/find?s=all&q="
- break;
- case "leo":
- s = "LEO-Englisch <-> Deutsch-Wörterbuch";
- l = "http://dict.leo.org/?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&relink=on§Hdr=on&spellToler=std&search=";
- break;
- case "icq":
- s = "ICQ-People";
- l = "http://www.icq.com/search/people_results.php?q=";
- break;
- case "live":
- s = "Live.com";
- l = "http://search.live.com/results.aspx?q=";
- break;
- case "ebay":
- s = "eBay";
- l = "http://search.ebay.de/search/search.dll?query=";
- break;
- default:
- s = false;
- break;
- }
- if (s) {
- t = s + "-Suche nach ""+removeBadChars(t)+"": <a href=\"" + l + removeBadChars(t, 0) + "\" target=\"_blank\">Link</a>";
- } else {
- t = "Ich kenne die Suchmaschine \""+removeBadChars(attr[0])+"\" nicht... o.O";
- }
- } else {
- t = "Du hast keinen Suchbegriff angegeben... o.O";
- }
- } else {
- t = "Also... Da fehlt irgendwie die Suchmaschine... o.O";
- }
- return t;
- }
- // Worte, auf die der Bot reagiert
- this.rcwd['test'] = "ich sage etwas!";
- this.rcwd['maiz'] = "was ist mit mir?";
- }
- // Definition eines neuen ChatBot-Objekts "bot"
- // Der angegebene Wert ist der Name des ChatBots
- bot = new ChatBot("<b><font color=\"aqua\">M<font color=\"white\">ai</font>Z</font></b>");
- // ChatBot-Aufruf
- // Prüft zuerst den Zeilentyp und führt hierauf entweder checkForCmd oder checkForRcwd auf
- function changeStr () {
- for (strLen; strLen < document.getElementsByTagName("table").length; strLen++) {
- c = document.getElementsByTagName("table")[strLen];
- l = lineData(c.innerHTML);
- if (l[0] < 2) {
- if (l[0] == 0) {
- if (l[2].length > 1 && l[2].indexOf("!") == 0) {
- bot.checkForCmd(l);
- } else {
- bot.checkForRcwd(l[2]);
- }
- }
- }
- }
- }
- // Starten des Intervalls.
- // Hier muss der Onlinelisten-Name des Bots angegeben werden
- setInterval("changeStr();parent.rightFrame.add('MaiZ');", 1000);