. */ ?> Werwölfe
Query("SELECT * FROM $spielID"."_spieler"); } catch (Exception $e) { $spiel_existiert = False; } if($spiel_existiert && 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 = ".(int)$_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)."

"; $myname = getName($mysqli,$eigeneID); echo "

Name: ". $myname ."

"; //Nachschauen, ob ich Bürgermeister bin ... Dann nämlich anschreiben ... $buergermRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1"); if ($buergermRes->num_rows > 0) { $buergermAss = $buergermRes->fetch_assoc(); if ($buergermAss['id']==$eigeneID) { //Ich bin Bürgermeister echo "

Sie sind Bürgermeister

"; } } //Vielleicht will der Spielleiter jemanden entfernen? if (isset($_POST['spieler_entfernen']) && isset($_POST['entfernenID'])) { $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID AND spielleiter = 1"); if ($res->num_rows > 0) { aus_spiel_entfernen((int)$_POST['entfernenID'],$mysqli); $text = $myname."(Spielleiter) hat ".getName($mysqli,(int)($_POST['entfernenID'])). " aus dem Spiel entfernt."; toGameLog($mysqli, $text); toAllPlayerLog($mysqli, $text); } } //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 && $gameAssoc['spielphase'] != PHASESPIELSETUP && $gameAssoc['spielphase'] != PHASESETUP) { //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 = (int)$_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($mysqli); $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($mysqli); $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($mysqli); $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($mysqli); $pageReload = true; } else { if ($eigeneAssoc['verliebtMit'] > -1) { if (isset($_POST['verliebteWeiter'])) { setBereit($mysqli,$eigeneID,1); warteAufAndere($mysqli); $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 = ".(int)$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($mysqli); $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($mysqli); $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($mysqli); $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($mysqli); $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($mysqli); $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($mysqli); $pageReload = true; phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); } } elseif (isset ($_POST['parErmNichtAuswaehlen'])) { //Diese Runde nicht auswählen setBereit($mysqli,$eigeneID,1); warteAufAndere($mysqli); $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($mysqli); $pageReload = true; phaseBeendenWennAlleBereit(PHASENACHT3,$mysqli); } else { //zeige den Button an dorfbewohnerWeiterschlafen(); } } } elseif ($identitaet == CHARWERWOLF || $identitaet == CHARURWOLF) { //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 ." OR nachtIdentitaet = ".CHARURWOLF.") 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 ." OR nachtIdentitaet = ".CHARURWOLF.") 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 ." OR nachtIdentitaet = ".CHARURWOLF.") 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 ." OR nachtIdentitaet = ". CHARURWOLF .") 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." OR 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." OR nachtIdentitaet = ".CHARURWOLF.")"); $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 = (int)$_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 || $temp['nachtIdentitaet'] == CHARURWOLF) { 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. " OR nachtIdentitaet = ". CHARURWOLF.")"); $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 ." OR nachtIdentitaet = ". CHARURWOLF.") 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 ." OR nachtIdentitaet = ".CHARURWOLF.") 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." OR nachtIdentitaet = ".CHARURWOLF); $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($mysqli); $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($mysqli); $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 = (int)$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 = (int)$eigeneAssoc['hexeTodestraenke']-1; $hexenOpfer = (int)$_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); } } elseif ($identitaet == CHARURWOLF) { if (isset($_POST['urwolfHatAusgewaehlt']) && isset($_POST['urwolfID'])) { if (urwolfHandle($mysqli,$_POST['urwolfID'])==false) { //Ungültiger Zug, nochmals von vorne urwolfInitialisiere($mysqli); } else { //Gültiger Zug! warteAufAndere($mysqli); $pageReload = true; phaseBeendenWennAlleBereit(PHASENACHT4,$mysqli); } } else { $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID"); $a = $res->fetch_assoc(); if ($a['urwolf_anzahl_faehigkeiten'] > 0) { urwolfInitialisiere($mysqli); } else { if (isset($_POST['weiterschlafen'])) { //der Button wurde bereits geklickt setBereit($mysqli,$eigeneID,1); warteAufAndere($mysqli); $pageReload = true; phaseBeendenWennAlleBereit(PHASENACHT4,$mysqli); } else { //zeige den Button an dorfbewohnerWeiterschlafen(); } } } } else { //keine Besondere Identitaet diese Nacht if (isset($_POST['weiterschlafen'])) { //der Button wurde bereits geklickt setBereit($mysqli,$eigeneID,1); warteAufAndere($mysqli); $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

"; if ($eigeneAssoc['popup_text'] != "") { echo "

".$eigeneAssoc['popup_text']."

"; $mysqli->Query("UPDATE $spielID"."_spieler SET popup_text = '' WHERE id = $eigeneID"); } //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($mysqli); } 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($mysqli); } } } else { //Ich bin nicht Bürgermeister --> Warte, bis es weitergeht $pageReload = true; setBereit($mysqli,$eigeneID,1); phaseBeendenWennAlleBereit(PHASETOTEBEKANNTGEBEN,$mysqli); warteAufAndere($mysqli); } } 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($mysqli); } 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($mysqli); } } } } 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 = (int)$_POST['buergermeisterID']; $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = $wahlID WHERE id = $eigeneID"); //Dann schauen, ob wir schon eine Mehrheit haben //Generiere eine Text zum Anzeigen, wer für wen gestimmt hat $alleSpielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); $text = ""; $anzahlSpieler = $alleSpielerRes->num_rows; while ($temp = $alleSpielerRes->fetch_assoc()) { $w = $temp['wahlAuf']; if (!isset($wahlAufSpieler[$w])) $wahlAufSpieler[$w] = 0; $wahlAufSpieler[$w]++; if ($w > -1) { $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; } } //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, abgestimmt haben: $text"); toAllPlayerLog($mysqli,getName($mysqli,$id)." wurde zum Bürgermeister gewählt, abgestimmt haben: $text"); 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 = ".(int)$_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 = (int)$_POST['dorfWahlID']; $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = $wahlID WHERE id = $eigeneID"); //Dann schauen, ob wir schon eine Mehrheit haben $text = ""; $alleSpielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); $anzahlSpieler = $alleSpielerRes->num_rows; while ($temp = $alleSpielerRes->fetch_assoc()) { $w = $temp['wahlAuf']; if (!isset($wahlAufSpieler[$w])) $wahlAufSpieler[$w] = 0; $wahlAufSpieler[$w]+=1; //Falls es der Bürgermeister ist, zusätzliche 1/2 Stimme if ($temp['buergermeister']==1) $wahlAufSpieler[$w]+=0.5; if ($w > -1) { $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; } } $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, mit den Stimmen: $text"); toAllPlayerLog($mysqli,getName($mysqli,$id)." wurde vom Dorf zum Tode verurteilt, mit den Stimmen: $text"); 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 es töten will."); toAllPlayerLog($mysqli,"Das Dorf konnte sich auch in der Stichwahl nicht auf einen Spieler einigen, den es töten will."); } 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 = (int)$_POST['dorfWahlID']; $mysqli->Query("UPDATE $spielID"."_spieler SET wahlAuf = $wahlID WHERE id = $eigeneID"); //Dann schauen, ob wir schon eine Mehrheit haben $text = ""; $alleSpielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); $anzahlSpieler = $alleSpielerRes->num_rows; while ($temp = $alleSpielerRes->fetch_assoc()) { $w = $temp['wahlAuf']; if (!isset($wahlAufSpieler[$w])) $wahlAufSpieler[$w] = 0; $wahlAufSpieler[$w]+=1; //Falls es der Bürgermeister ist, zusätzliche 1/2 Stimme if ($temp['buergermeister']==1) $wahlAufSpieler[$w]+=0.5; if ($w > -1) { $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; } } //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, mit den Stimmen: $text"); toAllPlayerLog($mysqli,getName($mysqli,$id)." wurde vom Dorf zum Tode verurteilt, mit den Stimmen: $text"); 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 if (_NOGAMECREATIONERRORMESSAGE == "") { $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASESETUP); $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1"); } else { //Spiel darf nicht erstellt werden, da _NOGAMECREATIONERRORMESSAGE existiert echo "

Spiel darf nicht erstellt werden: ". _NOGAMECREATIONERRORMESSAGE ."

"; } } 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 if (_NOGAMECREATIONERRORMESSAGE == "") //Wir dürfen nur ein neues Spiel erstellen, falls diese message auf "" steht { //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 $existiert = False; try { $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); } catch (mysqli_sql_exception $e){ $existiert = True; } if(!$existiert && 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 , `urwolf_anzahl_faehigkeiten` INT ( 5 ) DEFAULT 0, `dieseNachtGestorben` INT (2) DEFAULT 0 , `countdownBis` INT (10) DEFAULT 0 , `countdownAb` INT (10) DEFAULT 0 , `playerlog` LONGTEXT , `popup_text` TEXT , `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); $stmt = $mysqli->prepare("INSERT INTO $spielID"."_spieler"." (id, name , spielleiter, lebt, reload, verifizierungsnr) VALUES ( 0 , ?, 1 , 0 , 1, ?)"); $stmt->bind_param('si',$_POST['ihrName'],$verifizierungsnr); $stmt->execute(); $stmt->close(); $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 , `urwolfzahl` 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 , `inaktivzeit` INT ( 10 ) DEFAULT 40 , `inaktivzeitzusatz` INT ( 10 ) DEFAULT 0 , `tagestext` TEXT , `nacht` INT ( 5 ) DEFAULT 1 , `log` LONGTEXT , `list_lebe` LONGTEXT, `list_lebe_aktualisiert` BIGINT DEFAULT 0, `list_tot` LONGTEXT, `list_tot_aktualisiert` BIGINT DEFAULT 0, `waiting_for_others_time` BIGINT, `letzterAufruf` BIGINT ) ;"; $mysqli->Query($sql2); $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, secure: true, httponly: true); $_COOKIE["SpielID"]=$spielID; $_COOKIE["eigeneID"] = 0; $_COOKIE["verifizierungsnr"] = $verifizierungsnr; writeGameToLogSpielErstellen($mysqli,$spielID,$_POST['ihrName']); break; //die Schleife beenden } } $pageReload = true; } else { //Spiel darf nicht erstellt werden, da _NOGAMECREATIONERRORMESSAGE existiert echo "

Spiel darf nicht erstellt werden: ". _NOGAMECREATIONERRORMESSAGE ."

"; } } 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? $existiert = False; try{ $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); } catch(mysqli_sql_exception $e){ $existiert = True; } if(!$existiert && 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... $stmt = $mysqli->prepare("SELECT * FROM $spielID"."_spieler WHERE name = ?"); $stmt->bind_param('s',$_POST['ihrName']); $stmt->execute(); $nameRes = $stmt->get_result(); $stmt->close(); if ($nameRes->num_rows <= 0 && !in_array(strtolower($_POST['ihrName']),$verboteneNamen)) { //Name gültig //Finde eine freie ID for ($i = 1; $i <= _MAXPLAYERS; $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 $stmt = $mysqli->prepare("INSERT INTO $spielID"."_spieler"." (id, name , spielleiter, reload, verifizierungsnr) VALUES ( ? , ?, 0 , 1, ?)"); $stmt->bind_param('isi', $i, $_POST['ihrName'], $verifizierungsnr); $stmt->execute(); $stmt->close(); 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); //Der Spielleiter sollte die Möglichkeit bekommen, einen Spieler aus dem Spiel zu werfen (weil z.B. inaktiv) if (isset($eigeneID) && isset($spielID)) { $res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID AND spielleiter = 1"); if ($res->num_rows > 0) { echo "

"; echo ""; } } } ?>

Löst oft viele Probleme: