Spiel: Mensch ärgere dich nicht

Infos zu Spielen, Bots und Tools.
1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von 1. FC Keller » 06.09.2012, 21:35

Hallo zusammen,

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 :-)

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&auml;uft kein Mensch &auml;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 &auml;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 &auml;rgere dich nicht! Spiel teil.");
      }else if(m==myNick)document.write("leider ist die maximale Spielerzahl bereits erreicht. Nimm bei der n&auml;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 &auml;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;
}
Die Grundscriptsammlung gehört an den Anfang der ersten und dritten Ankündigung (falls ihr sie nicht sowieso schon dort habt)

Code: Alles auswählen

<script type='text/javascript' src='/grundscripts.js'></script>
Falls Ihr selbst eine JS-Datei hochladet wie immer per script-Tag in die Ankündigung:

Code: Alles auswählen

<script type='text/javascript' src='http://deinWebspace/verzeichnis/maedn.js'></script>
zu guter letzt legt ihr noch den Chatbefehl an. Heißen muss er "/maedn"

Code: Alles auswählen

<script type=text/javascript>if(parent.info){maednBefehlsAuswertung('%user%','%me%');}else{document.write('spielt Mensch ärgere dich nicht!')}</script>
Viel Spaß damit!

Ich freue mich natürlich immer über Feedback, egal ob ihr Fehler findet oder das Spiel gerne nutzt :-)

Benutzeravatar
harry2109
Beiträge: 336
Registriert: 10.01.2010, 15:05
Wohnort: Nordhorn
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von harry2109 » 06.09.2012, 23:23

Also Kompliment von mir, habs mal getestet es funzt soweit ganz gut, was man evt ändern könnte, das die Nicknamen die selbe Farbe der Spielsteine haben, da man am spielstart nicht weiß welche Steine einem gehören.Ansonsten wie gesagt 1a
Solltet ihr Rechtschreibfehler finden könnt ihr sie behalten denn ich Brauch sie nicht!

www.harry2109.de

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von 1. FC Keller » 06.09.2012, 23:29

normalerweise sollten die steine vor den Nicks in der OL angezeigt werden.

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

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von Maxs » 06.09.2012, 23:30

Hey,

nochmal großes Kompliment! Wir spielen gerade, aber mir fällt auf, dass die Befehle der Züge noch nicht unsichtbar sind. Wäre toll, wenn du das noch ändern kannst. :)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von 1. FC Keller » 06.09.2012, 23:34

stimmt.. das hab ich noch vergessen... update wird folgen.

Benutzeravatar
harry2109
Beiträge: 336
Registriert: 10.01.2010, 15:05
Wohnort: Nordhorn
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von harry2109 » 06.09.2012, 23:36

Hab noch mal das Spiel aufgerufen, und zwar im Firefox ,Google.Chrome und IE 9 ,nirgends werden die Steine in OL angezeigt. Was mir nun noch aufgefallen ist im IE9 wird das Spielfeld wenn man es in die OL schiebt nich mehr richtig angezeigt.
Solltet ihr Rechtschreibfehler finden könnt ihr sie behalten denn ich Brauch sie nicht!

www.harry2109.de

Benutzeravatar
harry2109
Beiträge: 336
Registriert: 10.01.2010, 15:05
Wohnort: Nordhorn
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von harry2109 » 06.09.2012, 23:39

Muß aber dazu sagen nutze das script vom Maxs für die OL liste
Solltet ihr Rechtschreibfehler finden könnt ihr sie behalten denn ich Brauch sie nicht!

www.harry2109.de

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

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von Maxs » 06.09.2012, 23:44

Daran liegt's wohl ;)
Die User in der OL haben bei meinem OL-Script ein "new" vor ihren IDs, also z.B. "newMaxs". Weiß jetzt nicht, wo man das im Script hier anpassen kann.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
harry2109
Beiträge: 336
Registriert: 10.01.2010, 15:05
Wohnort: Nordhorn
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von harry2109 » 06.09.2012, 23:48

oki Danke für die Info
Solltet ihr Rechtschreibfehler finden könnt ihr sie behalten denn ich Brauch sie nicht!

www.harry2109.de

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von 1. FC Keller » 06.09.2012, 23:49

Zeile 471 sieht so aus:

Code: Alles auswählen

parent.rightFrame.document.getElementById(maednPlayer[i]).insertBefore(img, parent.rightFrame.document.getElementById(maednPlayer[i]).firstChild);
sie müsste so angepasst werden:

Code: Alles auswählen

parent.rightFrame.document.getElementById('new'+maednPlayer[i]).insertBefore(img, parent.rightFrame.document.getElementById('new'+maednPlayer[i]).firstChild);
Dann klappt's hoffentlich.

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

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von Maxs » 06.09.2012, 23:51

Ach, noch ein kleiner Bug, da wir ja gerade sowieso bei den Figuren vor den Namen in der OL sind:
Wenn alle das Spiel verlassen, bleiben die Figuren trotzdem noch in der OL vor den Namen. :)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
harry2109
Beiträge: 336
Registriert: 10.01.2010, 15:05
Wohnort: Nordhorn
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von harry2109 » 06.09.2012, 23:58

1. FC Keller hat geschrieben:Zeile 471 sieht so aus:

Code: Alles auswählen

parent.rightFrame.document.getElementById(maednPlayer[i]).insertBefore(img, parent.rightFrame.document.getElementById(maednPlayer[i]).firstChild);
sie müsste so angepasst werden:

Code: Alles auswählen

parent.rightFrame.document.getElementById('new'+maednPlayer[i]).insertBefore(img, parent.rightFrame.document.getElementById('new'+maednPlayer[i]).firstChild);
Dann klappt's hoffentlich.
Funzt nach dem anpassen Danke
Solltet ihr Rechtschreibfehler finden könnt ihr sie behalten denn ich Brauch sie nicht!

www.harry2109.de

BumBumBass

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von BumBumBass » 07.09.2012, 15:09

wird das spiel demnächst auch wie andere direkt in wk tools anwählbar sein ???

Benutzeravatar
bine_1
Beiträge: 197
Registriert: 26.05.2011, 20:30

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von bine_1 » 07.09.2012, 16:49

Hallo.

Ich hab mal eine Frage :oops: wie geht das? - Ich hab das eingefügt und es erscheint das Bild..Beim "Am Zug" steht immer "Schnuffel" nach 6 mal Würfeln immer noch. Auch wenn ich eine 6 Würfel bekomm ich keine Figur raus.
Stell mich etwas blöd an.

Lg Bine

Benutze FF
____________________
Edit

Danke 1.FC Keller

Benutzeravatar
ZischDings
Moderator
Beiträge: 672
Registriert: 22.12.2004, 16:01
Kontaktdaten:

Re: Spiel: Mensch ärgere dich nicht

Ungelesener Beitrag von ZischDings » 07.09.2012, 20:39

Hallo Bine,

klickst Du denn nach dem Würfeln eine Deiner Spielfiguren an? Bei einer 6 muss es eine vom "Wartefeld" sein (falls das noch nicht leer ist), bei anderen Zahlen eine schon aktive Figur.
Meine Meinung steht fest, verwirren Sie mich nicht mit Tatsachen!

http://www.wasguckstu.de

Antworten

Wer ist online?

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