diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ff27c68 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +includes.php diff --git a/Werwolf.php b/Werwolf.php new file mode 100644 index 0000000..762a287 --- /dev/null +++ b/Werwolf.php @@ -0,0 +1,4101 @@ + + +
+Werwolfonline.eu
+Du befindest dich bereits in einem Spiel, Name: ".getName($mysqli,$eigeneID)."
"; + echo "Name: ". getName($mysqli,$eigeneID)."
"; + + //Nachschauen, ob ich Bürgermeister bin ... Dann nämlich anschreiben ... + $buergermRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1"); + $buergermAss = $buergermRes->fetch_assoc(); + if ($buergermAss['id']==$eigeneID) + { + //Ich bin Bürgermeister + echo "Sie sind Bürgermeister
"; + } + + //Bevor wir noch auf die Phase schauen, schauen wir, ob irgendetwas unabhängig von der Phase ist + //wie zum Beispiel der Tod des Jägers + $jaegerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE jaegerDarfSchiessen = 1"); + if ($jaegerRes->num_rows > 0) + { + $jaegerA = $jaegerRes->fetch_assoc(); + if ($jaegerA['id']==$eigeneID) + { + //Falls wir selbst der Jäger sind, dürfen wir schießen + if (isset($_POST['jaegerHatAusgewaehlt'])) + { + toeteSpieler($mysqli, $_POST['jaegerID']); + //Dann setze jaegerDarfSchiessen wieder auf 0 + $mysqli->Query("UPDATE $spielID"."_spieler SET jaegerDarfSchiessen = 0, reload = 1 WHERE id = $eigeneID"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); + $pageReload = true; + } + jaegerInitialisiere($mysqli); + } + else + { + echo "Der Jäger wurde getötet
"; + echo "Warten auf Jäger
"; + $pageReload = true; + } + } + else + { + //Weiters schauen wir noch, ob der Bürgermeister sein Amt weitergeben muss... + $buergermeisterRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeisterDarfWeitergeben = 1"); + $gameAssoc = gameAssoc($mysqli); //Nur Bürgermeister weitergeben, wenn das Spiel noch nicht aus ist + if ($buergermeisterRes->num_rows > 0 && $gameAssoc['spielphase'] != PHASESIEGEREHRUNG) + { + //Der Bürgermeister wurde getötet und darf sein Amt weitergeben ... + $buergermA = $buergermeisterRes->fetch_assoc(); + if ($buergermA['id']==$eigeneID) + { + //Falls wir selbst der Jäger sind, dürfen wir schießen + if (isset($_POST['buergermeisterNachfolger'])) + { + //Dann setze buergermeisterDarfWeitergeben wieder auf 0 + $mysqli->Query("UPDATE $spielID"."_spieler SET buergermeisterDarfWeitergeben = 0, reload = 1 WHERE id = $eigeneID"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); + $neuerBuergermeister = $_POST['buergermeisterID']; + $mysqli->Query("UPDATE $spielID"."_spieler SET buergermeister = 1 WHERE id = $neuerBuergermeister"); + toGameLog($mysqli,getName($mysqli,$neuerBuergermeister)." wurde als Nachfolger des Bürgermeisters eingesetzt"); + toAllPlayerLog($mysqli,getName($mysqli,$neuerBuergermeister)." wurde als Nachfolger des Bürgermeisters eingesetzt"); + $pageReload = true; + } + buergermeisterInitialisiere($mysqli); + } + else + { + echo "Der Bürgermeister wurde getötet
"; + echo "Er darf sein Amt weitergeben
"; + $pageReload = true; + } + } + else + { + //Die weitere Vorgehensweise kommt auf die Phase des Spiels an: + $gameResult = $mysqli->Query("SELECT * FROM $spielID"."_game"); + //echo $mysqli->error; + $gameResAssoc = $gameResult->fetch_assoc(); + $phase = $gameResAssoc['spielphase']; + + if ($phase == PHASENACHTBEGINN) + { + $displayTag = false; //bei true ändert sich der Hintergrund + $displayFade = true; + } + elseif ($phase > PHASENACHTBEGINN && $phase < PHASENACHTENDE) + { + $displayTag = false; + $displayFade = false; + } + elseif ($phase == PHASENACHTENDE) + { + $displayTag = true; + $displayFade = true; + } + else + { + $displayTag = true; + $displayFade = false; + } + + //Nachschauen, ob ich noch lebe ;) + $ass = eigeneAssoc($mysqli); + if ($phase >= PHASENACHTBEGINN && $phase <= PHASENACHABSTIMMUNG && $ass['lebt'] == 0) + { + //Falls ich tot bin, zeige + binTot($mysqli); + $listReload = true; + } + else + { + if ($phase == PHASESETUP) + { + //In Phase 0 hat der Spielleiter die Möglichkeit, die Regeln zu bearbeiten. + if (isset($_POST['spielEditieren'])) + { + spielRegeln($mysqli); + } + else + { + //Grundsätzlich sollte in dieser Phase jeder responden: + $pageReload = true; + + //Zuerst die Regeln aktualisieren, falls sie bearbeitet wurden + if ($eigeneID == 0 && isset($_POST['editierenAuswahl'])) + spielRegelnAnwenden($mysqli); + + //Phase 0 = Setup und Spielersuchen -> Zeige daher eine Liste der Spieler an + echo "Mit dieser Zahl können andere Ihrem Spiel beitreten!
"; + + //Der Spielleiter bekommt zusätzlich einen Button angezeigt, mit dem er die Einstellungen bearbeiten kann. + $eigRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID"); + $eigAss = $eigRes->fetch_assoc(); + if ($eigAss['spielleiter'] == 1) + { + echo ' + '; + } + + //Zeige alle Spieler in einer Liste an--> Alt, wird jz via javascript gelöst + echo "Spieler in diesem Spiel:
"; + $spieleranzahlQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + $spielerzahl = $spieleranzahlQuery->num_rows; //und zähle mit + //Die Liste wird mit Javascript erstellt + echo ""; + $listReload = true; //Dass unsere Liste refresht wird ;) + echo "Spieleranzahl: $spielerzahl
"; + + //Falls der Spielleiter das Spiel beginnenlassen will: + if (isset($_POST['spielStarten'])) + { + spielInitialisieren($mysqli,$spielerzahl); + } + } + } + elseif ($phase == PHASESPIELSETUP) + { + //Jedem einen Button anzeigen, dass er bereit ist. + //Wenn er noch nicht zugestimmt hat. + $pageReload = true; + $spielerAssoc = $spielerResult->fetch_assoc(); + if ($spielerAssoc['bereit']== 0 && !isset($_POST['bereit'])) + { + //Zeige Formular zum Klicken auf bereit + echo ''; + } + else + { + if (isset($_POST['bereit'])) + { + //Der Spieler hat auf den Button gedrückt! + //markiere das in der Datenbank + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1 WHERE id = $eigeneID"); + //überprüfe, ob alle bereit sind ... + $bereitRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE bereit = 0"); + if ($bereitRes->num_rows < 1) + { + //Alle sind bereit, starte Spiel + spielStarten($mysqli); + } + else + { + //Spiel wird noch nicht gestartet, aber die anderen updaten: + //alleReloadAusser($eigeneID,$mysqli); Ausgeschaltet, weil die Liste über javascript aktualisiert wird + } + } + elseif (isset($_POST['spielBeginnenOhneRuecksicht'])) + { + spielStarten($mysqli); + } + + //Diese Liste wird mit javascript erstellt + echo ""; + $listReload = true; //Dass unsere Liste refresht wird + echo ("Warte auf andere Spieler ...
"); + + //Als Spielleiter sollte man das Spiel "ohne Rücksicht auf Verluste" beginnen können + if ($eigeneID == 0) + { + ?> + Die Nacht bricht herein ..."; + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['countdownBis']>time()) + { + //Zeige noch Countdown an ... + $timerZahl = $eigeneAssoc['countdownBis']-time()+1; + $timerAb = 0; + $timerText = ""; + $aktBeiTime = true; + echo ""; + } + else + { + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT3); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASENACHT3,$mysqli); + $pageReload = true; + } + } + elseif ($phase == PHASENACHT1) + { + //Amor wählt verliebte aus ... + characterButton($mysqli); + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['bereit']==1) + { + warteAufAndere(); + $pageReload = true; + } + else + { + if ($eigeneAssoc['nachtIdentitaet'] == CHARAMOR) + { + //Amor + if (isset($_POST['amorHatAusgewaehlt'])) + { + if (amorGueltig($mysqli,$_POST['amorID1'],$_POST['amorID2'])==false) + { + amorInitialisiere($mysqli); //Irgendetwas ist schiefgegangen --> wähle nochmals aus + } + else + { + warteAufAndere(); + $pageReload = true; + setBereit($mysqli,$eigeneID,1); + phaseBeendenWennAlleBereit(PHASENACHT1,$mysqli); + } + } + else + { + amorInitialisiere($mysqli); + } + } + else + { + //Ganz normaler Dorfbewohner + if (isset($_POST['weiterschlafen'])) + { + //der Button wurde bereits geklickt + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT1,$mysqli); + } + else + { + //zeige den Button an + dorfbewohnerWeiterschlafen(); + } + } + } + } + elseif ($phase == PHASENACHT2) + { + //Die Verliebten erwachen ... + characterButton($mysqli); + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['bereit']==1) + { + warteAufAndere(); + $pageReload = true; + } + else + { + if ($eigeneAssoc['verliebtMit'] > -1) + { + if (isset($_POST['verliebteWeiter'])) + { + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT2,$mysqli); + } + else + { + //Zeige an, mit wem ich verliebt bin + echo "'; + } + } + else + { + //Ganz normaler Dorfbewohner + if (isset($_POST['weiterschlafen'])) + { + //der Button wurde bereits geklickt + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT2,$mysqli); + } + else + { + //zeige den Button an + dorfbewohnerWeiterschlafen(); + } + } + } + } + elseif ($phase == PHASENACHT3) + { + //Hier erwachen die Werwölfe, die Seherin und können ihre Nachtaktivität ausführen + //Die anderen Spieler müssen auf einen Button drücken, um als ready zu gelten. + + characterButton($mysqli); //Zuerst jedem Spieler seinen Charakter zeigen + + //Schaue nach, welcher Charakter ich bin... + $spielerResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID"); + $spielerAssoc = $spielerResult->fetch_assoc(); + //Falls der Spieler bereit ist, brauche ich nur noch warten auf andere anzeigen + if ($spielerAssoc['bereit']==1) + { + warteAufAndere(); + $pageReload = true; + } + else + { + $identitaet = $spielerAssoc['nachtIdentitaet']; + if ($identitaet == CHARSEHER) + { + //SEHER + if (isset($_POST['seherHatAusgewaehlt'])) + { + if (seherSehe($mysqli,$_POST['seherID'])==false) + { + //Der Seher hat einen ungültigen Zug gemacht + //nochmals von vorne + seherInitialisiere($mysqli); + } + else + { + //Der Seher hat erfolgreich ausgewählt --> Schaue, ob wir die Phase schon beenden können + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + } + else + { + //Der Seher hat noch nicht ausgewählt -> Initialisiere + seherInitialisiere($mysqli); + } + } + elseif ($identitaet == CHARSPION) + { + //Spion + if (isset($_POST['spionHatAusgewaehlt']) && isset($_POST['spionID']) && isset ($_POST['spionIdentitaet'])) + { + if (spionSehe($mysqli,$_POST['spionID'],$_POST['spionIdentitaet'])==false) + { + //Ungültiger Zug, nochmals von vorne + spionInitialisiere($mysqli); + } + else + { + //Gültiger Zug! + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + } + else + { + spionInitialisiere($mysqli); + } + } + elseif ($identitaet == CHARBESCHUETZER) + { + //Beschützer, früher Leibwächter + if (isset($_POST['beschuetzerHatAusgewaehlt'])) + { + if (beschuetzerAuswahl($mysqli,$_POST['beschuetzerID'])==false) + { + //Ungültig -> nochmal + beschuetzerInitialisiere($mysqli); + } + else + { + //Der Beschützer hat erfolgreich ausgewählt + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + } + else + { + beschuetzerInitialisiere($mysqli); + } + } + elseif ($identitaet == CHARPARERM) + { + //Paranormaler Ermittler + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['parErmEingesetzt']==0) + { + if (isset($_POST['parErmHatAusgewaehlt'])) + { + if (parErmAusgewaehlt($mysqli,$_POST['parErmID'])==false) + { + //Ungültig + parErmInitialisiere($mysqli); + } + else + { + //Erfolgreich + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + } + elseif (isset ($_POST['parErmNichtAuswaehlen'])) + { + //Diese Runde nicht auswählen + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + else + { + //Fragen, ob er einsetzen will + parErmInitialisiere($mysqli); + } + } + else + { + //Ganz normaler Dorfbewohner + if (isset($_POST['weiterschlafen'])) + { + //der Button wurde bereits geklickt + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + else + { + //zeige den Button an + dorfbewohnerWeiterschlafen(); + } + } + } + elseif ($identitaet == CHARWERWOLF) + { + //WERWÖLFE + $zeitAbgelaufen = false; + //Zuerst kontrollieren, ob die Zeit schon ausgelaufen ist + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['countdownBis']<= time()) + { + //Timer abgelaufen, nachschauen, ob es sich bloß um den Einstimmigkeits-Timer handelt ... + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['werwolfeinstimmig']==1) + { + //Es handelt sich um die Einstimmigkeits-Abstimmung, mal sehen ob wir mehr als 2 + //Werwölfe haben, dann starte einen neuen Timer [Anm.: müssen wir haben, da sonst werwolfeinstimmig gleich auf 0 gesetzt wird] + //Starte einen neuen Timer, bei dem die Abstimmung nicht mehr einstimmig sein muss ... + $werwolfQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARWERWOLF ." AND lebt = 1"); + $werwolfzahl = $werwolfQ->num_rows; + $countdownBis = time()+$gameAssoc['werwolftimer2']+$gameAssoc['werwolfzusatz2']*$werwolfzahl; + if ($countdownBis >= time()+15) + $countdownAb = time()+5; + else + $countdownAb = time(); + $mysqli->Query("UPDATE $spielID"."_spieler SET countdownBis = $countdownBis, countdownAb = $countdownAb WHERE nachtIdentitaet = ". CHARWERWOLF ." AND lebt = 1"); + $mysqli->Query("UPDATE $spielID"."_game SET werwolfeinstimmig = 0"); + + //Timer initialiseren + $timerZahl = $countdownBis - time()+1; + $timerAb = $countdownAb - time()+1; + $aktBeiTime = true; + $timerText = "Zeit, bis die Abstimmung der Werwölfe zu keinem Ergebnis führen kann: "; + + //Überprüfe, ob es nicht jetzt schon eine Einstimmigkeit gibt... + //Die Wahl muss nicht einstimmig sein ... + $werwolfQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARWERWOLF ." AND lebt = 1"); + $werwolfzahl = $werwolfQ->num_rows; + $alleSpielerQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $alleSpielerQ->fetch_assoc()) + { + $query = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND nachtIdentitaet = ". CHARWERWOLF ." AND wahlAuf = ".$temp['id']); + if ($query->num_rows > $werwolfzahl/2) + { + //Mit Mehrheit beschlossen... + $opfer = $temp['id']; + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1, reload = 1 WHERE nachtIdentitaet = ".CHARWERWOLF); + $mysqli->Query("UPDATE $spielID"."_game SET werwolfopfer = $opfer"); + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); //Schauen, ob wir die Phase schon beenden können + toGameLog($mysqli,"Die Wahl der Werwölfe fiel mehrheitlich auf: ".$temp['name']); + break; + } + } + } + else + { + //Fehlschlag + $zeitAbgelaufen = true; + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1, reload = 1 WHERE nachtIdentitaet = ".CHARWERWOLF); + $mysqli->Query("UPDATE $spielID"."_game SET werwolfopfer = -1"); + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); //Schauen, ob wir die Phase schon beenden können + toGameLog($mysqli,"Die Werwölfe konnten sich nicht auf ein Opfer einigen ..."); + } + } + else + { + //Timer initialiseren + $timerZahl = $eigeneAssoc['countdownBis'] - time()+1; + $timerAb = $eigeneAssoc['countdownAb'] - time()+1; + $aktBeiTime = true; + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['werwolfeinstimmig']==1) + $timerText = "Zeit, bis die Abstimmung der Werwölfe nicht mehr einstimmig sein muss: "; + else + $timerText = "Zeit, bis die Abstimmung der Werwölfe zu keinem Ergebnis führen kann: "; + } + if (isset($_POST['werwolfAuswahl']) && !$zeitAbgelaufen) + { + //einmal die Wahl eintragen + $wahlID = $_POST['werwolfID']; + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = $wahlID WHERE id = $eigeneID"); + + //Schauen, ob wir einstimmig sein müssen + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['werwolfeinstimmig']==1) + { + //Dann schauen, ob schon alle abgestimmt haben + $einstimmig = 1; + $opfer = $wahlID; + $alleSpielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $alleSpielerRes->fetch_assoc()) + { + if ($temp['nachtIdentitaet']==CHARWERWOLF) + { + if ($temp['wahlAuf'] != $opfer) + $einstimmig = 0; + } + } + //Falls einstimmig--> Alle Werwölfe auf bereit setzen und weiter gehts ;) + if ($einstimmig == 1) + { + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1, reload = 1 WHERE nachtIdentitaet = ".CHARWERWOLF); + $mysqli->Query("UPDATE $spielID"."_game SET werwolfopfer = $opfer"); + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); //Schauen, ob wir die Phase schon beenden können + toGameLog($mysqli,"Die Wahl der Werwölfe fiel einstimmig auf: ". getName($mysqli,$opfer)); + } + } + else + { + //Die Wahl muss nicht einstimmig sein ... + $werwolfQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARWERWOLF ." AND lebt = 1"); + $werwolfzahl = $werwolfQ->num_rows; + $alleSpielerQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $alleSpielerQ->fetch_assoc()) + { + $query = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND nachtIdentitaet = ". CHARWERWOLF ." AND wahlAuf = ".$temp['id']); + if ($query->num_rows > $werwolfzahl/2) + { + //Mit Mehrheit beschlossen... + $opfer = $temp['id']; + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1, reload = 1 WHERE nachtIdentitaet = ".CHARWERWOLF); + $mysqli->Query("UPDATE $spielID"."_game SET werwolfopfer = $opfer"); + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); //Schauen, ob wir die Phase schon beenden können + toGameLog($mysqli,"Die Wahl der Werwölfe fiel mehrheitlich auf: ".$temp['name']); + break; + } + } + } + } + echo "Zur Info: Die Wahl muss einstimmig sein, wählen Sie solange, bis die Wahl einstimmig ist
"; + else + echo "Zur Info: Die Mehrheit der Werwölfe bestimmt das Opfer (Einstimmigkeit bei mehr als 2 Spielern ist nicht erforderlich)
"; + $pageReload = true; //Falls alle abgestimmt haben + } + else + { + //Ganz normaler Dorfbewohner + if (isset($_POST['weiterschlafen'])) + { + //der Button wurde bereits geklickt + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); + } + else + { + //zeige den Button an + dorfbewohnerWeiterschlafen(); + } + } + } + } + elseif ($phase == PHASENACHT4) + { + characterButton($mysqli); //Zuerst jedem Spieler seinen Charakter zeigen + + //Schaue nach, welcher Charakter ich bin... + $spielerResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID"); + $spielerAssoc = $spielerResult->fetch_assoc(); + //Falls der Spieler bereit ist, brauche ich nur noch warten auf andere anzeigen + if ($spielerAssoc['bereit']==1) + { + warteAufAndere(); + $pageReload = true; + } + else + { + $identitaet = $spielerAssoc['nachtIdentitaet']; + if ($identitaet == CHARHEXE) + { + //Hexe + if (isset($_POST['hexeAuswahl'])) + { + if (isset($_POST['hexeHeilen'])) + { + if ($_POST['hexeHeilen']==1) + { + //Die Hexe will das Opfer heilen... + $eigeneAssoc=eigeneAssoc($mysqli); + if ($eigeneAssoc['hexeHeiltraenke']>0) + { + $heilTraenkeNeu = $eigeneAssoc['hexeHeiltraenke']-1; + $mysqli->Query("UPDATE $spielID"."_spieler SET hexeHeiltraenke = $heilTraenkeNeu, hexeHeilt = 1 WHERE id = $eigeneID"); + toPlayerLog($mysqli,"1 Heiltrank verwendet",$eigeneID); + toGameLog($mysqli,"Die Hexe heilt das Opfer der Werwölfe"); + } + else + { + $mysqli->Query("UPDATE $spielID"."_spieler SET hexeHeilt = 0 WHERE id = $eigeneID"); + } + } + else + { + $mysqli->Query("UPDATE $spielID"."_spieler SET hexeHeilt = 0 WHERE id = $eigeneID"); + } + } + //Und jetzt noch schauen wegen Töten ... + if (isset($_POST['toeten'])) + { + if ($_POST['toeten'] > -1) + { + //Ein Opfer wurde ausgewählt ... schauen, ob wir überhaupt noch Todestrank haben... + $eigeneAssoc=eigeneAssoc($mysqli); + if ($eigeneAssoc['hexeTodestraenke']>0) + { + $todestraenkeNeu = $eigeneAssoc['hexeTodestraenke']-1; + $hexenOpfer = $_POST['toeten']; + $mysqli->Query("UPDATE $spielID"."_spieler SET hexeTodestraenke = $todestraenkeNeu, hexenOpfer = $hexenOpfer WHERE id = $eigeneID"); + toPlayerLog($mysqli,"1 Todestrank verwendet für Spieler ".getName($mysqli,$hexenOpfer),$eigeneID); + toGameLog($mysqli,"Die Hexe verwendet einen Todestrank, um ".getName($mysqli,$hexenOpfer)." zu töten"); + } + else + { + $mysqli->Query("UPDATE $spielID"."_spieler SET hexenOpfer = -1 WHERE id = $eigeneID"); + } + } + else + { + $mysqli->Query("UPDATE $spielID"."_spieler SET hexenOpfer = -1 WHERE id = $eigeneID"); + } + } + //Jetzt müssen wir die Hexe noch auf bereit setzen + setBereit($mysqli,$eigeneID,1); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT4,$mysqli);//Schauen, ob wir schon zur nächsten Phase übergehen können. + } + else + { + hexeInitialisieren($mysqli); + } + } + else + { + //keine Besondere Identitaet diese Nacht + if (isset($_POST['weiterschlafen'])) + { + //der Button wurde bereits geklickt + setBereit($mysqli,$eigeneID,1); + warteAufAndere(); + $pageReload = true; + phaseBeendenWennAlleBereit(PHASENACHT4,$mysqli); + } + else + { + //zeige den Button an + dorfbewohnerWeiterschlafen(); + } + } + } + } + elseif ($phase == PHASENACHTENDE) + { + echo "Es wird Morgen ...
"; + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['countdownBis']>time()) + { + //Zeige noch Countdown an ... + $timerZahl = $eigeneAssoc['countdownBis']-time()+1; + $timerAb = 0; + $timerText = ""; + $aktBeiTime = true; + echo ""; + } + else + { + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASETOTEBEKANNTGEBEN); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASETOTEBEKANNTGEBEN,$mysqli); + $pageReload = true; + } + } + elseif ($phase == PHASETOTEBEKANNTGEBEN) + { + characterButton($mysqli); + //Zeige den Tagestext an + $gameAssoc = gameAssoc($mysqli); + $tagestext = $gameAssoc['tagestext']; + echo "Der Tag beginnt
"; + $eigeneAssoc = eigeneAssoc($mysqli); + echo "$tagestext
"; + //Nachsehen, ob es einen Bürgermeister gibt + $bres = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1"); + if ($bres->num_rows > 0) + { + //Es gibt einen Bürgermeister --> Dieser kann zur nächsten Phase übergehen + //Setze mich selbst auf bereit + //Wenn ich selbst der Bürgermeister bin, kann ich zur nächsten Phase übergehen + $bass = $bres->fetch_assoc(); + if ($bass['id']==$eigeneID) + { + if (isset($_POST['buergermeisterWeiter'])) + { + $pageReload = true; + setBereit($mysqli,$eigeneID,1); + phaseBeendenWennAlleBereit(PHASETOTEBEKANNTGEBEN,$mysqli); + warteAufAndere(); + } + else + { + //$eigeneAssoc = eigeneAssoc($mysqli); schon gemacht + if ($eigeneAssoc['bereit']==0) + { + //Zeige einen Button an, mit dem der Bürgermeister das Spiel fortführen kann + echo ""; + } + else + { + warteAufAndere(); + } + } + } + else + { + //Ich bin nicht Bürgermeister --> Warte, bis es weitergeht + $pageReload = true; + setBereit($mysqli,$eigeneID,1); + phaseBeendenWennAlleBereit(PHASETOTEBEKANNTGEBEN,$mysqli); + warteAufAndere(); + } + } + else + { + //Es gibt keinen Bürgermeister --> Jeder muss auf weiter drücken + if (isset($_POST['dorfbewohnerWeiter'])) + { + $pageReload = true; + setBereit($mysqli,$eigeneID,1); + phaseBeendenWennAlleBereit(PHASETOTEBEKANNTGEBEN,$mysqli); + warteAufAndere(); + } + else + { + //$eigeneAssoc = eigeneAssoc($mysqli); schon gemacht + if ($eigeneAssoc['bereit']==0) + { + //Zeige einen Button an, mit dem der Bürgermeister das Spiel fortführen kann + echo ""; + } + else + { + warteAufAndere(); + } + } + + } + } + elseif ($phase == PHASEBUERGERMEISTERWAHL) + { + characterButton($mysqli); + echo "Wahl des Bürgermeisters
"; + echo "Da es momentan keinen Bürgermeister im Dorf gibt, beschließt das Dorf, einen zu wählen ...
"; + echo "Fragen Sie in die Runde, wer sich als Bürgermeister aufstellen lassen will und diskutieren Sie jede Bewerbung ...
"; + //Bürgermeisterwahl, ähnlich der Werwolfabstimmung + if (isset($_POST['buergermeisterWahlAuswahl'])) + { + //einmal die Wahl eintragen + $wahlID = $_POST['buergermeisterID']; + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = $wahlID WHERE id = $eigeneID"); + //Dann schauen, ob wir schon eine Mehrheit haben + $alleSpielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + $anzahlSpieler = $alleSpielerRes->num_rows; + while ($temp = $alleSpielerRes->fetch_assoc()) + { + if (!isset($wahlAufSpieler[$temp['wahlAuf']])) + $wahlAufSpieler[$temp['wahlAuf']] = 0; + $wahlAufSpieler[$temp['wahlAuf']]+=1; + } + //Schauen, ob jemand mehr als 50% der Stimmen hat + foreach ($wahlAufSpieler as $id => $stimmen) + { + if ($stimmen > $anzahlSpieler/2 && $id > -1) + { + //Dieser Spieler hat die Mehrheit + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1"); + $mysqli->Query("UPDATE $spielID"."_spieler SET buergermeister = 1 WHERE id = $id"); + toGameLog($mysqli,getName($mysqli,$id)." wurde zum Bürgermeister gewählt"); + toAllPlayerLog($mysqli,getName($mysqli,$id)." wurde zum Bürgermeister gewählt"); + phaseBeendenWennAlleBereit(PHASEBUERGERMEISTERWAHL,$mysqli); + break; + } + } + } + echo ""; //Die Liste, was die anderen gewählt haben + $listReload=true; + echo "'; + echo "Der Bürgermeister beginnt Abstimmungen und erhält bei der Abstimmung des Dorfes jeden Tag eine zusätzliche halbe Stimme. + Über 50% der Spieler müssen für den Bürgermeister stimmen, damit er gewählt wird
"; + echo ""; + $pageReload = true; //Falls alle abgestimmt haben + } + elseif ($phase == PHASEDISKUSSION) + { + characterButton($mysqli); + //Diskussion + //Schauen, ob ich Bürgermeister bin... + $bres = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1"); + $bras = $bres->fetch_assoc(); + if ($bras['id']==$eigeneID) + { + //Ich bin Bürgermeister, ich kann zur nächsten Phase übergehen... + if (isset($_POST['buergermeisterWeiter'])) + { + $pageReload = true; + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1"); + phaseBeendenWennAlleBereit(PHASEDISKUSSION,$mysqli); + } + else + { + //Zeige einen Button an, mit dem der Bürgermeister das Spiel fortführen kann + echo ""; + } + } + //Alle sehen diesen Text + echo "Diskussion
"; + echo "Diskutieren Sie mit, versuchen Sie die Werwölfe zu entlarven, die anderen aber von Ihrer Unschuld zu überzeugen
"; + $pageReload = true; + } + elseif ($phase == PHASEANKLAGEN) + { + characterButton($mysqli); + //Anklagen + echo ""; //Die Liste der Angeklagten + $listReload=true; + $pageReload=true; + //Jeder, der noch niemanden angeklagt hat, kann jemanden anklagen + $angeklagtRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE angeklagtVon = $eigeneID"); + if ($angeklagtRes->num_rows > 0) + { + //habe bereits jemanden angeklagt + } + else + { + if (isset($_POST['angeklagterID'])) + { + //Ich klage gerade jemanden an + if ($_POST['angeklagterID']!=-1) + $mysqli->Query("UPDATE $spielID"."_spieler SET angeklagtVon = $eigeneID WHERE id = ".$_POST['angeklagterID']); + } + else + { + //Wen möchte ich anklagen? + echo "'; + echo ""; + } + } + + //Als Bürgermeister habe ich zusätzlich noch die Möglichkeit, zur nächsten Phase zu springen + $bres = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1"); + $bras = $bres->fetch_assoc(); + if ($bras['id']==$eigeneID) + { + //Ich bin Bürgermeister, ich kann zur nächsten Phase übergehen... + if (isset($_POST['buergermeisterWeiter'])) + { + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1"); + phaseBeendenWennAlleBereit(PHASEANKLAGEN,$mysqli); + } + else + { + //Zeige einen Button an, mit dem der Bürgermeister das Spiel fortführen kann + echo ""; + } + } + } + elseif ($phase == PHASEABSTIMMUNG) + { + characterButton($mysqli); + //Abstimmung, bei Mehrheit wird Opfer getötet, sonst Stichwahl + //Wieder ähnlich wie Abstimmung für Bürgermeister + echo "Stichwahl
"; + echo "Wir haben einen Sieger!
"; + $gameAssoc = gameAssoc($mysqli); + $tagestext = $gameAssoc['tagestext']; + echo "
$tagestext
"; + //Der Spielleiter sollte ein neues Spiel starten können + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['spielleiter']==1) + { + if (isset($_POST['neuesSpiel'])) + { + //Starten wir ein neues Spiel + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASESETUP); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); + } + echo ""; + } + echo ""; + echo "Sie sind momentan nicht mit diesem Spiel verknüpft "; + diesesSpielLoeschenButton(); + } + } + else + { + echo "Es sieht so aus, als gäbe es das Spiel nicht mehr ...
"; + diesesSpielLoeschenButton(); + $logButtonAnzeigen = false; + } + } + } + else + { + // Wir befinden uns in keinem Spiel -> + //Nachschauen, ob wir bereits ein Spiel erstellen wollen? + if (isset ($_POST['neuesSpiel'])) + { + if ($_POST['neuesSpiel'] == 1) + { + //nachschauen, ob ein Benutzername angegeben wurde ... + $verboteneNamen = array("niemanden","niemand","keinen","keiner","dorfbewohner","werwolf","seher","seherin","hexe","hexer","jäger","amor","beschützer","paranormaler ermittler","lykantroph","lykantrophin","spion","spionin","mordlustiger","mordlustige","pazifist","pazifistin","alter mann","alter","alte","alte frau","die alten","alten"); + if (!in_array(strtolower($_POST['ihrName']),$verboteneNamen) && $_POST['ihrName'] != "" && strpos($_POST['ihrName'],"$")===false && strpos($_POST['ihrName'],";")===false && strpos($_POST['ihrName'],'"')===false && strpos($_POST['ihrName'],"'")===false && strpos($_POST['ihrName'],"=")===false) + { + //Ab und zu alte Spiele löschen + if (rand(1,100)==50) + loescheAlteSpiele($mysqli); + //Wir erstellen ein neues Spiel + //Eine Schleife, die solange rennt, bis eine neue Zahl gefunden wurde + for ($i = 1; $i <= 100000; $i++) + { + if ($i == 1000) + { + //Vielleicht gibt es alte Spiele, die Platz verbrauchen + loescheAlteSpiele($mysqli); + } + $spielID = rand(10000,99999); + //nachschauen, ob ein Spiel mit dieser Nummer bereits existiert + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + if(isset($res->num_rows)){ + + //Tabelle existiert + }else{ + //Tabelle existiert noch nicht + //erstellen wir eine neue Tabelle + //BEIM HINZUFÜGEN: Auch die SetSpielerDefaultFunction ändern + $sql = " + CREATE TABLE `$spielID"."_spieler" ."` ( + `id` INT( 10 ) NULL, + `name` VARCHAR( 150 ) NOT NULL , + `spielleiter` INT( 5 ) NULL , + `lebt` INT (2) NULL, + `wahlAuf` INT ( 5 ) DEFAULT -1 , + `angeklagtVon` INT ( 5 ) DEFAULT -1 , + `nachtIdentitaet` INT( 10 ) NULL, + `buergermeister` INT ( 2 ) DEFAULT 0, + `hexeHeiltraenke` INT( 10 ) NULL, + `hexeTodestraenke` INT( 5 ) NULL , + `hexenOpfer` INT ( 5 ) DEFAULT -1 , + `hexeHeilt` INT (2) DEFAULT 0, + `beschuetzerLetzteRundeBeschuetzt` INT( 5 ) DEFAULT -1 , + `parErmEingesetzt` INT (2) DEFAULT 0 , + `verliebtMit` INT ( 5 ) DEFAULT -1 , + `jaegerDarfSchiessen` INT (2) DEFAULT 0 , + `buergermeisterDarfWeitergeben` INT (2) DEFAULT 0 , + `dieseNachtGestorben` INT (2) DEFAULT 0 , + `countdownBis` INT (10) DEFAULT 0 , + `countdownAb` INT (10) DEFAULT 0 , + `playerlog` LONGTEXT DEFAULT '' , + `bereit` INT (2) NULL , + `reload` INT (2) NULL , + `verifizierungsnr` INT ( 5 ) DEFAULT 0 + ) ; + "; + $mysqli->Query($sql); + //Wähle ein Verifizierungs-Passwort aus: + //Dieses dient dazu, um festzustellen, ob es tatsächlich der richtige Spieler ist, der eine Seite lädt + $verifizierungsnr = rand(2,100000); + $mysqli->Query("INSERT INTO $spielID"."_spieler"." (id, name , spielleiter, lebt, reload, verifizierungsnr) VALUES ( 0 , '".$_POST['ihrName']."', 1 , 0 , 1, $verifizierungsnr)"); + $sql2 = " + CREATE TABLE `$spielID"."_game` ( + `spielphase` INT( 5 ) DEFAULT 0, + `charaktereAufdecken` INT ( 2 ) DEFAULT 0, + `buergermeisterWeitergeben` INT ( 2 ) DEFAULT 0, + `seherSiehtIdentitaet` INT ( 2 ) DEFAULT 1, + `werwolfzahl` INT ( 5 ) DEFAULT 0 , + `hexenzahl` INT ( 5 ) DEFAULT 0 , + `seherzahl` INT ( 5 ) DEFAULT 0 , + `jaegerzahl` INT ( 5 ) DEFAULT 0 , + `amorzahl` INT ( 2 ) DEFAULT 0 , + `beschuetzerzahl` INT ( 5 ) DEFAULT 0 , + `parErmZahl` INT (5) DEFAULT 0 , + `lykantrophenzahl` INT ( 5 ) DEFAULT 0 , + `spionezahl` INT ( 5 ) DEFAULT 0 , + `idiotenzahl` INT ( 5 ) DEFAULT 0 , + `pazifistenzahl` INT ( 5 ) DEFAULT 0 , + `altenzahl` INT ( 5 ) DEFAULT 0 , + `zufaelligeAuswahl` INT ( 2 ) DEFAULT 0 , + `zufaelligeAuswahlBonus` INT ( 5 ) DEFAULT 0 , + `werwolfeinstimmig` INT ( 2 ) DEFAULT 1 , + `werwolfopfer` INT ( 5 ) DEFAULT -1 , + `werwolftimer1` INT ( 10 ) DEFAULT 60 , + `werwolfzusatz1` INT ( 10 ) DEFAULT 4 , + `werwolftimer2` INT ( 10 ) DEFAULT 50 , + `werwolfzusatz2` INT ( 10 ) DEFAULT 3 , + `dorftimer` INT ( 10 ) DEFAULT 550 , + `dorfzusatz` INT ( 10 ) DEFAULT 10 , + `dorfstichwahltimer` INT ( 10 ) DEFAULT 200 , + `dorfstichwahlzusatz` INT ( 10 ) DEFAULT 5 , + `tagestext` TEXT DEFAULT NULL , + `nacht` INT ( 5 ) DEFAULT 1 , + `log` LONGTEXT DEFAULT '' , + `list_lebe` LONGTEXT, + `list_lebe_aktualisiert` BIGINT DEFAULT 0, + `list_tot` LONGTEXT, + `list_tot_aktualisiert` BIGINT DEFAULT 0, + `letzterAufruf` BIGINT + ) ;"; + $mysqli->Query($sql2); + echo $mysqli->error; + $mysqli->Query("INSERT INTO $spielID"."_game (spielphase, letzterAufruf) VALUES (0 , ".time().")"); + + //Die SpielID groß mitteilen + echo "Sie müssen einen gültigen Namen eingeben
"; + start(); + } + } + elseif ($_POST['neuesSpiel'] == 2) + { + //Der Spieler versucht einem bestehenden Spiel beizutreten + $spielID = $_POST['bestehendeSpielnummer']; + if ($_POST['ihrName'] != "" && strpos($_POST['ihrName'],"$")===false && strpos($_POST['ihrName'],";")===false && strpos($_POST['ihrName'],'"')===false && strpos($_POST['ihrName'],"'")===false && strpos($_POST['ihrName'],"=")===false) + { + //Name wurde eingegeben. Existiert auch ein Spiel dieser Nummer? + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + if(isset($res->num_rows)) + { + //Ein Spiel dieser Nummer existiert! + $verboteneNamen = array("niemanden","niemand","keinen","keiner","dorfbewohner","werwolf","seher","seherin","hexe","hexer","jäger","amor","beschützer","paranormaler ermittler","lykantroph","lykantrophin","spion","spionin","mordlustiger","mordlustige","pazifist","pazifistin","alter mann","alter","alte","alte frau","die alten","alten"); + //Nachschauen, ob mein Name noch nicht vorkommt... + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE name = '".$_POST['ihrName']."'"); + if ($nameRes->num_rows <= 0 && !in_array(strtolower($_POST['ihrName']),$verboteneNamen)) + { + //Name gültig + //Finde eine freie ID + for ($i = 1; $i <= 50; $i++) + { + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $i"); + //echo "SELECT * FROM $spielID"."_spieler WHERE id = $i"; + if(isset($res->num_rows)) + { + if ($res->num_rows > 0) + { + //Es existiert bereits ein Spieler mit dieser ID --> weiter + //echo "existiertSie sind dem Spiel erfolgreich beigetreten!
"; + setcookie ("SpielID", $spielID, time()+172800); + setcookie ("eigeneID",$i, time()+172800); + setcookie ("verifizierungsnr",$verifizierungsnr, time()+172800); + $_COOKIE["SpielID"]=$spielID; + $_COOKIE["eigeneID"] = $i; + $_COOKIE["verifizierungsnr"] = $verifizierungsnr; + $eigeneID = $i; + break; //die Schleife beenden + } + } + else + { + //Dieser Punkt sollte eigentlich nicht erreicht werden, da num_rows definiert sein müsste + echo "Der angegebene Name ist bereits vorhanden oder ungültig
"; + } + } + else + { + //Es existiert kein Spiel mit dieser Nummer --> Neustart + echo "Es existiert kein Spiel mit dieser Nummer ...
"; + start(); + } + } + else + { + //kein Name eingegeben --> neustart + echo "Sie müssen einen gültigen Namen eingeben
"; + start(); + } + } + } + else + { + start(); + } + } + //Schauen, ob wir uns bereits in einem Spiel befinden! + if (isset($_COOKIE['SpielID']) && isset($_COOKIE['eigeneID']) && $logButtonAnzeigen) + { + //Wenn ja, zeige Logbutton an + playerLogButton($mysqli); + } +?> +Sie befinden sich momentan in keinem Spiel: Sie können entweder einem bereits erstellten Spiel beitreten oder ein neues Spiel erstellen!
+ +Eine oder mehrere Countdown-Einstellungen sind ungültig
"; + $werwolftimer1 = 60; + $werwolfzusatz1 = 4; + $werwolftimer2 = 50; + $werwolfzusatz2 = 3; + $dorftimer = 550; + $dorfzusatz = 10; + $dorfstichwahltimer = 200; + $dorfstichwahlzusatz = 5; + } + $mysqli->Query("UPDATE $spielID"."_game SET buergermeisterWeitergeben = $buergermeisterWeitergeben, + charaktereAufdecken = $charaktereAufdecken, + seherSiehtIdentitaet = $seherSiehtIdentitaet, + werwolfzahl = $werwolfzahl, + hexenzahl = $hexenzahl, + jaegerzahl = $jaegerzahl, + seherzahl = $seherzahl, + amorzahl = $amorzahl, + beschuetzerzahl = $beschuetzerzahl, + parErmZahl = $parErmZahl, + lykantrophenzahl = $lykantrophenzahl, + spionezahl = $spionezahl, + idiotenzahl = $idiotenzahl, + pazifistenzahl = $pazifistenzahl, + altenzahl = $altenzahl, + zufaelligeAuswahl = $zufaelligauswaehlen, + zufaelligeAuswahlBonus = $zufaelligeAuswahlBonus, + werwolftimer1 = $werwolftimer1, + werwolfzusatz1 = $werwolfzusatz1, + werwolftimer2 = $werwolftimer2, + werwolfzusatz2 = $werwolfzusatz2, + dorftimer = $dorftimer, + dorfzusatz = $dorfzusatz, + dorfstichwahltimer = $dorfstichwahltimer, + dorfstichwahlzusatz = $dorfstichwahlzusatz"); + //Fertig upgedated ;) + } +} + +function spielInitialisieren($mysqli,$spielerzahl) +{ + $spielID = $_COOKIE['SpielID']; + //Zuerst überprüfen, ob mindestens 2 Spieler mitspielen + if ($spielerzahl < 2) + { + echo "Zu wenig Spieler, um ein Spiel zu starten!
"; + return false; + } + $gameResult = $mysqli->Query("SELECT * FROM $spielID"."_game"); + $gameResAssoc = $gameResult->fetch_assoc(); + $werwolfzahl = $gameResAssoc['werwolfzahl']; + $hexenzahl = $gameResAssoc['hexenzahl']; + $jaegerzahl = $gameResAssoc['jaegerzahl']; + $seherzahl = $gameResAssoc['seherzahl']; + $amorzahl = $gameResAssoc['amorzahl']; + $beschuetzerzahl = $gameResAssoc['beschuetzerzahl']; + $parErmZahl = $gameResAssoc['parErmZahl']; + $lykantrophenzahl = $gameResAssoc['lykantrophenzahl']; + $spionezahl = $gameResAssoc['spionezahl']; + $idiotenzahl = $gameResAssoc['idiotenzahl']; + $pazifistenzahl = $gameResAssoc['pazifistenzahl']; + $altenzahl = $gameResAssoc['altenzahl']; + $zufaelligeAuswahl = $gameResAssoc['zufaelligeAuswahl']; + $zufaelligeAuswahlBonus = $gameResAssoc['zufaelligeAuswahlBonus']; + + //Zähle alle Charaktere zusammen und schaue, ob es mehr als die Spieleranzahl sind + $besondereCharaktere = $werwolfzahl + $hexenzahl + $jaegerzahl + $seherzahl + $amorzahl + $beschuetzerzahl + $parErmZahl + + $lykantrophenzahl + $spionezahl + $idiotenzahl + $pazifistenzahl + $altenzahl; + if ($besondereCharaktere > $spielerzahl && $zufaelligeAuswahl == 0) + { + echo "Nicht genug Spieler für Ihre Spielkonfiguration
"; + return false; + } + + //Schau, ob es zumindest einen "bösen" Charakter gibt... + $boeseCharaktere = $werwolfzahl; + if ($boeseCharaktere < 1 && $zufaelligeAuswahl == 0) + { + echo "Ein Spiel mit dieser Konfiguration ist nicht möglich. Haben Sie mindestens einen Werwolf ausgewählt?
"; + return false; + } + + //Schau, dass es max einen Amor gibt + if ($amorzahl < 0 || $amorzahl > 1) + { + echo "Ein Spiel mit dieser Anzahl an Amor(s) ist nicht möglich ... Nur 1 oder 0 auswählen
"; + return false; + } + + //Die basic-Tests sind mal bestanden: Setzen wir den Spielmodus auf 1: Spielsetup + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASESPIELSETUP); + + //Jetzt muss jeder bestätigen, dass er dabei ist. + //Dazu setzen wir mal alle bereit auf 0, außer den Spielleiter + $eigeneID = $_COOKIE['eigeneID']; + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1 WHERE id = $eigeneID"); +} + +function setSpielerDefault($mysqli) +{ + //Setzt die Werte aus $spielID_spieler auf die Defaultwerte zurück + $spielID = $_COOKIE['SpielID']; + $mysqli->query("UPDATE $spielID"."_spieler SET + lebt = 0, + wahlAuf = -1, + angeklagtVon = -1, + nachtIdentitaet = 0, + buergermeister = 0, + hexeHeiltraenke = 0, + hexeTodestraenke = 0, + hexenOpfer = -1, + hexeHeilt = 0, + beschuetzerLetzteRundeBeschuetzt = -1, + verliebtMit = -1, + jaegerDarfSchiessen = 0, + parErmEingesetzt = 0, + buergermeisterDarfWeitergeben = 0; + "); +} + +function spielStarten($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + //Alle löschen, die nicht bereit sind + $mysqli->Query("DELETE FROM $spielID"."_spieler WHERE bereit = 0"); + + setSpielerDefault($mysqli); + + //aktualisiere Spielerzahl + $spielerQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + $spielerzahl = $spielerQuery->num_rows; + + //Überprüfe nocheinmal die Bedingungen + $gameResult = $mysqli->Query("SELECT * FROM $spielID"."_game"); + $gameResAssoc = $gameResult->fetch_assoc(); + $werwolfzahl = $gameResAssoc['werwolfzahl']; + $hexenzahl = $gameResAssoc['hexenzahl']; + $jaegerzahl = $gameResAssoc['jaegerzahl']; + $seherzahl = $gameResAssoc['seherzahl']; + $amorzahl = $gameResAssoc['amorzahl']; + $beschuetzerzahl = $gameResAssoc['beschuetzerzahl']; + $parErmZahl = $gameResAssoc['parErmZahl']; + $lykantrophenzahl = $gameResAssoc['lykantrophenzahl']; + $spionezahl = $gameResAssoc['spionezahl']; + $idiotenzahl = $gameResAssoc['idiotenzahl']; + $pazifistenzahl = $gameResAssoc['pazifistenzahl']; + $altenzahl = $gameResAssoc['altenzahl']; + $zufaelligeAuswahl = $gameResAssoc['zufaelligeAuswahl']; + $zufaelligeAuswahlBonus = $gameResAssoc['zufaelligeAuswahlBonus']; + + //Zähle alle Charaktere zusammen und schaue, ob es mehr als die Spieleranzahl sind + $besondereCharaktere = $werwolfzahl + $hexenzahl + $jaegerzahl + $seherzahl + $amorzahl + $beschuetzerzahl + $parErmZahl + + $lykantrophenzahl + $spionezahl + $idiotenzahl + $pazifistenzahl + $altenzahl; + if (($besondereCharaktere > $spielerzahl && $zufaelligeAuswahl == 0)|| $spielerzahl < 2) + { + echo "Nicht genug Spieler für Ihre Spielkonfiguration
"; + //Setze die Spielphase wieder auf 0 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = 0"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); + return false; + } + + //Schau, ob es zumindest einen "bösen" Charakter gibt... + $boeseCharaktere = $werwolfzahl; + if ($boeseCharaktere < 1 && $zufaelligeAuswahl == 0) + { + echo "Ein Spiel mit dieser Konfiguration ist nicht möglich. Haben Sie mindestens einen Werwolf ausgewählt?
"; + //Setze die Spielphase wieder auf 0 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = 0"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); + return false; + } + + //Setze alle auf lebend, und gib allen die Identität 0 = keine + //Außerdem lösche das Playerlog + $mysqli->Query("UPDATE $spielID"."_spieler SET lebt = 1, nachtIdentitaet = ". CHARKEIN .", playerlog = ''"); + + //Ändere noch einige Werte im _game + //Lösche das Log, und setze die Nachtanzahl auf 1 + $mysqli->Query("UPDATE $spielID"."_game SET log = '', nacht = 1"); + + if ($zufaelligeAuswahl == 1) + { + $werwolfzahl = 0; + if ($zufaelligeAuswahlBonus < -15 || $zufaelligeAuswahlBonus > 15) + { + echo "Der Spielbonus ist zu hoch oder zu niedrig
"; + //Setze die Spielphase wieder auf 0 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = 0"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); + return false; + } + + toGameLog($mysqli,"Ein neues Spiel wird gestartet mit $spielerzahl Spielern. Die Charaktere werden zufällig verteilt."); + $spielinfo = "Maximal im Spiel: Werwölfe: $spielerzahl, Hexen: $hexenzahl, Seher: $seherzahl, Jäger: $jaegerzahl, Amor: $amorzahl, + Beschützer: $beschuetzerzahl, Paranormaler Ermittler: $parErmZahl, Lykantrophen: $lykantrophenzahl, + Spione: $spionezahl, Mordlustige: $idiotenzahl, Pazifisten: $pazifistenzahl, Die Alten: $altenzahl"; + toGameLog($mysqli,$spielinfo); + toAllPlayerLog($mysqli,"Ein neues Spiel wird gestartet mit $spielerzahl Spielern. Die Charaktere werden zufällig verteilt."); + toAllPlayerLog($mysqli,$spielinfo); + //Starte eine zufällige Verteilung der Charaktere + + //Das sind die Gewichtungen, von allen Charakteren werden die Zahlen zusammengezählt, ein positiver Wert + // bedeutet einen Vorteil für die Dorfbewohner, negativer Wert Vorteil für die Werwölfe + $werwolfbonus = -6; + $hexenbonus = +4; + $jaegerbonus = +3; + $seherbonus = +7; + $amorbonus = -3; + $beschuetzerbonus =+3; + $parErmBonus =+3; + $lykantrophenbonus = -1; + $spionebonus = +6; + $idiotenbonus = +1; + $pazifistenbonus = -1; + $altenbonus = 0; + $dorfbewohnerbonus = +1; + for ($i=0;$i<=1000;$i++) + { + //1000 Versuche + $werwolfzahlN = rand(1,$spielerzahl/3); + $hexenzahlN = rand(0,$hexenzahl); + $jaegerzahlN = rand(0,$jaegerzahl); + $seherzahlN = rand(0,$seherzahl); + $amorzahlN = rand(0,$amorzahl); + $beschuetzerzahlN = rand(0,$beschuetzerzahl); + $parErmZahlN = rand(0,$parErmZahl); + $lykantrophenzahlN = rand(0,$lykantrophenzahl); + $spionezahlN = rand(0,$spionezahl); + $idiotenzahlN = rand(0,$idiotenzahl); + $pazifistenzahlN = rand(0,$pazifistenzahl); + $altenzahlN = rand(0,$altenzahl); + + $dorfbewohnerzahlN = $spielerzahl - $werwolfzahlN - $hexenzahlN - $jaegerzahlN - $seherzahlN + - $amorzahlN - $beschuetzerzahlN - $parErmZahlN - $lykantrophenzahlN - $spionezahlN + - $idiotenzahlN - $pazifistenzahlN - $altenzahlN; + //Jetzt überprüfe, ob die Aufteilung "fair ist" + $aktBonus = $werwolfzahlN * $werwolfbonus + + $hexenzahlN * $hexenbonus + + $jaegerzahlN * $jaegerbonus + + $seherzahlN * $seherbonus + + $amorzahlN * $amorbonus + + $beschuetzerzahlN * $beschuetzerbonus + + $parErmZahlN * $parErmBonus + + $lykantrophenzahlN * $lykantrophenbonus + + $spionezahlN * $spionebonus + + $idiotenzahlN * $idiotenbonus + + $pazifistenzahlN * $pazifistenbonus + + $altenzahlN * $altenbonus + + $dorfbewohnerzahlN * $dorfbewohnerbonus; + if ($aktBonus + 1 <= $zufaelligeAuswahlBonus + 2 && $aktBonus + 1 >= $zufaelligeAuswahlBonus && $dorfbewohnerzahlN >= 0) + { + //Bonus ist um max. 1 abweichend --> succes! + toGameLog($mysqli,"Zufällige Verteilung der Charaktere vorgenommen mit Bonus ". $aktBonus); + $werwolfzahl = $werwolfzahlN; + $hexenzahl = $hexenzahlN; + $jaegerzahl = $jaegerzahlN; + $seherzahl = $seherzahlN; + $amorzahl = $amorzahlN; + $beschuetzerzahl = $beschuetzerzahlN; + $parErmZahl = $parErmZahlN; + $lykantrophenzahl = $lykantrophenzahlN; + $spionezahl = $spionezahlN; + $idiotenzahl = $idiotenzahlN; + $pazifistenzahl = $pazifistenzahlN; + $altenzahl = $altenzahlN; + break; + } + } + if ($werwolfzahl == 0) + { + //Verteilung fehlgeschlagen! + //Notverteilung + toGameLog($mysqli,"Zufällige Verteilung der Charaktere fehlgeschlagen. Teile nur Werwölfe aus"); + $werwolfzahl = round($spielerzahl/6)+1; + $hexenzahl = 0; + $jaegerzahl = 0; + $seherzahl = 0; + $amorzahl = 0; + $beschuetzerzahl = 0; + $parErmZahl = 0; + $lykantrophenzahl = 0; + $spionezahl = 0; + $idiotenzahl = 0; + $pazifistenzahl = 0; + $altenzahl = 0; + } + $spielinfo = "Im Spiel befinden sich: Werwölfe: $werwolfzahl, Hexen: $hexenzahl, Seher: $seherzahl, Jäger: $jaegerzahl, Amor: $amorzahl, + Beschützer: $beschuetzerzahl, Paranormaler Ermittler: $parErmZahl, Lykantrophen: $lykantrophenzahl, + Spione: $spionezahl, Mordlustige: $idiotenzahl, Pazifisten: $pazifistenzahl, Die Alten: $altenzahl"; + toGameLog($mysqli,$spielinfo); + } + else + { + //Logge den Spielstart + toGameLog($mysqli,"Ein neues Spiel wird gestartet mit $spielerzahl Spielern."); + $spielinfo = "Werwölfe: $werwolfzahl, Hexen: $hexenzahl, Seher: $seherzahl, Jäger: $jaegerzahl, Amor: $amorzahl, + Beschützer: $beschuetzerzahl, Paranormaler Ermittler: $parErmZahl, Lykantrophen: $lykantrophenzahl, + Spione: $spionezahl, Mordlustige: $idiotenzahl, Pazifisten: $pazifistenzahl, Die Alten: $altenzahl"; + toGameLog($mysqli,$spielinfo); + toAllPlayerLog($mysqli,"Ein neues Spiel wird gestartet mit $spielerzahl Spielern."); + toAllPlayerLog($mysqli,$spielinfo); + } + + //Teile die Charaktere aus! + weiseCharakterZu($werwolfzahl,CHARWERWOLF,$mysqli); + weiseCharakterZu($seherzahl,CHARSEHER,$mysqli); + weiseCharakterZu($hexenzahl,CHARHEXE,$mysqli); + weiseCharakterZu($jaegerzahl,CHARJAEGER,$mysqli); + weiseCharakterZu($amorzahl,CHARAMOR,$mysqli); + weiseCharakterZu($beschuetzerzahl,CHARBESCHUETZER,$mysqli); + weiseCharakterZu($parErmZahl,CHARPARERM,$mysqli); + weiseCharakterZu($lykantrophenzahl,CHARLYKANTROPH,$mysqli); + weiseCharakterZu($spionezahl,CHARSPION,$mysqli); + weiseCharakterZu($idiotenzahl,CHARMORDLUSTIGER,$mysqli); + weiseCharakterZu($pazifistenzahl,CHARPAZIFIST,$mysqli); + weiseCharakterZu($altenzahl,CHARALTERMANN,$mysqli); + + //setze verschiedene Startwerte: + //Bei allen Hexen setze die Heiltränke und Todestränke auf 1 + //Alle Spieler, die keinen Charakter haben, erhalten Dorfbewohner + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $res->fetch_assoc()) + { + $i = $temp['id']; + if ($temp['nachtIdentitaet']==CHARHEXE) + { + //4 = Hexe + $mysqli->Query("UPDATE $spielID"."_spieler SET hexeHeiltraenke = 1, hexeTodestraenke = 1 WHERE id = $i"); + } + elseif ($temp['nachtIdentitaet']==CHARBESCHUETZER) + { + //Beschützer + $mysqli->Query("UPDATE $spielID"."_spieler SET beschuetzerLetzteRundeBeschuetzt = -1 WHERE id = $i"); + } + elseif ($temp['nachtIdentitaet']==CHARPARERM) + { + $mysqli->Query("UPDATE $spielID"."_spieler SET parErmEingesetzt = 0 WHERE id = $i"); + } + elseif ($temp['nachtIdentitaet']==CHARKEIN) + { + //Weise dem Spieler Dorfbewohner zu! + $mysqli->Query("UPDATE $spielID"."_spieler SET nachtIdentitaet = ". CHARDORFBEWOHNER ." WHERE id = $i"); + } + } + $neuePhase = PHASENACHT3; + if ($amorzahl >= 1) + { + $neuePhase = PHASENACHT1; + } + else + { + //Wenn es keinen Amor gibt, Spielphase "Nacht3" + $neuePhase = PHASENACHT3; + } + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = $neuePhase"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren($neuePhase,$mysqli); +} + +function weiseCharakterZu($anzahlSpieler,$identitaet,$mysqli) +{ + //anzahlSpieler: Wieviele Spieler diesen Charakter erhalten sollen + //Wichtig ist nicht die Spielerzahl, sondern die höchste ID + $spielID = $_COOKIE['SpielID']; + + $freieSpieler = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARKEIN ." ORDER BY RAND()"); + for ($i = 0; $i < $anzahlSpieler; $i++) + { + $temp = $freieSpieler->fetch_assoc(); + //Diesem Spieler die Identität zuweisen + $id = $temp['id']; + //Mache ihn zu dem Charakter + $mysqli->Query("UPDATE $spielID"."_spieler SET nachtIdentitaet = $identitaet WHERE id = $id"); + //echo "Warte auf andere Spieler
"; +} + +function dorfbewohnerWeiterschlafen() +{ + //Zeigt einen kurzen Text an und einen Button, den jeder drücken muss, damit es weitergeht. + $text = getDorfbewohnerText(); + echo ''; +} + +function amorInitialisiere($mysqli) +{ + //Zeigt ein Formular an, in dem Armor die beiden Verliebten auswählen kann + $spielID = $_COOKIE['SpielID']; + + //Im Prinzip besteht das Formular aus zwei Listen aller Lebenden Spieler + echo "'; +} + +function amorGueltig($mysqli,$wahl1,$wahl2) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + //Überprüfe, ob die Wahl gültig ist ... + if ($wahl1 == $wahl2) + { + echo "Zwei verschiedene Spieler auswählen ...
"; + return false; + } + if ($wahl1 < 0 || $wahl2 < 0) + return false; + + //Die Wahl scheint gültig zu sein--> eintragen + $mysqli->Query("UPDATE $spielID"."_spieler SET verliebtMit = $wahl1 WHERE id = $wahl2"); + $mysqli->Query("UPDATE $spielID"."_spieler SET verliebtMit = $wahl2 WHERE id = $wahl1"); + toPlayerLog($mysqli,"Sie haben ".getName($mysqli,$wahl1)." mit ".getName($mysqli,$wahl2)." verliebt",$eigeneID); + toGameLog($mysqli,"Amor hat ".getName($mysqli,$wahl1)." mit ".getName($mysqli,$wahl2)." verliebt"); + toPlayerLog($mysqli,"Amor hat Sie mit ".getName($mysqli,$wahl1). " verliebt",$wahl2); + toPlayerLog($mysqli,"Amor hat Sie mit ".getName($mysqli,$wahl2). " verliebt",$wahl1); + return true; +} + +function spionInitialisiere($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + //Zeige eine Liste aller lebenden Spieler an + echo "'; +} + +function spionSehe($mysqli, $id, $identitaet) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + //schauen, ob es ein valider Spieler ist + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id AND lebt = 1"); + if ($spielerRes->num_rows < 1) + return false; + $spielerAssoc=$spielerRes->fetch_assoc(); + $strIdentitaet = nachtidentitaetAlsString($identitaet); + if ($spielerAssoc['nachtIdentitaet']==$identitaet) + { + $text = $spielerAssoc['name']." ist ". $strIdentitaet; + } + else + { + $text = $spielerAssoc['name']." ist nicht ". $strIdentitaet; + } + echo "Letzte Nacht beschützten Sie ".getName($mysqli,$eigeneAssoc['beschuetzerLetzteRundeBeschuetzt'])."
"; + + //Zeige eine Liste aller lebenden Spieler an + echo "'; +} + +function beschuetzerAuswahl($mysqli,$id) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + //schauen, ob es ein valider Spieler ist + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id AND lebt = 1"); + if ($spielerRes->num_rows < 1) + return false; + + //Nachschauen, ob ich ihn nicht vorige Nacht bereits beschützt habe ... + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['beschuetzerLetzteRundeBeschuetzt']==$id) + return false; + + $gameAssoc = gameAssoc($mysqli); + //Schreibe es auch ins playerlog, damit es der Spieler nachlesen kann + toPlayerLog($mysqli, "In Nacht ".$gameAssoc['nacht']." beschützen Sie ".getName($mysqli,$id),$eigeneID); + toGameLog($mysqli,"Der Beschützer/Die Beschützerin(".getName($mysqli,$eigeneID).") beschützt in Nacht ".$gameAssoc['nacht']." ".getName($mysqli,$id)); + + //Setze mich noch auf bereit ;) + setBereit($mysqli,$eigeneID,1); + $mysqli->Query("UPDATE $spielID"."_spieler SET beschuetzerLetzteRundeBeschuetzt = $id WHERE id = $eigeneID"); + return true; +} + +function parErmInitialisiere($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + echo "Möchten Sie Ihre Fähigkeit als Paranormaler Ermittler einsetzen?
"; + //Zeige eine Liste aller lebenden Spieler an + echo "'; + + echo ""; +} + +function parErmAusgewaehlt($mysqli, $id) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + //schauen, ob es ein valider Spieler ist + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id AND lebt = 1"); + if ($spielerRes->num_rows < 1) + return false; + //Überprüfe, ob ich noch einsetzen darf + $eigen = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID AND parErmEingesetzt = 0"); + if ($eigen->num_rows <= 0) + return false; + + //Finde die ids der beiden Nachbarn heraus ... + $alleRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + $nachbar1 = -1; + $nachbar2 = -1; + $erster = -1; + $letzter = -1; + while ($temp = $alleRes->fetch_assoc()) + { + if ($erster == -1) + $erster = $temp['id']; + if ($temp['id']!=$id && $temp['id'] < $id) + $nachbar1 = $temp['id']; + if ($temp['id'] > $id && $nachbar2 == -1) + $nachbar2 = $temp['id']; + $letzter = $temp['id']; + } + if ($nachbar1 == -1) + { + //Wir waren der erste + $nachbar1 = $letzter; + } + if ($nachbar2 == -1) + { + //Wir waren der letzte + $nachbar2 = $erster; + } + $werwoelfe = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE (nachtIdentitaet = ". CHARWERWOLF ." OR nachtIdentitaet = ". CHARLYKANTROPH .") AND (ID = $nachbar1 OR ID = $nachbar2 OR ID = $id)"); + if ($werwoelfe->num_rows > 0) + { + //Es ist zumindest ein Werwolf darunter + toPlayerLog ($mysqli,"Sie beobachteten die Spieler ". getName($mysqli,$nachbar1) .", ". getName($mysqli,$id) ." und ".getName($mysqli,$nachbar2)." Es fällt Ihnen eine bedrohliche Aura auf, unter den dreien ist zumindest ein Werwolf.",$eigeneID); + toGameLog($mysqli,"Der Paranormale Ermittler beobachtete die Spieler ". getName($mysqli,$nachbar1) .", ". getName($mysqli,$id) ." und ".getName($mysqli,$nachbar2).". Er sieht, dass sich unter ihnen zumindest ein Werwolf befindet."); + echo ("Sie beobachteten die Spieler ". getName($mysqli,$nachbar1) .", ". getName($mysqli,$id) ." und ".getName($mysqli,$nachbar2)." Es fällt Ihnen eine bedrohliche Aura auf, unter den dreien ist zumindest ein Werwolf.
"); + } + else + { + toPlayerLog ($mysqli,"Sie beobachteten die Spieler ". getName($mysqli,$nachbar1) .", ". getName($mysqli,$id) ." und ".getName($mysqli,$nachbar2)." Es fällt Ihnen nichts Besonderes auf, unter den dreien befindet sich kein Werwolf",$eigeneID); + toGameLog($mysqli,"Der Paranormale Ermittler beobachtete die Spieler ". getName($mysqli,$nachbar1) .", ". getName($mysqli,$id) ." und ".getName($mysqli,$nachbar2).". Er sieht, dass sich unter ihnen kein Werwolf befindet."); + echo ("Sie beobachteten die Spieler ". getName($mysqli,$nachbar1) .", ". getName($mysqli,$id) ." und ".getName($mysqli,$nachbar2)." Es fällt Ihnen nichts Besonderes auf, unter den dreien befindet sich kein Werwolf
"); + } + + $mysqli->Query("UPDATE $spielID"."_spieler SET parErmEingesetzt = 1 WHERE id = $eigeneID"); + return true; +} + +function hexeInitialisieren($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + $eigeneAss = eigeneAssoc($mysqli); + $heiltraenke = $eigeneAss['hexeHeiltraenke']; + $todestraenke = $eigeneAss['hexeTodestraenke']; + + echo "'; + echo ""; +} + +function jaegerInitialisiere($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + + //Zeige eine Liste aller noch lebenden an, die der Jäger töten kann + echo "'; +} + +function buergermeisterInitialisiere($mysqli) +{ + //Der Bürgermeister wurde getötet und darf das Amt an seinen Nachfolger weitergeben... + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + + //Zeige eine Liste aller noch Lebenden an, an die der Bürgermeister das Amt weitergeben kann + echo "'; +} + +function phaseBeendenWennAlleBereit($phase,$mysqli) +{ + //Springt zur nächsten Phase, wenn alle bereit sind + $spielID = $_COOKIE['SpielID']; + //Schauen wir zuerst mal, ob schon alle bereit sind ... + $nichtBereitResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE bereit = 0 AND lebt = 1"); + if ($nichtBereitResult->num_rows > 0) + { + return false; + } + //Es sind wohl schon alle bereit + if ($phase == PHASENACHT1) + { + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT2); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASENACHT2,$mysqli); + } + elseif ($phase == PHASENACHT2) + { + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT3); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASENACHT3,$mysqli); + } + elseif ($phase == PHASENACHT3) + { + //springen wir zu phase 5, wenn es eine Hexe gibt + $gameResult = $mysqli->Query("SELECT * FROM $spielID"."_game"); + $gameResAssoc = $gameResult->fetch_assoc(); + $hexenzahl = $gameResAssoc['hexenzahl']; + //Setze Phase auf 5 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT4); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASENACHT4,$mysqli); + } + elseif ($phase == PHASENACHT4) + { + //Wir überspringen Phase 6 und kommen gleich zu Phase 7 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHTENDE); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASENACHTENDE,$mysqli); + } + elseif ($phase == PHASETOTEBEKANNTGEBEN) + { + //Wenn es keinen Bürgermeister gibt, zur Wahl des Bürgermeisters übergehen + $bres = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1 AND lebt = 1"); + if ($bres->num_rows > 0) + { + //Es gibt bereits einen Bürgermeister, wir können zu Phase 9 übergehen + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEDISKUSSION); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASEDISKUSSION,$mysqli); + } + else + { + //Es gibt keinen Bürgermeister --> Bürgermeisterwahl = Phase 8 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEBUERGERMEISTERWAHL); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASEBUERGERMEISTERWAHL,$mysqli); + } + } + elseif ($phase == PHASEBUERGERMEISTERWAHL) + { + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEDISKUSSION); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASEDISKUSSION,$mysqli); + } + elseif ($phase == PHASEDISKUSSION) + { + //Gehe zur Anklage über + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEANKLAGEN); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASEANKLAGEN,$mysqli); + } + elseif ($phase == PHASEANKLAGEN) + { + //Gehe zur Abstimmung über + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEABSTIMMUNG); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASEABSTIMMUNG,$mysqli); + } +} + +function endeDerAbstimmungStichwahl($id1, $id2, $mysqli) +{ + //Stichwahl zwischen id1 und id2 + $spielID = $_COOKIE['SpielID']; + //Diesmal gehe ich nicht über phaseBeendenWennAlleBereit... + $mysqli->Query("UPDATE $spielID"."_spieler SET angeklagtVon = -1"); + $mysqli->Query("UPDATE $spielID"."_spieler SET angeklagtVon = 0 WHERE id = $id1"); + $mysqli->Query("UPDATE $spielID"."_spieler SET angeklagtVon = 0 WHERE id = $id2"); + //Gehe zur Stichwahl über = Phase 12 + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASESTICHWAHL); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + phaseInitialisieren(PHASESTICHWAHL,$mysqli); +} + +function endeDerStichwahl($id, $mysqli) +{ + $spielID = $_COOKIE['SpielID']; + //Stichwahl ist beendet + if ($id > -1) + { + toeteSpieler($mysqli,$id); + } + + if (!checkeSiegbedingungen($mysqli)) + { + //Gehe wieder zu Beginn der Nacht -> PHASENACHTBEGINN + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHTBEGINN); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + + //Zähle einen Tag dazu + $gameAssoc = gameAssoc($mysqli); + $nacht = $gameAssoc['nacht']; + $nacht +=1; + $mysqli->Query("UPDATE $spielID"."_game SET nacht = $nacht"); + phaseInitialisieren(PHASENACHTBEGINN,$mysqli); + } +} + +function endeDerAbstimmungEinfacheMehrheit($id, $mysqli) +{ + $spielID = $_COOKIE['SpielID']; + //Ein Spieler mit der id $id wurde bei der Abstimmung des Dorfes im ersten Wahlgang für schuldig befunden. + if ($id >-1) + { + toeteSpieler($mysqli,$id); + } + if (!checkeSiegbedingungen($mysqli)) + { + //Gehe wieder zu Beginn der Nacht + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHTBEGINN); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + + //Zähle einen Tag dazu + $gameAssoc = gameAssoc($mysqli); + $nacht = $gameAssoc['nacht']; + $nacht +=1; + $mysqli->Query("UPDATE $spielID"."_game SET nacht = $nacht"); + phaseInitialisieren(PHASENACHTBEGINN,$mysqli); + } +} + +function writeGameToLog($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $fileName = "log/Werwolf_log_".date("Y_m").".log"; + $myfile = fopen($fileName, "a"); + fwrite($myfile,"\n--- SPIEL BEENDET --- \n"); + fwrite($myfile,"SpielID: $spielID \n"); + fwrite($myfile,"SpielEnde: ".date("d.m.Y, H:i:s")."\n"); + //Alle Spieler hineinschreiben: + fwrite($myfile,"Spieler:\n"); + $playerQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $playerQ->fetch_assoc()) + { + fwrite($myfile,$temp['name']."\n"); + } + fwrite($myfile,"Spielverlauf:\n"); + $gameAssoc = gameAssoc($mysqli); + $mitUmbruch = str_replace("Sie sind leider bereits gestorben ...
"; + echo "Verhalten Sie sich ruhig und stören Sie nicht das Spiel der anderen. Verraten Sie keine Informationen, damit die anderen Spieler ihr Spielerlebnis genießen können.
"; + echo ""; //Auch als Toter will ich eine Liste haben :) + echo ""; + echo " + + Query("UPDATE $spielID"."_spieler SET reload = 1"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 0 WHERE id = $spielerID"); +} + +function setReloadZero($spielerID, $mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 0 WHERE id = $spielerID"); +} + +function setBereit($mysqli,$spielerID,$bereit) +{ + $spielID = $_COOKIE['SpielID']; + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = $bereit WHERE id = $spielerID"); +} + +function gameAssoc($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $gameRes = $mysqli->Query("SELECT * FROM $spielID"."_game"); + $gameA = $gameRes->fetch_assoc(); + return $gameA; +} + +function eigeneAssoc($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + $eigeneRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID"); + $eigeneA = $eigeneRes->fetch_assoc(); + return $eigeneA; +} + +function getName($mysqli, $spielerID) +{ + //Gibt den Namen des Spielers mit der $spielerID zurück + $spielID = $_COOKIE['SpielID']; + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID"); + $temp = $res->fetch_assoc(); + return $temp['name']; +} + +function getGesinnung($identitaet) +{ + if ($identitaet == CHARWERWOLF) + return "Werwölfe"; + else + return "Dorfbewohner"; +} + +function nachtidentitaetAlsString($identitaet) +{ + switch($identitaet) + { + case CHARKEIN: + return "keine"; + break; + case CHARDORFBEWOHNER: + return "Dorfbewohner"; + break; + case CHARWERWOLF: + return "Werwolf"; + break; + case CHARSEHER: + return "Seher/in"; + break; + case CHARHEXE: + return "Hexe/r"; + break; + case CHARJAEGER: + return "Jäger/in"; + break; + case CHARAMOR: + return "Amor"; + break; + case CHARBESCHUETZER: + return "Beschützer/in"; + break; + case CHARPARERM: + return "Paranormaler Ermittler"; + break; + case CHARLYKANTROPH: + return "Lykantroph/in"; + break; + case CHARSPION: + return "Spion/in"; + break; + case CHARMORDLUSTIGER: + return "Mordlustige(r)"; + break; + case CHARPAZIFIST: + return "Pazifist/in"; + break; + case CHARALTERMANN: + return "Die/Der Alte"; + break; + default: + return ""; + break; + } +} + +function nachtidentitaetKurzerklaerung($identitaet) +{ + switch($identitaet) + { + case CHARKEIN: + return "keine"; + break; + case CHARDORFBEWOHNER: + //Dorfbewohner + return "Beunruhigt durch das Auftauchen von Werwölfen, versuchen die Dorfbewohner wieder Frieden in das Dorf zu bringen, indem sie alle Werwölfe ausforschen und töten wollen."; + break; + case CHARWERWOLF: + //Werwolf + return "Die Werwölfe töten jede Nacht einen Dorfbewohner, verhalten sich aber am Tag, als gehörten sie zu ihnen. Achtung: Die Dorfbewohner wollen den Werwölfen auf die Schliche kommen ..."; + break; + case CHARSEHER: + //Seher/in + return "Sie können jede Nacht die Nachtidentität eines Spielers sehen. Alternative: Sie sehen, welcher Gruppe derjenige angehört"; + break; + case CHARHEXE: + //Hexe + return "Sie können ein Mal im Spiel jemanden mit Ihrem Todestrank töten, ein Mal im Spiel das Opfer der Werwölfe retten. Entscheiden Sie weise, viel hängt davon ab ..."; + break; + case CHARJAEGER: + //Jäger/in + return "Wenn Sie getötet werden, können Sie nach einem letzten Griff zu Ihrer Flinte einen anderen Spieler mit in den Tod reißen"; + break; + case CHARAMOR: + //Amor + return "Zu Beginn des Spieles dürfen Sie zwei Personen bestimmen, die sich verlieben. Stirbt die eine Person, begeht die andere aus Kummer Selbstmord"; + break; + case CHARBESCHUETZER: + //Leibwächter/Beschützer + return "Sie können jede Nacht einen Spieler beschützen, der in dieser Nacht nicht sterben kann (Sie können sich auch selbst wählen). Sie dürfen nicht zwei Nächte hintereinander dieselbe Person schützen."; + break; + case CHARPARERM: + return "Sie können einmal im Spiel einen Spieler bestimmen und erfahren, ob sich unter diesem und den beiden Nachbarn zumindest ein Werwolf befindet."; + break; + case CHARLYKANTROPH: + return "Sie sehen aus wie ein Werwolf, sind aber keiner. Sie spielen also für die Dorfbewohner"; + break; + case CHARSPION: + //Spion + return "Sie können jede Nacht einen Spieler auswählen und eine Identität, die dieser Spieler haben könnte. Sie erfahren, ob dieser + Spieler tatsächlich diese Identität besitzt"; + break; + case CHARMORDLUSTIGER: + return "Sie wollen Blut sehen und argumentieren daher immer für das Töten eines Spielers"; + break; + case CHARPAZIFIST: + return "Sie wollen, dass alle möglichst friedlich zusammenleben und argumentieren daher immer gegen das Töten eines Spielers"; + break; + case CHARALTERMANN: + return "Sie sterben in der x. Nacht, wobei x die Anzahl der lebenden Werwölfe + 1 ist. Es kann also sein, dass sie früher sterben als gedacht ..."; + break; + } +} + +function toGameLog($mysqli,$logeintrag) +{ + //Fügt dem gamelog den $logeintrag hinzu + $spielID = $_COOKIE['SpielID']; + $gameAssoc = gameAssoc($mysqli); + $aktLog = $gameAssoc['log']; + $neuLog = $aktLog.date("H:i:s").": ".$logeintrag."