nach einer halben Ewigkeit gibts nun mal wieder ein Spiele-Script von mir für euere Chats.
Die Regeln für Mensch ärgere dich nicht muss ich wohl nicht erklären.
Im Chat ist der Ablauf folgendermaßen:
Ein beliebiger User startet den "Teilnahmemodus" per "/maedn".
Anschließend können zwischen 1 und 3 weiteren Usern teilnehmen per "/maedn t". Wenn sich 4 Spieler gefunden haben startet das Spiel automatisch. Wenn das Spiel mit weniger Spielern starten soll kann der "Spielleiter" es vorab starten per "/maedn s".
Anschließend geht es in der Reihenfolge der Teilnahme los mit Würfeln. Es wird das Chateigene Würfel-System verwendet. Daher kann sowohl per "/wuerfel" als auch per Klick die kleine Würfel-Grafik im Spielfeld gewürfelt werden.
Eine weitere Neuerung im Vergleich zu den anderen Spielen gibt es noch. Und zwar ist es jetzt den Spielern überlassen ob sie das Spielfeld klein in der Onlineliste anzeigen möchten oder groß im Stream. Zum Wechseln könnt ihr den Pfeil in der unteren rechten Ecke des Spielfeldes verwenden.
Die große Stream-Version lässt sich per Drag&Drop verschieben.
Vielen Dank an Moni, die mir erneut mit Grafiken ausgehofen hat
![Smilie :-)](./images/smilies/icon_smile.gif)
Der Einbau funktioniert wie bei den anderen Spielen auch. Es besteht aus einem Script, welches in eine JS-Datei oder den Script-Manager auf http://wktools.net kommt und aus einem Chatbefehl, den ihr im Admin-Menü anlegt.
Diese muss zusammen mit der Grundscriptsammlung in die erste und dritte Ankündigung eingebunden werden.
Hier der Inhalt der JS-Datei:
Script:Zeigen
Code: Alles auswählen
var maednBg=[[
"http://wktools.net/images/games/maedn/default/blank.gif",
"http://wktools.net/images/games/maedn/default/hg.gif",
"http://wktools.net/images/games/maedn/default/hghellblau.gif",
"http://wktools.net/images/games/maedn/default/hggruen.gif",
"http://wktools.net/images/games/maedn/default/hggelb.gif",
"http://wktools.net/images/games/maedn/default/hgrot.gif"
],[
"http://wktools.net/images/games/maedn/default/blank.gif",
"http://wktools.net/images/games/maedn/default/hg_gross.gif?",
"http://wktools.net/images/games/maedn/default/hghellblau_gross.gif?",
"http://wktools.net/images/games/maedn/default/hggruen_gross.gif?",
"http://wktools.net/images/games/maedn/default/hggelb_gross.gif?",
"http://wktools.net/images/games/maedn/default/hgrot_gross.gif?"
]];
var maednSteine=[[
"http://wktools.net/images/games/maedn/default/blank.gif",
"http://wktools.net/images/games/maedn/default/blank.gif",
"http://wktools.net/images/games/maedn/default/steinhellblau2.gif",
"http://wktools.net/images/games/maedn/default/steingruen2.gif",
"http://wktools.net/images/games/maedn/default/steingelb2.gif",
"http://wktools.net/images/games/maedn/default/steinrot2.gif"
],[
"http://wktools.net/images/games/maedn/default/blank.gif",
"http://wktools.net/images/games/maedn/default/blank.gif",
"http://wktools.net/images/games/maedn/default/13x28_blau.png",
"http://wktools.net/images/games/maedn/default/13x28_gruen.png",
"http://wktools.net/images/games/maedn/default/13x28_gelb.png",
"http://wktools.net/images/games/maedn/default/13x28_rot.png"
]];
var maednBefehl = "/maedn";
var maednSpielfeldBorderStyle="1px dotted #006600";
var maednTableBorderStyle="";
var maednTdBorderStyle="4px outset #444444";
var maednAbsolutePosition=1;
var maednSpielfeldColor="#ffff99";
var maednFontColor="#000000";
var maednFeldSize=['16px', '24px']; // [Groesse_OL, Groesse_Stream]
var maednLeiterRechte=1;//der jenige, der das Spiel eroeffnet bekommt Sonderrechte
var maednStream=1; //Spielfeld standardmaessig im Stream (1) oder der OnlineListe (0) laden
var maednRegeln={
rausbei6:1, //man muss aus dem haus setzen wenn man eine 6 wuerfelt
startposfrei:1, //man muss die startposition immer frei machen wenn noch steine im haus sind
schlagzwang:1 //man muss schlagen wenn man kann
}
//drag&drop
var once_per_browser=0;
var offsetx,offsety,tempx,tempy;
var maednCrossobj='';
//feste spielvariablen - nicht aendern!
var maednAmZug=0;
var maednMaster="";
var maednWurf=0;
var maednStep="";
var maednPlayer=[];
var maednGameRunning=0;
var maednFixMode=0;
var maednFixStein=0;
var maednPositionen=[];
var maednFiguren=[];
function maednBefehlsAuswertung(eingabe, sender){
u=strip_tags(eingabe);
m=strip_tags(sender);
u2=u.split(" ");
if(!maednGameRunning && u!=""){
if(m==myNick){//wenn man selbst einen meadn-Befehl sendet obwohl kein Spiel laueft
document.write("Im Moment läuft kein Mensch ärgere dich nicht!-Spiel. Spiel starten per \"<a onclick='sendeText(\""+maednBefehl+"\")' href='javascript:void(0)'>"+maednBefehl+"</a>\".");
}else hideTable();//wenn es jemand anderes sendet (z.B. weil er spielt und ich nach spielbegin den chat betreten habe)
return;
}
if(!maednGameRunning){
document.write("startet ein Mensch ärgere dich nicht!-Spiel.");
if(m==myNick)document.write(" Wenn alle Mitspieler teilgenommen haben starte das Spiel per \"<a onclick='sendeText(\""+maednBefehl+" s\")' href='javascript:void(0)'>"+maednBefehl+" s</a>\".");
else document.write(" Teilnehmen per \"<a onclick='sendeText(\""+maednBefehl+" t\")' href='javascript:void(0)'>"+maednBefehl+" t</a>\".");
maednMaster=m;
maednGameRunning=1;
maednPlayer=[m];
return;
}
if(maednGameRunning==1){//spieler hinzufuegen und Spiel starten
if(u!="t" && (u!="s" || m!=maednMaster)){
if(m==myNick){
if(m==maednMaster)document.write("Das Spiel befindet sich im Teilnahme-Modus. Wenn alle Mitspieler teilgenommen haben starte das Spiel per \"<a onclick='sendeText(\""+maednBefehl+" s\")' href='javascript:void(0)'>"+maednBefehl+" s</a>\".");
else document.write("Es wurde bereits ein Spiel von "+maednMaster+" gestartet. Teilnehmen per \"<a onclick='sendeText(\""+maednBefehl+" t\")' href='javascript:void(0)'>"+maednBefehl+" t</a>\".");
}else{
hideTable();
}
return;
}
if(u=="t"){
if(maednPlayer.length<4){
if(maednPlayer.inArray(m)){
document.write("nimmt bereits an dem Spiel teil.");
return;
}
maednPlayer[maednPlayer.length]=m;
document.write("nimmt am Mensch ärgere dich nicht! Spiel teil.");
}else if(m==myNick)document.write("leider ist die maximale Spielerzahl bereits erreicht. Nimm bei der nächsten Runde teil oder gehe in einen anderen Raum um dort mit anderen Mitspielern ein Spiel zu beginnen (nach dem Raumwechsel \"reconnect\" klicken.");
else hideTable();
}
if(m==maednMaster && u=="s" || maednPlayer.length==4){
if(maednPlayer.length==1){
if(m==myNick)document.write("Mensch ärgere dich nicht! kann man nicht alleine spielen!");
else hideTable();
return;
}
document.write("Teilnahme-Modus beendet. Das Spiel startet jetzt.");
maednGameRunning=2;
maednPositionen=[];
for(var i=0;i<maednPlayer.length;i++){
maednPositionen[i]=['a'+i, 'b'+i, 'c'+i, 'd'+i];
}
maednZeichneTabelle(maednStream);
maednSetStep('wuerfel');
prd=parent.rightFrame.document;
if(prd.getElementById("maednAmZug")){
if(!prd.getElementById("maednAmZug").firstChild)
prd.getElementById("maednAmZug").appendChild(prd.createTextNode(maednPlayer[0]))
else prd.getElementById("maednAmZug").firstChild.nodeValue=maednPlayer[0];
}
if(document.getElementById("maednAmZug")){
if(!document.getElementById("maednAmZug").firstChild)
document.getElementById("maednAmZug").appendChild(document.createTextNode(maednPlayer[0]))
else document.getElementById("maednAmZug").firstChild.nodeValue=maednPlayer[0];
}
return;
}
}
if(maednGameRunning != 2) return;
if(u2.length>1){
if(u2[0]=="fix" && u2.length==4){
maednPositionen[u2[1]][u2[2]]=isNaN(u2[3])?u2[3]:parseInt(u2[3]);
document.write("Verschiebt eine Figur von "+maednPlayer[u2[1]]);
maednZeichneTabelle(maednStream);
}
return;
}
readStream();//stream auslesen erzwingen (falls wuerfel-zeile und maedn-Befehl gleichzeitig empfangen werden)
maednZug(u);
}
function maednGueltigerZug(id, wurf, checkZwang){
if(typeof checkZwang=="undefined")checkZwang=1;
if(isNaN(id) && id.match(/^[a-d]/)){//versucht raus zu setzen
if(wurf!=6){
return "Man darf nur raus setzen wenn man eine 6 gewuerfelt hat.";
}
for(var i=0;i<4;i++){
if(maednPositionen[maednAmZug][i]==maednAmZug*10){
return "Deine Startposition ist besetzt.";
}
}
}else{
var zielFeld=(id+wurf)%40;
if((id<maednAmZug*10&&zielFeld>=maednAmZug*10) || (id>zielFeld&&maednAmZug==0)){//auf treppe setzen
//auf treppe!
zielFeld=40+((id-maednAmZug*10+maednAmZug*4+wurf)%40);
if(zielFeld>(43+maednAmZug*4)){
return "Dieser Stein kann nicht gesetzt werden. Der Wurf ist zu hoch.";
}
}
if(id>40){//innerhalb des Hauses bewegen
zielFeld=id+wurf;//kein %40
if(zielFeld>(43+maednAmZug*4)){
return "Dieser Stein kann nicht gesetzt werden. Der Wurf ist zu hoch.";
}
}
for(var i=0;i<4;i++){
//console.log(maednPositionen[maednAmZug][i], id, maednWurf, (id+maednWurf)%40);
if(maednPositionen[maednAmZug][i]==zielFeld){
return "Diese Figur kannst du nicht setzen. Das Feld ist besetzt.";
}
}
}
if(checkZwang){
//Zugzwaenge
//bei 6 raus setzen!
if(maednRegeln.rausbei6 && wurf==6&&!isNaN(id)){
var blocked=0;
var imHaus=0;
for(i=0;i<4;i++){
if(isNaN(maednPositionen[maednAmZug][i]))imHaus=1;
if(maednPositionen[maednAmZug][i]==maednAmZug*10)blocked=1;
}
if(imHaus&&!blocked)return "Es sind noch Figuren im Haus. Diese müssen bei einer 6 zuerst raus gesetzt werden.";
else return true;
}
//erstes Feld frei machen
if(maednRegeln.startposfrei){
var blocked=0;
var besetzt=0;
var imHaus=0;
for(i=0;i<4;i++){
if(maednPositionen[maednAmZug][i]==maednAmZug*10)besetzt=1;
if(maednPositionen[maednAmZug][i]==(maednAmZug*10+wurf))blocked=1;
if(isNaN(maednPositionen[maednAmZug][i]))imHaus=1;
}
if(besetzt&&!blocked&&imHaus){
if(id==maednAmZug*10)return 1;
else return "Das erste Feld muss frei gesetzt werden!";
}
}
if(maednRegeln.schlagzwang){
var schlagbar=0;
var schlaegt=0;
for(i=0;i<maednPositionen.length;i++){
if(i==maednAmZug)continue;
for(j=0;j<4;j++){
if(maednPositionen[i][j]==zielFeld){//geklickte figur schlaegt. zug ist gueltig
schlaegt=1;
return 1;
}
for(k=0;k<4;k++){//alle eigenen steine testen, ob einer schlagen koennte
if(maednPositionen[maednAmZug][k]==id)continue;
if(
maednGueltigerZug(maednPositionen[maednAmZug][k],wurf,0) && //kann der Stein ueberhaupt gesetzt werden?
((!isNaN(maednPositionen[maednAmZug][k]) && //eigene figur nicht auf startposition
maednPositionen[maednAmZug][k]+wurf%40==maednPositionen[i][j] && //und zielposition der eigenen figur gleich position der gegnerischen
!(maednPositionen[maednAmZug][k]<maednAmZug*10 && //und eigene figur wuerde nicht auf treppe setzen
(maednPositionen[maednAmZug][k]+wurf%40)>=maednAmZug*10)) ||
isNaN(maednPositionen[maednAmZug][k]) && wurf==6 && maednPositionen[i][j]==maednAmZug*10) //6 gewuerfelt, stein im haus - kann raus setzen. gegnerischer stein sitzt auf startfeld?
){
schlagbar=1;
tmp="Stein "+maednAmZug+"_"+k+" kann Stein "+i+"_"+j+" schlagen.";
}
}
}
}
if(schlagbar && !schlaegt)return tmp;
}
}
return 1;
}
function maednTreppeEnde(stein, treppeEnde){
if(isNaN(maednPositionen[maednAmZug][stein]))return false;//im haus
if(maednPositionen[maednAmZug][stein]<40)return false;//nicht auf der treppe
if(treppeEnde==0)treppeEnde=43+maednAmZug*4;
if(maednPositionen[maednAmZug][stein]==treppeEnde)return true;
if(maednPositionen[maednAmZug][stein]>treppeEnde)return false;//bereits abgehakt
for(var i=0;i<4;i++){
if(maednPositionen[maednAmZug][stein]==treppeEnde)return true;
if(maednPositionen[maednAmZug][i]==treppeEnde){
i=-1;
treppeEnde--;
}
}
return false;
}
function maednClick(id){
if(maednPlayer[maednAmZug]!=myNick && !maednFixMode){
alert("Du bist nicht dran.");
return;
}
if(maednStep!="setzen" && !maednFixMode){
alert("bitte erst Würfeln!");
return;
}
var stein = -1;
if(maednFixMode && maednFixStein){
if(id.match(/(\d+)_(\d+)/)){
stein=RegExp.$2;
id=maednPositionen[maednAmZug][stein];
}else{
id=id.replace(/^maedn_/, '');
}
sendeText(maednBefehl+" fix "+maednFixStein+" "+id);
maednFixMode=0;
maednFixStein=0;
return;
}
// console.log(id);
if(id.match(/(\d+)_(\d+)/)){
if(RegExp.$1==maednAmZug || maednFixMode){
stein=RegExp.$2;
id=maednPositionen[RegExp.$1][stein];
if(maednFixMode){
maednFixStein=RegExp.$1+" "+RegExp.$2;
return;
}
}
}else{
id=id.replace(/^maedn_/, '');
if(!id.match(/^[a-d]/))id=parseInt(id);
// console.log(id);
if(maednFixMode){
for(var j=0;j<maednPlayer.lenth;j++){
for(var i=0;i<4;i++){
if(maednPositionen[j][i]==id){
maednFixStein=j+" "+i;
return;
}
}
}
}else{
for(var i=0;i<4;i++){
if(maednPositionen[maednAmZug][i]==id){
stein=i;
break;
}
}
}
}
if(stein==-1){
if(maednFixMode)alert("Auf dieser Position ist kein Stein.");
else alert("Auf dieser Position ist keiner deiner Steine.");
return;
}
gz=maednGueltigerZug(id, maednWurf);
if(isNaN(gz)){
alert(gz);
return;
}
sendeText(maednBefehl+" "+stein);
}
function maednZug(u){
// u=u.toLowerCase();
tbls=document.getElementsByTagName("table");
prd=(pr=(p=parent).rightFrame).document;
id=maednPositionen[maednAmZug][u];
if(prd.getElementById("maedn_"+id))prd.getElementById("maedn_"+id).src=maednSteine[0][0];
if(document.getElementById("maedn_"+id))document.getElementById("maedn_"+id).src=maednSteine[1][0];
var hide=1;
if(isNaN(id) && id.match(/^[a-d]/)){
var ZielFeld=(maednAmZug*10)%40;
// console.log("raus");
}else{
var ZielFeld=((id+maednWurf)%40);
if((id<maednAmZug*10&&ZielFeld>=maednAmZug*10) || (id>ZielFeld&&maednAmZug==0)){
//ins haus!
ZielFeld=40+((id-maednAmZug*10+maednAmZug*4+maednWurf)%40);
}
if(id>40){//innerhalb des Hauses bewegen
ZielFeld=id+maednWurf;//kein %40
if(ZielFeld>(43+maednAmZug*4)){
document.write("Dieser Stein kann nicht gesetzt werden. Der Wurf ist zu hoch.");
hide=0;
}
}
}
for(var i=0;i<4;i++){
if(maednPositionen[maednAmZug][i]==ZielFeld){
document.write("ungueltiger Zug (Feld besetzt!)");
return;
}
}
schlagen: for(var i=0;i<maednPlayer.length;i++){
for(var j=0;j<4;j++){
if(maednPositionen[i][j]==ZielFeld){
//console.log("schlagen");
var abcd={a:0,b:0,c:0,d:0};
for(var k=0;k<4;k++){
if(isNaN(maednPositionen[i][k])&&maednPositionen[i][k].match(/^([a-d])\d$/)){
abcd[RegExp.$1]=1;
}
}
for(var k in abcd){
if(!abcd[k]){
maednPositionen[i][j]=k+i;
if(prd.getElementById("maedn_"+k+i)){
//prd.getElementById("maedn_"+k+i).src=maednSteine[0][i+2];
(tmp=prd.getElementById("maedn_"+k+i)).parentNode.insertBefore(maednFiguren[i][j], tmp);
}
if(document.getElementById("maedn_"+k+i)){
//document.getElementById("maedn_"+k+i).src=maednSteine[1][i+2];
(tmp=document.getElementById("maedn_"+k+i)).parentNode.insertBefore(maednFiguren[i][j], tmp);
}
break schlagen;
}
}
}
}
}
maednPositionen[maednAmZug][u]=ZielFeld;
if(prd.getElementById("maedn_"+maednPositionen[maednAmZug][u])){
//prd.getElementById("maedn_"+maednPositionen[maednAmZug][u]).src=maednSteine[0][maednAmZug+2];
(tmp=prd.getElementById("maedn_"+maednPositionen[maednAmZug][u])).parentNode.insertBefore(maednFiguren[maednAmZug][u], tmp);
}
if(document.getElementById("maedn_"+maednPositionen[maednAmZug][u])){
//document.getElementById("maedn_"+maednPositionen[maednAmZug][u]).src=maednSteine[1][maednAmZug+2];
(tmp=document.getElementById("maedn_"+maednPositionen[maednAmZug][u])).parentNode.insertBefore(maednFiguren[maednAmZug][u], tmp);
}
if(maednWurf!=6)maednChangeUser(0);
maednSetStep("wuerfel");
if(hide)hideTable();
}
function maedn_tr(stream){
var r=stream?parent.mainframe.document:parent.rightFrame.document;
var tr=r.createElement("div");
tr.style.display='table-row';
var j, img, src, k, l;
for(var i=1;i<maedn_tr.arguments.length;i++){
td=r.createElement("div");
td.style.display='table-cell';
j=maedn_tr.arguments[i]?maedn_tr.arguments[i][0]:0;
td.style.backgroundImage="url("+maednBg[stream][j]+")";
if(j){
img=r.createElement("img");
img.id="maedn_"+maedn_tr.arguments[i][1];
img.onclick=function(e){
parent.mainframe.maednClick(this.id);
}
// if(isNaN(maedn_tr.arguments[i][1]) && maednPlayer.length>=maedn_tr.arguments[i][0]-1)
// img.src=maednSteine[maedn_tr.arguments[i][0]];
// else img.src=maednSteine[0];
img.src=maednSteine[stream][0];
alleSteine: for(k=0;k<maednPlayer.length;k++){
for(l=0;l<4;l++){//alle steine aller spieler durchgehen!
// console.log(maednPositionen[k][l], maedn_tr.arguments[i][1]);
if(maednPositionen[k][l]==maedn_tr.arguments[i][1]){
//img.src=maednSteine[stream][k+2];
td.appendChild(maednFiguren[k][l]);
break alleSteine;
}
}
}
img.style.width=img.style.height=maednFeldSize[stream];
td.appendChild(img);
}else td.appendChild(r.createTextNode(' '))
td.style.width=td.style.height=maednFeldSize[stream];
tr.appendChild(td);
}
return tr;
}
function maednZeichneTabelle(stream){
if(typeof stream == "undefined")stream=0;
maednStream=stream;
var ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
var r = stream?parent.mainframe:parent.rightFrame;
var rd=r.document;
//altes Spielfeld ggf. entfernen
if(typeof document.getElementById('Maedn')!="undefined" && !!document.getElementById('Maedn'))
document.body.removeChild(document.getElementById('Maedn'));
if(typeof parent.rightFrame.document.getElementById('Maedn')!="undefined" && !!parent.rightFrame.document.getElementById('Maedn'))
parent.rightFrame.document.body.removeChild(parent.rightFrame.document.getElementById('Maedn'));
for(var i=0;i<maednPlayer.length;i++){
if(typeof parent.rightFrame.document.getElementById('maednStein'+i)!="undefined" && !!parent.rightFrame.document.getElementById('maednStein'+i))
parent.rightFrame.document.getElementById('maednStein'+i).parentNode.removeChild(parent.rightFrame.document.getElementById('maednStein'+i));
var img=parent.rightFrame.document.createElement('img');
img.src=maednSteine[stream][i+2];
img.id='maednStein'+i;
parent.rightFrame.document.getElementById(maednPlayer[i]).insertBefore(img, parent.rightFrame.document.getElementById(maednPlayer[i]).firstChild);
}
for(i=0;i<maednPositionen.length;i++){
maednFiguren[i]=[];
for(j=0;j<maednPositionen[i].length;j++){
maednFiguren[i][j]=rd.createElement("img");
maednFiguren[i][j].src=maednSteine[stream][i+2];
maednFiguren[i][j].style.position="absolute";
if(stream){
maednFiguren[i][j].style.marginLeft="6px";
maednFiguren[i][j].style.marginTop="-8px";
}else{
maednFiguren[i][j].style.marginLeft="2px";
}
maednFiguren[i][j].id=i+"_"+j;
maednFiguren[i][j].onclick=function(e){
parent.mainframe.maednClick(this.id);
}
}
}
maednTabelle = rd.createElement("div");
maednTabelle.style.display='table';
maednTabelle.style.borderCollapse = "collapse";
maednTabelle.style.borderSpacing = "0px";
maednTabelle.style.border = maednTableBorderStyle;
// maednTbody = rd.createElement("div");
// maednTbody.style.display='table-body';
maednTbody=maednTabelle;
maednTbody.appendChild(maedn_tr(stream, [5,'a3'],[5,'b3'],0, 0, [1,38],[1,39],[2, 0], 0, 0,[2,'a0'],[2,'b0']));
maednTbody.appendChild(maedn_tr(stream, [5,'c3'],[5,'d3'],0, 0, [1,37],[2,40],[1, 1], 0, 0,[2,'c0'],[2,'d0']));
maednTbody.appendChild(maedn_tr(stream, 0, 0, 0, 0, [1,36],[2,41],[1, 2], 0, 0, 0, 0));
maednTbody.appendChild(maedn_tr(stream, 0, 0, 0, 0, [1,35],[2,42],[1, 3], 0, 0, 0, 0));
maednTbody.appendChild(maedn_tr(stream, [5,30], [1,31], [1,32],[1,33],[1,34],[2,43],[1, 4],[1, 5],[1, 6], [1, 7], [1, 8]));
maednTbody.appendChild(maedn_tr(stream, [1,29], [5,52], [5,53],[5,54],[5,55],0, [3,47],[3,46],[3,45], [3,44], [1, 9]));
maednTbody.appendChild(maedn_tr(stream, [1,28], [1,27], [1,26],[1,25],[1,24],[4,51],[1,14],[1,13],[1,12], [1,11], [3,10]));
maednTbody.appendChild(maedn_tr(stream, 0, 0, 0, 0, [1,23],[4,50],[1,15], 0, 0, 0, 0));
maednTbody.appendChild(maedn_tr(stream, 0, 0, 0, 0, [1,22],[4,49],[1,16], 0, 0, 0, 0));
maednTbody.appendChild(maedn_tr(stream, [4,'a2'],[4,'b2'],0, 0, [1,21],[4,48],[1,17], 0, 0,[3,'a1'],[3,'b1']));
maednTbody.appendChild(maedn_tr(stream, [4,'c2'],[4,'d2'],0, 0, [4,20],[1,19],[1,18], 0, 0,[3,'c1'],[3,'d1']));
//maednTabelle.appendChild(maednTbody);
maednSpielfeld = rd.createElement("p");
maednSpielfeld.style.backgroundColor=maednSpielfeldColor;
maednSpielfeld.style.color=maednFontColor;
maednSpielfeld.style.border = maednSpielfeldBorderStyle;
maednSpielfeld.setAttribute("id", "Maedn");
if(stream){
maednCrossobj=maednSpielfeld;
maednSpielfeld.onmousedown=initializedrag;
maednSpielfeld.onmouseup=new Function("dragapproved=false");
}
maednClose = rd.createElement("div");
maednClose.style.marginBottom="0px";
maednClose.style.textAlign="right";
//Steine frei verschieben - nur für admins, mods und den Spielleiter!
// if(myStatus>1 || (maednLeiterRechte && myNick==maednPlayer[0])){
// maednFixLink = rd.createElement("a");
// maednFixLink.setAttribute("href", "javascript:void(parent.mainframe.maednFixMode=1);");
// maednFixLink.appendChild(rd.createTextNode("V"));//Verschieben
// maednFixLink.title="Einen Stein frei verschieben";
// maednClose.appendChild(maednFixLink);
// maednClose.appendChild(rd.createTextNode(" "));
// }
maednCloseLink = rd.createElement("a");
maednCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('Maedn')), parent.mainframe.sendeText('/me hat das \"Mensch ärgere dich nicht!\" Spiel verlassen.'));");
maednCloseLink.appendChild(rd.createTextNode("X"));
maednClose.appendChild(maednCloseLink);
maednSpielfeld.appendChild(maednClose);
maednSpielfeld.appendChild(maednClose);
maednSpielfeld.appendChild(maednTabelle);
var amZug=rd.createElement("div");
amZug.setAttribute("style", "float:left");
var amZug2=rd.createElement("span");
amZug2.id="maednAmZug";
amZug.appendChild(rd.createTextNode("am Zug: "));
amZug2.appendChild(rd.createTextNode(maednPlayer[maednAmZug]));
amZug.appendChild(amZug2);
var wuerfel=rd.createElement("img");
wuerfel.id='maednWuerfel';
wuerfel.src='/wuerfel.gif';
wuerfel.style.marginLeft="5px";
if((maednStep!="wuerfel"&&maednStep!="raus"&&maednStep!="raus2") || maednPlayer[maednAmZug]!=myNick)wuerfel.style.display="none";
wuerfel.onclick=function(){
parent.mainframe.sendeText("/wuerfel");
}
amZug.appendChild(wuerfel);
maednSpielfeld.appendChild(amZug);
changeDisplay=rd.createElement("div");
changeDisplay.setAttribute("style", "float:right;cursor:pointer;");
changeDisplay.setAttribute("title", stream?"In die OL verschieben":"In den Stream verschieben");
changeDisplay.appendChild(rd.createTextNode(stream?"-->":"<--"));
changeDisplay.onclick=function(){
maednZeichneTabelle(1-stream);
//streamReader auf geaenderte Zell-Zahl einstellen.
// if(stream)parent.mainframe.streamReaderLineNr-=121;
// else parent.mainframe.streamReaderLineNr+=121;
}
maednSpielfeld.appendChild(changeDisplay);
clear=rd.createElement("div");
clear.style.clear="both";
maednSpielfeld.appendChild(clear);
if(maednAbsolutePosition || stream){
maednSpielfeld.style.position = stream?"fixed":"absolute";
maednSpielfeld.style.zIndex = "2";
maednSpielfeld.style.bottom = "10px";
maednSpielfeld.style.right = "15px";
}
if(rd.getElementById("Maedn"))
rd.body.removeChild(rd.getElementById("Maedn"));
rd.body.insertBefore(maednSpielfeld, rd.body.firstChild);
}
function maednChangeUser(changeCount){
if(changeCount>maednPlayer.length){
alert("Keine Züge mehr möglich! Das Spiel ist beendet.");
return false;
}
maednAmZug=(maednAmZug+1)%maednPlayer.length;
prd=parent.rightFrame.document;
if(prd.getElementById("maednAmZug")){
prd.getElementById("maednAmZug").firstChild.nodeValue=maednPlayer[maednAmZug];
}
if(document.getElementById("maednAmZug")){
document.getElementById("maednAmZug").firstChild.nodeValue=maednPlayer[maednAmZug];
}
//checken ob user ueberhaupt setzen kann - aktuell immer der fall wenn man nicht gewonnen hat - kann aber spaeter durch zusaetzliche regeln ("mauer") auch an anderer stelle erreicht werden
var gueltig=0;
steinCheck: for(var i=0;i<4;i++){//alle steine des spielers durch gehen
for(var j=1;j<=6;j++){//alle moeglichen wuerfel-Werte checken
if(!isNaN(maednGueltigerZug(maednPositionen[maednAmZug][i], j))){
gueltig=1;
break steinCheck;
}
}
}
if(!gueltig)maednChangeUser(changeCount+1);//wenn kein einziger zug moeglich: aussetzen - direkt weiter zum naechsten
}
function maednWuerfel(lineNr, usr, wuerfel){
// console.log(lineNr, usr, wuerfel);
//uebergehen wer nicht berechtigt ist oder bereits gewuerfelt hat oder mit mehr als einem wuerfel wirft.
if(wuerfel>6)return;
if(maednStep!='wuerfel' && maednStep!='raus' && maednStep!='raus2')return;
if(usr!=maednPlayer[maednAmZug])return;
if(maednStep=='raus'){
if(wuerfel!=6){
maednSetStep("raus2");
return;
}
}else if(maednStep=='raus2'){
if(wuerfel!=6){
maednChangeUser(0);
maednSetStep("wuerfel");
return;
}
}
// maednChangeUser();
var ungueltig=0;
for(var i=0;i<4;i++){
if((!isNaN(maednPositionen[maednAmZug][i]) && !maednTreppeEnde(i,0)) || wuerfel==6){//wenn stein nummer i nicht im haus steht oder eine 6 gewuerfelt wurde kann grundsaetzlich gesetzt werden
if(isNaN(maednGueltigerZug(maednPositionen[maednAmZug][i], parseInt(wuerfel)))){
ungueltig=1;
continue;
}
maednWurf=parseInt(wuerfel);
maednSetStep("setzen");
// maednStep='setzen';
return;
}
}
//wenn alle Steine im Haus sind darf man bis zu 3 mal wuerfeln (zum "raus kommen"). Wenn nicht ("ungueltig") dann darf man nur einmal wuerfeln (ausser bei einer 6).
if(ungueltig){
if(wuerfel!=6)maednChangeUser(0);
maednSetStep("wuerfel");
return;
}
maednSetStep("raus");
}
addWuerfelFunction(maednWuerfel);
function maednSetStep(step){
maednStep=step;
if(maednPlayer[maednAmZug]==myNick && (step=='wuerfel' || step=='raus' || step=='raus2')){
if(typeof parent.rightFrame.document.getElementById('maednWuerfel') != "undefined" && parent.rightFrame.document.getElementById('maednWuerfel'))parent.rightFrame.document.getElementById('maednWuerfel').style.display='inline';
if(typeof document.getElementById('maednWuerfel') != "undefined" && document.getElementById('maednWuerfel'))document.getElementById('maednWuerfel').style.display='inline';
}else{
if(typeof parent.rightFrame.document.getElementById('maednWuerfel') != "undefined" && parent.rightFrame.document.getElementById('maednWuerfel'))parent.rightFrame.document.getElementById('maednWuerfel').style.display='none';
if(typeof document.getElementById('maednWuerfel') != "undefined" && document.getElementById('maednWuerfel'))document.getElementById('maednWuerfel').style.display='none';
}
}
function drag_drop(e){
e=e?e:window.event;
if(dragapproved){
maednCrossobj.style.right=(tempx+offsetx-e.clientX)+'px';
maednCrossobj.style.bottom=(tempy+offsety-e.clientY)+'px';
return false
}
}
function initializedrag(e){
e=e?e:window.event;
offsetx=e.clientX;
offsety=e.clientY;
tempx=parseInt(maednCrossobj.style.right);
tempy=parseInt(maednCrossobj.style.bottom);
dragapproved=true;
document.onmousemove=drag_drop;
}
Code: Alles auswählen
<script type='text/javascript' src='/grundscripts.js'></script>
Code: Alles auswählen
<script type='text/javascript' src='http://deinWebspace/verzeichnis/maedn.js'></script>
Code: Alles auswählen
<script type=text/javascript>if(parent.info){maednBefehlsAuswertung('%user%','%me%');}else{document.write('spielt Mensch ärgere dich nicht!')}</script>
Ich freue mich natürlich immer über Feedback, egal ob ihr Fehler findet oder das Spiel gerne nutzt
![Smilie :-)](./images/smilies/icon_smile.gif)