Thx an alle, die beim Scripten und Testen geholfen haben

Aktuelle Version: 1.2
Die Grundscriptsammlung ist Voraussetzung für das Script.
Der folgende Code muss in die erste und dritte Ankündigung:
Code: Alles auswählen
<script language="javascript">ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;function clkmenu(){ p=parent; r=p.rightFrame.document; s=r.getElementsByTagName("span"); for(i in s){ if((typeof s[i]) != "undefined" && (typeof s[i].parentNode) != "undefined" && s[i].parentNode.title) if(s[i].onclick){ s[i].onclick=function(e){ e=(e?e:parent.rightFrame.event); p.lstClcked=this.parentNode.title.split(" ")[0]; parent.rightFrame.olMenu(e.clientX,e.clientY); return false } } } parent.rightFrame.olMenu = function(xPosition,yPosition){ if(parent.menuTO){ window.clearTimeout(parent.menuTO); } r=parent.rightFrame.document; r.getElementById("menu").style.display=''; with(r.getElementById("menu").style){ position="absolute"; top=yPosition; left=xPosition; } var tds=r.getElementById("menu").getElementsByTagName("td"); var status=parent.mainframe.getStatus(parent.lstClcked); for(var i=0;i<tds.length;i++){ tds[i].parentNode.style.display=''; if(tds[i].className!="input"){ if(status==1 && !tds[i].className.match(/\buser\b/) || status==2 && !tds[i].className.match(/\bmod\b/) || status==3 && !tds[i].className.match(/\badmin\b/))tds[i].parentNode.style.display='none'; } } parent.menuTO = window.setTimeout("parent.rightFrame.document.getElementById('menu').style.display='none'", 4000) }}window.setInterval("clkmenu()",1600);function mkTd(befTxt, clckbef, hinterNick, modus, classes){ p=parent; r=p.rightFrame.document; s=r.getElementsByTagName("span"); tr=r.createElement("tr"); td=r.createElement("td"); if(!modus || modus==1){ eval("td.onclick=function(e){a=parent.info.document.eingabe.message; a.value"+(modus==1?"+":"")+"='"+clckbef+"'+parent.lstClcked"+(hinterNick?"+'"+hinterNick+"'":"")+"; parent.rightFrame.document.getElementById('menu').style.display='none'; a.focus();pos=a.createTextRange(); pos.collapse(false); pos.select();}"); }else if(modus==2){ td.onclick=function(){clckbef(parent.lstClcked)}; } bef=r.createTextNode(befTxt); td.className="input"+(classes?" "+classes:""); td.appendChild(bef); tr.appendChild(td); tbdy.appendChild(tr)}function createTable(){ if(parent.rightFrame.document && !parent.rightFrame.document.getElementById("menu")){ tbl=r.createElement("table"); tbl.style.border="1px dotted #000000"; tbl.style.display="none"; tbl.className="input"; tbl.style.zIndex="10"; tbl.setAttribute("id", "menu"); tbdy=r.createElement("tbody"); tbl.appendChild(tbdy); mkTd(unescape("Fl%FCstern"),"/f ", " "); if(typeof starteFWin != "undefined") mkTd(unescape("Fl%FCsterfenster"), starteFWin, 0, 2); mkTd(unescape("Nick einf%FCgen"), "", "", 1); mkTd("Anschreiben", "/me sagt zu ", ":"); if(myStatus>=1){ mkTd("PM","/pm ", " ", 0, 0, "user mod admin"); if(typeof vgBefehlsAuswertung != "undefined") mkTd("4 Gewinnt", "/4gewinnt ", 0, 0, "user mod admin"); if(typeof dameBefehlsAuswertung != "undefined") mkTd("Dame", "/dame ", 0, 0, "user mod admin"); if(typeof osBefehlsAuswertung != "undefined") mkTd("Offiziersskat", "/os ", 0, 0, "user mod admin"); if(typeof muehleBefehlsAuswertung != "undefined") mkTd(unescape("M%FChle"), "/muehle ", 0, 0, "user mod admin"); if(typeof tttBefehlsAuswertung != "undefined") mkTd("TicTacToe", "/ttt ", 0, 0, "user mod admin"); if(typeof ignoreUser != "undefined") mkTd("ignorieren", "/ignore "); } if(myStatus>=2){ mkTd("Restore","/restore ", " #0000ff", 0, "user"+(myStatus==3?" mod":"")); mkTd("IP anzeigen","/rmip ", 0, 0, "user"+(myStatus==3?" mod":"")); mkTd("Knebel","/knebel ", 0, 0, "user"+(myStatus==3?" mod":"")); mkTd("Move","/move ", " ", 0, "user"+(myStatus==3?" mod":"")); mkTd("Kick","/kick ", 0, 0, "user"+(myStatus==3?" mod":"")); mkTd("Bann","/bann ", 0, 0, "user"+(myStatus==3?" mod":"")); } if(myStatus==3){ mkTd("Mod ernennen","/makemod ", 0, 0, "user"); mkTd("Mod entziehen", "/modkick ", 0, 0, "mod"); } if(myNick==chatTeam[2]){ mkTd("Admin ernennen","/makeadmin ", 0, 0, "user mod"); mkTd("Admin entziehen", "/adminkick ", 0, 0, "admin"); } r.body.appendChild(tbl); }}window.setInterval("createTable()",1600);function getStatus(nick){ nick=nick.toLowerCase(); if(chatTeam[2].toLowerCase()==nick)return 3; for(i=0;i<chatTeam[1].length;i++)if(chatTeam[1][i].toLowerCase()==nick)return 3; for(var i=0;i<chatTeam[0].length;i++)if(chatTeam[0][i].toLowerCase()==nick)return 2; return 1;}</script>
Code: Alles auswählen
tbl.style.border="1px dotted #000000"; tbl.style.color="#000000"; tbl.style.backgroundColor="#ff6600";
Code: Alles auswählen
mkTd("Flüstern","/f ", " ");mkTd("Nick einfügen", "", "", 1); mkTd("Anschreiben", "/me sagt zu ", ":"); if(myStatus>=1){ mkTd("PM","/pm ", " ");} if(myStatus>=2){ mkTd("Restore","/restore ", " #0000ff"); mkTd("IP anzeigen","/rmip "); mkTd("Knebel","/knebel "); mkTd("Move","/move ", " "); mkTd("Kick","/kick "); mkTd("Bann","/bann ");} if(myStatus==3){ mkTd("Mod ernennen","/makemod "); mkTd("Mod entziehen", "/modkick ");}
Für die, die lieber js-Dateien verwenden als so lange Codes in die Ankündigung zu kopieren hier auch nochmal eine strukturierte Version des Codes:
Code: Alles auswählen
ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
function clkmenu(){
p=parent;
r=p.rightFrame.document;
s=r.getElementsByTagName("span");
for(i in s){
if((typeof s[i]) != "undefined" && (typeof s[i].parentNode) != "undefined" && s[i].parentNode.title)
if(s[i].onclick){
s[i].onclick=function(e){
e=(e?e:parent.rightFrame.event);
p.lstClcked=this.parentNode.title.split(" ")[0];
parent.rightFrame.olMenu(e.clientX,e.clientY);
return false
}
}
}
parent.rightFrame.olMenu = function(xPosition,yPosition){
if(parent.menuTO){
window.clearTimeout(parent.menuTO);
}
r=parent.rightFrame.document;
r.getElementById("menu").style.display='';
with(r.getElementById("menu").style){
position="absolute"; top=yPosition; left=xPosition;
}
var tds=r.getElementById("menu").getElementsByTagName("td");
var status=parent.mainframe.getStatus(parent.lstClcked);
for(var i=0;i<tds.length;i++){
tds[i].parentNode.style.display='';
if(tds[i].className!="input"){
if(status==1 && !tds[i].className.match(/\buser\b/) ||
status==2 && !tds[i].className.match(/\bmod\b/) ||
status==3 && !tds[i].className.match(/\badmin\b/))tds[i].parentNode.style.display='none';
}
}
parent.menuTO = window.setTimeout("parent.rightFrame.document.getElementById('menu').style.display='none'", 4000)
}
}
window.setInterval("clkmenu()",1600);
function mkTd(befTxt, clckbef, hinterNick, modus, classes){
p=parent;
r=p.rightFrame.document;
s=r.getElementsByTagName("span");
tr=r.createElement("tr");
td=r.createElement("td");
if(!modus || modus==1){
eval("td.onclick=function(e){a=parent.info.document.eingabe.message; a.value"+(modus==1?"+":"")+"='"+clckbef+"'+parent.lstClcked"+(hinterNick?"+'"+hinterNick+"'":"")+"; parent.rightFrame.document.getElementById('menu').style.display='none'; a.focus();pos=a.createTextRange(); pos.collapse(false); pos.select();}");
}else if(modus==2){
td.onclick=function(){clckbef(parent.lstClcked)};
}
bef=r.createTextNode(befTxt);
td.className="input"+(classes?" "+classes:"");
td.appendChild(bef);
tr.appendChild(td);
tbdy.appendChild(tr)
}
function createTable(){
if(parent.rightFrame.document && !parent.rightFrame.document.getElementById("menu")){
tbl=r.createElement("table");
tbl.style.border="1px dotted #000000";
// tbl.style.color="#000000";
// tbl.style.backgroundColor="#ff6600";
tbl.style.display="none";
tbl.className="input";
tbl.style.zIndex="10";
tbl.setAttribute("id", "menu");
tbdy=r.createElement("tbody");
tbl.appendChild(tbdy);
mkTd(unescape("Fl%FCstern"),"/f ", " ");
if(typeof starteFWin != "undefined")
mkTd(unescape("Fl%FCsterfenster"), starteFWin, 0, 2);
mkTd(unescape("Nick einf%FCgen"), "", "", 1);
mkTd("Anschreiben", "/me sagt zu ", ":");
if(myStatus>=1){
mkTd("PM","/pm ", " ", 0, 0, "user mod admin");
if(typeof vgBefehlsAuswertung != "undefined")
mkTd("4 Gewinnt", "/4gewinnt ", 0, 0, "user mod admin");
if(typeof dameBefehlsAuswertung != "undefined")
mkTd("Dame", "/dame ", 0, 0, "user mod admin");
if(typeof osBefehlsAuswertung != "undefined")
mkTd("Offiziersskat", "/os ", 0, 0, "user mod admin");
if(typeof muehleBefehlsAuswertung != "undefined")
mkTd(unescape("M%FChle"), "/muehle ", 0, 0, "user mod admin");
if(typeof tttBefehlsAuswertung != "undefined")
mkTd("TicTacToe", "/ttt ", 0, 0, "user mod admin");
if(typeof ignoreUser != "undefined")
mkTd("ignorieren", "/ignore ");
}
if(myStatus>=2){
mkTd("Restore","/restore ", " #0000ff", 0, "user"+(myStatus==3?" mod":""));
mkTd("IP anzeigen","/rmip ", 0, 0, "user"+(myStatus==3?" mod":""));
mkTd("Knebel","/knebel ", 0, 0, "user"+(myStatus==3?" mod":""));
mkTd("Move","/move ", " ", 0, "user"+(myStatus==3?" mod":""));
mkTd("Kick","/kick ", 0, 0, "user"+(myStatus==3?" mod":""));
mkTd("Bann","/bann ", 0, 0, "user"+(myStatus==3?" mod":""));
}
if(myStatus==3){
mkTd("Mod ernennen","/makemod ", 0, 0, "user");
mkTd("Mod entziehen", "/modkick ", 0, 0, "mod");
}
if(myNick==chatTeam[2]){
mkTd("Admin ernennen","/makeadmin ", 0, 0, "user mod");
mkTd("Admin entziehen", "/adminkick ", 0, 0, "admin");
}
r.body.appendChild(tbl);
}
}
window.setInterval("createTable()",1600);
function getStatus(nick){
nick=nick.toLowerCase();
if(chatTeam[2].toLowerCase()==nick)return 3;
for(i=0;i<chatTeam[1].length;i++)if(chatTeam[1][i].toLowerCase()==nick)return 3;
for(var i=0;i<chatTeam[0].length;i++)if(chatTeam[0][i].toLowerCase()==nick)return 2;
return 1;
}
Versions-History:
Version 1.2:
- Die Menüeinträge werden nun nichtmehr nur abhängig vom eigenen, sondern auch von dem Status des geklickten Users angezeigt. So wird z.B. bei Admins kein kick- oder move-Befehl eingeblendet, da sie sowieso nicht gegen Admins benutzt werden können.
- Es wurden automatische Erkennungen für die Spiele Offiziersskat, Mühle und TicTacToe sowie für das Ignorier-Script und das Flüsterfenster hinzugefügt
Version 1.1: Fix für eventuelle Zeichensatz-Probleme: Umlaute werden per URL-Code eingesetzt und per unescape umgewandelt.
Außerdem werden die Spiele Dame und 4 Gewinnt automatisch erkannt. Falls sie im Chat eingebunden sind wird dafür entsprechend ein Menü-Eintrag für registrierte User angezeigt.
Version 1.0: erste Veröffentlichung. Enthalten sind folgende Menüeinträge:
- für alle User und Gäste: flüstern, Nick einfügen, Anschreiben
- für registrierte User: PM
- für Mods: Restore, IP anzeigen, Knebel, Move, Kick, Bann
- für Admins: Mod ernennen, Mod entziehen
Version 1.1
