From 4263550e70288f21b4c248eee197d9b46d8c18e1 Mon Sep 17 00:00:00 2001 From: eYeWoRRy Date: Sun, 26 Dec 2021 17:11:10 +0100 Subject: [PATCH] Moved all php functions into a new Folder "includes" and added a "require_once" at top of the php code. --- Werwolf.php | 2134 +--------------------------------------- includes/functions.php | 2131 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 2133 insertions(+), 2132 deletions(-) create mode 100644 includes/functions.php diff --git a/Werwolf.php b/Werwolf.php index 0612abb..22843c8 100644 --- a/Werwolf.php +++ b/Werwolf.php @@ -9,6 +9,8 @@ - -
-

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: @@ -4426,4 +2297,3 @@ ToDO: #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/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; +} + +?>