$v){
if ($k==0) continue;
$it = explode("=",$argv[$k]);
// echo $it[0].'='.$it[1].'('.$argv[$k].')'."\n";
if (isset($it[1])) $_GET[$it[0]] = $it[1];
}
}
//set_time_limit(0);
//include "db.php";
//include "inclu/char.inc.php";
include('db.php');
include('path.inc.php');
include_once (ROOT_PATH.'/include/sqlwrapper.inc.php');
include_once(ROOT_PATH.'/include/char.inc.php');
include_once(ROOT_PATH.'/include/rassen.inc.php');
include_once(ROOT_PATH.'/include/define.inc.php');
include_once(ROOT_PATH.'/include/event.inc.php');
defineIfNotDefined('ATTACK_SET_TOURNAMENT', 1);
defineIfNotDefined('TOURNAMENT_FIGHT_DURATION', 5);
$name = $_GET['name']; // Name des Turniers (benötigt)
$anzahl = $_GET['anzahl']; // Anzahl (benötigt)
if(is_null($name)){
echo 'Kein Name für Turnier angegeben!
';
exit;
}
// Auswahlkriterien
$fusion = $_GET['fusion']; // 1 für erlaubt
$special = $_GET['special']; // Spezialchars 1 für erlaubt
$minlevel = $_GET['minlevel']; // selbsterklärend
$maxlevel = $_GET['maxlevel']; // selbsterklärend
$gain = $_GET['gain']; // ('Anmeldung', 'PL', 'Level')
$randomize = $_GET['randomize']; // 1 für nach jeder Runde die reihenfolge setzen
$itemless = $_GET['itemless']; // gibt an ob das turnier die items ingorieren soll (standard sind items aktiv)
$npc = $_GET['npc'];
// Turniereigenschaften
$gruppenphase = $_GET['gruppenphase']; // Flag für Gruppenphase (1 für aktiv)
$grp_size = $_GET['grp_size']; // Anzahl der Teilnehmer in einer Gruppe
$grp_proceed = $_GET['grp_proceed']; // Anzahl der Teilnehmer die Gruppenphase verlassen (1 nur Sieger, 2 Sieger und Zweiter ..)
// Auswerten der Eingaben
if($gruppenphase == 1){
if(is_null($grp_size)){ // Wenn es nicht gesetzt ist
$grp_size = 4; // Default: 4 in einer Gruppe
}
if(is_null($grp_proceed)){ // Wenn es nicht gesetzt ist
$grp_proceed = 1; // Default: Nur Sieger kommt weiter
}
// Berechne ob die Angegebene Anzahl passt (Anzahl muss durch grp_size teilbar und Ergebnis eine 2er Potenz sein)
$count_groups = round($anzahl / $grp_size);
$loga = log($count_groups * $grp_proceed, 2) ;
if($anzahl % $grp_size != 0 || $loga != round($loga)){
echo 'Parameter der Gruppenphasen sind ungültig!
';
}
echo 'Gruppenphasen werden leider noch nicht unterstützt
';
exit;
} else{
$loga = log($anzahl, 2) ;
if($loga != round($loga)){
echo 'Die Anzahl der Teilnehmer ist ungültig (Muss eine 2er Potenz sein)!
';
exit;
}
}
$race_type = getRaceTypeName("NPC");
$auswahl_kriteria = '1';
if($fusion != 1){
$auswahl_kriteria .= ' AND fusion_rasse = \'0\' ';
}
// Es sollen keine NPC mitmachen :) und nicht die Spezial Wanted NPCs
$exclude_race_ids = array();
if($special != 1){
$races = getSpecialRaceIds();
$npc_race = getRaceTypeName('NPC'); // do not remove npc (there is a separate setting for this)
foreach($races as $race) {
if($race['type'] != $npc_race['id']) {
$exclude_race_ids[] = '\''.$race['id'].'\'';
}
}
}
if($npc != 1) {
$npc_race = getRaceTypeName('NPC'); // do not remove npc (there is a separate setting for this)
$races = getRacesByType($npc_race); // remove all NPC
foreach($races as $race) {
$exclude_race_ids[] = '\''.$race['id'].'\'';
}
}
if(count($exclude_race_ids)) {
$auswahl_kriteria .= ' AND rasse NOT IN('.implode(',',$exclude_race_ids).') ';
}
if(is_numeric($minlevel)){
$auswahl_kriteria .= ' AND level >= '.$minlevel.' ';
}
if(is_numeric($maxlevel)){
$auswahl_kriteria .= ' AND level <= '.$maxlevel.' ';
}
// Erstma checken ob es überhaupt genug chars gibt ;)
$sql = 'SELECT count(*) as anzahl from chars where '.$auswahl_kriteria;
echo $sql.'
';
$qry = db_query($sql);
$row = mysqli_fetch_assoc($qry);
if($row['anzahl'] < $anzahl){
echo $name.' konnte nicht mit '.$anzahl.' Chars gestartet werden, da es nur '.$row['anzahl'].' von '.$anzahl.' nötigen Chars gibt!
';
$anzahl = pow(2, floor(log($row['anzahl'], 2)));
echo $name.' wird nun mit '.$anzahl.' Chars gestartet!
';
}
// Erstma nur die id auslesen (danach wird eh nochmal gemischt ;))
$cid = array();
if($gain == 'Anmeldung'){
$sql = 'SELECT charakter as id FROM turnier1 t WHERE art = \''.$name.'\'';
$qry = db_query($sql);
while($row = mysqli_fetch_assoc($qry)){
$cid[] = $row['id'];
}
$sql = 'DELETE FROM turnier1 WHERE art = \''.$name.'\'';
// echo $sql .'
';
db_query($sql); // Lösche die Anmeldungsliste
if(count($cid) > 0){
$sql = 'SELECT id FROM chars where '.$auswahl_kriteria.' and id NOT IN('.join(',',$cid).') ORDER BY RAND()';
} else {
// Turnier is voll!
$sql = 'SELECT id FROM chars where '.$auswahl_kriteria.' ORDER BY RAND()';
}
} else if($gain == 'PL'){
// Die Buffs werden nicht zur PL gezählt ;)
$sql = 'SELECT id FROM chars where '.$auswahl_kriteria.' ORDER BY starke+verteidigung+speed+ausdauer+glueck desc';
} else if($gain == 'Level'){
$sql = 'SELECT id FROM chars where '.$auswahl_kriteria.' ORDER BY level desc';
} else{
echo 'Parameter gain war weder Anmeldung, PL noch Level
';
exit;
}
echo $sql.'
';
$qry = db_query($sql);
while(($row = mysqli_fetch_assoc($qry)) && count($cid) < $anzahl){
// echo $row['id'].'
';
$cid[] = $row['id'];
}
//print_r($cid);
$event_id = createEvent(EVENT_TURNIER);
db_query('INSERT into turniere(art, event_id) values("'.$name.'", '.$event_id.')');
$sql = 'SELECT id FROM chars WHERE id IN('.join(', ',$cid).') ORDER BY RAND()'; // Mischen der Teilnehmer
//echo $sql.'
';
$qry = db_query($sql);
$char_array = array();
while($row = mysqli_fetch_assoc($qry)){
$char_data = NULL;
if($itemless == 1) {
$char_data = getChar($row['id']); // ohne Equip für Turniere!!
} else {
$char_data = getCharWithBuffs($row['id']); // Equip für Turniere!!
}
addParticipant($event_id, $char_data);
$char_array[] = $char_data;
}
// So alle chars sind jetzt in den Arrays
$round = 1;
//print_r($chars);
//echo '
';
// Hier Gruppenphase berechnen und die Chars für die Endrunde in $chars speichern
$start_time = time();
$counter = 1;
$duration = TOURNAMENT_FIGHT_DURATION * 60;
// Beginn der Endrunde
while(count($char_array) > 1){ // Solange bis nur ein Char übrig bleibt
$n_chars = array();
for($i=0;$i $round));
if ($winner['id'] == $char_array[$i]['id']) {
$n_chars[] = $char_array[$i];
} else {
$n_chars[] = $char_array[$i+1];
}
// echo 'Berechne fight zwischen '.$char_array[$i].'und '.$char_array[$i+1].'('.$i.'/'.count($char_array).')
';
$counter++;
}
// echo 'nxt round
';
$round++;
if($randomize == 1) {
shuffle($n_chars);
}
$char_array = $n_chars;
}