mirror of
https://github.com/foin137/werwolfonline.eu.git
synced 2026-05-15 14:48:43 +00:00
Compare commits
37 Commits
jaeger-fix
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ed0d509a2 | ||
|
|
c2d9877787 | ||
|
|
b082d721d5 | ||
|
|
5e6f420e9e | ||
|
|
0c42f67d77 | ||
|
|
d1c4b59a43 | ||
|
|
9ee2148d9a | ||
|
|
a45bd3c642 | ||
|
|
30fea14c07 | ||
|
|
2bf710e215 | ||
|
|
93b38cfc47 | ||
|
|
77b11c0ac2 | ||
|
|
9827b85837 | ||
|
|
1cb65fe20d | ||
|
|
e0b3ba6de3 | ||
|
|
d264869b41 | ||
|
|
4263550e70 | ||
|
|
52fa822608 | ||
|
|
0a49a1a1f4 | ||
|
|
782305f6cb | ||
|
|
fcda5cb46c | ||
|
|
e180050c95 | ||
|
|
0319b6861a | ||
|
|
d0e1867bde | ||
|
|
ba28f4d053 | ||
|
|
2ffda7185f | ||
|
|
27b4ee9f02 | ||
|
|
0298083586 | ||
|
|
28697e7174 | ||
|
|
66d4663e52 | ||
|
|
dc26da0a6f | ||
|
|
7829605395 | ||
|
|
d7aaa08e32 | ||
|
|
728c36b2cc | ||
|
|
041d07ff69 | ||
|
|
b97c8719d7 | ||
|
|
678b19ced3 |
137
CHANGELOG
Normal file
137
CHANGELOG
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
/*
|
||||||
|
Erklärungen:
|
||||||
|
Zu den Datenbank-Einträgen:
|
||||||
|
[ID]_Game
|
||||||
|
Spielphase //ALT, jetzt über Konstanten gelöst
|
||||||
|
0: Setup -> Spieler suchen (PHASESETUP)
|
||||||
|
1: Spielsetup -> jeder muss bestätigen, dass er dabei ist (PHASESPIELSETUP)
|
||||||
|
2: Nacht Teil 1: Amor (PHASENACHT1)
|
||||||
|
3: Nacht Teil 2: Verliebte (PHASENACHT2)
|
||||||
|
4: Nacht Teil 3: Alle bis Werwölfe (PHASENACHT3)
|
||||||
|
5: Nacht Teil 4: Hexe (PHASENACHT4)
|
||||||
|
6: Nacht Teil 5: Weitergabe des Amuletts (PHASENACHT5)
|
||||||
|
7: Tag, Tote werden bekanntgegeben (PHASETOTEBEKANNTGEBEN)
|
||||||
|
8: Tag, Bürgermeisterwahl (PHASEBUERGERMEISTERWAHL)
|
||||||
|
9: Tag, Diskussion (PHASEDISKUSSION)
|
||||||
|
10: Tag, Anklagen (PHASEANKLAGEN)
|
||||||
|
11: Tag, Abstimmung (PHASEABSTIMMUNG)
|
||||||
|
12: Tag, Stichwahl der Abstimmung (PHASESTICHWAHL)
|
||||||
|
13: Tag, nach Abstimmung (PHASENACHABSTIMMUNG)
|
||||||
|
14: Siegerehrung (PHASESIEGEREHRUNG)
|
||||||
|
charaktereAufdecken
|
||||||
|
0: Die Charaktere werden nicht aufgedeckt
|
||||||
|
1: Die Charaktere werden aufgedeckt
|
||||||
|
buergermeisterWeitergeben
|
||||||
|
0: Beim Tod des Bürgermeisters wird ein neuer gewählt.
|
||||||
|
1: Beim Tod des Bürgermeisters entscheidet der Bürgermeister, wer sein Nachfolger wird.
|
||||||
|
werwolfzahl
|
||||||
|
Gibt die Anzahl der Werwölfe beim Spielsetup an
|
||||||
|
hexenzahl
|
||||||
|
Gibt die Anzahl der Hexen beim Spielsetup an
|
||||||
|
seherzahl
|
||||||
|
Gibt die Anzahl der Seher beim Spielsetup an
|
||||||
|
jaegerzahl
|
||||||
|
Gibt die Anzahl der Jäger beim Spielsetup an
|
||||||
|
amorzahl
|
||||||
|
Gibt die Anzahl der Amor(s) an (max 1)
|
||||||
|
letzterAufruf
|
||||||
|
gibt den letzten Aufruf an, kann später einmal verwendet werden, um alte Spiele zu löschen.
|
||||||
|
waiting_for_others_time
|
||||||
|
Gibt an, ab wann angezeigt wird, auf wen wir noch warten
|
||||||
|
werwolfopfer
|
||||||
|
gibt das Opfer der Werwölfe an
|
||||||
|
log
|
||||||
|
Eine Log-Datei des gesamten Spiels
|
||||||
|
Diese Datei soll das Spiel nachvollziehbar machen
|
||||||
|
Nacht
|
||||||
|
gibt die Anzahl der Nächte seit Spielbeginn an
|
||||||
|
tagestext
|
||||||
|
Gibt den Text an, der in Phase 7 allen angezeigt wird
|
||||||
|
= Diese Nacht wurden getötet:
|
||||||
|
SpielerX
|
||||||
|
SpielerZ
|
||||||
|
[ID]_Spieler
|
||||||
|
Nachtidentitaet
|
||||||
|
0: keine (CHARKEIN)
|
||||||
|
1: Dorfbewohner (CHARDORFBEWOHNER)
|
||||||
|
2: Werwolf (CHARWERWOLF)
|
||||||
|
3: Seher (CHARSEHER)
|
||||||
|
4: Hexe (CHARHEXE)
|
||||||
|
5: Jäger (CHARJAEGER)
|
||||||
|
6: Amor (CHARAMOR)
|
||||||
|
7: Leibwächter/Beschützer (CHARBESCHUETZER)
|
||||||
|
8: Paranormaler Ermittler (CHARPARERM)
|
||||||
|
9: Lykantroph (CHARLYKANTROPH)
|
||||||
|
10: Spion (CHARSPION)
|
||||||
|
11: Mordlustige(r), intern Idiot (CHARMORDLUSTIGER)
|
||||||
|
12: Pazifist (CHARPAZIFIST)
|
||||||
|
13: Alter Mann (CHARALTERMANN)
|
||||||
|
hexenOpfer
|
||||||
|
Wen die Hexe töten will
|
||||||
|
hexeHeilt
|
||||||
|
0: Hexe heilt das Opfer der Werwölfe nicht
|
||||||
|
1: Hexe heilt das Opfer der Werwölfe
|
||||||
|
verliebtMit
|
||||||
|
mit wem dieser Spieler vom Amor verliebt wurde
|
||||||
|
jaegerDarfSchiessen
|
||||||
|
0: Nichts Besonderes
|
||||||
|
1: Der Jäger wurde getötet und darf jemanden mit in den Tod reißen
|
||||||
|
buergermeisterDarfWeitergeben
|
||||||
|
0: Nichts Besonderes
|
||||||
|
1: Der Bürgermeister wurde getötet und gibt sein Amt weiter...
|
||||||
|
playerlog
|
||||||
|
Hier werden Sachen hineingeschrieben, die sich der Spieler wieder anschaun können soll
|
||||||
|
z.B. als Seher wen er gesehen hat
|
||||||
|
SESSION-Variablen Übersicht
|
||||||
|
$_SESSION['SpielID'] gibt die ID des Spiels an
|
||||||
|
$_SESSION['eigeneID'] gibt die eigene ID an
|
||||||
|
ToDO:
|
||||||
|
#1: DONE: Spieler mit gleichem Namen dürfen sich nicht in einem Spiel befinden DONE
|
||||||
|
#2: DONE: Verschiedene Texte der Dorfbewohner (einschlafen) DONE
|
||||||
|
#3: DONE: Seher sollte gleich reloaden ... DONE
|
||||||
|
#4: DONE: Bei Anklagen nicht standardmäßig ein Spieler ausgewählt sein... DONE
|
||||||
|
#5: DONE: Bei der Abstimmung sollte ersichtlich sein, wieviele Stimmen jeder (Angeklagte) erhalten hat EVTL. DONE
|
||||||
|
#6: DONE: Wenn Bürgermeister in der Nacht stirbt, kommt es nicht zu einer neuen Abstimmung EVTL. DONE
|
||||||
|
#7: DONE: In showGameLog fehlen die Zeilenumbrüche ... DONE
|
||||||
|
#8: DONE: gameLog sollte auch wieder verborgen werden können ... DONE
|
||||||
|
#9: DONE: In gameLog werden keine Umlaute angezeigt ... DONE [Encoding auf ISO-8859-1 umgestellt]
|
||||||
|
#10: DONE: Der eigene Name sollte angezeigt werden ... DONE
|
||||||
|
#11: DONE: Es sollte dem Bürgermeister angezeigt werden, dass er Bürgermeister ist ... DONE
|
||||||
|
#12: DONE: Beim Starten eines neuen Spieles sollten alte Spiele gelöscht werden ...
|
||||||
|
#13: Javascript, das beim Spielerstellen anzeigt, wieviele Charaktere ausgewählt wurden ...
|
||||||
|
#14: Die Spieler, die nicht Spielleiter sind, sollten sehen können, welche Regeln ausgewählt wurden ...
|
||||||
|
#15: DONE: Bei der Stimmenanzahl soll erkennbar sein, dass der Bürgermeister 2 Stimmen hat [EDIT: bzw. 1,5]
|
||||||
|
#16: DONE: Paranormalen Ermittler hinzufügen
|
||||||
|
#17: DONE: Alten Mann hinzufügen
|
||||||
|
#18: Trunkenbold hinzufügen
|
||||||
|
#19: Amulett des Schutzes hinzufügen
|
||||||
|
#20: Wolfsjunges hinzufügen
|
||||||
|
#21: Einsamen Wolf hinzufügen
|
||||||
|
#22: DONE: Lykantrophen hinzufügen
|
||||||
|
#23: DONE: Bürgermeister nur 1/2 Stimme geben, Fixen, dass Abstimmungen nicht zu früh abgebrochen werden.
|
||||||
|
#24: Abstimmungsergebnis anzeigen
|
||||||
|
#25: DONE: Bug beim Entfernen von Spielern
|
||||||
|
#26: Spieler sollten unter dem Spiel das Spiel verlassen können
|
||||||
|
#27: DONE: Den Verstorbenen eine Liste aller Spieler anzeigen
|
||||||
|
#28: Kultführer hinzufügen
|
||||||
|
#29: Strolch hinzufügen
|
||||||
|
#30: DONE: SQL injection unterbinden
|
||||||
|
#31: Hintergrundgrafik (verschieden Tag/Nacht)
|
||||||
|
#31: DONE: Als Option machen, dass niemand erfährt, wie die Charaktere verteilt sind
|
||||||
|
#32: Wenn jemand während des Spiels aussteigt, sollte das Spiel damit zurechtkommen
|
||||||
|
#33: DONE: Wenn einer der Verliebten stirbt, sollten beide am Tag auf der Totenliste erscheinen
|
||||||
|
#34: DONE: Beim Spielbeitritt sollte jeder Spieler ein vom Server zugeteiltes persönliches Passwort bekommen (Cookie), dass sich niemand anders für ihn ausgeben kann.
|
||||||
|
#35: DONE: Idiot und Pazifist hinzufügen [EDIT: Umbenennung von Idiot in Mordlustiger]
|
||||||
|
#36: DONE: "Seher" hinzufügen, der eine Identität überprüfen kann --> der "Spion"
|
||||||
|
#37: DONE: Umbenennen von Leibwächter in Beschützer
|
||||||
|
#38: DONE: Umbenennen von Idiot in Mordlustige(r)
|
||||||
|
#39: DONE: Timer einfügen, ab wann die Abstimmung am Tag zu keinem Ergebnis führt
|
||||||
|
#40: DONE: Timer einfügen, ab wann die Werwölfe nicht mehr einstimmig abstimmen müssen, zweiten Timer, ab wann kein Opfer gewählt wird
|
||||||
|
#41: Funktion für alle Buttons erstellen, dass die Buttons in Zukunft leicht mit Grafik ausgetauscht werdne können
|
||||||
|
#42: DONE: Timereinstellungen in den Spieleinstellungen bearbeiten können
|
||||||
|
#43: Zeige im Log an, wer wen anklagt
|
||||||
|
#44: DONE: Charaktere und Phasen durch Konstanten ersetzt, die in constants.php definiert werden
|
||||||
|
#45: DONE: Verbiete, dass sich jemand wie ein Charakter nennt (WERWOLF, HEXE, AMOR)
|
||||||
|
#46: Bots hinzufügen, die von einem "BotController"="Spieler, der für refreshen zuständig ist" zB ein Laptop
|
||||||
|
#47: DONE: Umstellen der Farben ermöglichen (v1.0.1, 30.12.2019)
|
||||||
|
*/
|
||||||
@@ -16,7 +16,7 @@ You can find the corresponding setting "output_buffering" in the php.ini file. S
|
|||||||
|
|
||||||
You also need a database called "werwolf", you do not need to insert any tables, this is done by the script automatically.
|
You also need a database called "werwolf", you do not need to insert any tables, this is done by the script automatically.
|
||||||
|
|
||||||
Rename 'includes.example.php' to 'includes.php' and insert your id, passwort and host.
|
Rename 'includes.example.php' in the 'includes'-folder to 'includes.php' and insert your id, passwort and host.
|
||||||
|
|
||||||
If you want to use a different database name, you can change it in 'includes.php'.
|
If you want to use a different database name, you can change it in 'includes.php'.
|
||||||
|
|
||||||
@@ -36,6 +36,6 @@ Die Einstellung findet man in der php.ini Datei unter "output_buffering". Ein We
|
|||||||
|
|
||||||
Die Datenbank muss keine Tabellen enthalten, die werden vom php Skript selbst erstellt.
|
Die Datenbank muss keine Tabellen enthalten, die werden vom php Skript selbst erstellt.
|
||||||
|
|
||||||
Benenne 'includes.example.php' in 'includes.php' um und füge id, passwort und host für die Anmeldung in der Datenbank hinzu!
|
Benenne 'includes.example.php' im 'includes'-Ordner in 'includes.php' um und füge id, passwort und host für die Anmeldung in der Datenbank hinzu!
|
||||||
|
|
||||||
Es kann natürlich auch ein anderer Name für die Datenbank verwendet werden. Die zugehörige Einstellung kann in 'includes.php' vorgenommen werden.
|
Es kann natürlich auch ein anderer Name für die Datenbank verwendet werden. Die zugehörige Einstellung kann in 'includes.php' vorgenommen werden.
|
||||||
|
|||||||
2806
Werwolf.php
2806
Werwolf.php
File diff suppressed because it is too large
Load Diff
@@ -1,41 +0,0 @@
|
|||||||
<?php
|
|
||||||
//Constants
|
|
||||||
define("_VERSION","v1.2.3");
|
|
||||||
define("_LISTMAXRELOADTIME",3000);
|
|
||||||
|
|
||||||
//Phasen
|
|
||||||
define ("PHASESETUP",0);
|
|
||||||
define ("PHASESPIELSETUP",1);
|
|
||||||
define ("PHASENACHTBEGINN",2);
|
|
||||||
define ("PHASENACHT1",3);
|
|
||||||
define ("PHASENACHT2",4);
|
|
||||||
define ("PHASENACHT3",5);
|
|
||||||
define ("PHASENACHT4",6);
|
|
||||||
define ("PHASENACHT5",7);
|
|
||||||
define ("PHASENACHTENDE",8);
|
|
||||||
define ("PHASETOTEBEKANNTGEBEN",9);
|
|
||||||
define ("PHASEBUERGERMEISTERWAHL",10);
|
|
||||||
define ("PHASEDISKUSSION",11);
|
|
||||||
define ("PHASEANKLAGEN",12);
|
|
||||||
define ("PHASEABSTIMMUNG",13);
|
|
||||||
define ("PHASESTICHWAHL",14);
|
|
||||||
define ("PHASENACHABSTIMMUNG",15);
|
|
||||||
define ("PHASESIEGEREHRUNG",16);
|
|
||||||
|
|
||||||
//Charaktere
|
|
||||||
define ("CHARKEIN",0);
|
|
||||||
define ("CHARDORFBEWOHNER",1);
|
|
||||||
define ("CHARWERWOLF",2);
|
|
||||||
define ("CHARSEHER",3);
|
|
||||||
define ("CHARHEXE",4);
|
|
||||||
define ("CHARJAEGER",5);
|
|
||||||
define ("CHARAMOR",6);
|
|
||||||
define ("CHARBESCHUETZER",7);
|
|
||||||
define ("CHARPARERM",8);
|
|
||||||
define ("CHARLYKANTROPH",9);
|
|
||||||
define ("CHARSPION",10);
|
|
||||||
define ("CHARMORDLUSTIGER",11);
|
|
||||||
define ("CHARPAZIFIST",12);
|
|
||||||
define ("CHARALTERMANN",13);
|
|
||||||
define ("CHARURWOLF",14);
|
|
||||||
?>
|
|
||||||
@@ -1,16 +1,46 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
include "includes.php";
|
/*
|
||||||
|
|
||||||
|
werwolfonline, a php web game
|
||||||
|
Copyright (C) 2023
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
include "includes/includes.php";
|
||||||
header("Content-Type: text/html; charset=utf-8");
|
header("Content-Type: text/html; charset=utf-8");
|
||||||
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
|
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
|
||||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
|
|
||||||
$spielID = (int)$_GET['game'];
|
$spielID = (int)$_GET['game'];
|
||||||
|
$id = (int)$_GET['id'];
|
||||||
|
$verifizierungsNr = (int)$_COOKIE['verifizierungsnr'];
|
||||||
|
|
||||||
|
// Verifizieren, dass es sich um einen spieler des spiels handelt
|
||||||
|
$meinSpieler = $mysqli->query("SELECT 1 FROM ".$spielID."_spieler WHERE id = $id AND verifizierungsnr = $verifizierungsNr");
|
||||||
|
if ($meinSpieler->num_rows != 1)
|
||||||
|
{
|
||||||
|
die("<p class='error'>Sie sind momentan nicht mit diesem Spiel verknüpft!</p>");
|
||||||
|
}
|
||||||
|
|
||||||
if ($Result = $mysqli->query("SELECT * FROM ".$spielID."_game"))
|
if ($Result = $mysqli->query("SELECT * FROM ".$spielID."_game"))
|
||||||
{
|
{
|
||||||
$temp = $Result->fetch_assoc();
|
$temp = $Result->fetch_assoc();
|
||||||
echo $temp['log'];
|
echo $temp['log'];
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
<?php
|
|
||||||
$id = "id"; // Ihre ID zum MySQL Server
|
|
||||||
$pw = "pw"; // Passwort zum MySQL Server
|
|
||||||
$host = "localhost"; // Host ("localhost" oder "IP-Adresse")
|
|
||||||
$db = "werwolf"; // Name Ihrer Datenbank
|
|
||||||
$mysqli = new MySQLi(
|
|
||||||
$host,
|
|
||||||
$id,
|
|
||||||
$pw,
|
|
||||||
$db
|
|
||||||
);
|
|
||||||
|
|
||||||
if (mysqli_connect_errno()) {
|
|
||||||
/*printf(
|
|
||||||
"Can't connect to MySQL Server. Errorcode: %s\n",
|
|
||||||
mysqli_connect_error()
|
|
||||||
);*/
|
|
||||||
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
70
includes/constants.php
Normal file
70
includes/constants.php
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
werwolfonline, a php web game
|
||||||
|
Copyright (C) 2023
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
//Settings:
|
||||||
|
define ("_NOGAMECREATIONERRORMESSAGE", ""); //Falls nicht "": Kein Spiel kann erstellt werden, stattdessen wird der string angezeigt.
|
||||||
|
//define ("_NOGAMECREATIONERRORMESSAGE", "Wartungsarbeiten bis ..."); //Falls nicht "": Kein Spiel kann erstellt werden, stattdessen wird der string angezeigt.
|
||||||
|
define("_LISTMAXRELOADTIME",3000);
|
||||||
|
define("_MAXPLAYERS",50);
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////
|
||||||
|
// Constants, do not change!
|
||||||
|
///////////////////////////////////
|
||||||
|
define("_VERSION","v1.2.10");
|
||||||
|
|
||||||
|
//Phasen
|
||||||
|
define ("PHASESETUP",0);
|
||||||
|
define ("PHASESPIELSETUP",1);
|
||||||
|
define ("PHASENACHTBEGINN",2);
|
||||||
|
define ("PHASENACHT1",3);
|
||||||
|
define ("PHASENACHT2",4);
|
||||||
|
define ("PHASENACHT3",5);
|
||||||
|
define ("PHASENACHT4",6);
|
||||||
|
define ("PHASENACHT5",7);
|
||||||
|
define ("PHASENACHTENDE",8);
|
||||||
|
define ("PHASETOTEBEKANNTGEBEN",9);
|
||||||
|
define ("PHASEBUERGERMEISTERWAHL",10);
|
||||||
|
define ("PHASEDISKUSSION",11);
|
||||||
|
define ("PHASEANKLAGEN",12);
|
||||||
|
define ("PHASEABSTIMMUNG",13);
|
||||||
|
define ("PHASESTICHWAHL",14);
|
||||||
|
define ("PHASENACHABSTIMMUNG",15);
|
||||||
|
define ("PHASESIEGEREHRUNG",16);
|
||||||
|
|
||||||
|
//Charaktere
|
||||||
|
define ("CHARKEIN",0);
|
||||||
|
define ("CHARDORFBEWOHNER",1);
|
||||||
|
define ("CHARWERWOLF",2);
|
||||||
|
define ("CHARSEHER",3);
|
||||||
|
define ("CHARHEXE",4);
|
||||||
|
define ("CHARJAEGER",5);
|
||||||
|
define ("CHARAMOR",6);
|
||||||
|
define ("CHARBESCHUETZER",7);
|
||||||
|
define ("CHARPARERM",8);
|
||||||
|
define ("CHARLYKANTROPH",9);
|
||||||
|
define ("CHARSPION",10);
|
||||||
|
define ("CHARMORDLUSTIGER",11);
|
||||||
|
define ("CHARPAZIFIST",12);
|
||||||
|
define ("CHARALTERMANN",13);
|
||||||
|
define ("CHARURWOLF",14);
|
||||||
|
?>
|
||||||
2166
includes/functions.php
Normal file
2166
includes/functions.php
Normal file
File diff suppressed because it is too large
Load Diff
42
includes/includes.example.php
Normal file
42
includes/includes.example.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
|
||||||
|
werwolfonline, a php web game
|
||||||
|
Copyright (C) 2023
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
$id = "id"; // Ihre ID (username) zum MySQL Server
|
||||||
|
$pw = "pw"; // Passwort zum MySQL Server
|
||||||
|
$host = "localhost"; // Host ("localhost" oder "IP-Adresse")
|
||||||
|
$db = "werwolf"; // Name Ihrer Datenbank
|
||||||
|
$mysqli = new MySQLi(
|
||||||
|
$host,
|
||||||
|
$id,
|
||||||
|
$pw,
|
||||||
|
$db
|
||||||
|
);
|
||||||
|
|
||||||
|
if (mysqli_connect_errno()) {
|
||||||
|
/*printf(
|
||||||
|
"Can't connect to MySQL Server. Errorcode: %s\n",
|
||||||
|
mysqli_connect_error()
|
||||||
|
);*/
|
||||||
|
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -1,22 +1,49 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
werwolfonline, a php web game
|
||||||
|
Copyright (C) 2023
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
include "includes/includes.php";
|
||||||
|
include "includes/constants.php";
|
||||||
|
|
||||||
include "includes.php";
|
|
||||||
include "constants.php";
|
|
||||||
header("Content-Type: text/html; charset=utf-8");
|
header("Content-Type: text/html; charset=utf-8");
|
||||||
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
|
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
|
||||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
|
|
||||||
$spielID = (int)$_GET['game'];
|
$spielID = (int)$_GET['game'];
|
||||||
$id = (int)$_GET['id'];
|
$id = (int)$_GET['id'];
|
||||||
|
$verifizierungsNr = (int)$_COOKIE['verifizierungsnr'];
|
||||||
|
|
||||||
$trennzeichen = "$"; //Das Zeichen, auf das im Skript responded wird
|
$trennzeichen = "$"; //Das Zeichen, auf das im Skript responded wird
|
||||||
|
|
||||||
|
$meinSpieler = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id AND verifizierungsnr = $verifizierungsNr");
|
||||||
|
if ($meinSpieler->num_rows != 1)
|
||||||
|
{
|
||||||
|
die("<p class='error'>Sie sind momentan nicht mit diesem Spiel verknüpft!</p>");
|
||||||
|
}
|
||||||
|
|
||||||
//Reloaded eine Liste, erfordert komplexeren Code als reload.php
|
// Reloaded eine Liste, erfordert komplexeren Code als reload.php
|
||||||
//Die Liste, die reloaded wird ist unterschiedlich, je nach Spielphase und eigenem Charakter
|
// Die Liste, die reloaded wird ist unterschiedlich, je nach Spielphase und eigenem Charakter
|
||||||
//Wenn reload gesetzt ist, wird außerdem geschaut, ob ich reloaden muss!
|
// Wenn reload gesetzt ist, wird außerdem geschaut, ob ich reloaden muss!
|
||||||
$ichLebe = false;
|
$ichLebeQ = $meinSpieler->fetch_assoc();
|
||||||
$ichLebeQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id");
|
|
||||||
$ichLebeQ = $ichLebeQ->fetch_assoc();
|
|
||||||
if (isset($_GET['reload']))
|
if (isset($_GET['reload']))
|
||||||
{
|
{
|
||||||
if ($ichLebeQ['reload'] == 1 && $_GET['reload'] == 1)
|
if ($ichLebeQ['reload'] == 1 && $_GET['reload'] == 1)
|
||||||
@@ -29,14 +56,15 @@
|
|||||||
echo "0";
|
echo "0";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ichLebe = false;
|
||||||
if ($ichLebeQ['lebt'] == 1)
|
if ($ichLebeQ['lebt'] == 1)
|
||||||
$ichLebe = true;
|
$ichLebe = true;
|
||||||
|
|
||||||
|
|
||||||
$spielRes = $mysqli->Query("SELECT * FROM $spielID"."_game");
|
$spielRes = $mysqli->Query("SELECT * FROM $spielID"."_game");
|
||||||
$spielAss = $spielRes->fetch_assoc();
|
$spielAss = $spielRes->fetch_assoc();
|
||||||
$phase = $spielAss['spielphase'];
|
$phase = $spielAss['spielphase'];
|
||||||
|
|
||||||
$text = "";
|
$text = "";
|
||||||
if ($ichLebe || $phase <= PHASESPIELSETUP || $phase >= PHASESIEGEREHRUNG)
|
if ($ichLebe || $phase <= PHASESPIELSETUP || $phase >= PHASESIEGEREHRUNG)
|
||||||
{
|
{
|
||||||
@@ -47,7 +75,7 @@
|
|||||||
{
|
{
|
||||||
//Sende vorgefertigte Antwort!
|
//Sende vorgefertigte Antwort!
|
||||||
echo $spielAss['list_lebe'];
|
echo $spielAss['list_lebe'];
|
||||||
die;
|
die;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($phase == PHASESETUP)
|
if ($phase == PHASESETUP)
|
||||||
@@ -92,13 +120,13 @@
|
|||||||
//Schaue nach, ob ich Werwolf bin
|
//Schaue nach, ob ich Werwolf bin
|
||||||
$myRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id");
|
$myRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $id");
|
||||||
$myAssoc = $myRes->fetch_assoc();
|
$myAssoc = $myRes->fetch_assoc();
|
||||||
if ($myAssoc['nachtIdentitaet'] == CHARWERWOLF || $myAssoc['nachtIdentitaet'] == CHARURWOLF)
|
if ($myAssoc['nachtIdentitaet'] == CHARWERWOLF || $myAssoc['nachtIdentitaet'] == CHARURWOLF)
|
||||||
{
|
{
|
||||||
//Ich bin Werwolf --> Liste der (lebenden) Werwölfe
|
//Ich bin Werwolf --> Liste der (lebenden) Werwölfe
|
||||||
$spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler");
|
$spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler");
|
||||||
while ($temp = $spielerRes->fetch_assoc())
|
while ($temp = $spielerRes->fetch_assoc())
|
||||||
{
|
{
|
||||||
|
|
||||||
if (($temp['nachtIdentitaet']==CHARWERWOLF || $temp['nachtIdentitaet']==CHARURWOLF) && $temp['lebt']==1)
|
if (($temp['nachtIdentitaet']==CHARWERWOLF || $temp['nachtIdentitaet']==CHARURWOLF) && $temp['lebt']==1)
|
||||||
{
|
{
|
||||||
if ($temp['wahlAuf']==-1)
|
if ($temp['wahlAuf']==-1)
|
||||||
@@ -111,7 +139,7 @@
|
|||||||
echo $trennzeichen.$temp['name']." (wach): ".$nameAssoc['name'].$trennzeichen."1";
|
echo $trennzeichen.$temp['name']." (wach): ".$nameAssoc['name'].$trennzeichen."1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
die;
|
die;
|
||||||
@@ -165,7 +193,7 @@
|
|||||||
$buergermeisterText = " + Stimme des Bürgermeisters";
|
$buergermeisterText = " + Stimme des Bürgermeisters";
|
||||||
$text.= $trennzeichen.$temp['name'].", normale Stimmen: ".$stimmenRes->num_rows.$buergermeisterText.$trennzeichen."2";
|
$text.= $trennzeichen.$temp['name'].", normale Stimmen: ".$stimmenRes->num_rows.$buergermeisterText.$trennzeichen."2";
|
||||||
}
|
}
|
||||||
|
|
||||||
//Dann zeige an, wer für wen gestimmt hat
|
//Dann zeige an, wer für wen gestimmt hat
|
||||||
$spielerRes2 = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
|
$spielerRes2 = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
|
||||||
while ($temp = $spielerRes2->fetch_assoc())
|
while ($temp = $spielerRes2->fetch_assoc())
|
||||||
@@ -197,7 +225,7 @@
|
|||||||
$buergermeisterText = " + Stimme des Bürgermeisters";
|
$buergermeisterText = " + Stimme des Bürgermeisters";
|
||||||
$text.= $trennzeichen.$temp['name'].", normale Stimmen: ".$stimmenRes->num_rows.$buergermeisterText.$trennzeichen."2";
|
$text.= $trennzeichen.$temp['name'].", normale Stimmen: ".$stimmenRes->num_rows.$buergermeisterText.$trennzeichen."2";
|
||||||
}
|
}
|
||||||
|
|
||||||
//Dann zeige an, wer für wen gestimmt hat
|
//Dann zeige an, wer für wen gestimmt hat
|
||||||
$spielerRes2 = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
|
$spielerRes2 = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
|
||||||
while ($temp = $spielerRes2->fetch_assoc())
|
while ($temp = $spielerRes2->fetch_assoc())
|
||||||
@@ -224,7 +252,7 @@
|
|||||||
{
|
{
|
||||||
//Sende vorgefertigte Antwort!
|
//Sende vorgefertigte Antwort!
|
||||||
echo $spielAss['list_tot'];
|
echo $spielAss['list_tot'];
|
||||||
die;
|
die;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$rueckgabe = "";
|
$rueckgabe = "";
|
||||||
@@ -255,13 +283,13 @@
|
|||||||
break;
|
break;
|
||||||
case PHASEABSTIMMUNG:
|
case PHASEABSTIMMUNG:
|
||||||
$text = "Abstimmung";
|
$text = "Abstimmung";
|
||||||
break;
|
break;
|
||||||
case PHASESTICHWAHL:
|
case PHASESTICHWAHL:
|
||||||
$text = "Stichwahl";
|
$text = "Stichwahl";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$rueckgabe.= $trennzeichen.$text.$trennzeichen."3";
|
$rueckgabe.= $trennzeichen.$text.$trennzeichen."3";
|
||||||
|
|
||||||
$spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
|
$spielerRes = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
|
||||||
while ($temp = $spielerRes->fetch_assoc())
|
while ($temp = $spielerRes->fetch_assoc())
|
||||||
{
|
{
|
||||||
@@ -308,8 +336,8 @@
|
|||||||
$identitaet = "Alte(r)";
|
$identitaet = "Alte(r)";
|
||||||
break;
|
break;
|
||||||
case CHARURWOLF:
|
case CHARURWOLF:
|
||||||
$identitaet = "Urwolf/Urwölfin";
|
$identitaet = "Urwolf/Urwölfin";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//Eine Liste aller aktiver Spieler anzeigen
|
//Eine Liste aller aktiver Spieler anzeigen
|
||||||
//zuerst alle Lebenden anzeigen
|
//zuerst alle Lebenden anzeigen
|
||||||
@@ -354,7 +382,7 @@
|
|||||||
{
|
{
|
||||||
$rueckgabe.= $trennzeichen.$temp['name']." ($identitaet)".$trennzeichen."0";
|
$rueckgabe.= $trennzeichen.$temp['name']." ($identitaet)".$trennzeichen."0";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Dann alle Toten anzeigen
|
//Dann alle Toten anzeigen
|
||||||
@@ -404,22 +432,22 @@
|
|||||||
$identitaet = "Alte(r)";
|
$identitaet = "Alte(r)";
|
||||||
break;
|
break;
|
||||||
case CHARURWOLF:
|
case CHARURWOLF:
|
||||||
$identitaet = "Urwolf/Urwölfin";
|
$identitaet = "Urwolf/Urwölfin";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//Eine Liste aller aktiver Spieler anzeigen
|
//Eine Liste aller aktiver Spieler anzeigen
|
||||||
//zuerst alle Lebenden anzeigen
|
//zuerst alle Lebenden anzeigen
|
||||||
|
|
||||||
$rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, tot)".$trennzeichen."4";
|
$rueckgabe.= $trennzeichen.$temp['name']." ($identitaet, tot)".$trennzeichen."4";
|
||||||
|
|
||||||
}
|
}
|
||||||
$mysqli->Query("UPDATE $spielID"."_game SET `list_tot` = '$rueckgabe', `list_tot_aktualisiert` = ". (int)(microtime(true)*1000));
|
$mysqli->Query("UPDATE $spielID"."_game SET `list_tot` = '$rueckgabe', `list_tot_aktualisiert` = ". (int)(microtime(true)*1000));
|
||||||
echo $rueckgabe;
|
echo $rueckgabe;
|
||||||
}
|
}
|
||||||
|
|
||||||
//0: schwarz
|
//0: schwarz
|
||||||
//1: grün
|
//1: grün
|
||||||
//2: rot
|
//2: rot
|
||||||
//3: schwarz groß
|
//3: schwarz groß
|
||||||
//4: grau
|
//4: grau
|
||||||
?>
|
?>
|
||||||
|
|||||||
30
reload.php
30
reload.php
@@ -1,15 +1,37 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
|
||||||
|
werwolfonline, a php web game
|
||||||
|
Copyright (C) 2023
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
*/
|
||||||
|
include "includes/includes.php";
|
||||||
|
|
||||||
header("Content-Type: text/html; charset=utf-8");
|
header("Content-Type: text/html; charset=utf-8");
|
||||||
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
|
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
|
||||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
include "includes.php";
|
|
||||||
$spielID = (int)$_GET['game'];
|
$spielID = (int)$_GET['game'];
|
||||||
$id = (int)$_GET['id'];
|
$id = (int)$_GET['id'];
|
||||||
if ($Result = $mysqli->query("SELECT * FROM ".$spielID."_spieler WHERE id = $id"))
|
$verifizierungsNr = (int)$_COOKIE['verifizierungsnr'];
|
||||||
|
|
||||||
|
if ($Result = $mysqli->query("SELECT * FROM ".$spielID."_spieler WHERE id = $id AND verifizierungsnr = $verifizierungsNr"))
|
||||||
{
|
{
|
||||||
$temp = $Result->fetch_assoc();
|
$temp = $Result->fetch_assoc();
|
||||||
echo $temp['reload'];
|
echo $temp['reload'];
|
||||||
}
|
}
|
||||||
|
?>
|
||||||
?>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user