From de1a653a5c067ede62b67f59db26572d57cfdfec Mon Sep 17 00:00:00 2001 From: foin137 Date: Fri, 27 Mar 2020 19:57:00 +0100 Subject: [PATCH] Upload of the files Added the already existing files to the repository --- .gitignore | 2 + Werwolf.php | 4101 ++++++++++++++++++++++++++++++++++++++++++ constants.php | 39 + gamelogreload.php | 16 + includes.example.php | 21 + listreload.php | 419 +++++ reload.php | 15 + 7 files changed, 4613 insertions(+) create mode 100644 .gitignore create mode 100644 Werwolf.php create mode 100644 constants.php create mode 100644 gamelogreload.php create mode 100644 includes.example.php create mode 100644 listreload.php create mode 100644 reload.php 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 @@ + + + +Werwölfe + + + + + + + + + + +

Werwolfonline.eu

+
+Query("SELECT * FROM $spielID"."_spieler"); + if(isset($alleres->num_rows)) + { + //Schauen, ob es auch mich als Spieler gibt und meine verifizierungsnr stimmt + $spielerResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID AND verifizierungsnr = ".$_COOKIE['verifizierungsnr']); + if ($spielerResult->num_rows >= 1) + { + + //Zuallererst einmal den letzten Zugriff loggen: + $mysqli->Query("UPDATE $spielID"."_game SET letzterAufruf = ".time()); + //Wir befinden uns bereits in einem Spiel + + //Dass wir aber nicht ohne Grund reloaden, setzen wir für uns selbst reload auf false: + setReloadZero($eigeneID,$mysqli); + //echo "

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 "

$spielID


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 '
+ +

Sie als Spielleiter erhalten die Möglichkeit, die Regeln des Spiels zu bearbeiten: +

+
+
+ +

+

+
'; + } + + //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 '
+ +

Drücke "bereit", um zu starten!

+

+

+
'; + } + 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 "
"; + echo "

Der Pfeil des Amor, der nie sein Ziel verfehlt, trifft Sie und sie verlieben sich unsterblich ...

"; + echo "

Sie sind verliebt mit ".getName($mysqli,$eigeneAssoc['verliebtMit'])."

"; + echo "

Sie spielen nun gemeinsam mit Ihrem Geliebten, gehören Sie unterschiedlichen Gruppierungen an, + gewinnen Sie nur, wenn Sie alle anderen Spieler töten. Ansonsten gewinnen Sie wie gewohnt mit Ihrer Gruppierung (Dorfbewohner, Werwölfe)

"; + //Auch den Charakter anzeigen + $verliebtRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$eigeneAssoc['verliebtMit']); + $verliebtAss = $verliebtRes->fetch_assoc(); + echo "

Identität: ".nachtidentitaetAlsString($verliebtAss['nachtIdentitaet'])."

"; + toPlayerLog($mysqli,getName($mysqli,$eigeneAssoc['verliebtMit'])." ist ".nachtidentitaetAlsString($verliebtAss['nachtIdentitaet']),$eigeneID); + echo ''; + 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 "

"; + echo "
"; //Die Liste, was die anderen gewählt haben + $listReload=true; + echo "
"; + echo ''; + echo "

Für den Tod welches Spielers wollen Sie stimmen?

"; + echo "

'; + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['werwolfeinstimmig']==1) + 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 "
"; + echo ''; + echo '

'; + 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 "
"; + echo ''; + echo '

'; + 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 ''; + echo "

Für welchen Spieler als Bürgermeister möchten Sie stimmen?

"; + 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 "
"; + echo ''; + echo '

Sie als Bürgermeister dürfen entscheiden, + wann es Zeit ist, die Diskussion zu beenden und zu den + Anklagen überzugehen.

'; + 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 "

Wollen Sie einen Spieler 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 "
"; + echo ''; + echo '

'; + echo "

Achten Sie als Bürgermeister darauf, dass alle Angeklagten Zeit haben, sich zu verteidigen.

"; + echo "
"; + } + } + } + elseif ($phase == PHASEABSTIMMUNG) + { + characterButton($mysqli); + //Abstimmung, bei Mehrheit wird Opfer getötet, sonst Stichwahl + //Wieder ähnlich wie Abstimmung für Bürgermeister + echo "

"; + echo "
"; //Die Liste, was die anderen gewählt haben + $listReload=true; + $pageReload=true; + + //Schaue zuerst, ob der timer noch nicht abgelaufen ist + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['countdownBis']<= time()) + { + //Zeit abgelaufen + endeDerAbstimmungEinfacheMehrheit(-1,$mysqli); + toGameLog($mysqli,"Die Versammlung des Dorfes konnte sich nicht auf einen Spieler einigen, den sie töten will"); + toAllPlayerLog($mysqli,"Die Versammlung des Dorfes konnte sich nicht auf einen Spieler einigen, den sie töten will"); + } + else + { + $timerText = "Zeit, bis das Dorf zu keinem Ergebnis kommt: "; + $timerZahl = $eigeneAssoc['countdownBis'] - time()+1; + $timerAb = $eigeneAssoc['countdownAb']- time()+1; + $aktBeiTime = true; + if (isset($_POST['dorfWahlID'])) + { + //einmal die Wahl eintragen + $wahlID = $_POST['dorfWahlID']; + $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; + //Falls es der Bürgermeister ist, zusätzliche 1/2 Stimme + if ($temp['buergermeister']==1) + $wahlAufSpieler[$temp['wahlAuf']]+=0.5; + } + $wahlErfolgreich = 0; + //Schauen, ob jemand mehr als 50% der Stimmen hat + foreach ($wahlAufSpieler as $id => $stimmen) + { + if ($stimmen > (($anzahlSpieler+0.5)/2) && $id > -1) + { + //Dieser Spieler hat die Mehrheit + toGameLog($mysqli,getName($mysqli,$id)." wurde bei der Abstimmung zum Tode verurteilt"); + toAllPlayerLog($mysqli,getName($mysqli,$id)." wurde vom Dorf zum Tode verurteilt"); + endeDerAbstimmungEinfacheMehrheit($id,$mysqli); + $wahlErfolgreich = 1; + break; + } + } + if ($wahlErfolgreich == 0) + { + //Es gibt keinen Spieler mit absoluter Mehrheit + //Nachschauen, ob alle Spieler abgestimmt haben und es genau zwei Spieler mit den meisten Stimmen gibt. + $abgestimmtRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND wahlAuf = -1"); + if ($abgestimmtRes->num_rows > 0) + { + //Es haben noch nicht alle abgestimmt + } + else + { + //Alle haben abgestimmt, nachschauen, wer die meisten Stimmen hat. + $maxStimmen = 0; + $maxStimmenSpieler = -1; + foreach ($wahlAufSpieler as $id => $stimmen) + { + if ($stimmen > $maxStimmen && $id > -1) + { + $maxStimmen = $stimmen; + $maxStimmenSpieler = $id; + } + } + //Jetzt ermittle den zweiten Spieler + $zweitMaxStimmen = 0; + $zweitMaxStimmenSpieler = -1; + foreach ($wahlAufSpieler as $id => $stimmen) + { + if ($stimmen > $zweitMaxStimmen && $id != $maxStimmenSpieler && $id > -1) + { + $zweitMaxStimmen = $stimmen; + $zweitMaxStimmenSpieler = $id; + } + } + //Schaue, ob jemand gleich viele Stimmen wie zweitMaxStimmenSpieler hat + //Wenn dies der Fall ist, gibt es 3 Kandidaten für eine Stichwahl => Nicht möglich ... + $exequo = false; + foreach ($wahlAufSpieler as $id => $stimmen) + { + if ($stimmen >= $zweitMaxStimmen && $id != $maxStimmenSpieler && $id != $zweitMaxStimmenSpieler && $id > -1) + { + $exequo = true; + } + } + if (!$exequo) + { + //Starte eine Stichwahl + endeDerAbstimmungStichwahl($maxStimmenSpieler,$zweitMaxStimmenSpieler,$mysqli); + } + } + } + } + echo "
"; + echo "

Für welchen der angeklagten Spieler möchten Sie stimmen?

"; + echo "

'; + echo ""; + echo "
"; + echo "

Sie möchten für einen anderen Spieler stimmen?

"; + echo "

'; + echo ""; + } + } + elseif ($phase == PHASESTICHWAHL) + { + characterButton($mysqli); + //Es kommt zu einer Stichwahl + echo "

Stichwahl

"; + echo "

"; + echo "
"; //Die Liste, was die anderen gewählt haben + $listReload=true; + $pageReload=true; + //Schaue zuerst, ob der timer noch nicht abgelaufen ist + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['countdownBis']<= time()) + { + //Zeit abgelaufen + endeDerStichwahl(-1,$mysqli); + toGameLog($mysqli,"Das Dorf konnte sich in der Stichwahl nicht auf einen Spieler einigen, den sie töten wollen"); + toAllPlayerLog($mysqli,"Das Dorf konnte sich auch in der Stichwahl nicht auf einen Spieler einigen, den sie töten wollen"); + } + else + { + $timerText = "Zeit, bis die Stichwahl erfolglos ist: "; + $timerZahl = $eigeneAssoc['countdownBis'] - time()+1; + $timerAb = $eigeneAssoc['countdownAb']- time()+1; + $aktBeiTime = true; + if (isset($_POST['dorfWahlID'])) + { + //einmal die Wahl eintragen + $wahlID = $_POST['dorfWahlID']; + $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; + //Falls es der Bürgermeister ist, zusätzliche 1/2 Stimme + if ($temp['buergermeister']==1) + $wahlAufSpieler[$temp['wahlAuf']]+=0.5; + } + //Schauen, ob jemand mehr als 50% der Stimmen hat + foreach ($wahlAufSpieler as $id => $stimmen) + { + if ($stimmen > (($anzahlSpieler+0.5)/2) && $id > -1) + { + //Dieser Spieler hat die Mehrheit + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1"); + toGameLog($mysqli,getName($mysqli,$id)." wurde bei der Abstimmung zum Tode verurteilt"); + toAllPlayerLog($mysqli,getName($mysqli,$id)." wurde vom Dorf zum Tode verurteilt"); + endeDerStichwahl($id,$mysqli); + break; + } + } + } + echo "
"; + echo "

Für welchen der angeklagten Spieler möchten Sie bei der Stichwahl stimmen?

"; + echo "

'; + echo ""; + } + } + elseif ($phase == PHASESIEGEREHRUNG) + { + $pageReload=true; + 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 "

$spielID


Mit dieser Zahl können andere deinem Spiel beitreten!"; + + //Die eigene SpielID setzen + setcookie ("SpielID", $spielID, time()+172800); //Dauer 2 Tage, länger sollte ein Spiel nicht dauern ;) + setcookie ("eigeneID",0, time()+172800); + setcookie ("verifizierungsnr",$verifizierungsnr, time()+172800); + $_COOKIE["SpielID"]=$spielID; + $_COOKIE["eigeneID"] = 0; + $_COOKIE["verifizieren"] = $verifizierungsnr; + writeGameToLogSpielErstellen($mysqli,$spielID,$_POST['ihrName']); + break; //die Schleife beenden + } + } + $pageReload = true; + } + else + { + //kein Name eingegeben! erneut + 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 "existiert
"; + } + else + { + //Es existiert kein Spieler mit dieser ID --> lege an + //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); // 0 als Standard darf nicht vorkommen + $mysqli->Query("INSERT INTO $spielID"."_spieler"." (id, name , spielleiter, reload, verifizierungsnr) VALUES ( $i , '".$_POST['ihrName']."', 0 , 1, $verifizierungsnr)"); + echo "

Sie 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 "
ERROR 0001: num_rows ist aus irgendeinem Grund nicht definiert
"; + } + } + $pageReload = true; + //Ein neuer Spieler ist dem Spiel beigetreten, wenn wir uns also in der Spielphase 0 = Spielersuchen + //befinden, aktualisiere mich --> Die anderen zu aktualisieren ist nicht notwendig, da sie sowieso über javascript die Liste aktualisieren + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1 WHERE id = $eigeneID"); + } + else + { + 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); + } +?> +
+
v1.0.3, Erstellt von Florian Lindenbauer +
+
+

Löst oft viele Probleme:

+
+
+"; +if (isset($_COOKIE['SpielID'])) +{ + diesesSpielLoeschenButton(); +} +?> +
+Was ist Werwolf
+Anleitung
+ + + + + + +

Sie befinden sich momentan in keinem Spiel: Sie können entweder einem bereits erstellten Spiel beitreten oder ein neues Spiel erstellen!

+
+

Einem Spiel beitreten

+ +

Eine bestehende Spielnummer eingeben:

+

Ihr Name:

+

+
+
+
+

Ein neues Spiel erstellen

+ +

Ihr Name:

+

+
+ Query("SELECT * FROM $i"."_game"); + if(isset($alleres->num_rows)) + { + $temp = $alleres->fetch_assoc(); + if ($temp['letzterAufruf'] < $zeitpunkt) + { + //löschen + $mysqli->query("DROP TABLE `$i"."_game`"); + $mysqli->query("DROP TABLE `$i"."_spieler`"); + //echo $mysqli->error; + } + } + } +} +function local_settings() +{ + //Lässt lokale Einstellungen (in Cookies gespeichert) wie Farbe zu. + ?> +

+ Query("SELECT * FROM $spielID"."_game"); + $gameResAssoc = $gameResult->fetch_assoc(); + $buergermeisterWeitergeben = $gameResAssoc['buergermeisterWeitergeben']; + $charaktereAufdecken = $gameResAssoc['charaktereAufdecken']; + $seherSiehtIdentitaet = $gameResAssoc['seherSiehtIdentitaet']; + $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']; + $werwolftimer1 = $gameResAssoc['werwolftimer1']; + $werwolfzusatz1 = $gameResAssoc['werwolfzusatz1']; + $werwolftimer2 = $gameResAssoc['werwolftimer2']; + $werwolfzusatz2 = $gameResAssoc['werwolfzusatz2']; + $dorftimer = $gameResAssoc['dorftimer']; + $dorfzusatz = $gameResAssoc['dorfzusatz']; + $dorfstichwahltimer = $gameResAssoc['dorfstichwahltimer']; + $dorfstichwahlzusatz = $gameResAssoc['dorfstichwahlzusatz']; + $zufaelligauswaehlen = $gameResAssoc['zufaelligeAuswahl']; + $zufaelligeAuswahlBonus = $gameResAssoc['zufaelligeAuswahlBonus']; + echo " +
+ +

Allgemein

+

Bürgermeister

"; + if ($buergermeisterWeitergeben == 0) + echo "

"; + else + echo "

"; + echo "

Tote Charaktere

"; + if ($charaktereAufdecken == 0) + echo "

"; + else + echo "

"; + echo "

Seher

"; + if ($seherSiehtIdentitaet == 0) + echo "

"; + else + echo "

"; + echo "

Charaktere

"; + if ($zufaelligauswaehlen == 0) + { + echo "

Werwölfe: + +

"; + } + else + { + echo "

Werwölfe: + +

"; + } + echo "

Seher: + +

"; + echo "

Hexe: + +

"; + echo "

Jäger: + +

"; + echo "

Beschützer: + +

"; + echo "

Paranormaler Ermittler: + +

"; + echo "

Lykantroph: + +

"; + echo "

Spion: + +

"; + echo "

Mordlustige: + +

"; + echo "

Pazifist: + +

"; + echo "

Die Alten: + +

"; + echo "

Amor: + +

"; + echo "

Die Charaktere verdeckt und zufällig auswählen

+

Geben Sie dazu eine maximale Anzahl von Charakteren ein, die vorkommen sollen, bei Werwölfen müssen sie nichts eingeben
+ Zusätzlich können Sie noch einen Wert eingeben, der die Verteilung bestimmt. Ein positiver Wert erleichtert das Spiel für die Dorfbewohner, ein negativer für die Werwölfe (nur bei der zufälligen Charakterverteilung)

"; + echo "

Verteilung der zufälligen Charaktere

"; + echo "

Countdown-Einstellungen

"; + echo "

"; + echo "

Sekunden, bis die Werwölfe nicht mehr einstimmig wählen müssen: +
+ Zusätzliche Zeit pro Werwolf:

"; + echo "

Sekunden, bis nach Ablaufen der Einstimmigkeit die Wahl der Werwölfe erfolglos ist: +
+ Zusätzliche Zeit pro Werwolf:

"; + echo "

Sekunden, bis die normale Abstimmung des Dorfes am Tag erfolglos ist: +
+ Zusätzliche Zeit pro Dorfbewohner:

"; + echo "

Sekunden, bis die Stichwahl am Tag erfolglos ist: +
+ Zusätzliche Zeit pro Dorfbewohner:

"; + echo "

"; + echo "
"; +} + +function spielRegelnAnwenden($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + if (isset($_POST['buergermeister'])) + { + //Zuerst überprüfen, ob die Variablen überhaupt existieren + $buergermeisterWeitergeben = $_POST['buergermeister']; + $charaktereAufdecken = $_POST['aufdecken']; + $seherSiehtIdentitaet = $_POST['seherSieht']; + $hexenzahl = $_POST['hexe']; + $jaegerzahl = $_POST['jaeger']; + $seherzahl = $_POST['seher']; + $amorzahl = $_POST['amor']; + $beschuetzerzahl = $_POST['beschuetzer']; + $parErmZahl = $_POST['parErm']; + $lykantrophenzahl = $_POST['lykantrophen']; + $spionezahl = $_POST['spione']; + $idiotenzahl = $_POST['idioten']; + $pazifistenzahl = $_POST['pazifisten']; + $altenzahl = $_POST['alten']; + $werwolftimer1 = $_POST['werwolftimer1']; + $werwolfzusatz1 = $_POST['werwolfzusatz1']; + $werwolftimer2 = $_POST['werwolftimer2']; + $werwolfzusatz2 = $_POST['werwolfzusatz2']; + $dorftimer = $_POST['dorftimer']; + $dorfzusatz = $_POST['dorfzusatz']; + $dorfstichwahltimer = $_POST['dorfstichwahltimer']; + $dorfstichwahlzusatz = $_POST['dorfstichwahlzusatz']; + $zufaelligeAuswahlBonus = $_POST['zufaelligeAuswahlBonus']; + $zufaelligauswaehlen = 0; + if (isset($_POST['zufaelligauswaehlen'])) + { + $zufaelligauswaehlen = 1; + $werwolfzahl = 0; + } + else + { + $werwolfzahl = $_POST['werwoelfe']; + } + try + { + if ($werwolftimer1 < 15 || $werwolfzusatz1 < 0 || $werwolftimer2 < 15 || $werwolfzusatz2 < 0 || $dorftimer < 60 || $dorfzusatz < 0 || $dorfstichwahltimer < 30 || $dorfstichwahlzusatz < 0) + { + //Alles auf Standardwerte zurücksetzen + throw new Exception("Eingabe ungültig"); + } + } + catch (Exception $e) + { + echo "

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 "
Weise $id die Identität $identitaet zu"; + toGameLog($mysqli,"Weise ".getName($mysqli,$id)." die Nachtidentitaet ".nachtidentitaetAlsString($identitaet)." zu."); + } + +} + +function phaseInitialisieren($phase,$mysqli) +{ + //Wird am Beginn jeder Phase aufgerufen und initialisert sie + $spielID = $_COOKIE['SpielID']; + if ($phase == PHASENACHTBEGINN) + { + //Bereite timer vor, nachdem die Nacht beginnt ... + $countdownBis = time()+5; + $countdownAb = time(); + $mysqli->Query("UPDATE $spielID"."_spieler SET countdownBis = $countdownBis, countdownAb = $countdownAb WHERE lebt = 1"); + } + elseif ($phase == PHASENACHT1) + { + //Neue verliebte ... Setze alle verliebten auf -1 + $mysqli->Query("UPDATE $spielID"."_spieler SET verliebtMit = -1"); + } + elseif ($phase == PHASENACHT2) + { + } + elseif ($phase == PHASENACHT3) + { + //Setze wahlAuf auf -1 bei allen, damit die Werwölfe mit einer neuen Abstimmung starten + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = -1"); + $gameAssoc = gameAssoc($mysqli); + //Bei weniger als 2 Werwölfen kann werwolfeinstimmig gleich auf 0 gesetzt werden. + $werwolfQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARWERWOLF ." AND lebt = 1"); + $werwolfzahl = $werwolfQ->num_rows; + if ($werwolfzahl > 2) + { + $mysqli->Query("UPDATE $spielID"."_game SET werwolfeinstimmig = 1"); + $countdownBis = time()+$gameAssoc['werwolftimer1']+$gameAssoc['werwolfzusatz1']*$werwolfzahl; + if ($countdownBis >= time()+40) + $countdownAb = time()+20; + else + $countdownAb = time(); + $mysqli->Query("UPDATE $spielID"."_spieler SET countdownBis = $countdownBis, countdownAb = $countdownAb WHERE nachtIdentitaet = ".CHARWERWOLF); + } + else + { + $mysqli->Query("UPDATE $spielID"."_game SET werwolfeinstimmig = 0"); + $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); + } + + } + elseif ($phase == PHASENACHTENDE) + { + //Timer, bis die Toten bekanntgegeben werden + //Bereite timer vor, nachdem die Toten bekanntgegeben werden ... + $countdownBis = time()+5; + $countdownAb = time(); + $mysqli->Query("UPDATE $spielID"."_spieler SET countdownBis = $countdownBis, countdownAb = $countdownAb WHERE lebt = 1"); + } + elseif ($phase == PHASETOTEBEKANNTGEBEN) + { + //Schau nach, wer diese Nacht gestorben ist und bereite den Tagestext vor + + //Eine Liste an Toten + $tote[-1] = -1; + + //Zuerst mal schauen, ob das Opfer der Werwölfe gestorben ist. + $gameA = gameAssoc($mysqli); + $werwolfopfer = $gameA['werwolfopfer']; + if ($werwolfopfer > -1) + { + //Die Werwölfe haben ein Opfer ausgewählt + //Nachschauen, ob die Hexe ihren Heiltrank eingesetzt hat + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARHEXE ." AND lebt = 1 AND hexeHeilt = 1"); + //Falls das zumindest eine Reihe zurückliefert, hat die Hexe geheilt + if ($res->num_rows > 0) + { + //Hexe hat geheilt + } + else + { + //Nachschauen, ob nicht vom Beschützer beschützt + $leibwRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARBESCHUETZER ." AND lebt = 1 AND beschuetzerLetzteRundeBeschuetzt = $werwolfopfer"); + if ($leibwRes->num_rows <= 0) + { + //Wurde nicht vom Leibwächter/Beschützer gerettet + $tote[] = $werwolfopfer; //Töte diesen Spieler + } + } + } + //Wir müssen auch nachschauen, ob die Hexe einen Todestrank eingesetzt hat + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARHEXE ." AND lebt = 1 AND hexenOpfer > -1"); + if ($res->num_rows > 0) + { + //Mindestens eine Hexe will jemanden töten + while ($temp = $res->fetch_assoc()) + { + //Nachschauen, ob nicht vom Leibwächter/Beschützer beschützt ... + $leibwRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARBESCHUETZER ." AND lebt = 1 AND beschuetzerLetzteRundeBeschuetzt = ".$temp['hexenOpfer']); + if ($leibwRes->num_rows <= 0) + { + //nicht beschützt ... + //toete diesen Spieler + $tote[] = $temp['hexenOpfer']; + } + } + } + + //Nachschauen, ob wir der Alte stirbt + $alteRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARALTERMANN ." AND lebt = 1"); + if ($alteRes->num_rows > 0) + { + //Nachschauen, wie viele Werwölfe noch leben + $werwolfQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE nachtIdentitaet = ". CHARWERWOLF ." AND lebt = 1"); + $werwolfzahl = $werwolfQuery->num_rows; + $nacht = $gameA['nacht']; + if ($nacht >= $werwolfzahl +1) + { + //Töte alle Alten + while ($temp = $alteRes->fetch_assoc()) + { + $tote[] = $temp['id']; + } + } + } + + //Nun töte alle Toten und schreib die Namen in einen String zwecks Anzeige + $mysqli->query("UPDATE $spielID"."_spieler SET dieseNachtGestorben = 0"); + $anzeigeString = "Am Morgen findet das Dorf folgende Tote: "; + foreach ($tote as $i => $id) + { + if ($id > -1) + { + toeteSpieler($mysqli,$id); + } + } + + $toteQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE dieseNachtGestorben = 1 ORDER BY RAND();"); + //Fals keiner getötet wurde: + if ($toteQuery->num_rows < 1) + { + //keiner wurde getötet + $anzeigeString = "Diese Nacht ist niemand gestorben."; + } + else + { + while ($temp = $toteQuery->fetch_assoc()) + { + $anzeigeString = $anzeigeString.getName($mysqli,$temp['id'])."
"; + if ($gameA['charaktereAufdecken'] == 1) + { + //Die Charaktere werden aufgedeckt + $anzeigeString = $anzeigeString.getName($mysqli,$temp['id'])." war ".nachtidentitaetAlsString($temp['nachtIdentitaet'])."
"; + } + } + } + + //Jetzt lösche noch die Zahlen, die in diesem Schritt gebraucht wurden + $mysqli->Query("UPDATE $spielID"."_spieler SET hexeHeilt = 0, hexenOpfer = -1"); + $mysqli->Query("UPDATE $spielID"."_game SET werwolfopfer = -1, tagestext = '$anzeigeString'"); + + //Schaue nach, ob wir schon einen Sieger haben + checkeSiegbedingungen($mysqli); + } + elseif ($phase == PHASEBUERGERMEISTERWAHL) + { + //Bürgermeisterwahl + //Setze wahlAuf bei allen auf -1, damit alle neu starten + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = -1"); + } + elseif ($phase == PHASEDISKUSSION) + { + //gibt nichts zu aktualisieren + } + elseif ($phase == PHASEANKLAGEN) + { + //Anklagen + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = -1, angeklagtVon = -1"); + } + elseif ($phase == PHASEABSTIMMUNG) + { + //Abstimmung + + //Timer, ab der die Abstimmung ungültig ist + $gameAssoc = gameAssoc($mysqli); + $dorfQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + $dorfbewohnerzahl = $dorfQ->num_rows; + $countdownBis = time()+$gameAssoc['dorftimer']+$gameAssoc['dorfzusatz']*$dorfbewohnerzahl; + if ($countdownBis >= time()+150) + $countdownAb = time()+90; + else + $countdownAb = time(); + + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = -1, countdownBis = $countdownBis, countdownAb = $countdownAb WHERE lebt = 1"); + } + elseif ($phase == PHASESTICHWAHL) + { + //Stichwahl + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = -1"); + $gameAssoc = gameAssoc($mysqli); + $dorfQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + $dorfbewohnerzahl = $dorfQ->num_rows; + $countdownBis = time()+$gameAssoc['dorfstichwahltimer']+$gameAssoc['dorfstichwahlzusatz']*$dorfbewohnerzahl; + if ($countdownBis >= time()+60) + $countdownAb = time()+30; + else + $countdownAb = time(); + $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = -1, countdownBis = $countdownBis, countdownAb = $countdownAb WHERE lebt = 1"); + } +} + +function toeteSpieler($mysqli, $spielerID) +{ + //Wird aufgerufen, wenn dieser Spieler stirbt + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + + //Nachschauen, ob es der Jäger ist ... + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID"); + $temp = $res->fetch_assoc(); + if ($temp['nachtIdentitaet'] == CHARJAEGER) + { + //Der Jäger wurde getötet + $mysqli->Query("UPDATE $spielID"."_spieler SET jaegerDarfSchiessen = 1 WHERE id = $spielerID"); + toGameLog($mysqli,"Der Jäger wurde getötet"); + } + + //Nachschauen, ob er der Bürgermeister ist ... und wir Bürgermeister weitergeben aktiviert haben.... + if ($temp['buergermeister'] == 1) + { + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['buergermeisterWeitergeben']==1) + { + //Der alte Bürgermeister wählt den aus, an den er den Bürgermeister weitergeben will + toGameLog($mysqli, "Der Bürgermeister wurde getötet. Er darf dieses Amt weitergeben ..."); + $mysqli->Query("UPDATE $spielID"."_spieler SET buergermeisterDarfWeitergeben = 1 WHERE id = $spielerID"); + } + } + + //Töte den Spieler + $mysqli->Query("UPDATE $spielID"."_spieler SET lebt = 0, buergermeister = 0, dieseNachtGestorben = 1 WHERE id = $spielerID"); + + //Schreibe noch ins log + //Nachschauen, ob Charaktere aufgedeckt werden + $gameA = gameAssoc($mysqli); + if ($gameA['charaktereAufdecken']==1) + { + toAllPlayerLog($mysqli,getName($mysqli,$spielerID)."(".nachtidentitaetAlsString($temp['nachtIdentitaet']).") stirbt."); + } + else + { + toAllPlayerLog($mysqli,getName($mysqli,$spielerID)." stirbt."); + } + toGameLog($mysqli,getName($mysqli,$spielerID)."(".nachtidentitaetAlsString($temp['nachtIdentitaet']).") stirbt."); + + //Nachschauen, ob der Spieler verliebt war, denn dann stirbt der andere auch + if ($temp['verliebtMit']>-1) + { + //Ist verliebt, schauen, ob der andere noch lebt... + $verliebtRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND id = ".$temp['verliebtMit']); + if ($verliebtRes->num_rows > 0) + { + toGameLog($mysqli,"Der Verliebte stirbt mit dem anderen"); + //Er lebt noch --> töte ihn + toeteSpieler($mysqli,$temp['verliebtMit']); + } + } + checkeSiegbedingungen($mysqli); +} + +function warteAufAndere() +{ + //Zeigt das warteAufAnder an, damit es bei jedem gleich aussieht + 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 '
+ +

'.$text.'

+

+
'; +} + +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 "
"; + echo ''; + echo "

Welche beiden Spieler möchten Sie verlieben?

"; + echo "

'; + echo "

'; + 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 "
"; + echo ''; + echo "

Sie als Spion(in) dürfen die Identität eines Spielers überprüfen. Welchen Spieler möchten Sie näher betrachten?

"; + echo "

Welche Identität glauben Sie, besitzt dieser Spieler?

'; + 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 "

$text

"; + + //Schreibe es auch ins playerlog, damit es der Spieler nachlesen kann + toPlayerLog($mysqli, $text,$eigeneID); + toGameLog($mysqli,"Der Spion/Die Spionin (".getName($mysqli,$eigeneID).") sieht: $text"); + + //Setze mich noch auf bereit ;) + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1 WHERE id = $eigeneID"); + return true; +} + +function seherInitialisiere($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + //Zeige eine Liste aller lebenden Spieler an + echo "
"; + echo ''; + echo "

Sie als Seher(in) dürfen die Identität eines Spielers erfahren. Welchen Spieler möchten Sie näher betrachten?

"; + echo "

'; +} + +function seherSehe($mysqli, $id) +{ + //id = die Id des Spielers, der gesehen wird + + $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(); + //nachschauen, ob ich nur die Gesinnung sehen darf ... + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['seherSiehtIdentitaet']==1) + { + if ($spielerAssoc['nachtIdentitaet']==CHARLYKANTROPH) + $identitaet = nachtidentitaetAlsString(CHARWERWOLF); + else + $identitaet = nachtidentitaetAlsString($spielerAssoc['nachtIdentitaet']); + } + else + { + if ($spielerAssoc['nachtIdentitaet']==CHARLYKANTROPH) + $identitaet = getGesinnung(CHARWERWOLF)." (Gesinnung)"; + else + $identitaet = getGesinnung($spielerAssoc['nachtIdentitaet'])." (Gesinnung)"; + } + echo "

".$spielerAssoc['name']." = $identitaet

"; + + //Schreibe es auch ins playerlog, damit es der Spieler nachlesen kann + toPlayerLog($mysqli, $spielerAssoc['name']." = $identitaet",$eigeneID); + toGameLog($mysqli,"Der Seher/Die Seherin(".getName($mysqli,$eigeneID).") sieht die Nachtidentitaet von Spieler ".$spielerAssoc['name']." = $identitaet"); + + //Setze mich noch auf bereit ;) + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1 WHERE id = $eigeneID"); + return true; +} + +function beschuetzerInitialisiere($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + //Zeige an, wer letzte Nacht beschützt wurde... + $eigeneAssoc = eigeneAssoc($mysqli); + if ($eigeneAssoc['beschuetzerLetzteRundeBeschuetzt'] >= 0) + echo "

Letzte Nacht beschützten Sie ".getName($mysqli,$eigeneAssoc['beschuetzerLetzteRundeBeschuetzt'])."

"; + + //Zeige eine Liste aller lebenden Spieler an + echo "
"; + echo ''; + echo "

Sie als Beschützer(in) dürfen einen Spieler diese Nacht beschützen (Auch Sie selbst)

"; + 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 ''; + echo "

Welchen Spieler + (lebende) Nachbarn wollen Sie näher beobachten?

"; + 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 ''; + //Der Hexe das Opfer der Werwölfe bekanntgeben + $gameAss = gameAssoc($mysqli); + if ($gameAss['werwolfopfer']!=-1) + { + echo "

Opfer der Werwölfe: "; + echo getName($mysqli,$gameAss['werwolfopfer']); + echo "

"; + + //Schreibe es auch in das Hexe log + $nacht = $gameAss['nacht']; + $name = getName($mysqli,$gameAss['werwolfopfer']); + toPlayerLog($mysqli,"In Nacht $nacht wählten die Werwölfe $name als Opfer",$eigeneID); + + if ($heiltraenke > 0) + { + //Die Hexe fragen, ob sie das Opfer heilen will + echo "

"; + } + } + //Die Hexe fragen, ob sie jemanden töten will, wenn sie denn noch einen Trank hat ... + if ($todestraenke > 0) + { + echo "

Sie dürfen Ihren Todestrank verwenden und jemanden töten. Wen wollen Sie töten?

"; + echo "

'; + } + 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 "
"; + echo ''; + echo "

Sie als Jäger(in) dürfen einen Spieler mit in den Tod reißen:

"; + 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 "
"; + echo ''; + echo "

Sie als Bürgermeister(in) dürfen einen Spieler als Ihren Nachfolger bestimmen:

"; + 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("
","\n",$gameAssoc['log']); + fwrite($myfile,$mitUmbruch); + + //Schreibe noch die Überlebenden + fwrite("/n Die Überlebenden: /n"); + $lebendQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $lebendQuery->fetch_assoc()) + { + fwrite($temp['name']."(".nachtidentitaetAlsString($temp['nachtIdentitaet'],$mysqli).")/n"); + } + fwrite("--- ENDE DES SPIELLOGS ---/n"); + fclose($myfile); +} + +function writeGameToLogSpielErstellen($mysqli, $spielID, $name) +{ + $fileName = "log/Werwolf_log_".date("Y_m").".log"; + $myfile = fopen($fileName, "a"); + fwrite($myfile,"\n--- NEUES SPIEL ERSTELLT --- \n"); + fwrite($myfile,"SpielID: $spielID \n"); + fwrite($myfile,"Zeit: ".date("d.m.Y, H:i:s")."\n"); + fwrite($myfile,"Name des Erstellers: $name \n"); + fclose($myfile); +} + +function checkeSiegbedingungen($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + //Zuerst schauen, ob wir nicht bereits gewonnen haben ;) + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['spielphase']==PHASESIEGEREHRUNG) + return true; + + + //Schaue, ob es keine Werwölfe mehr gibt + $werwoelfeRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND nachtIdentitaet = ".CHARWERWOLF); + if ($werwoelfeRes->num_rows > 0) + { + //Es gibt noch Werwölfe, schaue, ob sie gewonnen haben + $dorfbewohnerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND nachtIdentitaet <> ".CHARWERWOLF); + if ($dorfbewohnerRes->num_rows <= 0) + { + //Die Werwölfe haben gewonnen ... + toGameLog($mysqli,"Die Werwölfe haben gewonnen"); + toAllPlayerLog($mysqli,"Die Werwölfe haben gewonnen"); + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ". PHASESIEGEREHRUNG .", tagestext = 'Die Werwölfe haben gewonnen'"); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + writeGameToLog($mysqli); + return true; + } + } + else + { + //Die Dorfbewohner haben gewonnen + toGameLog($mysqli,"Die Dorfbewohner haben gewonnen"); + toAllPlayerLog($mysqli,"Die Dorfbewohner haben gewonnen"); + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ". PHASESIEGEREHRUNG .", tagestext = 'Die Dorfbewohner haben gewonnen'"); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + writeGameToLog($mysqli); + return true; + } + //Es hat nicht eine Gruppierung gewonnen ... Wie sieht es mit den Verliebten aus? + //Schaue zuerst, ob es keine Verliebten mehr gibt ... + $verliebteRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE verliebtMit <> -1 AND lebt = 1"); + if ($verliebteRes->num_rows > 0) + { + //Wenn es noch genau zwei Spieler gibt, sind die beiden Spieler die Verliebten und sie haben gewonnen + $alleRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + if ($alleRes->num_rows <= 2) + { + //Die verliebten haben gewonnen! + toGameLog($mysqli,"Die Verliebten haben gewonnen"); + toAllPlayerLog($mysqli,"Die Verliebten haben gewonnen"); + $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ". PHASESIEGEREHRUNG .", tagestext = 'Die Verliebten haben gewonnen'"); + //alle müssen reloaden + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + writeGameToLog($mysqli); + return true; + } + } + return false; +} + +function binTot() +{ + //Zeige einen Button an, mit dem die Spiellog datei angezeigt werden kann. + $spielID = $_COOKIE['SpielID']; + echo "

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."
"; + $neuLog = str_replace("'",'"',$neuLog); //ersetze alle ' mit " + $mysqli->Query("UPDATE $spielID"."_game SET log = '$neuLog'"); +} + +function toPlayerLog($mysqli, $logeintrag, $spieler) +{ + //Fügt dem Spielerlog des Spielers den logEintrag hinzu + $spielID = $_COOKIE['SpielID']; + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spieler"); + $temp = $res->fetch_assoc(); + $aktLog = $temp['playerlog']; + $neuLog = $aktLog.date("H:i:s").": ".$logeintrag."
"; + $neuLog = str_replace("'",'"',$neuLog); //ersetze alle ' mit " + $mysqli->Query("UPDATE $spielID"."_spieler SET playerlog = '$neuLog' WHERE id = $spieler"); +} + +function toAllPlayerLog($mysqli, $logeintrag) +{ + //Fügt allen Spielern diesen Logeintrag hinzu + $spielID = $_COOKIE['SpielID']; + $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $res->fetch_assoc()) + { + toPlayerLog($mysqli,$logeintrag,$temp['id']); + } +} + +function playerLogButton($mysqli) +{ + //Zeigt einen Button an, auf den der Spieler klicken kann, um sein Playerlog zu sehen + $eigeneAss = eigeneAssoc($mysqli); + $myLog = $eigeneAss['playerlog']; + echo "

"; + echo ""; +} + +function characterButton($mysqli) +{ + //Zeigt einen Button an, auf den der Spieler klicken kann, dann wird sein Character angezeigt + $eigeneAss = eigeneAssoc($mysqli); + $charString = nachtidentitaetAlsString($eigeneAss['nachtIdentitaet']); + $charErklaerung = nachtidentitaetKurzerklaerung($eigeneAss['nachtIdentitaet']); + echo "

"; + echo "

"; +} + +function getDorfbewohnerText() +{ + //Liefert verschiedene Texte zurück, die angezeigt werden, wenn der Weiterschlafen button aktiv wird + $i = rand(0,19); + $text = ""; + switch($i) + { + case 0: + $text = "Du erwachst aus deinem Schlaf, siehst dich um, bemerkst aber nichts Außergewöhnliches. + Du legst dich wieder hin und versuchst weiterzuschlafen. Was für ein seltsamer Traum ..."; + break; + case 1: + $text = "Schweißgebadet erwachst du ... doch nichts hat sich bewegt, alles ist so, wie es auch + am Tag davor war ... oder etwa nicht? Irgendwie hast du ein seltsames Gefühl ..."; + break; + case 2: + $text = "Ein Albtraum war es, aus dem du erwachst ... Was hat dies zu bedeuten? + Wie soll es mit dem Dorf weitergehen? Fragen über Fragen ..."; + break; + case 3: + $text = "Das ungute Gefühl verlässt dich auch im Schlaf nicht ... Bist du vielleicht der Nächste? + Wer hat sich gegen dich verschworen? Wer will dich tot sehen? Alles Fragen über Fragen, auf die du keine Antwort kennst ..."; + break; + case 4: + $text = "Der Button mit der Aufschrift 'Log anzeigen' ermöglicht dir das Nachlesen von wichtigen Ereignissen, + die sich bereits im Spiel ereignet haben. Außerdem sind darin bei verschiedenen Charakteren wichtige Informationen gespeichert, + wie beispielsweise, wen der Seher aller gesehen hat ..."; + break; + case 5: + $text = "Der Bürgermeister / Die Bürgermeisterin hält eine gewisse Machtposition inne. Er/Sie entscheidet, wann von der Diskussion + zur Anklage und dann zur Abstimmung übergegangen werden soll. Entscheidet also weise, wen ihr in diesem Amt sehen wollt."; + break; + case 6: + $text = "Der Seher/Die Seherin kann jede Runde die Identität einer Person sehen ... Das könnte sich für die Dorfbewohenr als nützlich, + für die Werwölfe aber als Bedrohung erweisen ..."; + break; + case 7: + $text = "Die Hexe kann einmal im Spiel jemanden töten, einmal im Spiel das Opfer der Werwölfe heilen. Sie ist somit ein starker + Charakter auf Seiten der Dorfbewohner ... Mit ihrer Hilfe wird es möglich sein, die Werwölfe zu stoppen"; + break; + case 8: + $text = "Blutrünstige Werwölfe, die des Nachts über Unschuldige herfallen, haben das Dorf heimgesucht. Nun ist es an den Dorfbewohnern, + die Werwölfe zu entlarven und sie ihrer gerechten Strafe zuzuführen ... Bedenkt aber, die Werwölfe verhalten sich am Tag wie + Dorfbewohner und versuchen, jeden Verdacht von ihnen abzulenken ... Seid also wachsam..."; + break; + case 9: + $text = "Der Jäger / Die Jägerin ist ein Charakter mit erstaunlicher Reaktionszeit ... Wenn er den Tod an seine Tür pochen hört, kann + er nach einem letzten Griff zu seiner Flinte einen anderen Spieler mit in den Tod reißen ... Der/Die Jäger(in) sollte jedoch weise + entscheiden, wen er mit in den Tod reißt"; + break; + case 10: + $text = "Zu Beginn des Spieles kann Amor zwei Personen bestimmen, die sich verlieben. Stirbt eine der beiden, begeht die andere aus Kummer Selbstmor. + Ziel der Verliebten ist es, mit ihrer Gruppierung (Dorfbewohner, Werwölfe) zu gewinnen, wenn sie der gleichen angehören. + Sollten Sie verschiedenen Gruppierungen angehören, gewinnen sie, wenn sie alle anderen töten ... Also Achtung Dorfbewohner, + vielleicht gibt es Verliebte unter euch, die nach eurem Untergang trachten ..."; + break; + case 11: + $text = "Die Dorfbewohner sind verzweifelt ... Wer wird der nächste sein? Wen aus ihrer Mitte werden die Werwölfe als nächstes + zum Tode verdammen? Es ist ein riskantes Spiel, das sie treiben, und doch scheinen sie davonzukommen ... doch wie lange noch?"; + break; + case 12: + $text = "Der Paranormale Ermittler kann einmal im Spiel fühlen, ob sich unter drei benachbarten Personen ein Werwolf befindet. + Können die Dorfbewohner mit seiner Hilfe den Werwölfen das Handwerk legen?"; + break; + case 13: + $text = "Der Lykantroph / Die Lykantrophin sieht bloß aus wie ein Werwolf, obwohl sie selbst keiner ist ... + Eine gefährliche Tatsache ..."; + break; + case 14: + $text = "Der Spion / Die Spionin kann jede Nacht die Identität eines Spielers überprüfen. Er / Sie kann so herausfinden, + ob der Spieler wirklich der ist, für den er sich ausgibt ..."; + break; + case 15: + $text = "Die/Der Mordlustige will Blut sehen und argumentiert daher immer für den Tod eines Spielers."; + break; + case 16: + $text = "Der Pazifist / Die Pazifistin ist zutiefst unzufrieden und will nicht, dass überhaupt jemand getötet wird, + daher argumentiert sie / er stets gegen das Töten eines Spielers"; + break; + case 17: + $text = "Die/Der Alte stirbt im Laufe des Spiels, und zwar abhängig davon, wie viele Werwölfe noch am Leben sind."; + break; + default: + $text = "Ein dunkler Schatten hat sich über das Dorf gelegt. Beunruhigt und verängstigt versuchen die übrig gebliebenen Dorfbewohner + die drohende Gefahr der Werwölfe abzuwehren. Doch sie werden immer weniger. Schon wieder gab es ein Opfer aus ihren Reihen ... + Wer ist unschuldig, und wer ein Lügner? Wer sagt die Wahrheit, wer steckt hinter alledem? Es sind düstere Zeiten, in denen + das Dorf nun ums Überleben kämpfen muss ..."; + break; + } + return $text; +} + + +/* +Erklärungen: +Zu den Datenbank-Einträgen: +[ID]_Game + +Spielphase //ALT, jetzt über Konstanten gelöst +0: Setup -> Spieler suchen (PHASESETUP) +1: Spielsetup -> jeder muss bestätigen, dass er dabei ist (PHASESPIELSETUP) +2: Nacht Teil 1: Amor (PHASENACHT1) +3: Nacht Teil 2: Verliebte (PHASENACHT2) +4: Nacht Teil 3: Alle bis Werwölfe (PHASENACHT3) +5: Nacht Teil 4: Hexe (PHASENACHT4) +6: Nacht Teil 5: Weitergabe des Amuletts (PHASENACHT5) +7: Tag, Tote werden bekanntgegeben (PHASETOTEBEKANNTGEBEN) +8: Tag, Bürgermeisterwahl (PHASEBUERGERMEISTERWAHL) +9: Tag, Diskussion (PHASEDISKUSSION) +10: Tag, Anklagen (PHASEANKLAGEN) +11: Tag, Abstimmung (PHASEABSTIMMUNG) +12: Tag, Stichwahl der Abstimmung (PHASESTICHWAHL) +13: Tag, nach Abstimmung (PHASENACHABSTIMMUNG) +14: Siegerehrung (PHASESIEGEREHRUNG) + +charaktereAufdecken +0: Die Charaktere werden nicht aufgedeckt +1: Die Charaktere werden aufgedeckt + +buergermeisterWeitergeben +0: Beim Tod des Bürgermeisters wird ein neuer gewählt. +1: Beim Tod des Bürgermeisters entscheidet der Bürgermeister, wer sein Nachfolger wird. + +werwolfzahl +Gibt die Anzahl der Werwölfe beim Spielsetup an + +hexenzahl +Gibt die Anzahl der Hexen beim Spielsetup an + +seherzahl +Gibt die Anzahl der Seher beim Spielsetup an + +jaegerzahl +Gibt die Anzahl der Jäger beim Spielsetup an + +amorzahl +Gibt die Anzahl der Amor(s) an (max 1) + +letzterAufruf +gibt den letzten Aufruf an, kann später einmal verwendet werden, um alte Spiele zu löschen. + +werwolfopfer +gibt das Opfer der Werwölfe an + +log +Eine Log-Datei des gesamten Spiels +Diese Datei soll das Spiel nachvollziehbar machen + +Nacht +gibt die Anzahl der Nächte seit Spielbeginn an + +tagestext +Gibt den Text an, der in Phase 7 allen angezeigt wird += Diese Nacht wurden getötet: +SpielerX +SpielerZ + + + +[ID]_Spieler + +Nachtidentitaet +0: keine (CHARKEIN) +1: Dorfbewohner (CHARDORFBEWOHNER) +2: Werwolf (CHARWERWOLF) +3: Seher (CHARSEHER) +4: Hexe (CHARHEXE) +5: Jäger (CHARJAEGER) +6: Amor (CHARAMOR) +7: Leibwächter/Beschützer (CHARBESCHUETZER) +8: Paranormaler Ermittler (CHARPARERM) +9: Lykantroph (CHARLYKANTROPH) +10: Spion (CHARSPION) +11: Mordlustige(r), intern Idiot (CHARMORDLUSTIGER) +12: Pazifist (CHARPAZIFIST) +13: Alter Mann (CHARALTERMANN) + +hexenOpfer +Wen die Hexe töten will + +hexeHeilt +0: Hexe heilt das Opfer der Werwölfe nicht +1: Hexe heilt das Opfer der Werwölfe + +verliebtMit +mit wem dieser Spieler vom Amor verliebt wurde + +jaegerDarfSchiessen +0: Nichts Besonderes +1: Der Jäger wurde getötet und darf jemanden mit in den Tod reißen + +buergermeisterDarfWeitergeben +0: Nichts Besonderes +1: Der Bürgermeister wurde getötet und gibt sein Amt weiter... + +playerlog +Hier werden Sachen hineingeschrieben, die sich der Spieler wieder anschaun können soll +z.B. als Seher wen er gesehen hat + +SESSION-Variablen Übersicht +$_SESSION['SpielID'] gibt die ID des Spiels an +$_SESSION['eigeneID'] gibt die eigene ID an + + + +ToDO: +#1: DONE: Spieler mit gleichem Namen dürfen sich nicht in einem Spiel befinden DONE +#2: DONE: Verschiedene Texte der Dorfbewohner (einschlafen) DONE +#3: DONE: Seher sollte gleich reloaden ... DONE +#4: DONE: Bei Anklagen nicht standardmäßig ein Spieler ausgewählt sein... DONE +#5: DONE: Bei der Abstimmung sollte ersichtlich sein, wieviele Stimmen jeder (Angeklagte) erhalten hat EVTL. DONE +#6: DONE: Wenn Bürgermeister in der Nacht stirbt, kommt es nicht zu einer neuen Abstimmung EVTL. DONE +#7: DONE: In showGameLog fehlen die Zeilenumbrüche ... DONE +#8: DONE: gameLog sollte auch wieder verborgen werden können ... DONE +#9: DONE: In gameLog werden keine Umlaute angezeigt ... DONE [Encoding auf ISO-8859-1 umgestellt] +#10: DONE: Der eigene Name sollte angezeigt werden ... DONE +#11: DONE: Es sollte dem Bürgermeister angezeigt werden, dass er Bürgermeister ist ... DONE +#12: DONE: Beim Starten eines neuen Spieles sollten alte Spiele gelöscht werden ... +#13: Javascript, das beim Spielerstellen anzeigt, wieviele Charaktere ausgewählt wurden ... +#14: Die Spieler, die nicht Spielleiter sind, sollten sehen können, welche Regeln ausgewählt wurden ... +#15: DONE: Bei der Stimmenanzahl soll erkennbar sein, dass der Bürgermeister 2 Stimmen hat [EDIT: bzw. 1,5] +#16: DONE: Paranormalen Ermittler hinzufügen +#17: DONE: Alten Mann hinzufügen +#18: Trunkenbold hinzufügen +#19: Amulett des Schutzes hinzufügen +#20: Wolfsjunges hinzufügen +#21: Einsamen Wolf hinzufügen +#22: DONE: Lykantrophen hinzufügen +#23: DONE: Bürgermeister nur 1/2 Stimme geben, Fixen, dass Abstimmungen nicht zu früh abgebrochen werden. +#24: Abstimmungsergebnis anzeigen +#25: DONE: Bug beim Entfernen von Spielern +#26: Spieler sollten unter dem Spiel das Spiel verlassen können +#27: DONE: Den Verstorbenen eine Liste aller Spieler anzeigen +#28: Kultführer hinzufügen +#29: Strolch hinzufügen +#30: DONE: SQL injection unterbinden +#31: Hintergrundgrafik (verschieden Tag/Nacht) +#31: DONE: Als Option machen, dass niemand erfährt, wie die Charaktere verteilt sind +#32: Wenn jemand während des Spiels aussteigt, sollte das Spiel damit zurechtkommen +#33: DONE: Wenn einer der Verliebten stirbt, sollten beide am Tag auf der Totenliste erscheinen +#34: DONE: Beim Spielbeitritt sollte jeder Spieler ein vom Server zugeteiltes persönliches Passwort bekommen (Cookie), dass sich niemand anders für ihn ausgeben kann. +#35: DONE: Idiot und Pazifist hinzufügen [EDIT: Umbenennung von Idiot in Mordlustiger] +#36: DONE: "Seher" hinzufügen, der eine Identität überprüfen kann --> der "Spion" +#37: DONE: Umbenennen von Leibwächter in Beschützer +#38: DONE: Umbenennen von Idiot in Mordlustige(r) +#39: DONE: Timer einfügen, ab wann die Abstimmung am Tag zu keinem Ergebnis führt +#40: DONE: Timer einfügen, ab wann die Werwölfe nicht mehr einstimmig abstimmen müssen, zweiten Timer, ab wann kein Opfer gewählt wird +#41: Funktion für alle Buttons erstellen, dass die Buttons in Zukunft leicht mit Grafik ausgetauscht werdne können +#42: DONE: Timereinstellungen in den Spieleinstellungen bearbeiten können +#43: Zeige im Log an, wer wen anklagt +#44: DONE: Charaktere und Phasen durch Konstanten ersetzt, die in constants.php definiert werden +#45: DONE: Verbiete, dass sich jemand wie ein Charakter nennt (WERWOLF, HEXE, AMOR) +#46: Bots hinzufügen, die von einem "BotController"="Spieler, der für refreshen zuständig ist" zB ein Laptop +#47: DONE: Umstellen der Farben ermöglichen (v1.0.1, 30.12.2019) + +*/ +?> \ No newline at end of file diff --git a/constants.php b/constants.php new file mode 100644 index 0000000..ef98f68 --- /dev/null +++ b/constants.php @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/gamelogreload.php b/gamelogreload.php new file mode 100644 index 0000000..863e525 --- /dev/null +++ b/gamelogreload.php @@ -0,0 +1,16 @@ +query("SELECT * FROM ".$spielID."_game")) + { + $temp = $Result->fetch_assoc(); + echo $temp['log']; + } + +?> \ No newline at end of file diff --git a/includes.example.php b/includes.example.php new file mode 100644 index 0000000..2ddd6a3 --- /dev/null +++ b/includes.example.php @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/listreload.php b/listreload.php new file mode 100644 index 0000000..db1a28b --- /dev/null +++ b/listreload.php @@ -0,0 +1,419 @@ +Query("SELECT * FROM $spielID"."_spieler WHERE id = $id"); + $ichLebeQ = $ichLebeQ->fetch_assoc(); + if (isset($_GET['reload'])) + { + if ($ichLebeQ['reload'] == 1 && $_GET['reload'] == 1) + { + echo "1"; + die; + } + else + { + echo "0"; + } + } + if ($ichLebeQ['lebt'] == 1) + $ichLebe = true; + + + $spielRes = $mysqli->Query("SELECT * FROM $spielID"."_game"); + $spielAss = $spielRes->fetch_assoc(); + $phase = $spielAss['spielphase']; + + $text = ""; + if ($ichLebe || $phase <= PHASESPIELSETUP || $phase >= PHASESIEGEREHRUNG) + { + //Schaue nach, ob Antwort bereits gespeichert ist! + if (array_key_exists("list_lebe",$spielAss)) //Für Backward compatibility! + { + if ($phase != PHASENACHT3 && $spielAss['list_lebe_aktualisiert'] > (microtime(true)*1000 - _LISTMAXRELOADTIME)) //Bei Werwölfen nicht die Liste schicken! + { + //Sende vorgefertigte Antwort! + echo $spielAss['list_lebe']; + die; + } + } + if ($phase == PHASESETUP) + { + //spielersuchen-Phase + //Gib jeden Spieler als String zurück, farbe alle schwarz = 0 + //Bei Spieler 0 schreibe (Spielleiter) dazu + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $spielerRes->fetch_assoc()) + { + if ($temp['spielleiter']==1) + { + $text.= $trennzeichen.$temp['name']." (Spielleiter)$trennzeichen"."0"; + } + else + { + $text.= $trennzeichen.$temp['name'].$trennzeichen."0"; + } + } + } + elseif ($phase == PHASESPIELSETUP) + { + //Alle werden in einer Liste angezeigt, die bereit sind grün + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $spielerRes->fetch_assoc()) + { + if ($temp['spielleiter']==1) + { + $text.= $trennzeichen.$temp['name']." (Spielleiter)$trennzeichen"."1"; + } + else + { + if ($temp['bereit']==1) + $text.= $trennzeichen.$temp['name'].$trennzeichen."1"; + else + $text.= $trennzeichen.$temp['name'].$trennzeichen."0"; + } + } + } + elseif ($phase == PHASENACHT3) //Nur für Werwölfe, daher nicht in Liste schreiben! + { + //Schaue nach, ob ich Werwolf bin + $myRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id"); + $myAssoc = $myRes->fetch_assoc(); + if ($myAssoc['nachtIdentitaet'] == CHARWERWOLF) + { + //Ich bin Werwolf --> Liste der (lebenden) Werwölfe + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $spielerRes->fetch_assoc()) + { + + if ($temp['nachtIdentitaet']==CHARWERWOLF && $temp['lebt']==1) + { + if ($temp['wahlAuf']==-1) + echo $trennzeichen.$temp['name']." (wach)".$trennzeichen."0"; + else + { + //Finde Namen heraus von wahlAuf + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$temp['wahlAuf']); + $nameAssoc = $nameRes->fetch_assoc(); + echo $trennzeichen.$temp['name']." (wach): ".$nameAssoc['name'].$trennzeichen."1"; + } + } + + } + } + die; + } + elseif ($phase == PHASEBUERGERMEISTERWAHL) + { + //Bürgermeisterwahl + //ähnlich wie bei den Werwölfen + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); + while ($temp = $spielerRes->fetch_assoc()) + { + if ($temp['lebt']==1) + { + if ($temp['wahlAuf']==-1) + $text.= $trennzeichen.$temp['name']." (noch nicht Abgestimmt)".$trennzeichen."0"; + else + { + //Finde Namen heraus von wahlAuf + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$temp['wahlAuf']); + $nameAssoc = $nameRes->fetch_assoc(); + $text.= $trennzeichen.$temp['name'].": ".$nameAssoc['name'].$trennzeichen."1"; + } + } + } + } + elseif ($phase == PHASEANKLAGEN) + { + //Anklagen + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE angeklagtVon > -1 AND lebt = 1"); + while ($temp = $spielerRes->fetch_assoc()) + { + //Finde Namen heraus von angeklagtVon + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$temp['angeklagtVon']); + $nameAssoc = $nameRes->fetch_assoc(); + $text.= $trennzeichen.$temp['name']." (angeklagt von ".$nameAssoc['name'].")".$trennzeichen."1"; + } + } + elseif ($phase == PHASEABSTIMMUNG) + { + //Abstimmung + //Zeige zuerst die Angeklagten an + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND angeklagtVon > -1"); + while ($temp = $spielerRes->fetch_assoc()) + { + //Finde heraus, wieviele Stimmen + $stimmenRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND wahlAuf = ".$temp['id']); + //Finde heraus, ob Bürgermeister auf ihn gestimmt hat + $buergermeisterRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND wahlAuf = ".$temp['id']." AND buergermeister = 1"); + $buergermeisterText = ""; //Zeige nichts an, wenn der Bürgermeister ihn nicht ausgewählt hat + if ($buergermeisterRes->num_rows > 0) + $buergermeisterText = " + Stimme des Bürgermeisters"; + $text.= $trennzeichen.$temp['name'].", normale Stimmen: ".$stimmenRes->num_rows.$buergermeisterText.$trennzeichen."2"; + } + + //Dann zeige an, wer für wen gestimmt hat + $spielerRes2 = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $spielerRes2->fetch_assoc()) + { + if ($temp['wahlAuf']==-1) + $text.= $trennzeichen.$temp['name']." (noch nicht Abgestimmt)".$trennzeichen."0"; + else + { + //Finde Namen heraus von wahlAuf + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$temp['wahlAuf']); + $nameAssoc = $nameRes->fetch_assoc(); + $text.= $trennzeichen.$temp['name'].": ".$nameAssoc['name'].$trennzeichen."1"; + } + } + } + elseif ($phase == PHASESTICHWAHL) + { + //Stichwahl = im Prinzip dasselbe wie in Phase 11 + //Zeige zuerst die Angeklagten an + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND angeklagtVon > -1"); + while ($temp = $spielerRes->fetch_assoc()) + { + //Finde heraus, wieviele Stimmen + $stimmenRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND wahlAuf = ".$temp['id']); + //Finde heraus, ob Bürgermeister auf ihn gestimmt hat + $buergermeisterRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1 AND wahlAuf = ".$temp['id']." AND buergermeister = 1"); + $buergermeisterText = ""; //Zeige nichts an, wenn der Bürgermeister ihn nicht ausgewählt hat + if ($buergermeisterRes->num_rows > 0) + $buergermeisterText = " + Stimme des Bürgermeisters"; + $text.= $trennzeichen.$temp['name'].", normale Stimmen: ".$stimmenRes->num_rows.$buergermeisterText.$trennzeichen."2"; + } + + //Dann zeige an, wer für wen gestimmt hat + $spielerRes2 = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $spielerRes2->fetch_assoc()) + { + if ($temp['wahlAuf']==-1) + $text.= $trennzeichen.$temp['name']." (noch nicht Abgestimmt)".$trennzeichen."0"; + else + { + //Finde Namen heraus von wahlAuf + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$temp['wahlAuf']); + $nameAssoc = $nameRes->fetch_assoc(); + $text.= $trennzeichen.$temp['name'].": ".$nameAssoc['name'].$trennzeichen."1"; + } + } + } + $mysqli->Query("UPDATE $spielID"."_game SET `list_lebe` = '$text', `list_lebe_aktualisiert` = ". (int)(microtime(true)*1000)); + echo $text; + } + else + { + if (array_key_exists("list_tot",$spielAss)) //Für Backward compatibility! + { + if ($spielAss['list_tot_aktualisiert'] > (microtime(true)*1000 - _LISTMAXRELOADTIME)) //Bei Werwölfen nicht die Liste schicken! + { + //Sende vorgefertigte Antwort! + echo $spielAss['list_tot']; + die; + } + } + $rueckgabe = ""; + //Zuerst "verkünden", welche Phase wir haben + $text = ""; + switch ($phase) + { + case PHASENACHT3: + $text = "Nacht (Teil 1)"; + break; + case PHASENACHT4: + $text = "Nacht (Teil 2)"; + break; + case PHASENACHT5: + $text = "Nacht (Teil 3)"; + break; + case PHASETOTEBEKANNTGEBEN: + $text = "Morgen"; + break; + case PHASEBUERGERMEISTERWAHL: + $text = "Bürgermeisterwahl"; + break; + case PHASEDISKUSSION: + $text = "Diskussion"; + break; + case PHASEANKLAGEN: + $text = "Anklagen"; + break; + case PHASEABSTIMMUNG: + $text = "Abstimmung"; + break; + case PHASESTICHWAHL: + $text = "Stichwahl"; + break; + } + $rueckgabe.= $trennzeichen.$text.$trennzeichen."3"; + + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $spielerRes->fetch_assoc()) + { + $identitaet = ""; + switch ($temp['nachtIdentitaet']) + { + case CHARDORFBEWOHNER: + $identitaet = "Dorfbewohner"; + break; + case CHARWERWOLF: + $identitaet = "Werwolf"; + break; + case CHARSEHER: + $identitaet = "Seher/in"; + break; + case CHARHEXE: + $identitaet = "Hexe/r"; + break; + case CHARJAEGER: + $identitaet = "Jäger/in"; + break; + case CHARAMOR: + $identitaet = "Amor"; + break; + case CHARBESCHUETZER: + $identitaet = "Beschützer/in"; + break; + case CHARPARERM: + $identitaet = "Paranormale(r) Ermittler/in"; + break; + case CHARLYKANTROPH: + $identitaet = "Lykantroph/in"; + break; + case CHARSPION: + $identitaet = "Spion/in"; + break; + case CHARMORDLUSTIGER: + $identitaet = "Mordlustige(r)"; + break; + case CHARPAZIFIST: + $identitaet = "Pazifist/in"; + break; + case CHARALTERMANN: + $identitaet = "Alte(r)"; + break; + } + //Eine Liste aller aktiver Spieler anzeigen + //zuerst alle Lebenden anzeigen + if (($phase == PHASENACHT3 && $temp['nachtIdentitaet'] == CHARWERWOLF) || $phase == PHASEBUERGERMEISTERWAHL || $phase == PHASEDISKUSSION || $phase == PHASEANKLAGEN || $phase == PHASEABSTIMMUNG) //In diesen Phasen können die Werwölfe abstimmen + { + if ($temp['wahlAuf']==-1) + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, wach)".$trennzeichen."0"; + else + { + //Finde Namen heraus von wahlAuf + $nameRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = ".$temp['wahlAuf']); + $nameAssoc = $nameRes->fetch_assoc(); + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, wach): ".$nameAssoc['name'].$trennzeichen."1"; + } + } + elseif ($phase >= PHASENACHTENDE || ($phase == PHASENACHT1 && $temp['nachtIdentitaet']==CHARAMOR)||($phase == PHASENACHT3 && ($temp['nachtIdentitaet']==CHARSEHER || $temp['nachtIdentitaet']==CHARBESCHUETZER || $temp['nachtIdentitaet']==CHARPARERM || $temp['nachtIdentitaet']==CHARSPION)) || ($phase == PHASENACHT4 && $temp['nachtIdentitaet']==CHARHEXE)) + { + //ist wach + if ($temp['nachtIdentitaet']==CHARHEXE) + { + //Zeige Tränke + $heiltrank = $temp['hexeHeiltraenke']; + $todestrank = $temp['hexeTodestraenke']; + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, wach, Heiltränke: $heiltrank, Todestränke: $todestrank)".$trennzeichen."0"; + } + else + { + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, wach)".$trennzeichen."0"; + } + } + else + { + //nicht wach + if ($temp['nachtIdentitaet']==CHARHEXE) + { + //Zeige Tränke + $heiltrank = $temp['hexeHeiltraenke']; + $todestrank = $temp['hexeTodestraenke']; + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, Heiltränke: $heiltrank, Todestränke: $todestrank)".$trennzeichen."0"; + } + else + { + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet)".$trennzeichen."0"; + } + + } + } + //Dann alle Toten anzeigen + $spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 0"); + while ($temp = $spielerRes->fetch_assoc()) + { + $identitaet = ""; + switch ($temp['nachtIdentitaet']) + { + case CHARDORFBEWOHNER: + $identitaet = "Dorfbewohner"; + break; + case CHARWERWOLF: + $identitaet = "Werwolf"; + break; + case CHARSEHER: + $identitaet = "Seher/in"; + break; + case CHARHEXE: + $identitaet = "Hexe/r"; + break; + case CHARJAEGER: + $identitaet = "Jäger/in"; + break; + case CHARAMOR: + $identitaet = "Amor"; + break; + case CHARBESCHUETZER: + $identitaet = "Beschützer/in"; + break; + case CHARPARERM: + $identitaet = "Paranormale(r) Ermittler/in"; + break; + case CHARLYKANTROPH: + $identitaet = "Lykantroph/in"; + break; + case CHARSPION: + $identitaet = "Spion/in"; + break; + case CHARMORDLUSTIGER: + $identitaet = "Mordlustige(r)"; + break; + case CHARPAZIFIST: + $identitaet = "Pazifist/in"; + break; + case CHARALTERMANN: + $identitaet = "Alte(r)"; + break; + } + //Eine Liste aller aktiver Spieler anzeigen + //zuerst alle Lebenden anzeigen + + $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, tot)".$trennzeichen."4"; + + } + $mysqli->Query("UPDATE $spielID"."_game SET `list_tot` = '$rueckgabe', `list_tot_aktualisiert` = ". (int)(microtime(true)*1000)); + echo $rueckgabe; + } + + //0: schwarz + //1: grün + //2: rot + //3: schwarz groß + //4: grau +?> diff --git a/reload.php b/reload.php new file mode 100644 index 0000000..787b884 --- /dev/null +++ b/reload.php @@ -0,0 +1,15 @@ +query("SELECT * FROM ".$spielID."_spieler WHERE id = $id")) + { + $temp = $Result->fetch_assoc(); + echo $temp['reload']; + } + +?> \ No newline at end of file