$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"; $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 // 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 ..) /** * Berechnet ein Kampf zwischen zwei chars * @param int $char1_id die id des ersten chars * @param int $char2_id die id des zweiten chars * @param String $art der name des turniers (für die sql-Anfrage wichtig) * @param int $round rundennummer (0,1,2...) * @return int die id des siegenden chars */ function turnierfight($char1_id, $char2_id, $art_1, $round){ // Gotta replace this later -.- echo 'Fight between '.$char1_id.' und '.$char2_id; $chara_1 = getChar($char1_id); // ohne Equip für Turniere!! $chara_2 = getChar($char2_id); // ohne Equip für Turniere!! //$chara_1 = getCharWithBuffs($char1_id); // Equip für Turniere!! //$chara_2 = getCharWithBuffs($char2_id); // Equip für Turniere!! include "turnier_kampf.php"; echo ', Sieger '.$sieger.'
'; // in $sieger steht die id des gewinners if($char1_id == $sieger){ return $char1_id; } return $char2_id; } // 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; } } mysql_query('DELETE FROM turnier_kampf WHERE art=\''.$name.'\''); // Es sollen keine NPC mitmachen :) und nicht die Spezial Wanted NPCs $auswahl_kriteria = ' rasse != \'NPC\' '; $auswahl_kriteria .= ' AND besitzer!=2 '; if($fusion != 1){ $auswahl_kriteria .= ' AND fusion=\'nein\' '; } if($special != 1){ $auswahl_kriteria .= ' AND char_type = \'\' '; } 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 = mysql_query($sql); $row = mysql_fetch_assoc($qry); if($row['anzahl'] < $anzahl){ echo $name.' konnte nicht gestartet werden, da es nur '.$row['anzahl'].' von '.$anzahl.' nötigen Chars gibt!
'; exit; } // 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 = mysql_query($sql); while($row = mysql_fetch_assoc($qry)){ $cid[] = $row['id']; } mysql_query('DELETE FROM turnier1 WHERE art = \''.$name.'\''); // 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 = mysql_query($sql); while(($row = mysql_fetch_assoc($qry)) && count($cid) < $anzahl){ // echo $row['id'].'
'; $cid[] = $row['id']; } //print_r($cid); $sql = 'SELECT id FROM chars WHERE id IN('.join(', ',$cid).') ORDER BY RAND()'; // Mischen der Teilnehmer //echo $sql.'
'; $qry = mysql_query($sql); $char_array = array(); while($row = mysql_fetch_assoc($qry)){ $char_array[] = $row['id']; } // 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 // Beginn der Endrunde while(count($char_array) > 1){ // Solange bis nur ein Char übrig bleibt $n_chars = array(); for($i=0;$i'; $n_chars[] = turnierfight($char_array[$i], $char_array[$i+1], $name, $round); } // echo 'nxt round
'; $round++; if($randomize == 1) { shuffle($n_chars); } $char_array = $n_chars; } ?>