Forum zum WebKicks.De Chatsystem Foren-Übersicht Forum zum WebKicks.De Chatsystem
Support-Forum zum WebKicks-Chatsystem
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Dieses Forum dient als Archiv, es können keine neuen Beiträge eröffnet werden.

Hier geht es zum neuen Webkicks Forum
.

Spiel: Tic Tac Toe
Gehe zu Seite 1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Forum zum WebKicks.De Chatsystem Foren-Übersicht -> Bots, Chat-Games
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
1. FC Keller
Moderator



Anmeldedatum: 04.07.2004
Beiträge: 4176
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda

BeitragVerfasst am: 13.01.2008, 18:41    Titel: Spiel: Tic Tac Toe Antworten mit Zitat

Da es hier schon mehrfach gewünscht wurde habe ich mich gestern und heute mal hin gesetzt und mein 4 Gewinnt-Script auf Tic Tac Toe umgeschrieben.

Äußerliches / Funktionsweise
Um ein Spiel zu starten muss muss man den Befehl
Code:
/ttt USER

absenden. So erscheinen beim eingeladenen User 2 Buttons, mit denen er das Spiel entweder annehmen oder ablehnen kann. Nimmt er das Spiel an, so wird bei beiden in unten rechts in der Onlineliste ein kleines Tic Tac Toe - Spielfeld (3x3 Felder) eingebledet. Durch Klicken auf ein Feld setzt man dort sein Symbol. Dies geschieht immer abwechselnd.
Wer zuerst 3 Spielsteine in eine Reihe bekommt - egal ob waagerecht, senkrecht oder diagonal - hat das Spiel gewonnen.

Voraussetzungen

Voraussetzung ist mal wieder die Grundscriptsammlung.

Das Klapp-Menü für die Onlineliste ist hilfreich, aber nicht notwendig. Dort kann ein weiterer Menü-Eintrag angelegt werden, mit dem man ein Spiel startet.

Weiterhin benötigt ihr einen Webspace um einige Grafiken und eine js-Datei hochzuladen.

Einbau

Wenn die Voraussetzungen gegeben/erledigt sind könnt ihr dann also das Spiel in eueren Chat einbauen.

Zunächst erstellt ihr euch eine js-Datei. Dort kommt folgender Code

hinein:
Code:
var tttBilderPfad = "http://www.beispiel.de/ttt/";
var tttAbsolutePosition = true;
var tttTdBorderStyle = "#aaaaaa dotted 1px";
var tttSpielfeldBorderStyle = "#888888 solid 1px";
var tttTableBorderStyle = "#830 outset 2px";
var tttPlayerNr = 10;
var tttPlayer = new Array(2);
var tttGame;
var tttVorbei = true;
var tttBild1="playera";
var tttZuege = 0;
var tttPlayerFrei = new Array(2);
tttPlayerFrei[1] = true;
tttPlayerFrei[10] = false;
var tttTmpPlayer = new Array(2);
tttTmpPlayer[1] = "";
tttTmpPlayer[10] = "";
var tttImPlayer;
var tttMyColor;

function tttBtnClick(zeile, spalte){
  if(tttGame[zeile][spalte] != 0){
    alert("Dieses Feld ist bereits besetzt.");
    return;
  }
  if(tttVorbei){
    alert("Das Spiel ist vorbei.");
    return;
  }
  if(tttImPlayer == tttPlayerNr)
    sendeText("/ttt setzen, "+tttPlayer[(tttImPlayer==1?10:1)]+", "+zeile+", "+spalte);
  else
    alert("Du bist nicht dran!");
}
function tttSwitchPlayer(){
  tttBild = (tttPlayerNr==1)?"playerb":"playera";
  tttBild1 = (tttPlayerNr==1)?"playera":"playerb";
  tttPlayerNr = (tttPlayerNr==1)?10:1;
  parent.rightFrame.document.getElementById("amZug").firstChild.nodeValue  = tttPlayer[tttPlayerNr];
}
function tttBefehlsAuswertung(eingabe, sender){
  if(strip_tags(eingabe)==strip_tags(sender)){
    if(strip_tags(sender)==myNick)
      document.write("Tic Tac Toe Fehler: sich selbst einladen ist nicht möglich");
    else
      document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
    return;
  }
  a = strip_tags(eingabe).split(", ");
  b = strip_tags(sender);
  if(strip_tags(a[0]).toLowerCase()=="regeln"){
    if(b.toLowerCase() == myNick.toLowerCase()){
     document.write("<b><u>Regeln für Tic Tac Toe</u></b><br>Ziel des Spiels ist es, sein Symbol 3 mal in eine Reihe zu bekommen. Ob waagerecht, senkrecht oder diagonal ist egal. Wer zuerst 3 seiner Symbole in eine Reihe bekommt hat gewonnen. Daher ist es mindestens genauso wichtig zu verhindern, dass der Gegner eine solche Reihe erreicht.<br>Es wird immer abwechselnd gesetzt. Durch Klicken auf ein beliebiges freies Feld kann man dort sein Zeichen setzen.<br>Die beiden Spieler setzen immer abwechselnd. Wenn das Spielfeld voll ist und niemand eine 3er-Reihe erreicht hat endet das Spiel unentschieden.");
   }
   else{
     document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
   }
  }
  else if(a.length==1){
    tttEinladung(sender, eingabe);
  }
  else if(a[0]=="imFree"){
    tttImFree(sender, a[1], a[2])
  }
  else if(a[0]=="setzen"){
    gegner=a[1];
   setzer=b;
   zeile=parseInt(a[2]);
   spalte=parseInt(a[3]);
   tttSetzen(gegner, setzer, zeile, spalte);
   document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
  }
}
function tttSetzen(gegner, setzer, zeile, spalte){
  var rd=parent.rightFrame.document;
  if((!(myNick == tttPlayer[1] || myNick == tttPlayer[10])) || (gegner != tttPlayer[1] && gegner != tttPlayer[10]) || (strip_tags(setzer) !=  tttPlayer[1] && strip_tags(setzer) != tttPlayer[10])){
    return;
  }
  if(tttGame[zeile][spalte] != 0){
    alert("Dieses Feld ist bereits belegt.");
    return;
  }
  if(tttVorbei){
    alert("Das Spiel  ist vorbei.");
    return;
  }
  if(strip_tags(setzer) != tttPlayer[tttPlayerNr]){
    alert("so nicht!");
    return;
  }
  tttSwitchPlayer();
  tttGame[zeile][spalte] = tttPlayerNr;
  parent.rightFrame.document.getElementsByName("tttSpalte"+spalte)[zeile].src = tttBilderPfad+tttBild1+".gif";
  parent.rightFrame.document.getElementsByName("tttSpalte"+spalte)[zeile].setAttribute("alt", (tttBild1=="playera"?"X":"O"));
  tttZuege++;
  if(tttZuege == 9){
    tttVorbei = true;
    alert("Unentschieden");
    rd.body.removeChild(rd.getElementById("TicTacToe"));
    tttPlayer[1] = myNick;
    tttPlayer[10] = myNick;
  }
  if(tttCheckIfWon()){
    tmp = (tttPlayerNr==1)?10:1;
    window.setTimeout('alert("'+tttPlayer[tmp]+' hat gewonnen.");rd=parent.rightFrame.document;if(rd.getElementById("TicTacToe")){rd.body.removeChild(rd.getElementById("TicTacToe"))}', 500);
    tttVorbei = true;
    tttPlayer[1] = myNick;
    tttPlayer[10] = myNick;
  }
}
function tttCheckIfWon(){
  if(tttGame[0][0]+tttGame[1][1]+tttGame[2][2] == tttPlayerNr*3 || tttGame[0][2]+tttGame[1][1]+tttGame[2][0] == tttPlayerNr*3)
    return true;
  for(i=0;i<=2;i++){
    if(tttGame[i][0]+tttGame[i][1]+tttGame[i][2] == tttPlayerNr*3 || tttGame[0][i]+tttGame[1][i]+tttGame[2][i] == tttPlayerNr*3){
      return true;
    }
  }
}
function tttZeichneTabelle(){
  ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
  r = parent.rightFrame;
  tttTabelle = r.document.createElement("table");
  tttTabelle.style.borderCollapse = "collapse";
  tttTabelle.style.borderSpacing = "0px";
  tttTabelle.style.border = tttTableBorderStyle;
  tttTbody = r.document.createElement("tbody");
  tttErsteZeile = r.document.createElement("tr");
  for(i=0;i<3;i++){
    tttTr = r.document.createElement("tr");
    for(j=0;j<3;j++){
      tttTd = r.document.createElement("td");
      tttTd.style.border = tttTdBorderStyle;
      tttTd.style.textAlign = "center";
     tttTd.style.verticalAlign = "middle";
     tttTd.style.width = "45px";
     tttTd.style.height = "45px";
      if(!ie){
        tttTdImg = new Image();
        tttTdImg.src=tttBilderPfad+"blank.gif";
        tttTdImg.style.height = "30px";
        tttTdImg.style.width = "30px";
        tttTdImg.name = "tttSpalte"+j;
        eval("tttTdImg.onclick = function(e){parent.mainframe.tttBtnClick("+i+", "+j+")}");
        tttTd.appendChild(tttTdImg);
      }
      else{
        tttTdImg = "<img src='"+tttBilderPfad+"blank.gif' style='hight:30px;width:30px' onclick='parent.mainframe.tttBtnClick("+i+", "+j+")' name='tttSpalte"+j+"' />";
        tttTd.innerHTML += tttTdImg;
      }
      tttTr.appendChild(tttTd);
    }
    tttTbody.appendChild(tttTr);
  }
  tttTabelle.appendChild(tttTbody);
  tttSpielfeld = r.document.createElement("p");
  tttSpielfeld.style.border = tttSpielfeldBorderStyle;
  tttSpielfeld.setAttribute("id", "TicTacToe");
  tttClose = r.document.createElement("div");
  tttClose.style.marginBottom="0px";
  tttClose.style.textAlign="right";
  tttCloseLink = r.document.createElement("a");
  tttCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('TicTacToe')));void(pm=parent.mainframe);void(pm.sendeText('/f '+pm.tttPlayer[(pm.tttImPlayer==1?10:1)]+' ich habe das TicTacToe-Spiel verlassen.')); document.body.removeChild(document.getElementById('TicTacToe'))");
  tttCloseLink.appendChild(r.document.createTextNode("X"));
  tttClose.appendChild(tttCloseLink);
  tttSpielfeld.appendChild(tttClose);
  tttSpielfeld.appendChild(tttTabelle);
  if(tttAbsolutePosition){
    tttSpielfeld.style.position = "absolute";
    tttSpielfeld.style.bottom = "10px";
    tttSpielfeld.style.right = "15px";
  }
  tttNachTbl = r.document.createElement("span");
  tttNachTbl.appendChild(r.document.createTextNode("Am Zug: "));
  tttAmZug = r.document.createElement("span");
  tttAmZug.setAttribute("id", "amZug");
  tttAmZug.appendChild(r.document.createTextNode(tttPlayer[10]));
  tttNachTbl.appendChild(tttAmZug);
  tttSpielfeld.appendChild(tttNachTbl);
  if(r.document.getElementById("TicTacToe"))
  r.document.body.removeChild(r.document.getElementById("TicTacToe"));
  r.document.body.insertBefore(tttSpielfeld, r.document.getElementsByTagName("p")[0]);
}
function tttEinladung(einlader, eingeladener){
  einlader = strip_tags(einlader);
  if(myNick == einlader || myNick.toLowerCase() == strip_tags(eingeladener).toLowerCase()){
    tttTmpPlayer[1] = einlader;
    tttTmpPlayer[10] = strip_tags(eingeladener);
    tttPlayerFrei[10] = false;
   if(myNick.toLowerCase()==strip_tags(eingeladener).toLowerCase()){
      document.write("l&auml;dt dich auf eine Runde Tic Tac Toe ein. <a href='#' onclick='sendeText(\"/ttt Regeln\");return false;'>Regeln anzeigen</a><p style='text-align:right;'><button onclick='tttElBtnsDeakt(this); sendeText(\"/ttt imFree, "+tttTmpPlayer[1]+", true\")'>annehmen</button><button onclick='tttElBtnsDeakt(this); sendeText(\"/ttt imFree, "+tttTmpPlayer[1]+", false\")'>ablehnen</button></p>");
    }
    else
      document.write("l&auml;dt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
  }
  else
    document.write("l&auml;dt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
  if((einlader==tttPlayer[1] || einlader == tttPlayer[10]) && !tttVorbei){
    tttVorbei = true;
    document.write(" Er/Sie beendet damit das derzeitige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("TicTacToe"))
      rd.body.removeChild(rd.getElementById("TicTacToe"));
  }
}
function tttElBtnsDeakt(objBtn){
  for(i in objBtn.parentNode.getElementsByTagName('button')){
    objBtn.parentNode.getElementsByTagName('button')[i].disabled=true;
  }
}
function tttImFree(freeUser, einlader, isFree){
  if(strip_tags(freeUser)==myNick)
    tttVorbei = true;
  if(!(myNick == einlader || myNick == tttTmpPlayer[10])){
    document.write((isFree=="true")?"nimmt die Tic Tac Toe-Einladung an.":"lehnt die Tic Tac Toe-Einladung ab.");
    return;
  }
  if(isFree=="false")
    document.write("lehnt die Tic Tac Toe-Einladung ab.");
  //Meldung für anderen Spieler des vorherigen Spieles falls dieses noch nicht beendet war
  if(!tttVorbei && isFree=="true"){
    document.write(" nimmt die Einladung an und verl&auml;sst damit das bisherige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("TicTacToe"))
      rd.body.removeChild(rd.getElementById("TicTacToe"));
    return;
  }
  if(strip_tags(freeUser) == tttTmpPlayer[10] && isFree=="true"){
    tttPlayerFrei[10] = true;
    document.write(" nimmt die Einladung an.");
  }
  if(tttPlayerFrei[1] && tttPlayerFrei[10])
    starteTicTacToe();
}
function starteTicTacToe(){
  tttPlayer = tttTmpPlayer;
  tttTmpPlayer = new Array();
  tttTmpPlayer[1]=tttTmpPlayer[10]="";
  tttZuege = 0;
  tttPlayerNr = 10;
  tttVorbei = false;
  tttImPlayer = (myNick==tttPlayer[1])?1:10;
  tttGame = new Array(6);
  for(i=0; i < tttGame.length; i++)
    tttGame[i] = new Array(0,0,0,0,0,0,0);
  tttMyColor = (tttImPlayer==10)?"playera":"playerb";
  tttZeichneTabelle();
}


Anzupassen ist lediglich folgendes in der ersten Codezeile:
Code:
var vgBilderPfad = "http://www.beispiel.de/ttt/";


Hier bitte das Verzeichnis angeben, in dem ihr alle Bilder hochladet, die hier gebraucht werden. Das ist einmal ein transparentes gif-Bild mit dem Namen blank.gif und weiterhin je ein Symbol (idR X und O) für die beiden Spieler. Diese müssen mit playera.gif und playerb.gif benannt werden. Zischdings bietet im folgenden Post einige Bildchen dafür an.

Die folgenden 2 Einstellungen sind optional.

In der 2. Zeile steht folgendes:
Code:
var tttAbsolutePosition = true;


Dadurch wird eingestellt ob das Spielfeld in der Onlineliste unten rechts (und ggf. Nick-Überlappend) oder oberhalb von "Derzeit im Raum" angezeigt werden soll. Standard (true) bedeutet unten. Wenn es oben sein soll ändert es in false:
Code:
var tttAbsolutePosition = false;


In den folgenden 3 Zeilen werden die Rahmen-Styles für die einzelnen Felder, die Tabelle und das ganze Spielfeld (incl. "am Zug" und Exit-Link) definiert. Das kann bei bedarf auch angepasst werden.

Um den Code auch im Chat einzubinden müsst ihr den folgenden Code mit angepasster URL der js-Datei einfügen:
Code:
<script type="text/javascript" src="http://www.deineDomain.de/ttt.js"></script>


Zuguterletzt muss noch ein Chatbefehl im Admin-Menü angelegt werden. Der Name muss, wie bei allen meinen Spielen genau eingehalten werden.

/ttt
Code:
<script type=text/javascript>if(parent.info){tttBefehlsAuswertung('%user%','%me%');}else{document.write('spielt mit einem anderen Chatter Tic Tac Toe')}</script>


Zuletzt bearbeitet von 1. FC Keller am 17.02.2008, 18:43, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Zischdings
Webkicks - Team



Anmeldedatum: 22.12.2004
Beiträge: 6161

BeitragVerfasst am: 13.01.2008, 20:04    Titel: Antworten mit Zitat

hier die spielsteine. benötigt werden 1 blank.gif (gezippt zum runterladen)
und 2 spielsteine - bitte denkt daran, diese vor dem upload umzubenennen
in playera.gif und playerb.gif







Zuletzt bearbeitet von Zischdings am 14.01.2008, 02:04, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
toby01


Verwarnung

Anmeldedatum: 16.12.2007
Beiträge: 524

BeitragVerfasst am: 13.01.2008, 20:22    Titel: Antworten mit Zitat

ich habe das spieleingebaut nur tut sich nichts
da kommt nur
Rayquaza
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Zischdings
Webkicks - Team



Anmeldedatum: 22.12.2004
Beiträge: 6161

BeitragVerfasst am: 13.01.2008, 20:26    Titel: Antworten mit Zitat

du hast das script in deiner ankündigung wie folgt verlinkt:
Code:
<script type="text/javascript" src="http://wkhost.webkicks.de/ttt.js"></script>

das kann natürlich nicht funktionieren, die adresse sollte schon stimmen Winken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
toby01


Verwarnung

Anmeldedatum: 16.12.2007
Beiträge: 524

BeitragVerfasst am: 13.01.2008, 20:36    Titel: Antworten mit Zitat

ah thx zischdings
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
VampireHIM




Anmeldedatum: 15.06.2006
Beiträge: 328

BeitragVerfasst am: 13.01.2008, 22:09    Titel: Antworten mit Zitat

Bei Opera
Flüstermeldung "Ich habe das spiel Verlassen" - geht an einem selbst
und nach dem spiel ende schliesst sich das feld nicht von alleine.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hamigra




Anmeldedatum: 31.08.2006
Beiträge: 1601
Wohnort: Werdau

BeitragVerfasst am: 13.01.2008, 22:43    Titel: Antworten mit Zitat

<<muß @VampireHIM recht geben - auch bei unentschieden bleiben bei beiden Spielern die Spielfelder stehen.
Aber sonst perfekt Ausrufezeichen DANKE 1.FC Winken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Katzer




Anmeldedatum: 12.04.2007
Beiträge: 42
Wohnort: Remscheid

BeitragVerfasst am: 14.01.2008, 01:44    Titel: Antworten mit Zitat

Danke erstmal für die 3 Super Games ...

Hier fehlt noch ne kleinigkeit Smilie...

Die BLANK.GIF Winken

Beim FF wird nen Rotes X angezeigt.

MFG Katzer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Zischdings
Webkicks - Team



Anmeldedatum: 22.12.2004
Beiträge: 6161

BeitragVerfasst am: 14.01.2008, 02:07    Titel: Antworten mit Zitat

oops total verschwitzt sry :p

hier bitteschön blank.gif (gezippt)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
anschke




Anmeldedatum: 31.12.2007
Beiträge: 80
Wohnort: nähe münchen

BeitragVerfasst am: 14.01.2008, 06:44    Titel: Antworten mit Zitat

bei mir ist das kästchen da allerdings besteht der hintergrund aus lauter roten kreuzen (die immer kommen wenn kein bild angezeigt werden kann)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
toby01


Verwarnung

Anmeldedatum: 16.12.2007
Beiträge: 524

BeitragVerfasst am: 14.01.2008, 07:02    Titel: Antworten mit Zitat

hatte ich auch, da fehle die datei blank.gif, die hatte ich mit von 4 gewinnt geklaut, dann gings
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
schaggy07


Verwarnung

Anmeldedatum: 22.11.2007
Beiträge: 258
Wohnort: Eggebek

BeitragVerfasst am: 14.01.2008, 14:46    Titel: Antworten mit Zitat

Kann man das nciht eigendlich auch machen, das das Spielfelf eventuell als PopUp angezeigt wird, und nicht in der OL
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
cro




Anmeldedatum: 08.04.2007
Beiträge: 225

BeitragVerfasst am: 14.01.2008, 22:30    Titel: Antworten mit Zitat

Hey!

1. Das blank Bild nicht angezeigt.
2. Wie beim Spiel 4Gewinnt geht bei mir nichts.


Bei mir klappen die Spiele nie.


Zuletzt bearbeitet von cro am 14.01.2008, 22:57, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Link




Anmeldedatum: 05.02.2006
Beiträge: 312

BeitragVerfasst am: 14.01.2008, 22:38    Titel: Antworten mit Zitat

Grundscriptsammlung am anfang der Ankündigung?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
cro




Anmeldedatum: 08.04.2007
Beiträge: 225

BeitragVerfasst am: 14.01.2008, 22:40    Titel: Antworten mit Zitat

jo
auch ohne zeilenumbruch


also der script ist der allererste
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Forum zum WebKicks.De Chatsystem Foren-Übersicht -> Bots, Chat-Games Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter
Seite 1 von 9

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de