. */ function start() { //Diese Funktion zeigt das Startformular an, bei dem der Nutzer aufgefordert wird, ein Spiel zu erstellen, oder eine ID einzugeben ?>
Sie befinden sich momentan in keinem Spiel: Sie können entweder einem bereits erstellten Spiel beitreten oder ein neues Spiel erstellen!
Eine oder mehrere Countdown-Einstellungen sind ungültig
"; $werwolftimer1 = 60; $werwolfzusatz1 = 4; $werwolftimer2 = 50; $werwolfzusatz2 = 3; $dorftimer = 550; $dorfzusatz = 10; $dorfstichwahltimer = 200; $dorfstichwahlzusatz = 5; } $mysqli->Query("UPDATE $spielID"."_game SET buergermeisterWeitergeben = $buergermeisterWeitergeben, charaktereAufdecken = $charaktereAufdecken, seherSiehtIdentitaet = $seherSiehtIdentitaet, werwolfzahl = $werwolfzahl, hexenzahl = $hexenzahl, jaegerzahl = $jaegerzahl, seherzahl = $seherzahl, amorzahl = $amorzahl, beschuetzerzahl = $beschuetzerzahl, parErmZahl = $parErmZahl, lykantrophenzahl = $lykantrophenzahl, spionezahl = $spionezahl, idiotenzahl = $idiotenzahl, pazifistenzahl = $pazifistenzahl, altenzahl = $altenzahl, 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 "Zwei verschiedene Spieler auswählen ...
"; return false; } if ($wahl1 < 0 || $wahl2 < 0) return false; //Die Wahl scheint gültig zu sein--> eintragen $mysqli->Query("UPDATE $spielID"."_spieler SET verliebtMit = $wahl1 WHERE id = $wahl2"); $mysqli->Query("UPDATE $spielID"."_spieler SET verliebtMit = $wahl2 WHERE id = $wahl1"); toPlayerLog($mysqli,"Sie haben ".getName($mysqli,$wahl1)." mit ".getName($mysqli,$wahl2)." verliebt.",$eigeneID); toGameLog($mysqli,"Amor hat ".getName($mysqli,$wahl1)." mit ".getName($mysqli,$wahl2)." verliebt."); toPlayerLog($mysqli,"Amor hat Sie mit ".getName($mysqli,$wahl1). " verliebt.",$wahl2); toPlayerLog($mysqli,"Amor hat Sie mit ".getName($mysqli,$wahl2). " verliebt.",$wahl1); return true; } function spionInitialisiere($mysqli) { $spielID = $_COOKIE['SpielID']; //Zeige eine Liste aller lebenden Spieler an echo "'; } function spionSehe($mysqli, $id, $identitaet) { $spielID = $_COOKIE['SpielID']; $eigeneID = $_COOKIE['eigeneID']; $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 "Letzte Nacht beschützten Sie ".getName($mysqli,$eigeneAssoc['beschuetzerLetzteRundeBeschuetzt'])."
"; //Zeige eine Liste aller lebenden Spieler an echo "'; } function beschuetzerAuswahl($mysqli,$id) { $spielID = $_COOKIE['SpielID']; $eigeneID = $_COOKIE['eigeneID']; $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 ""; } 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 ""; } function jaegerInitialisiere($mysqli) { $spielID = $_COOKIE['SpielID']; $eigeneID = $_COOKIE['eigeneID']; //Zeige eine Liste aller noch lebenden an, die der Jäger töten kann echo "'; } function buergermeisterInitialisiere($mysqli) { //Der Bürgermeister wurde getötet und darf das Amt an seinen Nachfolger weitergeben... $spielID = $_COOKIE['SpielID']; $eigeneID = $_COOKIE['eigeneID']; //Zeige eine Liste aller noch Lebenden an, an die der Bürgermeister das Amt weitergeben kann echo "'; } function phaseBeendenWennAlleBereit($phase,$mysqli) { //Springt zur nächsten Phase, wenn alle bereit sind $spielID = $_COOKIE['SpielID']; //Schauen wir zuerst mal, ob schon alle bereit sind ... $nichtBereitResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE bereit = 0 AND lebt = 1"); if ($nichtBereitResult->num_rows > 0) { return false; } //Es sind wohl schon alle bereit if ($phase == PHASENACHT1) { $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT2); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASENACHT2,$mysqli); } elseif ($phase == PHASENACHT2) { $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT3); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASENACHT3,$mysqli); } elseif ($phase == PHASENACHT3) { //springen wir zu phase 5, wenn es eine Hexe gibt $gameResult = $mysqli->Query("SELECT * FROM $spielID"."_game"); $gameResAssoc = $gameResult->fetch_assoc(); $hexenzahl = $gameResAssoc['hexenzahl']; //Setze Phase auf 5 $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHT4); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASENACHT4,$mysqli); } elseif ($phase == PHASENACHT4) { //Wir überspringen Phase 6 und kommen gleich zu Phase 7 $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASENACHTENDE); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASENACHTENDE,$mysqli); } elseif ($phase == PHASETOTEBEKANNTGEBEN) { //Wenn es keinen Bürgermeister gibt, zur Wahl des Bürgermeisters übergehen $bres = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE buergermeister = 1 AND lebt = 1"); if ($bres->num_rows > 0) { //Es gibt bereits einen Bürgermeister, wir können zu Phase 9 übergehen $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEDISKUSSION); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASEDISKUSSION,$mysqli); } else { //Es gibt keinen Bürgermeister --> Bürgermeisterwahl = Phase 8 $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEBUERGERMEISTERWAHL); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASEBUERGERMEISTERWAHL,$mysqli); } } elseif ($phase == PHASEBUERGERMEISTERWAHL) { $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEDISKUSSION); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASEDISKUSSION,$mysqli); } elseif ($phase == PHASEDISKUSSION) { //Gehe zur Anklage über $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEANKLAGEN); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASEANKLAGEN,$mysqli); } elseif ($phase == PHASEANKLAGEN) { //Gehe zur Abstimmung über $mysqli->Query("UPDATE $spielID"."_game SET spielphase = ".PHASEABSTIMMUNG); //alle müssen reloaden $mysqli->Query("UPDATE $spielID"."_spieler SET reload = 1, bereit = 0"); phaseInitialisieren(PHASEABSTIMMUNG,$mysqli); } } function endeDerAbstimmungStichwahl($id1, $id2, $mysqli) { //Stichwahl zwischen id1 und id2 $spielID = $_COOKIE['SpielID']; $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"); if ($myfile){ 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("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']; try{ if ($gameRes = $mysqli->Query("SELECT * FROM $spielID"."_game")) { $gameA = $gameRes->fetch_assoc(); return $gameA; } }catch(mysqli_sql_exception $e) {} 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; try{ if ($res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID")) { $temp = $res->fetch_assoc(); return $temp['name']; } } catch(mysqli_sql_exception $e) {} 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."