diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..6356119 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,137 @@ +/* +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. +waiting_for_others_time +Gibt an, ab wann angezeigt wird, auf wen wir noch warten +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) +*/ diff --git a/Werwolf.php b/Werwolf.php index 0612abb..8c9771c 100644 --- a/Werwolf.php +++ b/Werwolf.php @@ -2,13 +2,15 @@ Werwölfe - +
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) @@ -170,7 +172,7 @@ p#liste { echo "

Sie sind Bürgermeister

"; } } - + //Vielleicht will der Spielleiter jemanden entfernen? if (isset($_POST['spieler_entfernen']) && isset($_POST['entfernenID'])) { @@ -183,7 +185,7 @@ p#liste { 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"); @@ -249,7 +251,7 @@ p#liste { //echo $mysqli->error; $gameResAssoc = $gameResult->fetch_assoc(); $phase = $gameResAssoc['spielphase']; - + if ($phase == PHASENACHTBEGINN) { $displayTag = false; //bei true ändert sich der Hintergrund @@ -270,7 +272,7 @@ p#liste { $displayTag = true; $displayFade = false; } - + //Nachschauen, ob ich noch lebe ;) $ass = eigeneAssoc($mysqli); if ($phase >= PHASENACHTBEGINN && $phase <= PHASENACHABSTIMMUNG && $ass['lebt'] == 0) @@ -292,14 +294,14 @@ p#liste { { //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(); @@ -316,7 +318,7 @@ p#liste {

'; } - + //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"); @@ -325,11 +327,11 @@ p#liste { 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); + spielInitialisieren($mysqli,$spielerzahl); } } } @@ -373,12 +375,12 @@ p#liste { { 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) { @@ -386,7 +388,7 @@ p#liste {

- + Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT3); - $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASENACHT3,$mysqli); $pageReload = true; } @@ -526,9 +528,9 @@ p#liste { { //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(); @@ -690,13 +692,13 @@ p#liste { $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; + $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"); @@ -730,7 +732,7 @@ p#liste { else { //Timer initialiseren - $timerZahl = $eigeneAssoc['countdownBis'] - time()+1; + $timerZahl = $eigeneAssoc['countdownBis'] - time()+1; $timerAb = $eigeneAssoc['countdownAb'] - time()+1; $aktBeiTime = true; $gameAssoc = gameAssoc($mysqli); @@ -744,7 +746,7 @@ p#liste { //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) @@ -767,7 +769,7 @@ p#liste { $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)); + toGameLog($mysqli,"Die Wahl der Werwölfe fiel einstimmig auf: ". getName($mysqli,$opfer)); } } else @@ -834,7 +836,7 @@ p#liste { 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(); @@ -898,7 +900,7 @@ p#liste { 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); @@ -949,9 +951,9 @@ p#liste { { //zeige den Button an dorfbewohnerWeiterschlafen(); - } + } } - } + } } else { @@ -970,7 +972,7 @@ p#liste { dorfbewohnerWeiterschlafen(); } } - } + } } elseif ($phase == PHASENACHTENDE) { @@ -988,7 +990,7 @@ p#liste { else { $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASETOTEBEKANNTGEBEN); - $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASETOTEBEKANNTGEBEN,$mysqli); $pageReload = true; } @@ -1039,7 +1041,7 @@ p#liste { { warteAufAndere($mysqli); } - } + } } else { @@ -1075,8 +1077,8 @@ p#liste { { warteAufAndere($mysqli); } - } - + } + } } elseif ($phase == PHASEBUERGERMEISTERWAHL) @@ -1092,7 +1094,7 @@ p#liste { $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 = ""; @@ -1105,7 +1107,7 @@ p#liste { $wahlAufSpieler[$w]++; if ($w > -1) { - $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; + $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; } } //Schauen, ob jemand mehr als 50% der Stimmen hat @@ -1118,7 +1120,7 @@ p#liste { $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); + phaseBeendenWennAlleBereit(PHASEBUERGERMEISTERWAHL,$mysqli); break; } } @@ -1209,7 +1211,7 @@ p#liste { 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(); @@ -1241,7 +1243,7 @@ p#liste { 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()) @@ -1277,7 +1279,7 @@ p#liste { $wahlAufSpieler[$w]+=0.5; if ($w > -1) { - $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; + $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; } } $wahlErfolgreich = 0; @@ -1290,7 +1292,7 @@ p#liste { 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; + $wahlErfolgreich = 1; break; } } @@ -1338,7 +1340,7 @@ p#liste { } } if (!$exequo) - { + { //Starte eine Stichwahl endeDerAbstimmungStichwahl($maxStimmenSpieler,$zweitMaxStimmenSpieler,$mysqli); } @@ -1369,7 +1371,7 @@ p#liste { } elseif ($phase == PHASESTICHWAHL) { - characterButton($mysqli); + characterButton($mysqli); //Es kommt zu einer Stichwahl echo "

Stichwahl

"; echo "

"; @@ -1411,9 +1413,9 @@ p#liste { $wahlAufSpieler[$w]+=0.5; if ($w > -1) { - $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; + $text .= $temp['name']." -> ". getName($mysqli,$w). ", "; } - + } //Schauen, ob jemand mehr als 50% der Stimmen hat foreach ($wahlAufSpieler as $id => $stimmen) @@ -1424,7 +1426,7 @@ p#liste { $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); + endeDerStichwahl($id,$mysqli); break; } } @@ -1513,7 +1515,7 @@ p#liste { //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 @@ -1602,10 +1604,10 @@ p#liste { ) ;"; $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); @@ -1675,7 +1677,7 @@ p#liste { $_COOKIE["SpielID"]=$spielID; $_COOKIE["eigeneID"] = $i; $_COOKIE["verifizierungsnr"] = $verifizierungsnr; - $eigeneID = $i; + $eigeneID = $i; break; //die Schleife beenden } } @@ -1709,7 +1711,7 @@ p#liste { echo "

Sie müssen einen gültigen Namen eingeben

"; start(); } - } + } } else { @@ -1738,12 +1740,12 @@ p#liste { echo "

".$a['name']; echo"

"; echo ""; - } - echo "
"; + } + echo "
"; } } } - + ?>
@@ -1787,8 +1789,8 @@ var sekBisTimerBeginn; } - - function reloadmaintain(game, id){ + + function reloadmaintain(game, id){ xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) @@ -1797,8 +1799,8 @@ var sekBisTimerBeginn; { if (xmlhttp.responseText == "1") { - setTimeout(self.location.href="Werwolf.php",1); - } + setTimeout(self.location.href="Werwolf.php",1); + } else { setTimeout(reloadmaintain,3500,game,id); @@ -1814,7 +1816,7 @@ var sekBisTimerBeginn; xmlhttp.open("GET","reload.php?game="+ game +"&id="+ id,true); xmlhttp.send(); } - + function listRefresh(game, id, reload=0) { xmlhttp2.open("GET","listreload.php?game="+ game +"&id="+ id +"&reload="+reload,true); @@ -1833,15 +1835,15 @@ var sekBisTimerBeginn; if (reload == 1 && arr[0] == 1) { setTimeout(self.location.href="Werwolf.php",1); - return; + return; } var count = (arr.length-1)/2; var para = document.getElementById("listdiv"); while (para.firstChild) { para.removeChild(para.firstChild); } - - + + for (var i = 0; i < count; i++) { var temp = document.createElement("p"); @@ -1871,12 +1873,12 @@ var sekBisTimerBeginn; { //Error setTimeout(listRefresh,2*3000,game,id, reload); - } + } } } xmlhttp2.send(null); } - + function gameLogRefresh(game) { xmlhttp3.onreadystatechange=function() @@ -1914,13 +1916,13 @@ var sekBisTimerBeginn; xmlhttp3.open("GET","gamelogreload.php?game="+ game,true); xmlhttp3.send(); } - + function timerAkt(akt,text) { if (sekBisTime < 0) return; if (sekBisTimerBeginn <= 0) - { + { var timerDiv = document.getElementById("timerdiv"); while (timerDiv.firstChild) { timerDiv.removeChild(timerDiv.firstChild); @@ -1939,17 +1941,17 @@ var sekBisTimerBeginn; timerAkt(akt,timerText); setInterval(function(){timerAkt(akt,timerText);},1000); } - + function setUpReload(game, id) { setTimeout(reloadmaintain,3500,game,id); } - + function setUpListReload(game, id) { setTimeout(listRefresh,3000,game,id); } - + function showGameLog(game) { var form = document.getElementById("gameLogForm"); @@ -1977,10 +1979,10 @@ var sekBisTimerBeginn; form.style.display = "block"; } } - + function jsstart() { - 0) { echo 'timerInit('.$timerZahl.','.$aktBeiTime.','.$timerAb.',"'.$timerText.'");'; @@ -2010,7 +2012,7 @@ var sekBisTimerBeginn; } ?> } - + function showHideCharacter() { var form = document.getElementById("CharacterInfo"); @@ -2023,7 +2025,7 @@ var sekBisTimerBeginn; form.style.display = "block"; } } - + function show_settings() { var form = document.getElementById("player_settings"); @@ -2036,7 +2038,7 @@ var sekBisTimerBeginn; form.style.display = "block"; } } - + function showHidePlayerLog() { var form = document.getElementById("PlayerLog"); @@ -2057,7 +2059,7 @@ var sekBisTimerBeginn; var n_r = ; var n_g = ; var n_b = ; - + var rp = 1; var gp = 1; var bp = 1; @@ -2069,7 +2071,7 @@ var sekBisTimerBeginn; bp = -1; if (tag == true) { - var r = n_r+anzahl*rp; if ((r > d_r && rp == 1) || (r < d_r && rp == -1)) @@ -2091,7 +2093,7 @@ var sekBisTimerBeginn; { BB = "0"+BB;} if (r == d_r && b == d_b && g == d_g) { - + } else { @@ -2111,7 +2113,7 @@ var sekBisTimerBeginn; var b = d_b-anzahl*bp; if ((b < n_b && bp == 1) || (b > n_b && bp == -1)) b=n_b; - + var RR = r.toString(16); if (RR.length < 2) { RR = "0"+RR;} @@ -2123,7 +2125,7 @@ var sekBisTimerBeginn; { BB = "0"+BB;} if (r == d_r && b == d_b && g == d_g) { - + } else { @@ -2141,2289 +2143,19 @@ var sekBisTimerBeginn; var RR = d_r.toString(16); var GG = d_g.toString(16); var BB = d_b.toString(16); - + if (RR.length < 2) { RR = "0"+RR;} - + if (GG.length < 2) { GG = "0"+GG;} - + if (BB.length < 2) { BB = "0"+BB;} var color = "#"+ RR + GG + BB; - document.getElementById("gameboard").style.backgroundColor = color; + document.getElementById("gameboard").style.backgroundColor = color; } - + - - -
-

Willkommen

-

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

-
-

Einem Spiel beitreten

- - - - -
-
-

Ein neues Spiel erstellen

- - - -
- 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']; - $urwolfzahl = $gameResAssoc['urwolfzahl']; - $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']; - - $inaktivzeit = $gameResAssoc['inaktivzeit']; - $inaktivzeitzusatz = $gameResAssoc['inaktivzeitzusatz']; - - echo " -
- -

Allgemein

- "; - if ($buergermeisterWeitergeben == 0) - echo ""; - else - echo ""; - echo ""; - if ($charaktereAufdecken == 0) - echo ""; - else - echo ""; - echo ""; - if ($seherSiehtIdentitaet == 0) - echo ""; - else - echo ""; - echo "

Charaktere

"; - if ($zufaelligauswaehlen == 0) - { - echo " - - "; - } - else - { - echo " - - "; - } - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " - - "; - echo " -

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

Countdown-Einstellungen

"; - echo ""; - echo " -
-
"; - echo " -
-
"; - echo " -
-
"; - echo " -
-
"; - echo " -
-
"; - echo "
"; - echo "
"; -} - -function spielRegelnAnwenden($mysqli) -{ - $spielID = $_COOKIE['SpielID']; - if (isset($_POST['buergermeister'])) - { - //Zuerst überprüfen, ob die Variablen überhaupt existieren - $buergermeisterWeitergeben = (int)$_POST['buergermeister']; - $charaktereAufdecken = (int)$_POST['aufdecken']; - $seherSiehtIdentitaet = (int)$_POST['seherSieht']; - $hexenzahl = (int)$_POST['hexe']; - $jaegerzahl = (int)$_POST['jaeger']; - $seherzahl = (int)$_POST['seher']; - $amorzahl = (int)$_POST['amor']; - $beschuetzerzahl = (int)$_POST['beschuetzer']; - $parErmZahl = (int)$_POST['parErm']; - $lykantrophenzahl = (int)$_POST['lykantrophen']; - $spionezahl = (int)$_POST['spione']; - $idiotenzahl = (int)$_POST['idioten']; - $pazifistenzahl = (int)$_POST['pazifisten']; - $altenzahl = (int)$_POST['alten']; - $urwolfzahl = (int)$_POST['urwolf']; - $werwolftimer1 = (int)$_POST['werwolftimer1']; - $werwolfzusatz1 = (int)$_POST['werwolfzusatz1']; - $werwolftimer2 = (int)$_POST['werwolftimer2']; - $werwolfzusatz2 = (int)$_POST['werwolfzusatz2']; - $dorftimer = (int)$_POST['dorftimer']; - $dorfzusatz = (int)$_POST['dorfzusatz']; - $dorfstichwahltimer = (int)$_POST['dorfstichwahltimer']; - $dorfstichwahlzusatz = (int)$_POST['dorfstichwahlzusatz']; - $inaktivzeit = (int)$_POST['inaktivzeit']; - $inaktivzeitzusatz = (int)$_POST['inaktivzeitzusatz']; - $zufaelligeAuswahlBonus = (int)$_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, - urwolfzahl = $urwolfzahl, - zufaelligeAuswahl = $zufaelligauswaehlen, - zufaelligeAuswahlBonus = $zufaelligeAuswahlBonus, - werwolftimer1 = $werwolftimer1, - werwolfzusatz1 = $werwolfzusatz1, - werwolftimer2 = $werwolftimer2, - werwolfzusatz2 = $werwolfzusatz2, - dorftimer = $dorftimer, - dorfzusatz = $dorfzusatz, - dorfstichwahltimer = $dorfstichwahltimer, - dorfstichwahlzusatz = $dorfstichwahlzusatz, - inaktivzeit = $inaktivzeit, - inaktivzeitzusatz = $inaktivzeitzusatz"); - //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']; - $urwolfzahl = $gameResAssoc['urwolfzahl']; - $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 + $urwolfzahl; - 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 + $urwolfzahl; - 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']; - $urwolfzahl = $gameResAssoc['urwolfzahl']; - $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 + $urwolfzahl; - 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 + $urwolfzahl; - 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, Urwölfe: $urwolfzahl"; - 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; - $urwolfbonus = -8; - $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); - $urwolfzahlN = rand(0, $urwolfzahl); - - $dorfbewohnerzahlN = $spielerzahl - $werwolfzahlN - $hexenzahlN - $jaegerzahlN - $seherzahlN - - $amorzahlN - $beschuetzerzahlN - $parErmZahlN - $lykantrophenzahlN - $spionezahlN - - $idiotenzahlN - $pazifistenzahlN - $altenzahlN - $urwolfzahlN; - //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 - + $urwolfzahlN * $urwolfbonus - + $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; - $urwolfzahl = $urwolfzahlN; - 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; - $urwolfzahl = 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, Urwölfe: $urwolfzahl"; - 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, Urwölfe: $urwolfzahl"; - 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); - weiseCharakterZu($urwolfzahl, CHARURWOLF, $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 = (int)$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"); - } - elseif ($temp['nachtIdentitaet'] == CHARURWOLF) - { - $mysqli->Query("UPDATE $spielID"."_spieler SET urwolf_anzahl_faehigkeiten = 1 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 = (int)$temp['id']; - //Mache ihn zu dem Charakter - $identitaet = (int)$identitaet; - $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"); - $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); - $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); - } - elseif ($phase == PHASENACHT2) - { - $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); - $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); - } - 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 ." OR nachtIdentitaet = ".CHARURWOLF.") 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." OR nachtIdentitaet = ".CHARURWOLF.")"); - } - 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." OR nachtIdentitaet = ".CHARURWOLF.")"); - } - $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); - $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); - } - elseif ($phase == PHASENACHT4) - { - $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); - $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); - } - 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 = (int)$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']; - } - } - } - - //entferne doppelte Einträge: - $tote = array_unique($tote, SORT_NUMERIC); - - //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"); - $stmt = $mysqli->prepare("UPDATE $spielID"."_game SET werwolfopfer = -1, tagestext = ?"); - $stmt->bind_param('s',$anzeigeString); - $stmt->execute(); - $stmt->close(); - //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 get_waiting_for_others_time($mysqli) -{ - //Gibt die Anzahl der Sekunden zurück, wie lange wir warten wollen, bis wir anzeigen, auf wen wir noch warten. - $spielID = (int)$_COOKIE['SpielID']; - if ($result = $mysqli->query("SELECT * FROM $spielID"."_spieler")) - { - $spielerzahl = $result->num_rows; - if ($g = gameAssoc($mysqli)) - { - return $g['inaktivzeit'] + $g['inaktivzeitzusatz'] * $spielerzahl; - } - } - return 0; -} - -function toeteSpieler($mysqli, $spielerID) -{ - //Wird aufgerufen, wenn dieser Spieler stirbt - $spielID = $_COOKIE['SpielID']; - $eigeneID = $_COOKIE['eigeneID']; - $spielerID = (int)$spielerID; - //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($mysqli) -{ - //Zeigt das warteAufAnder an, damit es bei jedem gleich aussieht - echo "

Warte auf andere Spieler

"; - - //Output the players we are waiting for (if enough time has passed) - $gameAssoc = gameAssoc($mysqli); - if ($gameAssoc['waiting_for_others_time'] < time()) - { - $spielID = (int)$_COOKIE['SpielID']; - $nichtBereitResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE bereit = 0 AND lebt = 1"); - if (!is_bool($nichtBereitResult)) { - echo("Warte noch auf: "); - while($row = $nichtBereitResult->fetch_row()){ - if (count($row) > 1) { - error_log($row[1]); - echo("$row[1]\t"); - } - } - } - } -} - -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']; - $id = (int)$id; - //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 urwolfInitialisiere($mysqli) -{ - $spielID = $_COOKIE['SpielID']; - - //Zeige eine Liste aller lebenden Spieler an - echo "
"; - echo ''; - echo "

Sie als Urwolf/Urwölfin können einmal im Spiel einen anderen Spieler zum Werwolf machen. Wen wollen Sie wählen?
- Wenn Sie niemanden zum Werwolf machen wollen, wählen sie 'Niemand' aus

"; - echo "

'; -} - -function urwolfHandle($mysqli, $id) -{ - - $spielID = $_COOKIE['SpielID']; - $eigeneID = $_COOKIE['eigeneID']; - if ($id == -1) - { - $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1 WHERE id = $eigeneID"); - return true; //NIEMAND - } - if ($mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID")->fetch_assoc()['urwolf_anzahl_faehigkeiten'] > 0) - { - //schauen, ob es ein valider Spieler ist - $stmt = $mysqli->prepare("SELECT * FROM $spielID"."_spieler WHERE id = ? AND lebt = 1"); - $stmt->bind_param('i',$id); - $stmt->execute(); - $spielerRes = $stmt->get_result(); - if ($spielerRes->num_rows < 1) - return false; - $spielerAssoc=$spielerRes->fetch_assoc(); - $identitaet = $spielerAssoc['nachtIdentitaet']; - $strIdentitaet = nachtidentitaetAlsString($identitaet); - - $text = $spielerAssoc['name']." ist jetzt ein Werwolf!"; - $stmt->close(); - echo "

$text

"; - - //Schreibe es auch ins playerlog, damit es der Spieler nachlesen kann - toPlayerLog($mysqli, $text, $eigeneID); - toPlayerLog($mysqli, "Sie wurden vom Urwolf/von der Urwölfin zu einem Werwolf gemacht. Sie verlieren alle bisherigen Fähigkeiten und spielen nun für die Werwölfe! Viel Erfolg!", $id); - toGameLog($mysqli,getName($mysqli,$eigeneID)."(Urwolf/Urwölfin) macht ".$spielerAssoc['name']."($strIdentitaet) zum Werwolf."); - - $stmt = $mysqli->prepare("UPDATE $spielID"."_spieler SET nachtIdentitaet = ". CHARWERWOLF .", popup_text = 'Du wurdest vom Urwolf / von der Urwölfin zu einem Werwolf gemacht und spielst jetzt für die Werwölfe!' WHERE id = ?"); - $stmt->bind_param('i',$id); - $stmt->execute(); - $stmt->close(); - - //Setze mich noch auf bereit ;) - $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1, urwolf_anzahl_faehigkeiten = 0 WHERE id = $eigeneID"); - return true; - } - else - { - return false; - } -} - -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 - $id = (int)$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; - $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']; - $id = (int)$id; - //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']; - $id = (int)$id; - //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 ." OR nachtIdentitaet = ". CHARURWOLF .") 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']; - $id1 = (int)$id1; - $id2 = (int)$id2; - //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($myfile,"Die Überlebenden:\n"); - $lebendQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); - while ($temp = $lebendQuery->fetch_assoc()) - { - fwrite($myfile,$temp['name']."(".nachtidentitaetAlsString($temp['nachtIdentitaet'],$mysqli).")\n"); - } - fwrite($myfile,"--- 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. " OR nachtIdentitaet = ".CHARURWOLF.")"); - 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. " AND nachtIdentitaet <> ".CHARURWOLF); - 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 lebt = 0 WHERE id = $spielerID"); - //Überprüfe, ob sonst schon alle bereit sind - if ($g = gameAssoc($mysqli)) - { - phaseBeendenWennAlleBereit($g['spielphase'],$mysqli); - } -} - -function alleReloadAusser($spielerID,$mysqli) -{ - $spielID = $_COOKIE['SpielID']; - $spielerID = (int)$spielerID; - $mysqli->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']; - $spielerID = (int)$spielerID; - $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 0 WHERE id = $spielerID"); -} - -function setBereit($mysqli,$spielerID,$bereit) -{ - $spielID = $_COOKIE['SpielID']; - $spielerID = (int)$spielerID; - $bereit = (int)$bereit; - $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = $bereit WHERE id = $spielerID"); -} - -function gameAssoc($mysqli) -{ - $spielID = $_COOKIE['SpielID']; - if ($gameRes = $mysqli->Query("SELECT * FROM $spielID"."_game")) - { - $gameA = $gameRes->fetch_assoc(); - return $gameA; - } - return false; -} - -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']; - $spielerID = (int)$spielerID; - if ($res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID")) - { - $temp = $res->fetch_assoc(); - return $temp['name']; - } - return "Unknown"; -} - -function getGesinnung($identitaet) -{ - if ($identitaet == CHARWERWOLF || $identitaet == CHARURWOLF) - 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; - case CHARURWOLF: - return "Urwolf/Urwölfin"; - 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 (oder Urwolf) 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; - case CHARURWOLF: - return "Sie gehören zu den Werwölfen und gewinnen bzw. verlieren mit ihnen. Einmal pro Spiel können Sie einen Spieler zum Werwolf machen, der dann alle bisherigen Fähigkeiten verliert ..."; - break; - } -} - -function toGameLog($mysqli,$logeintrag) -{ - //Fügt dem gamelog den $logeintrag hinzu - $spielID = $_COOKIE['SpielID']; - if ($gameAssoc = gameAssoc($mysqli)) - { - $aktLog = $gameAssoc['log']; - $neuLog = $aktLog.date("H:i:s").": ".$logeintrag."
"; - $neuLog = str_replace("'",'"',$neuLog); //ersetze alle ' mit " - $stmt = $mysqli->prepare("UPDATE $spielID"."_game SET log = ?"); - $stmt->bind_param("s",$neuLog); - $stmt->execute(); - $stmt->close(); - } -} - -function toPlayerLog($mysqli, $logeintrag, $spieler) -{ - //Fügt dem Spielerlog des Spielers den logEintrag hinzu - $spielID = $_COOKIE['SpielID']; - $spieler = (int)$spieler; - $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 " - $stmt = $mysqli->prepare("UPDATE $spielID"."_spieler SET playerlog = ? WHERE id = ?"); - $stmt->bind_param("si",$neuLog, $spieler); - $stmt->execute(); - $stmt->close(); -} - -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,20); - $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; - case 18: - $text = "Der Urwolf / Die Urwölfin spielt gemeinsam mit den Werwölfen, kann aber einmal im Spiel einen Spieler zum Werwolf machen, der daraufhin alle seine bisherigen Fähigkeiten verliert."; - 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. -waiting_for_others_time -Gibt an, ab wann angezeigt wird, auf wen wir noch warten -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) -*/ -?> diff --git a/gamelogreload.php b/gamelogreload.php index 372622d..f9a5be9 100644 --- a/gamelogreload.php +++ b/gamelogreload.php @@ -1,16 +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 deleted file mode 100644 index 2ddd6a3..0000000 --- a/includes.example.php +++ /dev/null @@ -1,21 +0,0 @@ - \ No newline at end of file diff --git a/constants.php b/includes/constants.php similarity index 100% rename from constants.php rename to includes/constants.php diff --git a/includes/functions.php b/includes/functions.php new file mode 100644 index 0000000..8206284 --- /dev/null +++ b/includes/functions.php @@ -0,0 +1,2131 @@ + +
+

Willkommen

+

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

+
+

Einem Spiel beitreten

+ + + + +
+
+

Ein neues Spiel erstellen

+ + + +
+ 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']; + $urwolfzahl = $gameResAssoc['urwolfzahl']; + $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']; + + $inaktivzeit = $gameResAssoc['inaktivzeit']; + $inaktivzeitzusatz = $gameResAssoc['inaktivzeitzusatz']; + + echo " +
+ +

Allgemein

+ "; + if ($buergermeisterWeitergeben == 0) + echo ""; + else + echo ""; + echo ""; + if ($charaktereAufdecken == 0) + echo ""; + else + echo ""; + echo ""; + if ($seherSiehtIdentitaet == 0) + echo ""; + else + echo ""; + echo "

Charaktere

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

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

Countdown-Einstellungen

"; + echo ""; + echo " +
+
"; + echo " +
+
"; + echo " +
+
"; + echo " +
+
"; + echo " +
+
"; + echo "
"; + echo "
"; +} + +function spielRegelnAnwenden($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + if (isset($_POST['buergermeister'])) + { + //Zuerst überprüfen, ob die Variablen überhaupt existieren + $buergermeisterWeitergeben = (int)$_POST['buergermeister']; + $charaktereAufdecken = (int)$_POST['aufdecken']; + $seherSiehtIdentitaet = (int)$_POST['seherSieht']; + $hexenzahl = (int)$_POST['hexe']; + $jaegerzahl = (int)$_POST['jaeger']; + $seherzahl = (int)$_POST['seher']; + $amorzahl = (int)$_POST['amor']; + $beschuetzerzahl = (int)$_POST['beschuetzer']; + $parErmZahl = (int)$_POST['parErm']; + $lykantrophenzahl = (int)$_POST['lykantrophen']; + $spionezahl = (int)$_POST['spione']; + $idiotenzahl = (int)$_POST['idioten']; + $pazifistenzahl = (int)$_POST['pazifisten']; + $altenzahl = (int)$_POST['alten']; + $urwolfzahl = (int)$_POST['urwolf']; + $werwolftimer1 = (int)$_POST['werwolftimer1']; + $werwolfzusatz1 = (int)$_POST['werwolfzusatz1']; + $werwolftimer2 = (int)$_POST['werwolftimer2']; + $werwolfzusatz2 = (int)$_POST['werwolfzusatz2']; + $dorftimer = (int)$_POST['dorftimer']; + $dorfzusatz = (int)$_POST['dorfzusatz']; + $dorfstichwahltimer = (int)$_POST['dorfstichwahltimer']; + $dorfstichwahlzusatz = (int)$_POST['dorfstichwahlzusatz']; + $inaktivzeit = (int)$_POST['inaktivzeit']; + $inaktivzeitzusatz = (int)$_POST['inaktivzeitzusatz']; + $zufaelligeAuswahlBonus = (int)$_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, + urwolfzahl = $urwolfzahl, + zufaelligeAuswahl = $zufaelligauswaehlen, + zufaelligeAuswahlBonus = $zufaelligeAuswahlBonus, + werwolftimer1 = $werwolftimer1, + werwolfzusatz1 = $werwolfzusatz1, + werwolftimer2 = $werwolftimer2, + werwolfzusatz2 = $werwolfzusatz2, + dorftimer = $dorftimer, + dorfzusatz = $dorfzusatz, + dorfstichwahltimer = $dorfstichwahltimer, + dorfstichwahlzusatz = $dorfstichwahlzusatz, + inaktivzeit = $inaktivzeit, + inaktivzeitzusatz = $inaktivzeitzusatz"); + //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']; + $urwolfzahl = $gameResAssoc['urwolfzahl']; + $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 + $urwolfzahl; + 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 + $urwolfzahl; + 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']; + $urwolfzahl = $gameResAssoc['urwolfzahl']; + $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 + $urwolfzahl; + 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 + $urwolfzahl; + 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, Urwölfe: $urwolfzahl"; + 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; + $urwolfbonus = -8; + $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); + $urwolfzahlN = rand(0, $urwolfzahl); + + $dorfbewohnerzahlN = $spielerzahl - $werwolfzahlN - $hexenzahlN - $jaegerzahlN - $seherzahlN + - $amorzahlN - $beschuetzerzahlN - $parErmZahlN - $lykantrophenzahlN - $spionezahlN + - $idiotenzahlN - $pazifistenzahlN - $altenzahlN - $urwolfzahlN; + //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 + + $urwolfzahlN * $urwolfbonus + + $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; + $urwolfzahl = $urwolfzahlN; + 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; + $urwolfzahl = 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, Urwölfe: $urwolfzahl"; + 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, Urwölfe: $urwolfzahl"; + 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); + weiseCharakterZu($urwolfzahl, CHARURWOLF, $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 = (int)$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"); + } + elseif ($temp['nachtIdentitaet'] == CHARURWOLF) + { + $mysqli->Query("UPDATE $spielID"."_spieler SET urwolf_anzahl_faehigkeiten = 1 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 = (int)$temp['id']; + //Mache ihn zu dem Charakter + $identitaet = (int)$identitaet; + $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"); + $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); + $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); + } + elseif ($phase == PHASENACHT2) + { + $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); + $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); + } + 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 ." OR nachtIdentitaet = ".CHARURWOLF.") 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." OR nachtIdentitaet = ".CHARURWOLF.")"); + } + 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." OR nachtIdentitaet = ".CHARURWOLF.")"); + } + $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); + $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); + } + elseif ($phase == PHASENACHT4) + { + $waiting_for_others_time = time() + get_waiting_for_others_time($mysqli); + $mysqli->Query("UPDATE $spielID"."_game SET `waiting_for_others_time` = $waiting_for_others_time"); + } + 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 = (int)$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']; + } + } + } + + //entferne doppelte Einträge: + $tote = array_unique($tote, SORT_NUMERIC); + + //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"); + $stmt = $mysqli->prepare("UPDATE $spielID"."_game SET werwolfopfer = -1, tagestext = ?"); + $stmt->bind_param('s',$anzeigeString); + $stmt->execute(); + $stmt->close(); + //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 get_waiting_for_others_time($mysqli) +{ + //Gibt die Anzahl der Sekunden zurück, wie lange wir warten wollen, bis wir anzeigen, auf wen wir noch warten. + $spielID = (int)$_COOKIE['SpielID']; + if ($result = $mysqli->query("SELECT * FROM $spielID"."_spieler")) + { + $spielerzahl = $result->num_rows; + if ($g = gameAssoc($mysqli)) + { + return $g['inaktivzeit'] + $g['inaktivzeitzusatz'] * $spielerzahl; + } + } + return 0; +} + +function toeteSpieler($mysqli, $spielerID) +{ + //Wird aufgerufen, wenn dieser Spieler stirbt + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + $spielerID = (int)$spielerID; + //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($mysqli) +{ + //Zeigt das warteAufAnder an, damit es bei jedem gleich aussieht + echo "

Warte auf andere Spieler

"; + + //Output the players we are waiting for (if enough time has passed) + $gameAssoc = gameAssoc($mysqli); + if ($gameAssoc['waiting_for_others_time'] < time()) + { + $spielID = (int)$_COOKIE['SpielID']; + $nichtBereitResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE bereit = 0 AND lebt = 1"); + if (!is_bool($nichtBereitResult)) { + echo("Warte noch auf: "); + while($row = $nichtBereitResult->fetch_row()){ + if (count($row) > 1) { + error_log($row[1]); + echo("$row[1]\t"); + } + } + } + } +} + +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']; + $id = (int)$id; + //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 urwolfInitialisiere($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + + //Zeige eine Liste aller lebenden Spieler an + echo "
"; + echo ''; + echo "

Sie als Urwolf/Urwölfin können einmal im Spiel einen anderen Spieler zum Werwolf machen. Wen wollen Sie wählen?
+ Wenn Sie niemanden zum Werwolf machen wollen, wählen sie 'Niemand' aus

"; + echo "

'; +} + +function urwolfHandle($mysqli, $id) +{ + + $spielID = $_COOKIE['SpielID']; + $eigeneID = $_COOKIE['eigeneID']; + if ($id == -1) + { + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1 WHERE id = $eigeneID"); + return true; //NIEMAND + } + if ($mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID")->fetch_assoc()['urwolf_anzahl_faehigkeiten'] > 0) + { + //schauen, ob es ein valider Spieler ist + $stmt = $mysqli->prepare("SELECT * FROM $spielID"."_spieler WHERE id = ? AND lebt = 1"); + $stmt->bind_param('i',$id); + $stmt->execute(); + $spielerRes = $stmt->get_result(); + if ($spielerRes->num_rows < 1) + return false; + $spielerAssoc=$spielerRes->fetch_assoc(); + $identitaet = $spielerAssoc['nachtIdentitaet']; + $strIdentitaet = nachtidentitaetAlsString($identitaet); + + $text = $spielerAssoc['name']." ist jetzt ein Werwolf!"; + $stmt->close(); + echo "

$text

"; + + //Schreibe es auch ins playerlog, damit es der Spieler nachlesen kann + toPlayerLog($mysqli, $text, $eigeneID); + toPlayerLog($mysqli, "Sie wurden vom Urwolf/von der Urwölfin zu einem Werwolf gemacht. Sie verlieren alle bisherigen Fähigkeiten und spielen nun für die Werwölfe! Viel Erfolg!", $id); + toGameLog($mysqli,getName($mysqli,$eigeneID)."(Urwolf/Urwölfin) macht ".$spielerAssoc['name']."($strIdentitaet) zum Werwolf."); + + $stmt = $mysqli->prepare("UPDATE $spielID"."_spieler SET nachtIdentitaet = ". CHARWERWOLF .", popup_text = 'Du wurdest vom Urwolf / von der Urwölfin zu einem Werwolf gemacht und spielst jetzt für die Werwölfe!' WHERE id = ?"); + $stmt->bind_param('i',$id); + $stmt->execute(); + $stmt->close(); + + //Setze mich noch auf bereit ;) + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = 1, urwolf_anzahl_faehigkeiten = 0 WHERE id = $eigeneID"); + return true; + } + else + { + return false; + } +} + +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 + $id = (int)$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; + $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']; + $id = (int)$id; + //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']; + $id = (int)$id; + //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 ." OR nachtIdentitaet = ". CHARURWOLF .") 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']; + $id1 = (int)$id1; + $id2 = (int)$id2; + //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($myfile,"Die Überlebenden:\n"); + $lebendQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); + while ($temp = $lebendQuery->fetch_assoc()) + { + fwrite($myfile,$temp['name']."(".nachtidentitaetAlsString($temp['nachtIdentitaet'],$mysqli).")\n"); + } + fwrite($myfile,"--- 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. " OR nachtIdentitaet = ".CHARURWOLF.")"); + 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. " AND nachtIdentitaet <> ".CHARURWOLF); + 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 lebt = 0 WHERE id = $spielerID"); + //Überprüfe, ob sonst schon alle bereit sind + if ($g = gameAssoc($mysqli)) + { + phaseBeendenWennAlleBereit($g['spielphase'],$mysqli); + } +} + +function alleReloadAusser($spielerID,$mysqli) +{ + $spielID = $_COOKIE['SpielID']; + $spielerID = (int)$spielerID; + $mysqli->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']; + $spielerID = (int)$spielerID; + $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 0 WHERE id = $spielerID"); +} + +function setBereit($mysqli,$spielerID,$bereit) +{ + $spielID = $_COOKIE['SpielID']; + $spielerID = (int)$spielerID; + $bereit = (int)$bereit; + $mysqli->Query("UPDATE $spielID"."_spieler SET bereit = $bereit WHERE id = $spielerID"); +} + +function gameAssoc($mysqli) +{ + $spielID = $_COOKIE['SpielID']; + if ($gameRes = $mysqli->Query("SELECT * FROM $spielID"."_game")) + { + $gameA = $gameRes->fetch_assoc(); + return $gameA; + } + return false; +} + +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']; + $spielerID = (int)$spielerID; + if ($res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID")) + { + $temp = $res->fetch_assoc(); + return $temp['name']; + } + return "Unknown"; +} + +function getGesinnung($identitaet) +{ + if ($identitaet == CHARWERWOLF || $identitaet == CHARURWOLF) + 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; + case CHARURWOLF: + return "Urwolf/Urwölfin"; + 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 (oder Urwolf) 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; + case CHARURWOLF: + return "Sie gehören zu den Werwölfen und gewinnen bzw. verlieren mit ihnen. Einmal pro Spiel können Sie einen Spieler zum Werwolf machen, der dann alle bisherigen Fähigkeiten verliert ..."; + break; + } +} + +function toGameLog($mysqli,$logeintrag) +{ + //Fügt dem gamelog den $logeintrag hinzu + $spielID = $_COOKIE['SpielID']; + if ($gameAssoc = gameAssoc($mysqli)) + { + $aktLog = $gameAssoc['log']; + $neuLog = $aktLog.date("H:i:s").": ".$logeintrag."
"; + $neuLog = str_replace("'",'"',$neuLog); //ersetze alle ' mit " + $stmt = $mysqli->prepare("UPDATE $spielID"."_game SET log = ?"); + $stmt->bind_param("s",$neuLog); + $stmt->execute(); + $stmt->close(); + } +} + +function toPlayerLog($mysqli, $logeintrag, $spieler) +{ + //Fügt dem Spielerlog des Spielers den logEintrag hinzu + $spielID = $_COOKIE['SpielID']; + $spieler = (int)$spieler; + $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 " + $stmt = $mysqli->prepare("UPDATE $spielID"."_spieler SET playerlog = ? WHERE id = ?"); + $stmt->bind_param("si",$neuLog, $spieler); + $stmt->execute(); + $stmt->close(); +} + +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,20); + $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; + case 18: + $text = "Der Urwolf / Die Urwölfin spielt gemeinsam mit den Werwölfen, kann aber einmal im Spiel einen Spieler zum Werwolf machen, der daraufhin alle seine bisherigen Fähigkeiten verliert."; + 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; +} + +?> diff --git a/listreload.php b/listreload.php index fa937db..58d9273 100644 --- a/listreload.php +++ b/listreload.php @@ -1,16 +1,16 @@ Query("SELECT * FROM $spielID"."_game"); $spielAss = $spielRes->fetch_assoc(); $phase = $spielAss['spielphase']; - + $text = ""; if ($ichLebe || $phase <= PHASESPIELSETUP || $phase >= PHASESIEGEREHRUNG) { @@ -47,7 +47,7 @@ { //Sende vorgefertigte Antwort! echo $spielAss['list_lebe']; - die; + die; } } if ($phase == PHASESETUP) @@ -92,13 +92,13 @@ //Schaue nach, ob ich Werwolf bin $myRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id"); $myAssoc = $myRes->fetch_assoc(); - if ($myAssoc['nachtIdentitaet'] == CHARWERWOLF || $myAssoc['nachtIdentitaet'] == CHARURWOLF) + if ($myAssoc['nachtIdentitaet'] == CHARWERWOLF || $myAssoc['nachtIdentitaet'] == CHARURWOLF) { //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['nachtIdentitaet']==CHARURWOLF) && $temp['lebt']==1) { if ($temp['wahlAuf']==-1) @@ -111,7 +111,7 @@ echo $trennzeichen.$temp['name']." (wach): ".$nameAssoc['name'].$trennzeichen."1"; } } - + } } die; @@ -165,7 +165,7 @@ $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()) @@ -197,7 +197,7 @@ $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()) @@ -224,7 +224,7 @@ { //Sende vorgefertigte Antwort! echo $spielAss['list_tot']; - die; + die; } } $rueckgabe = ""; @@ -255,13 +255,13 @@ break; case PHASEABSTIMMUNG: $text = "Abstimmung"; - break; + 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()) { @@ -308,8 +308,8 @@ $identitaet = "Alte(r)"; break; case CHARURWOLF: - $identitaet = "Urwolf/Urwölfin"; - break; + $identitaet = "Urwolf/Urwölfin"; + break; } //Eine Liste aller aktiver Spieler anzeigen //zuerst alle Lebenden anzeigen @@ -354,7 +354,7 @@ { $rueckgabe.= $trennzeichen.$temp['name']." ($identitaet)".$trennzeichen."0"; } - + } } //Dann alle Toten anzeigen @@ -404,22 +404,22 @@ $identitaet = "Alte(r)"; break; case CHARURWOLF: - $identitaet = "Urwolf/Urwölfin"; - break; + $identitaet = "Urwolf/Urwölfin"; + 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 + //4: grau ?> diff --git a/reload.php b/reload.php index 787b884..6014afa 100644 --- a/reload.php +++ b/reload.php @@ -3,7 +3,7 @@ header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Pragma: no-cache'); - include "includes.php"; + include "includes/includes.php"; $spielID = (int)$_GET['game']; $id = (int)$_GET['id']; if ($Result = $mysqli->query("SELECT * FROM ".$spielID."_spieler WHERE id = $id")) @@ -11,5 +11,5 @@ $temp = $Result->fetch_assoc(); echo $temp['reload']; } - -?> \ No newline at end of file + +?>