Chatbefehl "alle Begrüßen"

Fragen zu HTML, CSS, eigenen Erweiterungen etc.
Benutzeravatar
Datschiburger
Beiträge: 47
Registriert: 27.08.2013, 12:23
Wohnort: Bayern

Chatbefehl "alle Begrüßen"

Ungelesener Beitrag von Datschiburger » 31.10.2018, 00:58

FC Keller hat da mal was nettes gepostet,

Um seinen eigenen Nick auszuschließen muss man eigentlich nur die if-Bedingung minimal erweitern... dummerweise reichen dann aber die Zeichen des Chatbefehls nicht mehr... daher muss Code in die Ankündigung ausgelagert werden. Da im Problemmodus aber inzwischen auch die Ankündigung angezeigt wird hat die Änderung also keinen Einfluss mehr auf die Funktionalität des Befehls... es ist einfach etwas umständlicher einzubauen.

Ankündigung:

<script language="javascript">if(parent.info){var d=parent.rightFrame.document.getElementsByTagName("div");var n=[];for(i=0;i<d.length;i++){if(d.id.match(/^\w+$/)){n[n.length]=d.id}}document.write("knuddelt "+n.join(", ")+" so richtig durch.")}else{document.write("knuddelt User1, User2, User3 <i>(alle User im Chat)</i>")}</script>

Chatbefehl:

<script language="javascript">if(parent.info){gruss('%me%')}else{document.write("knuddelt User1, User2, User3 <i>(alle User im Chat)</i>")}</script>

das nun aber einen Fehler mitbring und zwar wird der "Datschenschutz" mitbegrüßt.
Kann man das beheben?
Ich liebe Kampfspiele, ich spiele Windows XP schon mehr als 5 Jahre lang und habe immer noch nicht gewonnen

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Chatbefehl "alle Begrüßen"

Ungelesener Beitrag von Maxs » 31.10.2018, 19:42

Hallo Datschiburger,

ich hab das Script etwas umgeschrieben und verbessert. Es braucht nur noch einen Chatbefehl und nichts mehr in der Ankündigung.

Folgendes nur noch als Chatbefehl einfügen:

Code: Alles auswählen

knuddelt <script>function allKnuddeln(m){var d=parent.rightFrame.document.getElementsByTagName("div");if(d){var n=[];for(i=0;i<d.length;i++){if(d[i].id.match(/^\w+$/)&&d[i].id!=strip_tags(m)&&d[i].parentNode.id=="bd:"){n[n.length]=d[i].id}}var s=(n.length==1)?n[0]:"sich selbst";if(n.length>1){s=n.join(", ");var li=s.lastIndexOf(",");s=s.substr(0,li)+" und"+s.substr(li+1)}document.write(s)}}allKnuddeln("%myname%")</script> so richtig durch!
Pass auf, falls du die Texte änderst, mehr Zeichen gehen nicht mehr wirklich. So passt aber alles in einen Chatbefehl ;)
Falls du es wieder splitten möchtest (in Ankündigung und Chatbefehl), gib Bescheid, dann poste ich dir diese seperat.

Ich habe das Script auch so angepasst, dass es jetzt erkennt, ob jemand anderes da ist (wenn nein, dann knuddelt man sich selbst), ansonsten knuddelt man alle anderen Nutzer im Chat (der letzte wird sogar jetzt mit dem Wort "und" abgetrennt und nicht mehr mit einem Komma)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
Datschiburger
Beiträge: 47
Registriert: 27.08.2013, 12:23
Wohnort: Bayern

Re: Chatbefehl "alle Begrüßen"

Ungelesener Beitrag von Datschiburger » 01.11.2018, 00:07

Hallo Maxs,

super gemacht funktiniert bestens, herzlichsten Dank für die prompte Erledigung.

Gruß Datschiburger
Ich liebe Kampfspiele, ich spiele Windows XP schon mehr als 5 Jahre lang und habe immer noch nicht gewonnen

Benutzeravatar
GvS
Beiträge: 24
Registriert: 22.09.2017, 19:25

Re: Chatbefehl "alle Begrüßen"

Ungelesener Beitrag von GvS » 01.11.2018, 07:48

Ich kenne das "Alle Begrüssen" Script allerdings als JS Datei nur so:

Code: Alles auswählen

function gruss(me){var d=parent.rightFrame.document.getElementsByTagName("div"); var n=[]; for(i=0;i<d.length; i++){ if(d[i].id.match(/^\w+$/) && d[i].id!=strip_tags(me)){ n[n.length]=d[i].id}} document.write("sagt mal zu "+n.join(", ")+" Halloooo.")}
bzw, bei Nutzung der OL Sortierung

Code: Alles auswählen

function gruss(me){var d=parent.rightFrame.document.getElementsByTagName("div");var n=[];for(i=0;i<d.length; i++){if(d[i].id.match(/^\w+$/) && d[i].id!=strip_tags(me) && d[i].parentNode.id=="bd:"){n[n.length]=d[i].id}} document.write("sagt mal zu "+n.join(", ")+"  Halloooo.")}
mit diesem Chatbefehl

Code: Alles auswählen

<script language="javascript">if(parent.info){gruss('%me%')}else{document.write("knuddelt User1, User2, User3 <i>(alle User im Chat)</i>")}</script> :supergut
Ist mein Code etwa veraltet? Weil funktionieren tut er
Ich bin emotional sehr nahe am Mittelfinger gebaut

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Chatbefehl "alle Begrüßen"

Ungelesener Beitrag von Maxs » 01.11.2018, 16:05

Nein, das funktioniert auch. Nur ist die neue Version von mir oben flexibler. Vorteile davon sind:
  • Es braucht nur noch einen Chatbefehl (keine Scripts in der Ankündigung)
  • Der Text passt sich an die Anzahl der momentan im Chat befindlichen Nutzer an. D.h. die Nutzer werden mit korrekter deutscher Grammatik aufgezählt (Bsp.: "X knuddelt Alice, Bob und Charles so richtig durch!" und nicht mehr "X knuddelt Alice, Bob, Charles so richtig durch!"). Außerdem erkennt das Script, ob man sich alleine im Chat aufhält, dann knuddelt man sich nur selbst.
Der Text kann natürlich angepasst werden, man sollte nur darauf achten, dass der Chatbefehl insgesamt nicht mehr Zeichen bekommt. Ein Begrüßungsbefehl wäre zum Beispiel:

Code: Alles auswählen

grüßt<script>function allKnuddeln(m){var d=parent.rightFrame.document.getElementsByTagName("div");if(d){var n=[];for(i=0;i<d.length;i++){if(d[i].id.match(/^\w+$/)&&d[i].id!=strip_tags(m)&&d[i].parentNode.id=="bd:"){n[n.length]=d[i].id}}var s=(n.length==1)?n[0]:"sich selbst";if(n.length>1){s=n.join(", ");var li=s.lastIndexOf(",");s=s.substr(0,li)+" und"+s.substr(li+1)}document.write(s)}}allKnuddeln("%myname%")</script> sehr herzlich!
Wenn du die neuen Funktionen auch möchtest, aber zum Beispiel einen längeren Text haben möchtest, dann musst du den Code wieder auslagern in die Ankündigung. Das geht so:

Script:Zeigen
Falls man den Befehl doch in Ankündigung und Befehl splitten möchte:

Ankündigung (1 und 3 nach Grundscriptsammlung):

Code: Alles auswählen

<script type="text/javascript">function listAllChatUsers(m,t){var d=parent.rightFrame.document.getElementsByTagName("div");if(d){var n=[];for(i=0;i<d.length;i++){if(d[i].id.match(/^\w+$/)&&d[i].id!=strip_tags(m)&&d[i].parentNode.id=="bd:"){n[n.length]=d[i].id}}var s=(n.length==1)?n[0]:t;if(n.length>1){s=n.join(", ");var li=s.lastIndexOf(",");s=s.substr(0,li)+" und"+s.substr(li+1)}document.write(s)}}</script>
Chatbefehl:

Code: Alles auswählen

stürmt auf <script>listAllChatUsers("%myname%","den im Eck stehenden Plüschbär");</script> zu und grüßt mit einer herzlichen Umarmung!
Der Text kann natürlich angepasst werden. Das "den im Eck stehenden Plüschbär" erscheint nur, wenn man allein im Chat ist und den Chatbefehl ausführt. Ansonsten stehen dort die Namen aller Chatter grammatikalisch korrekt aufgelistet im Chat.

Ich hoffe, das ist nun klarer geworden. :)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
Datschiburger
Beiträge: 47
Registriert: 27.08.2013, 12:23
Wohnort: Bayern

Re: Chatbefehl "alle Begrüßen"

Ungelesener Beitrag von Datschiburger » 03.11.2018, 11:42

Witzige Idee mit dem "Plüschbär" :D
Ich liebe Kampfspiele, ich spiele Windows XP schon mehr als 5 Jahre lang und habe immer noch nicht gewonnen

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste