[1 => 10, 20, 30, 40, 50, 60, 70, 80],
2 => [1 => 8, 15, 20, 30, 35, 45, 50, 60],
3 => [1 => 5, 10, 15, 20, 25, 30, 35, 40]];
function AddUserInTournament(int $id)
{
global $user;
$chek = mysql_fetch_row(mysql_query("select id from turnament where id=" . $id . " and old=0"));
if ($chek[0] == '') {
exit("Жаль, очень жаль....");
}
if (mysql_query("insert into turnamuser (idturnam,iduser,level) values(" . $id . "," . $user['id'] . "," . $user['level'] . ")")) {
mysql_query("update turnament set kolvo=kolvo+1 where id=" . $id);
echo "Регистрация пройдена!";
} else {
exit("Вы уже зарегистрированы.");
}
}
function DellUserInTournament(int $id)
{
global $user;
mysql_query("delete from turnamuser where idturnam=" . $id . " and iduser=" . $user['id']);
mysql_query("update turnament set kolvo=kolvo-1 where id=" . $id);
echo "Заявка отозвана
";
}
function fract($num = 0)
{
if (!is_float($num)) {
return false;
}
$out = explode('.', $num);
return $out[1];
}
function PrepearTournir()
{//запускается за час до начала турнира
for ($i = 1; $i < $this->MaxUserLevel; $i++) {
$uch = mysql_query("select id,iduser from turnamuser where loose=0 and idturnam=(select id from turnament where old=0 and level=" . $i . ") order by id desc");
$kol = mysql_num_rows($uch);
$cop = $kol;
if ($kol > 7) {
while (true) {
$stepen = log($cop) / log(2);
if (!$this->fract($stepen)) { //==false - дробная часть отсутствует
for ($j = 1; $j <= ($kol - $cop); $j++) {
$res = mysql_fetch_row($uch);
mysql_query("delete from turnamuser where id=" . $res[0]);
addchp('Внимание! На этой неделе Вам не нашлелся противник в турнире.
', '{[]}' . Nick::id($res[1])->short() . '{[]}');
}
mysql_query("update turnament set kolvo=kolvo-" . ($kol - $cop) . " where old=0 and level=" . $i);
break;
}
$cop--;
}
$CountUser = [];
while ($res = mysql_fetch_row($uch)) {
$CountUser[] = $res[1];
}
shuffle($CountUser);
for ($ii = 0; $ii < count($CountUser); $ii++) {
$user1 = $CountUser[$ii];
$user2 = $CountUser[++$ii];
mysql_query("insert into turnirbattle(userid,userid1,level,idtur) values(" . $user1 . "," . $user2 . "," . $i . ",(select id from turnament where old=0 and level=" . $i . "))");
addchp('Внимание! Подготовтесь к турниру.
', '{[]}' . Nick::id($user1)->short() . '{[]}');
addchp('Внимание! Подготовтесь к турниру.
', '{[]}' . Nick::id($user2)->short() . '{[]}');
}
} else {
//Если команда не набралась удалить из таблицы и поставить турниру статус 2
while ($res = mysql_fetch_row($uch)) {
mysql_query("delete from turnamuser where id=" . $res['0']);
addchp('Внимание!На этой неделе команда для турнира не набралась.
', '{[]}' . Nick::id($res[1])->short() . '{[]}');
}
mysql_query("delete from turnament where old=0 and level=" . $i);
}
}
}
// созает поединок между 2 юзерами
function MakeBattle($user1, $user2)
{
$res = mysql_fetch_array(mysql_query("select * from turnirbattle where userid=" . $user1 . " or userid1=" . $user1 . " limit 1"));
if ($res['userid1'] == $user1 && $res['badmaxweap1'] != 0) {
if ((time() - $res['badmaxweap1']) > 120) {
mysql_query("update turnamuser set loose=2, place=" . time() . " where iduser=" . $user1 . " and idturnam=" . $res['idtur']);
mysql_query("delete from turnirbattle where userid1=" . $user1);
addchp('Внимание!Вы выбыли из турнира
', '{[]}' . Nick::id($user1)->short() . '{[]}');
addchp('Внимание!Ваш противник отказался от боя. Техническая победа.
', '{[]}' . Nick::id($user2)->short() . '{[]}');
}
} elseif ($res['userid'] == $user2 && $res['badmaxweap'] != 0) {
if ((time() - $res['badmaxweap']) > 120) {
mysql_query("update turnamuser set loose=2, place=" . time() . " where iduser=" . $user2 . " and idturnam=" . $res['idtur']);
mysql_query("delete from turnirbattle where userid=" . $user2);
addchp('Внимание!Вы выбыли из турнира
', '{[]}' . Nick::id($user2)->short() . '{[]}');
addchp('Внимание!Ваш противник отказался от боя. Техническая победа.
', '{[]}' . Nick::id($user1)->short() . '{[]}');
}
} elseif ($res['userid'] == $user1 && $res['badmaxweap'] != 0) {
if ((time() - $res['badmaxweap']) > 120) {
mysql_query("update turnamuser set loose=2, place=" . time() . " where iduser=" . $user1 . " and idturnam=" . $res['idtur']);
mysql_query("delete from turnirbattle where userid=" . $user1);
addchp('Внимание!Вы выбыли из турнира
', '{[]}' . Nick::id($user1)->short() . '{[]}');
addchp('Внимание!Ваш противник отказался от боя. Техническая победа.
', '{[]}' . Nick::id($user2)->short() . '{[]}');
}
} elseif ($res['userid1'] == $user2 && $res['badmaxweap1'] != 0) {
if ((time() - $res['badmaxweap1']) > 120) {
mysql_query("update turnamuser set loose=2, place=" . time() . " where iduser=" . $user2 . " and idturnam=" . $res['idtur']);
mysql_query("delete from turnirbattle where userid1=" . $user2);
addchp('Внимание!Вы выбыли из турнира
', '{[]}' . Nick::id($user2)->short() . '{[]}');
addchp('Внимание!Ваш противник отказался от боя. Техническая победа.
', '{[]}' . Nick::id($user1)->short() . '{[]}');
}
} else {
//Если на человеке лишняя одежда написать чтобы снял поставить время ожидания 2 минуты
$Shmotuser = mysql_fetch_array(mysql_query("select * from users where id=" . $user1));
$Shmotuser1 = mysql_fetch_array(mysql_query("select * from users where id=" . $user2));
$PriceWeap = mysql_fetch_row(mysql_query("select cost from inventory where id=" . $Shmotuser['weap'] . " limit 1")) ?? [];
$PriceWeap1 = mysql_fetch_row(mysql_query("select cost from inventory where id=" . $Shmotuser1['weap'] . " limit 1")) ?? [];
if ($PriceWeap[0] > 16 || $Shmotuser['sergi'] != 0 || $Shmotuser['kulon'] != 0 || $Shmotuser['perchi'] != 0 || $Shmotuser['bron'] != 0 || $Shmotuser['r1'] != 0 || $Shmotuser['r2'] != 0 || $Shmotuser['r3'] != 0 || $Shmotuser['helm'] != 0 || $Shmotuser['shit'] != 0 || $Shmotuser['boots'] != 0 || $Shmotuser['stats'] != 0 || $Shmotuser['m1'] != 0 || $Shmotuser['m2'] != 0 || $Shmotuser['m3'] != 0 || $Shmotuser['m4'] != 0 || $Shmotuser['m5'] != 0 || $Shmotuser['m6'] != 0 || $Shmotuser['m7'] != 0 || $Shmotuser['m8'] != 0 || $Shmotuser['m9'] != 0 || $Shmotuser['m10'] != 0) {
if ($res['userid'] == $user1) {
mysql_query("update turnirbattle set badmaxweap=" . time() . " , checkuser=0 where userid=" . $user1);
}
if ($res['userid1'] == $user1) {
mysql_query("update turnirbattle set badmaxweap1=" . time() . " , checkuser2=0 where userid1=" . $user1);
}
addchp('Внимание!Оставьте оружие только до 16экр или оставьте только оружие.
', '{[]}' . Nick::id($user1)->short() . '{[]}');
} elseif ($PriceWeap1[0] > 16 || $Shmotuser1['sergi'] != 0 || $Shmotuser1['kulon'] != 0 || $Shmotuser1['perchi'] != 0 || $Shmotuser1['bron'] != 0 || $Shmotuser1['r1'] != 0 || $Shmotuser1['r2'] != 0 || $Shmotuser1['r3'] != 0 || $Shmotuser1['helm'] != 0 || $Shmotuser1['shit'] != 0 || $Shmotuser1['boots'] != 0 || $Shmotuser1['stats'] != 0 || $Shmotuser1['m1'] != 0 || $Shmotuser1['m2'] != 0 || $Shmotuser1['m3'] != 0 || $Shmotuser1['m4'] != 0 || $Shmotuser1['m5'] != 0 || $Shmotuser1['m6'] != 0 || $Shmotuser1['m7'] != 0 || $Shmotuser1['m8'] != 0 || $Shmotuser1['m9'] != 0 || $Shmotuser1['m10'] != 0) {
if ($res['userid'] == $user2) {
mysql_query("update turnirbattle set badmaxweap=" . time() . " , checkuser=0 where userid=" . $user2);
}
if ($res['userid1'] == $user2) {
mysql_query("update turnirbattle set badmaxweap1=" . time() . " , checkuser2=0 where userid1=" . $user2);
}
addchp('Внимание!Оставьте оружие только до 16экр или оставьте только оружие.
', '{[]}' . Nick::id($user2)->short() . '{[]}');
} else {
// генерим массив с командами
$teams = [];
$teams[$user1][$user2] = [0, 0, time()];
$teams[$user2][$user1] = [0, 0, time()];
//Востанавливаем HP
mysql_query("update users set hp=maxhp where id=" . $user1 . " or id=" . $user2);
// создаем битву
mysql_query("INSERT INTO `battle`(
`id`,`coment`,`teams`,`timeout`,`type`,`status`,`t1`,`t2`,`to1`,`to2`,`blood`)
VALUES(
NULL,'','" . serialize($teams) . "','3','1','0','" . $user1 . "','" . $user2 . "','" . time() . "','" . time() . "','0')");
// айди боя
$id = mysql_insert_id();
// кидаем в бой
mysql_query("UPDATE `users` SET `battle` = {$id} WHERE `id` = " . $user1 . " OR `id` = " . $user2);
// создаем лог
$rr = "" . Nick::id($user['id'])->full(1) . " и " . Nick::id($jert['id'])->full(1) . "";
addch("Бой между " . Nick::id($user['id'])->short() . " и " . Nick::id($jert['id'])->short() . " начался. ", $user->room);
addlog($id, "Часы показывали " . date("Y.m.d H.i") . ", когда " . $rr . " решили выяснить кто из них сильнее. (турнир)
");
return $id;
}
}
}
// функция проверки статуса боя
function CheckBattle($id)
{
// если по айдишнику возвращается
// 1 - победил USER1
// 2 - победил USER2
// 3 - бои идет
$res = mysql_fetch_array(mysql_query("SELECT `win` FROM `battle` WHERE `id` = " . (int)$id . " LIMIT 1;"));
return $res['win'];
}
function UpdateTournir()
{
for ($i = 1; $i < $this->MaxUserLevel; $i++) {
$sql = mysql_query("select * from turnirbattle where level=" . $i);
if (mysql_numrows($sql) == 0) {
$this->NextTournir($i);
$this->StartTournir($i);
} else {
echo "Для " . $i . " уровня игроков следующий этап турнира начнется после завершения следующих боёв:
";
}
while ($res = mysql_fetch_array($sql)) {
$win = $this->CheckBattle($res['battleid']);
if ($win == 1) {
mysql_query("update turnamuser set place=" . time() . ", loose=loose+1 where iduser=" . $res['userid1']);
mysql_query("update turnamuser set place=0 where iduser=" . $res['userid']);
mysql_query("delete from turnirbattle where id=" . $res['id']);
}
if ($win == 2) {
mysql_query("update turnamuser set place=" . time() . ", loose=loose+1 where iduser=" . $res['userid']);
mysql_query("update turnamuser set place=0 where iduser=" . $res['userid1']);
mysql_query("delete from turnirbattle where id=" . $res['id']);
}
if ($win == 3) {
echo Nick::id($res['userid'])->full(1) . " против " . Nick::id($res['useridl'])->full(1);
}
}
}
}
function NextTournir($level)
{
$CheckFinal = [];
for ($i = 0; $i <= 1; $i++) {
$sql = mysql_query("select iduser from turnamuser where level=" . $level . " and loose=" . $i . " and idturnam=(select id from turnament where old=0 and level=" . $level . ")");
$ArrayUsers = [];
while ($res = mysql_fetch_row($sql)) {
$ArrayUsers[] = $res[0];
}
shuffle($CountUser);
if (count($ArrayUsers) == 1) {
$CheckFinal[] = $ArrayUsers[0];
}
if (count($ArrayUsers) == 1 && $i == 0) {
addchp('Внимание! Вы вышли в финал. Дождитесь второго финалиста.
', '{[]}' . Nick::id($ArrayUsers[0])->short() . '{[]}');
}
if ($this->fract(count($ArrayUsers) / 2)) {
$countUs = count($ArrayUsers) - 1;
} else {
$countUs = count($ArrayUsers);
}
for ($ii = 0; $ii < $countUs; $ii++) {
$user1 = $ArrayUsers[$ii];
$user2 = $ArrayUsers[++$ii];
//Востанавливаем HP
mysql_query("update users set hp=maxhp where id=" . $user1 . " or id=" . $user2);
mysql_query("insert into turnirbattle(userid,userid1,level,idtur) values(" . $user1 . "," . $user2 . "," . $level . ",(select id from turnament where old=0 and level=" . $level . "))");
addchp('Внимание! Подготовтесь к следующему туру.
', '{[]}' . Nick::id($user1)->short() . '{[]}');
addchp('Внимание! Подготовтесь к следующему туру.
', '{[]}' . Nick::id($user2)->short() . '{[]}');
}
}
if (count($CheckFinal) == 2) {
$this->TournirFinal($level, $CheckFinal);
}
if (count($CheckFinal) == 1) {
$this->CreateHTML($level);
//поставить турниру статус 2. создать HTML для подгрузки результатов
//Если команда не набралась - удалить турнир. - эо при старте в 4 часа.
$this->ShowTournirFinaliats($level);
}
}
function CreateHTML($level)
{
$dir = "logtur/" . $level;
if (!file_exists($dir)) {
mkdir($dir);
}
$tur = mysql_fetch_array(mysql_query("select * from turnament where old=0 and level=" . $level . " limit 1"));
$f = fopen($dir . "/" . $tur['datetime'] . ".html", 'w+');
fwrite($f, '');
fwrite($f, 'Игрок | Место |
');
mysql_query("update turnamuser set place=" . (time() + 1000) . " where place=0 and idturnam=" . $tur['id'] . " and level=" . $level);
$sql = mysql_query("select tur.*, us.login from turnamuser as tur left join users as us on us.id=tur.iduser where tur.idturnam=" . $tur['id'] . " order by tur.place desc");
$i = 1;
while ($res = mysql_fetch_array($sql)) {
if ($i == 1 || $i == 2 || $i == 3) {
mysql_query("INSERT INTO `delo`(`id` , `author` ,`pers`, `text`, `type`, `date`) VALUES ('','0','" . $res['iduser'] . "','Выиграл в турнире " . $this->awards[$i][$level] . " кр.','1','" . time() . "');");
addchp('Внимание! За ' . $i . ' место в турнире, Вы получили ' . $this->awards[$i][$level] . ' кр.
', '{[]}' . Nick::id($res['iduser'])->short() . '{[]}');
}
fwrite($f, '' . $res['login'] . ' | ' . $i++ . ' |
');
}
fwrite($f, '