game/_incl_data/class/FightRequest.php

3231 lines
174 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Core\Config;
use Core\Db;
class FightRequest
{
private array $z1n = [4 => 'групповые', 5 => 'хаотичные'];
private array $z2n = [4 => 'группового', 5 => 'хаотичного'];
private bool $backTest = false; // Для проверок хаотических поединков.
private static bool $bcktst;
private User $u;
private ?int $zv_see = null;
public string $test_s = '';
public string $error = '';
/**
* Заявки на бой.
*/
public function __construct()
{
$this->u = User::start();
unset($_POST['kingfight'], $_POST['nobot'], $_POST['mut_clever']);
$this->u->info['no_zv_key'] = true;
if (!empty($_GET['del_z_time'])) {
$zay = Db::getValue(
'select count(*) from zayvki where id = ? and creator = ? and start = 0 and cancel = 0 and btl_id = 0 and priz = 0',
[$this->u->info['zv'], $this->u->info['id']]
);
if ($zay) {
$colls = Db::getValue('select count(*) from stats where zv = ?', [$this->u->info['zv']]);
if ($colls === 1) {
Db::sql('update stats set zv = 0 where id = ?', [$this->u->info['id']]);
Db::sql('delete from zayvki where id = ?', [$this->u->info['zv']]);
}
}
}
$this->test(); //проверяем заявки
}
private function add_effn($uid, $id)
{
$eff = Db::getRow('select mname, mdata, oneType, id2 from eff_main where id2 = ?', [$id]);
if (!$eff['id2']) {
return;
}
Db::sql(
'insert into eff_users (overType, id_eff, uid, name, timeUse, data) values (?,?,?,?,unix_timestamp(),?)',
[$eff['oneType'], $eff['id2'], $uid, $eff['mname'], $eff['mdata']]
);
// Db::sql('
// insert into eff_users (overType, id_eff, uid, name, timeUse, data)
// select oneType, id2, ?, mname, unix_timestamp(), mdata from eff_main
// where id2 = ?',
// [$uid, $id]);
}
private function testTravm()
{
$tr = Db::getValue(
'select v1 from eff_users where id_eff = 4 and `delete` = 0 and uid = ? order by v1 desc limit 1',
[$this->u->info['id']]
);
return $tr ? $tr - 1 : 0;
}
private function testTurnir()
{
$chat = new Chat();
//Проверяем турниры в этом городе
$trn = Db::getRows('select * from turnirs where status != -1');
$stmt = Db::prepare('update turnirs set chat = ? where id = ?');
foreach ($trn as $pl) {
//Начало турнира
if ($pl['status'] == 0 && $pl['time'] > time()) {
if (floor(($pl['time'] - time()) / 60) <= 2 && $pl['chat'] > 0) {
$stmt->execute([0, $pl['id']]);
} elseif (floor(($pl['time'] - time()) / 60) <= 5 && $pl['chat'] > 1) {
//Осталось 5 мин.
$chat->sendsys('<b style="color: red;">Турниры:</b> До начала турнира осталось 5 минут.');
$stmt->execute([1, $pl['id']]);
} elseif (floor(($pl['time'] - time()) / 60) <= 10 && $pl['chat'] > 2) {
//Осталось 10 мин.
$chat->sendsys('<b style="color: red;">Турниры:</b> До начала турнира осталось 10 минут.');
$stmt->execute([2, $pl['id']]);
} elseif (floor(($pl['time'] - time()) / 60) <= 15 && $pl['chat'] > 3) {
//Осталось 15 мин.
$chat->sendsys('<b style="color: red;">Турниры:</b> До начала турнира осталось 15 минут.');
$stmt->execute([3, $pl['id']]);
}
}
if ($pl['status'] != 0 || $pl['time'] >= time()) {
continue;
}
if ($pl['users_in'] > 1) {
//Начало турнира
Db::sql('update turnirs set time = unix_timestamp() + ?, status = 1 where id = ?', [$pl['time3'], $pl['id']]);
$usp = mysql_query(
'SELECT * FROM `users` WHERE `inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in']
);
while ($ur = mysql_fetch_array($usp)) {
mysql_query(
'INSERT INTO `users` (`login`,`room`,`name`,`sex`,`level`,`inTurnirnew`,`bithday`) VALUES ("' . $ur['login'] . '","318","' . $ur['name'] . '","' . $ur['sex'] . '","' . $t['level'] . '","' . $pl['id'] . '","01.01.2001")'
);
$uri = mysql_insert_id();
mysql_query(
'INSERT INTO `users_turnirs` (`uid`,`bot`,`turnir`) VALUES ("' . $ur['id'] . '","' . $uri . '","' . $pl['id'] . '")'
);
$zid = 0;
$x1 = 0;
$y1 = 0;
mysql_query(
'INSERT INTO `stats` (`upLevel`,`dnow`,`id`,`stats`,`exp`,`ability`,`skills`,`x`,`y`) VALUES ("98","' . $zid . '","' . $uri . '","s1=3|s2=3|s3=3|s4=3|s5=0|s6=0|rinv=40|m9=5|m6=10","0","0","0",' . $x1 . ',' . $y1 . ')'
);
mysql_query(
'UPDATE `users` SET `inUser` = "' . $uri . '" WHERE `id` = "' . $ur['id'] . '" LIMIT 1'
);
//Добавляем эффекты скорость регена и запрет передвижения
}
} else {
//Отмена турнира
mysql_query(
'UPDATE `turnirs` SET `time` = "' . (time(
) + $pl['time2']) . '",`users_in` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `inTurnirnew` = "' . $pl['id'] . '"');
}
}
}
private function testGroupAndChaotic()
{
//Проверяем хаотичные и групповые бои в этом городе
$sp = mysql_query(
'SELECT * FROM `zayvki` AS `z` WHERE `z`.`btl_id` = "0" AND `z`.`cancel` = "0" AND `z`.`start` = "0" AND (`z`.`razdel` = 4 OR `z`.`razdel` = 5) ORDER BY `z`.`id` DESC LIMIT 22'
);
while ($pl = mysql_fetch_array($sp)) {
$uz = mysql_query(
'SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $pl['id'] . '"'
);
$tm1 = [];
$tm2 = [];
$i = [];
$toChat = '';
$toChat2 = '';
$toWhere = '';
while ($t = mysql_fetch_array($uz)) {
if (!isset(${'tm' . $t['team']})) {
${'tm' . $t['team']} = [];
}
if (!isset($i[$t['team']])) {
$i[$t['team']] = 0;
}
${'tm' . $t['team']}[$i[$t['team']]] = $t;
$toChat .= '' . $t['login'] . ',';
$toWhere .= 'OR `id` = "' . $t['id'] . '" ';
if ($pl['razdel'] == 5 && $pl['time_start'] - 180 < time() - $pl['time'] && $pl['send'] == 0) {
$toChat2 .= '' . $this->u->microLogin2($t) . ', ';
}
$i[$t['team']]++;
}
if ($pl['razdel'] == 5) {
$col_p = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"')
);
$cols = $col_p[0];
if ($cols >= $pl['maxplayers']) {
$pl['time_start'] = time() - $pl['time'] - 1;
}
}
if ($pl['time_start'] < time(
) - $pl['time'] || ($pl['razdel'] == 4 && $i[1] >= $pl['tm1max'] && $i[2] >= $pl['tm2max'])) {
$toChat = rtrim($toChat, ',');
$toWhere = ltrim($toWhere, 'OR ');
if ($pl['razdel'] == 4) {
//группы
$this->testGroup($i, $pl, $toChat, $toWhere);
} elseif ($pl['razdel'] == 5) {
//fixme ёбаный костыль!
$this->testCronChaotic($pl, $toChat, $toWhere);
return;
//хаоты
//
$i = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '" LIMIT 1')
);
if ($i[0] < 4 && ($i[0] < 2 || $pl['fastfight'] == 0)) {
//группа не набрана
$this->cancelGroup($pl, $toChat, ' Беда!');
} else {
//Начинаем поединок
$this->startBattle($pl['id'], $toChat . '|-|' . $toWhere);
}
}
}
}
}
/** Проверяем заявки
* @return void
*/
private function test()
{
if ($this->u->info['zv'] > 0) {
$z = Db::getRow('select * from zayvki where id = ?', [$this->u->info['zv']]);
if ($z['id'] && ($z['cancel'] || $z['btl_id'] || $z['time'] < time() - 3600) || !$z['id']) {
$this->u->info['zv'] = 0;
Db::sql('update stats set zv = 0 where id = ?', [$this->u->info['id']]);
}
}
$this->testTurnir();
$this->testGroupAndChaotic();
}
private function testCronTurnir()
{
//Проверяем турниры в этом городе
$sp = mysql_query('SELECT * FROM `turnirs` WHERE `status` != "-1"');
while ($pl = mysql_fetch_array($sp)) {
//Начало турнира
if ($pl['status'] != 0 || $pl['time'] >= time()) {
continue;
}
if ($pl['users_in'] > 1) {
//Начало турнира
mysql_query(
'UPDATE `turnirs` SET `time` = "' . (time(
) + $pl['time3']) . '",`status` = "1" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
$usp = mysql_query(
'SELECT * FROM `users` WHERE `inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in']
);
while ($ur = mysql_fetch_array($usp)) {
mysql_query(
'INSERT INTO `users` (`login`,`room`,`name`,`sex`,`level`,`inTurnirnew`,`bithday`) VALUES ("' . $ur['login'] . '","318","' . $ur['name'] . '","' . $ur['sex'] . '","' . $t['level'] . '","' . $pl['id'] . '","01.01.2001")'
);
$uri = mysql_insert_id();
mysql_query(
'INSERT INTO `users_turnirs` (`uid`,`bot`,`turnir`) VALUES ("' . $ur['id'] . '","' . $uri . '","' . $pl['id'] . '")'
);
$zid = 0;
$x1 = 0;
$y1 = 0;
mysql_query(
'INSERT INTO `stats` (`upLevel`,`dnow`,`id`,`stats`,`exp`,`ability`,`skills`,`x`,`y`) VALUES ("98","' . $zid . '","' . $uri . '","s1=3|s2=3|s3=3|s4=3|s5=0|s6=0|rinv=40|m9=5|m6=10","0","0","0",' . $x1 . ',' . $y1 . ')'
);
mysql_query(
'UPDATE `users` SET `inUser` = "' . $uri . '" WHERE `id` = "' . $ur['id'] . '" LIMIT 1'
);
//Добавляем эффекты скорость регена и запрет передвижения
}
} else {
//Отмена турнира
mysql_query(
'UPDATE `turnirs` SET `time` = "' . (time(
) + $pl['time2']) . '",`users_in` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `users` SET `inTurnirnew` = "0" WHERE `inTurnirnew` = "' . $pl['id'] . '"');
}
}
}
private function testGroup($groups, $zayavka, $toChat, $toWhere)
{
if ($zayavka['razdel'] != 4) {
return;
}
if (
empty($groups[1]) ||
empty($groups[2]) ||
(
empty($groups[3]) &&
$zayavka['teams'] == 3
)
) {
//группа не набрана
$this->cancelGroup($zayavka, $toChat);
} else {
//Начинаем поединок
$this->startBattle($zayavka['id'], $toChat . '|-|' . $toWhere);
}
}
private function testCronChaotic($zayavka, $toChat, $toWhere)
{
$chat = new Chat();
$levelToExp = [
0 => 0,
1 => 110,
2 => 420,
3 => 1300,
4 => 2500,
5 => 5000,
6 => 12500,
7 => 30000,
8 => 300000,
9 => 3000000,
10 => 10000000,
11 => 52000000,
12 => 63000000,
13 => 182000000,
14 => 212000000,
15 => 352000000,
16 => 504000000,
17 => 1187000000,
18 => 2455000000,
19 => 4387000000,
20 => 6355000000,
21 => 15500000000,
22 => 755500000000,
];
$botUsers = [];
define('FAST_FIGHT_REQUIRED_FIGHTERS_COUNT', 2);
define('FIGHT_REQUIRED_FIGHTERS_COUNT', 6);
$requiredFightersToStartBattle = FIGHT_REQUIRED_FIGHTERS_COUNT;
if ($zayavka['fastfight'] > 0) {
$requiredFightersToStartBattle = FAST_FIGHT_REQUIRED_FIGHTERS_COUNT;
}
$pendingFightersCount = Db::getValue('select count(*) from stats where zv = ?', [$zayavka['id']]);
if ($pendingFightersCount < $requiredFightersToStartBattle) {
//группа не набрана
//Добавляем недостающих игроков
if (!$zayavka['nobot']) { // Если нет запрета на ботов.
$getRealPlayersQuery = 'select * from stats left join users on stats.id = users.id where exp >= ? and exp < ? and bot = 0 order by btl_cof desc limit 50';
$getBotsQuery = 'select * from stats left join users on stats.id = users.id where bot = 2 and exp >= ? and exp < ?';
$botUsers = Db::getRows($getBotsQuery, [$levelToExp[$zayavka['min_lvl_1']], $levelToExp[$zayavka['max_lvl_1'] + 1]]);
}
if (empty($botUsers)) {
$text = ' Не удалось начать поединок по причине: Группа не набрана. (' . $zayavka['id'] . ': 0 ' . $levelToExp[$zayavka['min_lvl_1']] . '-' . $levelToExp[$zayavka['max_lvl_1'] + 1] . ')';
$chat->sendsys($text, 'Merlin');
$this->cancelGroup($zayavka, $toChat, ' Боты проспали.');
} else {
$pendingBotsCount = 0;
for ($i = 0; $i < $requiredFightersToStartBattle - $pendingFightersCount; $i++) {
shuffle($botUsers);
$botInfo = array_shift($botUsers);
$botData = [
'id' => $botInfo['id'],
'login' => $botInfo['login'],
'level' => $botInfo['level'],
'city' => $botInfo['city'],
'cityreg' => $botInfo['city'],
'name' => $botInfo['login'],
'sex' => $botInfo['sex'],
'hobby' => '',
'time_reg' => time(),
'obraz' => $botInfo['obraz'],
'stats' => $botInfo['stats'],
'upLevel' => $botInfo['upLevel'],
'priems' => $botInfo['priems'],
'loclon' => true,
];
$bot = $this->u->addNewbot(1, null, $botData, null, true);
if ($bot) {
Db::sql(
'update stats set btl_cof = ?, zv = ?, hpNow = 1000000, mpNow = 1000000 where id = ?',
[$botInfo['btl_cof'], $zayavka['id'], $bot]
);
Db::sql('update users set room = 303, battle = 0 where id = ?', [$bot]);
$pendingBotsCount++;
}
}
unset($botUsers, $botInfo, $botData, $bot);
if ($pendingBotsCount + $pendingFightersCount >= $requiredFightersToStartBattle) {
$this->backTest = true;
self::$bcktst = true;
}
}
} else {
//Начинаем поединок
$this->startBattle($zayavka['id'], $toChat . '|-|' . $toWhere);
}
}
/** Проверяем хаотичные и групповые бои в этом городе
* @return void
* @throws Exception
*/
private function testCronGroupAndChaotic()
{
define('GROUP_BATLE', 4);
define('CHAOTIC_BATTLE', 5);
$zv1k = Db::getRows(
'select * from zayvki where btl_id = 0 and cancel = 0 and start = 0 and razdel in (4, 5) order by id desc limit 1000'
);
foreach ($zv1k as $zv) {
$tm1 = [];
$tm2 = [];
$i = [];
$toChat = $toWhere = '';
$users = Db::getRows('select * from stats left join users on stats.id = users.id where zv = ?', [$zv['id']]);
foreach ($users as $user) {
!empty(${'tm' . $user['team']}) ?: ${'tm' . $user['team']} = [];
!empty($i[$user['team']]) ?: $i[$user['team']] = 0;
${'tm' . $user['team']}[$i[$user['team']]] = $user;
$toChat .= $user['login'] . ',';
$toWhere .= 'OR id = ' . $user['id'] . ' ';
$i[$user['team']]++;
}
if ($zv['time_start'] > time(
) - $zv['time'] && ($zv['razdel'] != 4 || $i[1] < $zv['tm1max'] || $i[2] < $zv['tm2max'])) {
continue;
}
$toChat = rtrim($toChat, ',');
$toWhere = ltrim($toWhere, 'OR ');
trigger_error('test');
if ($zv['razdel'] == GROUP_BATLE) {
$this->testGroup($i, $zv, $toChat, $toWhere);
} else {
$this->testCronChaotic($zv, $toChat, $toWhere);
}
}
}
public function testCronZv()
{
$this->testCronTurnir();
$this->testCronGroupAndChaotic();
if ($this->backTest || self::$bcktst) {
self::$bcktst = false;
$this->testCronZv();
}
}
public function userInfo()
{
$r = '';
$dp = '';
$ph = $this->u->stats['hpNow'] / $this->u->stats['hpAll'] * 100;
if ($this->u->stats['mpAll'] > 0) {
$pm = $this->u->stats['mpNow'] / $this->u->stats['mpAll'] * 100;
} else {
$dp = 'margin-top:13px;';
}
$r .= '<table border="0" cellspacing="0" cellpadding="0" height="20">
<tr><td valign="middle"> &nbsp; <font>' . $this->u->microLogin($this->u->info['id'], 1) . '</font> &nbsp; </td>
<td valign="middle" width="120">
<div style="position:relative;' . $dp . '"><div id="vhp' . ($this->u->info['id']) . '" title="Уровень жизни" align="left" class="seehp" style="position:absolute; top:-10px; width:120px; height:10px; z-index:12;"> ' . floor(
$this->u->stats['hpNow']
) . '/' . $this->u->stats['hpAll'] . '</div>
<div title="Уровень жизни" class="hpborder" style="position:absolute; top:-10px; width:120px; height:9px; z-index:13;"><img src="//img.new-combats.tech/1x1.gif" height="9" width="1"></div>
<div class="hp_3 senohp" style="height:9px; width:' . floor(
120 / 100 * $ph
) . 'px; position:absolute; top:-10px; z-index:11;" id="lhp' . ($this->u->info['id']) . '"><img src="//img.new-combats.tech/1x1.gif" height="9" width="1"></div>
<div title="Уровень жизни" class="hp_none" style="position:absolute; top:-10px; width:120px; height:10px; z-index:10;"><img src="//img.new-combats.tech/1x1.gif" height="10"></div>
';
if ($this->u->stats['mpAll'] > 0) {
$r .= '<div id="vmp' . ($this->u->info['id']) . '" title="Уровень маны" align="left" class="seemp" style="position:absolute; top:0px; width:120px; height:10px; z-index:12;"> ' . floor(
$this->u->stats['mpNow']
) . '/' . $this->u->stats['mpAll'] . '</div>
<div title="Уровень маны" class="hpborder" style="position:absolute; top:0px; width:120px; height:9px; z-index:13;"><img src="//img.new-combats.tech/1x1.gif" height="9" width="1"></div>
<div class="hp_mp senohp" style="height:9px; position:absolute; top:0px; width:' . floor(
120 / 100 * $pm
) . 'px; z-index:11;" id="lmp' . ($this->u->info['id']) . '"><img src="//img.new-combats.tech/1x1.gif" height="9" width="1"></div>
<div title="Уровень маны" class="hp_none" style="position:absolute; top:0px; width:120px; height:10px; z-index:10;"></div>';
}
$r .= '</div></td></tr></table>';
unset($stt, $ph, $pm);
return $r;
}
public function cancelGroup($zv, $uids, $debug = null)
{
if ($zv['priz'] > 0) {
$sp = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $zv['id'] . '"');
}
$upd = mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `zv` = "' . $zv['id'] . '"');
if (!$upd) {
return;
}
$upd = mysql_query('UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zv['id'] . '"');
if (!$upd || $uids == '') {
return;
}
if ($zv['priz'] > 0) {
while ($pl = mysql_fetch_array($sp)) {
//Выдаем по 1 жетону
if ($zv['type'] == 33) //ТУТ група не набранна удаляем персонажа и выдаем жетон
{
$pld = mysql_fetch_array(
mysql_query('SELECT `id` FROM `users` WHERE `inUser` = "' . $pl['id'] . '"')
);
if (isset($pld['id'])) {
mysql_query('UPDATE `users` SET `inUser` = "0" WHERE `id` = "' . $pld['id'] . '" LIMIT 1');
$this->u->addItem(4754, $pld['id'], '');
$uids = $pld['id'];
mysql_query('DELETE FROM `users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $pl['id'] . '" LIMIT 100');
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $pl['id'] . '" LIMIT 100');
}
} else {
$this->u->addItem(4754, $pl['id'], '');
}
}
$text = ' Не удалось начать поединок по причине: Группа не набрана. Вы получаете Призовой Жетон (х1)';
} else {
$text = ' Не удалось начать поединок по причине: Группа не набрана!';
}
$chat = new Chat();
$chat->sendsys($text . $debug, $uids);
}
public function add()
{
if (!isset($_GET['r']) || $this->u->info['inTurnirnew'] != 0) {
return;
}
$r = round(intval($_GET['r']));
if (!in_array($r, [1, 4, 5, 8, 10])) {
return;
}
$az = 1;
if ($r == 1 && $this->u->info['level'] > 0) {
$az = 0;
$this->error = 'Вы уже выросли из ползунков ;)';
}
if (($r == 4 || $r == 5) && $this->u->info['level'] < 2) {
$az = 0;
$this->error = 'В ' . $this->z1n[$r] . ' бои только со второго уровня.';
}
if ($this->testTravm() == 1 && $_POST['k'] != 1) {
$this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.';
$az = 0;
} elseif ($this->testTravm() == 2) {
$this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.';
$az = 0;
} elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30) {
$this->error = 'Вы еще слишком ослаблены чтобы начать новый бой';
$az = 0;
}
if ($this->u->info['zv'] > 0) {
$az = 0;
$this->error = 'Вы уже находите в заявке.';
}
if ($az != 1) {
return;
}
$nz = [];
$nz['travmaChance'] = 0;
$nz['time_start'] = 0;
$nz['min_lvl_1'] = 0;
$nz['min_lvl_2'] = 0;
$nz['max_lvl_1'] = 21;
$nz['max_lvl_2'] = 21;
$nz['tm1max'] = 0;
$nz['tm2max'] = 0;
$nz['invise'] = 0;
$nz['money'] = 0;
$nz['comment'] = '';
$nz['tm1'] = 0;
$nz['tm2'] = 0;
$nz['otmorozok'] = 0;
$nz['fastfight'] = 0;
$nz['noinc'] = 0;
$nz['city'] = $this->u->info['city'];
$nz['creator'] = $this->u->info['id'];
$nz['type'] = 0;
if ($_POST['k'] == 1) {
$nz['type'] = 1;
}
if ($_POST['k'] == 2) {
$nz['type'] = 6;
$nz['travmaChance'] = 100;
}
$_POST['timeout'] = round(intval(mysql_real_escape_string($_POST['timeout'])));
if ($_POST['timeout'] == 1 || $_POST['timeout'] == 2 || $_POST['timeout'] == 3 || $_POST['timeout'] == 4 || $_POST['timeout'] == 5) {
$nz['timeout'] = $_POST['timeout'] * 60;
} else {
$nz['timeout'] = 3 * 60;
}
$nz['razdel'] = $r;
$gad = 1;
if ($r == 5 && $this->u->info['level'] > 1) {
//хаотичный бой
if ($_POST['startime2']) {
$nz['time_start'] = (int)$_POST['startime2'];
$nz['comment'] = substr($_POST['cmt'], 0, 40);
$nz['comment'] = str_replace('"', '&quot;', $nz['comment']);
$nz['comment'] = htmlspecialchars($nz['comment'], null);
if (!in_array($nz['time_start'], [60, 180, 300])) {
$nz['time_start'] = 600;
}
if (isset($_POST['mut_hidden'])) {
$nz['invise'] = 1;
}
if (isset($_POST['noinc'])) {
$nz['noinc'] = 1;
}
if (isset($_POST['fastfight'])) {
$nz['fastfight'] = 1;
}
if (isset($_POST['otmorozok'])) {
$nz['otmorozok'] = 1;
}
if (isset($_POST['nobot'])) {
$nz['nobot'] = 1;
}
if (isset($_POST['kingfight'])) {
$nz['kingfight'] = 1;
}
if (isset($_POST['arand'])) {
$nz['arand'] = 1;
}
if (isset($_POST['travma'])) {
$nz['travmaChance'] = 100;
}
if (isset($_POST['noatack'])) {
$nz['noatack'] = 1;
}
if (isset($_POST['noeff'])) {
$nz['noeff'] = 1;
}
if (isset($_POST['smert'])) {
$nz['smert'] = 1;
}
if (isset($_POST['noart'])) {
$nz['noart'] = 1;
}
if ($nz['kingfight'] == 1 && $nz['fastfight'] == 1) {
$nz['kingfight'] = 0;
}
$nz['timeout'] = (int)$_POST['timeout'];
if ($nz['timeout'] != 1 && $nz['timeout'] != 2 && $nz['timeout'] != 3 && $nz['timeout'] != 4 && $nz['timeout'] != 5) {
$nz['timeout'] = 3;
}
//Генерируем уровни союзника
$lvl = (int)$_POST['levellogin1'];
if ($lvl == 0) {
$nz['min_lvl_1'] = 2;
$nz['max_lvl_1'] = 21;
} elseif ($lvl == 3) {
$nz['min_lvl_1'] = $this->u->info['level'];
$nz['max_lvl_1'] = $this->u->info['level'];
$nz['min_lvl_2'] = $nz['min_lvl_1'];
$nz['max_lvl_2'] = $nz['min_lvl_2'];
} elseif ($lvl == 6) {
$nz['min_lvl_1'] = $this->u->info['level'] - 1;
$nz['max_lvl_2'] = $this->u->info['level'] + 1;
} else {
$nz['min_lvl_1'] = 2;
$nz['max_lvl_1'] = 2;
}
if ((int)$_POST['k'] == 1) {
//кулачный бой
$nz['type'] = 1;
}
if ((int)$_POST['k'] == 2) {
//кровавый бой
$nz['type'] = 6;
$nz['travmaChance'] = 1;
}
$nz['timeout'] = $nz['timeout'] * 60;
$nz['tm1'] = $this->u->stats['reting'];
if (!$this->u->info['no_zv_key'] && ($_POST['code21'] == 0 || $_POST['code21'] != $_SESSION['code2'] || $_SESSION['code2'] == 0 || !isset($_SESSION['code2']))) {
$this->error = 'Неправильный код подтверждения';
$gad = 0;
}
} else {
$gad = 0;
$this->error = 'Что-то не так...<br>';
}
} elseif ($r == 4 && $this->u->info['level'] > 1) {
//групповой бой
//здесь заносим и проверяем данные на гурпповой бой
if ($_POST['startime']) {
$nz['time_start'] = (int)$_POST['startime'];
$nz['comment'] = substr($_POST['cmt'], 0, 40);
$nz['comment'] = str_replace('"', '&quot;', $nz['comment']);
if ($nz['time_start'] != 300 && $nz['time_start'] != 600 && $nz['time_start'] != 900 && $nz['time_start'] != 1200 && $nz['time_start'] != 1800) {
$nz['time_start'] = 600;
}
$nz['timeout'] = (int)$_POST['timeout'];
if ($nz['timeout'] != 1 && $nz['timeout'] != 2 && $nz['timeout'] != 3 && $nz['timeout'] != 4 && $nz['timeout'] != 5) {
$nz['timeout'] = 3;
}
$nz['timeout'] = $nz['timeout'] * 60;
$nz['tm1max'] = (int)$_POST['nlogin1'];
if ($nz['tm1max'] < 1 || $nz['tm1max'] > 99) {
$this->error .= 'Неверное кол-во союзников<br>';
$gad = 0;
}
$nz['tm2max'] = (int)$_POST['nlogin2'];
if ($nz['tm2max'] < 1 || $nz['tm2max'] > 99) {
$this->error .= 'Неверное кол-во противников<br>';
$gad = 0;
}
if ($this->testTravm() == 1 && $_POST['k'] != 1) {
$this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.';
$gad = 0;
} elseif ($this->testTravm() == 2) {
$this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.';
$gad = 0;
} elseif ($nz['tm1max'] + $nz['tm2max'] < 3) {
$this->error .= 'Заявки 1 на 1 подаются в разделе физические или договорные бои<br>';
$gad = 0;
}
//Генерируем уровни союзника
$lvl = (int)$_POST['levellogin1'];
if ($lvl == 0) {
$nz['min_lvl_1'] = 2;
$nz['max_lvl_1'] = 21;
} elseif ($lvl == 1) {
$nz['min_lvl_1'] = 2;
$nz['max_lvl_1'] = $this->u->info['level'];
} elseif ($lvl == 2) {
$nz['min_lvl_1'] = 2;
$nz['max_lvl_1'] = $this->u->info['level'] - 1;
} elseif ($lvl == 3) {
$nz['min_lvl_1'] = $this->u->info['level'];
$nz['max_lvl_1'] = $this->u->info['level'];
} elseif ($lvl == 4) {
$nz['min_lvl_1'] = $this->u->info['level'];
$nz['max_lvl_1'] = $this->u->info['level'] + 1;
} elseif ($lvl == 5) {
$nz['min_lvl_1'] = $this->u->info['level'] - 1;
$nz['max_lvl_1'] = $this->u->info['level'];
} elseif ($lvl == 6) {
$nz['min_lvl_1'] = $this->u->info['level'] - 1;
$nz['max_lvl_1'] = $this->u->info['level'] + 1;
$nz['min_lvl_1'] = 99;
} else {
$this->error = 'Что-то не так...<br>';
$gad = 0;
}
//Генерируем уровни противника
$lvl = (int)$_POST['levellogin2'];
if ($lvl == 0) {
$nz['min_lvl_2'] = 2;
$nz['max_lvl_2'] = 21;
} elseif ($lvl == 1) {
$nz['min_lvl_2'] = 2;
$nz['max_lvl_2'] = $this->u->info['level'];
} elseif ($lvl == 2) {
$nz['min_lvl_2'] = 2;
$nz['max_lvl_2'] = $this->u->info['level'] - 1;
} elseif ($lvl == 3) {
$nz['min_lvl_2'] = $this->u->info['level'];
$nz['max_lvl_2'] = $this->u->info['level'];
} elseif ($lvl == 4) {
$nz['min_lvl_2'] = $this->u->info['level'];
$nz['max_lvl_2'] = $this->u->info['level'] + 1;
} elseif ($lvl == 5) {
$nz['min_lvl_2'] = $this->u->info['level'] - 1;
$nz['max_lvl_2'] = $this->u->info['level'];
} elseif ($lvl == 6) {
$nz['min_lvl_2'] = $this->u->info['level'] - 1;
$nz['max_lvl_2'] = $this->u->info['level'] + 1;
$nz['min_lvl_2'] = 99;
} else {
$this->error = 'Что-то не так...<br>';
$gad = 0;
}
if ($nz['min_lvl_1'] < 2) {
$nz['min_lvl_1'] = 2;
}
if ($nz['max_lvl_1'] > 21) {
$nz['max_lvl_1'] = 21;
}
if ($nz['min_lvl_2'] < 2) {
$nz['min_lvl_2'] = 2;
}
if ($nz['max_lvl_2'] > 21) {
$nz['max_lvl_2'] = 21;
}
if ((int)$_POST['k'] == 1) {
//кулачный бой
$nz['type'] = 1;
}
if ((int)$_POST['k'] == 2) {
//кровавый бой
$nz['type'] = 6;
$nz['travmaChance'] = 100;
}
} else {
$gad = 0;
$this->error = 'Что-то не так...<br>';
}
}
$bt2 = (int)$_POST['bots2'];
if ($bt2 != 0 && $r == 4 && $this->u->info['level'] > 1) {
$bt2 = 1;
$nz['min_lvl_2'] = $this->u->info['level'];
$nz['max_lvl_2'] = $this->u->info['level'];
$nz['min_lvl_1'] = $this->u->info['level'];
$nz['max_lvl_1'] = $this->u->info['level'];
} else {
$bt2 = 0;
}
if ($gad == 1) {
if (!isset($nz['withUser'])) {
$nz['withUser'] = '';
}
$nz['time_create_zv'] = time();
if ($nz['razdel'] == 4 || $nz['razdel'] == 5) {
//Округляем время для кроны
$nz['time_create_zv'] = strtotime(
date('d.m.Y H:i', $nz['time_create_zv']) . ':00', $nz['time_create_zv']
);
} elseif ($nz['razdel'] == 3) {
$nz['noinc'] = 1;
}
$nz['teams'] = 2;
$nz['align1'] = 0;
$nz['align2'] = 0;
$nz['align3'] = 0;
if (isset($_POST['3align'])) {
$nz['teams'] = 3;
$nz['min_lvl_1'] = 2;
$nz['min_lvl_2'] = 2;
$nz['max_lvl_1'] = 21;
$nz['max_lvl_2'] = 21;
//
if (floor($this->u->info['align']) == 3) {
$nz['align1'] = 3;
$nz['align2'] = 1;
$nz['align3'] = 7;
} elseif (floor($this->u->info['align']) == 7) {
$nz['align1'] = 7;
$nz['align2'] = 1;
$nz['align3'] = 3;
} else {
$nz['align1'] = 1;
$nz['align2'] = 3;
$nz['align3'] = 7;
}
//
}
//
if ($nz['razdel'] == 2 && isset($_POST['commentfiz'])) {
$nz['comment'] = htmlspecialchars($_POST['commentfiz'], null);
}
//
if ($nz['razdel'] == 5) {
$nz['maxplayers'] = [
6 => 6,
8 => 8,
10 => 10,
12 => 12,
14 => 14,
16 => 16,
18 => 18,
20 => 20,
40 => 40,
];
if (isset($nz['players'][$_POST['players']])) {
$nz['maxplayers'];
} else {
$nz['maxplayers'] = $nz['maxplayers'][$_POST['players']];
}
}
$dbvalues = [
$nz['maxplayers'],
$nz['otmorozok'],
$nz['align1'],
$nz['align2'],
$nz['align3'],
$nz['teams'],
$nz['smert'],
$nz['noart'],
$nz['noeff'],
$nz['noatack'],
$nz['arand'],
$nz['kingfight'],
$nz['nobot'],
$nz['fastfight'],
$nz['noinc'],
$bt2,
$nz['time_create_zv'],
$nz['city'],
$nz['creator'],
$nz['type'],
$nz['time_start'],
$nz['timeout'],
$nz['min_lvl_1'],
$nz['min_lvl_2'],
$nz['max_lvl_1'],
$nz['max_lvl_2'],
$nz['tm1max'],
$nz['tm2max'],
$nz['travmaChance'],
$nz['invise'],
$nz['razdel'],
$nz['comment'],
$nz['money'],
$nz['withUser'],
$nz['tm1'],
$nz['tm2'],
];
$dbquery = 'insert into zayvki (`maxplayers`,`otmorozok`,`align1`,`align2`,`align3`,`teams`,`smert`,`noart`,`noeff`,`noatack`,`arand`,`kingfight`,`nobot`,`fastfight`,`noinc`,`bot2`,`time`,`city`,`creator`,`type`,`time_start`,`timeout`,`min_lvl_1`,`min_lvl_2`,`max_lvl_1`,`max_lvl_2`,`tm1max`,`tm2max`,`travmaChance`,`invise`,`razdel`,`comment`,`money`,`withUser`,`tm1`,`tm2`) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
$ins = Db::run($dbquery, $dbvalues);
$zid = Db::lastInsertId();
if ($ins) {
Db::sql('update stats set zv = ?, team = 1 where id = ?', [$zid, $this->u->info['id']]);
$this->u->info['zv'] = $zid;
$this->error = 'Заявка на бой подана';
} else {
$this->error = 'Ошибка: Заявка не подана!';
}
}
}
//тренеровочный бой
public function addBot()
{
global $c;
if (($this->u->info['level'] <= $c['bot_level'] || $this->u->info['admin'] > 0) && $this->u->info['exp'] != 12499) {
$bot = $this->u->addNewbot($id['id'], null, $this->u->info['id'], null, true);
} else {
$bot = false;
}
if (!$bot) {
$this->error = 'Бои с монстрами, нежитью, клонами и прочими вурдалаками проводятся только для персонажей младше 8 уровня...<br>Со стороны посматривает Общий Враг, ему явно что-то не понравилось...<br>';
} elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r == 1)) {
$this->error = 'Вы еще слишком ослаблены чтобы начать новый бой';
$az = 0;
} elseif ($this->u->info['align'] == 2) {
$this->error = 'Хаосники не могут сражаться здесь';
$az = 0;
} elseif (!$bot) {
echo '<br><font color=red>Cannot start battle (no prototype "ND0Clone")</font><br>';
} else {
//создаем поединок с ботом
$expB = 0;
$btl = ['smert' => 0, 'noart' => 0, 'noeff' => 0, 'otmorozok' => 0, 'noatack' => 0, 'priz' => 0, 'arand' => 0, 'kingfight' => 0, 'nobot' => 0, 'fastfight' => 0, 'players' => '', 'timeout' => 60, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0, 'money3' => 0];
$ins = mysql_query(
'INSERT INTO `battle` (`otmorozok`,`smert`,`noart`,`noeff`,`noatack`,`arand`,`kingfight`,`nobot`,`fastfight`,`clone`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`priz`) VALUES (
"' . $btl['otmorozok'] . '",
"' . $btl['smert'] . '",
"' . $btl['noart'] . '",
"' . $btl['noeff'] . '",
"' . $btl['noatack'] . '",
"' . $btl['arand'] . '",
"' . $btl['kingfight'] . '",
"' . $btl['nobot'] . '",
"' . $btl['fastfight'] . '",
"1",
"' . $this->u->info['city'] . '",
"' . time() . '",
"' . $btl['players'] . '",
"' . $btl['timeout'] . '",
"' . $btl['type'] . '",
"' . $btl['invis'] . '",
"' . $btl['noinc'] . '",
"' . $btl['travmChance'] . '",
"' . $btl['typeBattle'] . '",
"' . $btl['addExp'] . '",
"' . $btl['money'] . '",
"' . $btl['priz'] . '")'
);
if ($ins) {
$btl_id = mysql_insert_id();
//обновляем данные о поединке
$this->u->info['enNow'] -= $trEn;
$upd2 = mysql_query(
'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2'
);
mysql_query(
'UPDATE `stats` SET `team`="1",`enNow` = "' . $this->u->info['enNow'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`team`="2" WHERE `id` = "' . $bot . '" LIMIT 1'
);
//обновляем заявку, что бой начался
$this->u->info['battle'] = $btl_id;
//Отправляем сообщение в чат всем бойцам
$this->sendSysChatSound();
die('<script>location="main.php?battle_id=' . $btl_id . '";</script>');
} else {
$this->error = 'Cannot start battle (no prototype "ABD0Clone")';
}
}
}
/**
* Звуковой пинг в чат?
* @todo убрать колхоз с условиями когда станет ясно как оно работает.
* @return void
*/
private function sendSysChatSound(string $to = '', int $room = 0)
{
$cmsg = new ChatMessage();
if (empty($to)) {
$cmsg->setTo($this->u->info['login']);
} else {
$cmsg->setTo($to);
}
if (empty($room)) {
$cmsg->setRoom($this->u->info['room']);
} else {
$cmsg->setRoom($room);
}
$cmsg->setCity($this->u->info['city']);
$cmsg->setType(11);
$cmsg->setSound(117);
(new Chat())->sendMsg($cmsg);
}
//тренеровочный бой
public function addBotClone($uid)
{
if ($this->u->info['online'] > 0) {
$bot = $this->u->addNewbot($id['id'], null, $uid, null, false);
} else {
$bot = false;
}
if (!$bot) {
$this->error = 'Не получилось начать поединок';
} elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($r >= 1 || $r <= 3)) {
$this->error = 'Вы еще слишком ослаблены чтобы начать новый бой';
$az = 0;
} elseif ($this->u->info['align'] == 2) {
$this->error = 'Хаосники не могут сражаться здесь';
$az = 0;
} elseif (!$bot) {
echo '<br><font color=red>Cannot start battle (no prototype "ND0Clone")</font><br>';
} else {
//создаем поединок с ботом
$expB = 0;
$btl = ['priz' => 0, 'smert' => 0, 'noart' => 0, 'noeff' => 0, 'noatack' => 0, 'arand' => 0, 'kingfight' => 0, 'nobot' => 0, 'fastfight' => 0, 'players' => '', 'timeout' => 60, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0, 'money3' => 0];
$ins = mysql_query(
'INSERT INTO `battle` (`otmorozok`,`priz`,`smert`,`noart`,`noeff`,`noatack`,`arand`,`kingfight`,`nobot`,`fastfight`,`clone`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES (
"' . $btl['otmorozok'] . '",
"' . $btl['priz'] . '",
"' . $btl['smert'] . '",
"' . $btl['noart'] . '",
"' . $btl['noeff'] . '",
"' . $btl['noatack'] . '",
"' . $btl['arand'] . '",
"' . $btl['kingfight'] . '",
"' . $btl['nobot'] . '",
"' . $btl['fastfight'] . '",
"1",
"' . $this->u->info['city'] . '",
"' . time() . '",
"' . $btl['players'] . '",
"' . $btl['timeout'] . '",
"564",
"' . $btl['invis'] . '",
"' . $btl['noinc'] . '",
"' . $btl['travmChance'] . '",
"' . $btl['typeBattle'] . '",
"' . $btl['addExp'] . '",
"' . $btl['money'] . '")'
);
if ($ins) {
$btl_id = mysql_insert_id();
//обновляем данные о поединке
$this->u->info['enNow'] -= $trEn;
$upd2 = mysql_query(
'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $bot . '" LIMIT 2'
);
mysql_query(
'UPDATE `stats` SET `team`="1",`enNow` = "' . $this->u->info['enNow'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `stats` SET `team`="2" WHERE `id` = "' . $bot . '" LIMIT 1');
//обновляем заявку, что бой начался
$this->u->info['battle'] = $btl_id;
//Отправляем сообщение в чат всем бойцам
$this->sendSysChatSound();
die('<script>location="main.php?battle_id=' . $btl_id . '";</script>');
} else {
$this->error = 'Cannot start battle (no prototype "ABD0Clone")';
}
}
}
public function startBattle($id, $vars = null)
{
$z = mysql_fetch_array(
mysql_query(
'SELECT * FROM `zayvki` WHERE `id`="' . $id . '" AND `start` = "0" AND `cancel` = "0" AND (`time` > "' . (time(
) - 60 * 60 * 2) . '" OR `razdel` > 3) LIMIT 1'
)
);
if ($z['type'] == 33) {
sleep(5);
}
mysql_query('START TRANSACTION');
mysql_query(
"LOCK TABLES
`aaa_monsters` WRITE,
`actions` WRITE,
`bank` WRITE,
`battle` WRITE,
`battle_act` WRITE,
`battle_actions` WRITE,
`battle_cache` WRITE,
`battle_end` WRITE,
`battle_last` WRITE,
`battle_logs` WRITE,
`battle_logs_save` WRITE,
`battle_stat` WRITE,
`battle_users` WRITE,
`bs_actions` WRITE,
`bs_items` WRITE,
`bs_items_use` WRITE,
`bs_logs` WRITE,
`bs_map` WRITE,
`bs_statistic` WRITE,
`bs_trap` WRITE,
`bs_turnirs` WRITE,
`bs_zv` WRITE,
`clan` WRITE,
`clan_wars` WRITE,
`dungeon_actions` WRITE,
`dungeon_bots` WRITE,
`dungeon_items` WRITE,
`dungeon_map` WRITE,
`dungeon_now` WRITE,
`dungeon_zv` WRITE,
`eff_main` WRITE,
`eff_users` WRITE,
`items_img` WRITE,
`items_local` WRITE,
`items_main` WRITE,
`items_main_data` WRITE,
`items_users` WRITE,
`izlom` WRITE,
`izlom_rating` WRITE,
`laba_act` WRITE,
`laba_itm` WRITE,
`laba_map` WRITE,
`laba_now` WRITE,
`laba_obj` WRITE,
`levels` WRITE,
`levels_animal` WRITE,
`online` WRITE,
`priems` WRITE,
`quests` WRITE,
`reimage` WRITE,
`reg` WRITE,
`stats` WRITE,
`test_bot` WRITE,
`turnirs` WRITE,
`users` WRITE,
`users_animal` WRITE,
`user_ico` WRITE,
`users_twink` WRITE,
`zayvki` WRITE;"
);
$z = mysql_fetch_array(
mysql_query(
'SELECT * FROM `zayvki` WHERE `id`="' . $id . '" AND `start` = "0" AND `cancel` = "0" AND (`time` > "' . (time(
) - 60 * 60 * 2) . '" OR `razdel` > 3) LIMIT 1'
)
);
if (isset($z['id'])) {
$vars = explode('|-|', $vars);
if ($z['razdel'] >= 4 && $z['razdel'] <= 5) {
//начало группового или хаотичного боя
$btl_id = 0;
//$txtz = '';
if ($z['razdel'] == 5) {
$sp = mysql_query(
'SELECT `s`.`id`,`s`.`team`,`s`.`upLevel`,`s`.`btl_cof`,`s`.`exp` FROM `stats` AS `s` LEFT JOIN `users` AS `u` ON `u`.`id` = `s`.`id` WHERE `s`.`zv` = "' . $z['id'] . '" ORDER BY `s`.`btl_cof` DESC LIMIT 200'
);
$tsr = rand(0, 100);
if ($tsr >= 70 && $z['type'] != 33) {
$ii = -1;
while ($pl = mysql_fetch_array($sp)) {
$ii++;
$pld[$ii] = $pl;
}
$yy = $ii;
$jj = $ii;//счетчик c конца
$ii = 0;
$teamA = 0;
$teamAbtlconf = 0;
$teamB = 0;
$teamBbtlconf = 0;
while ($yy > -1) {
if ($ii == 0 || $teamAbtlconf <= $teamBbtlconf) {
if (isset ($pld[$ii])) {
$teamnew = 1;
$teamAbtlconf = $teamAbtlconf + $pld[$ii]['btl_cof'];
$teamA++;
$idi = $ii;
mysql_query(
'UPDATE `stats` SET `team` = "' . $teamnew . '" WHERE `id` = "' . $pld[$idi]['id'] . '" LIMIT 1'
);
}
$ii++;
} elseif (($teamB - $teamA) <= 0) {
if (isset ($pld[$ii])) {
$teamnew = 2;
$teamBbtlconf = $teamBbtlconf + $pld[$ii]['btl_cof'];
$teamB++;
$idi = $ii;
mysql_query(
'UPDATE `stats` SET `team` = "' . $teamnew . '" WHERE `id` = "' . $pld[$idi]['id'] . '" LIMIT 1'
);
}
$ii++;
} else {
if (isset ($pld[$ii])) {
$teamnew = 1;
$teamAbtlconf = $teamAbtlconf + $pld[$jj]['btl_cof'];
$teamA++;
$idi = $jj;
mysql_query(
'UPDATE `stats` SET `team` = "' . $teamnew . '" WHERE `id` = "' . $pld[$idi]['id'] . '" LIMIT 1'
);
}
$jj--;
}
$yy--;
}
} else {
$balansteamA = 0;
$balansteamB = 0;
while ($pl = mysql_fetch_array($sp)) {
$teamnew = rand(1, 2);
if ($balansteamA != $balansteamB) {
if ($balansteamA > $balansteamB) {
$teamnew = 2;
} else {
$teamnew = 1;
}
}
mysql_query(
'UPDATE `stats` SET `team` = "' . $teamnew . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
if ($teamnew == 1) {
$balansteamA += 1;
} else {
$balansteamB += 1;
}
}
}
unset($sp, $pl);
}
$btl = [
'otmorozok' => $z['otmorozok'],
'priz' => $z['priz'], 'smert' => $z['smert'], 'noart' => $z['noart'], 'noeff' => $z['noeff'], 'noatack' => $z['noatack'], 'arand' => $z['arand'], 'kingfight' => $z['kingfight'],
'players' => '', 'timeout' => $z['timeout'], 'type' => $z['type'], 'travmChance' => $z['travmChance'], 'invis' => $z['invise'], 'noinc' => 0, 'typeBattle' => 0, 'addExp' => $z['exp'], 'money' => 0, 'money3' => 0];
//ТУТ старт боя
$ins = mysql_query(
'INSERT INTO `battle` (`otmorozok`,`priz`,`smert`,`noart`,`noeff`,`noatack`,`arand`,`kingfight`,`nobot`,`fastfight`,`razdel`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES (
"' . $z['otmorozok'] . '",
"' . $z['priz'] . '",
"' . $z['smert'] . '",
"' . $z['noart'] . '",
"' . $z['noeff'] . '",
"' . $z['noatack'] . '",
"' . $z['arand'] . '",
"' . $z['kingfight'] . '",
"' . $z['nobot'] . '",
"' . $z['fastfight'] . '",
"' . $z['razdel'] . '",
"' . $z['city'] . '",
"' . time() . '",
"' . mysql_real_escape_string($btl['players']) . '",
"' . mysql_real_escape_string($btl['timeout']) . '",
"' . mysql_real_escape_string($btl['type']) . '",
"' . mysql_real_escape_string($btl['invis']) . '",
"' . mysql_real_escape_string($btl['noinc']) . '",
"' . mysql_real_escape_string($z['travmChance']) . '",
"' . mysql_real_escape_string($btl['typeBattle']) . '",
"' . mysql_real_escape_string($btl['addExp']) . '",
"' . mysql_real_escape_string($btl['money']) . '")'
);
$btl_id = mysql_insert_id();
if ($btl_id > 0) {
//Если бой кулачный, то снимаем вещи
if ($z['type'] == 1) {
$sp = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $z['id'] . '"');
while ($pl = mysql_fetch_array($sp)) {
mysql_query(
'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $pl['id'] . '" AND `inOdet`!=0'
);
}
} elseif ($z['type'] == 51) { //Поединок без ЕКР вещей
$sp = mysql_query('SELECT `id` FROM `stats` WHERE `zv` = "' . $z['id'] . '"');
while ($pl = mysql_fetch_array($sp)) {
mysql_query(
'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $pl['id'] . '" AND `2price` > 0'
);
}
}
//обновляем данные о поединке
$upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "' . $z['id'] . '"');
$upd2 = mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE ' . $vars[1] . '');
//обновляем заявку, что бой начался
$upd = mysql_query(
'UPDATE `zayvki` SET `start` = "' . time(
) . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1'
);
$this->u->info['battle'] = $btl_id;
//Отправляем сообщение в чат всем бойцам
$this->sendSysChatSound($vars[0], -1);
}
} elseif ($z['razdel'] >= 1 && $z['razdel'] <= 3) {
//начало PvP
if ($this->u->info['team'] == 1 && $this->u->info['zv'] == $z['id']) {
$zu = mysql_fetch_array(
mysql_query('SELECT * FROM `stats` WHERE `zv`="' . $z['id'] . '" AND `team` = "2" LIMIT 1')
);
if (isset($zu['id'])) {
$uz = mysql_fetch_array(
mysql_query('SELECT `login`,`money` FROM `users` WHERE `id`="' . $zu['id'] . '" LIMIT 1')
);
if ($zu['clone'] > 0) {
//обновляем клона
$bot = $this->u->addNewbot(1, null, $zu['clone'], null, true);
if ($bot > 0) {
mysql_query('DELETE FROM `users` WHERE `id` = "' . $zu['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $zu['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $zu['id'] . '" LIMIT 100');
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $zu['id'] . '" LIMIT 100');
mysql_query(
'UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = 2 WHERE `id` = "' . $bot . '" LIMIT 1'
);
$zu = mysql_fetch_array(
mysql_query(
'SELECT * FROM `stats` WHERE `zv`="' . $z['id'] . '" AND `team` = "2" LIMIT 1'
)
);
$uz = mysql_fetch_array(
mysql_query(
'SELECT `login`,`money` FROM `users` WHERE `id`="' . $zu['id'] . '" LIMIT 1'
)
);
}
}
//создаем поединок
$btl_id = 0;
if ($uz['money'] < $z['money'] || $this->u->info['money'] < $z['money']) {
$z['money'] = 0;
}
$btl = ['otmorozok' => $z['otmorozok'], 'players' => '', 'timeout' => $z['timeout'], 'type' => $z['type'], 'travmChance' => $z['travmChance'], 'invis' => 0, 'noinc' => 0, 'typeBattle' => 0, 'addExp' => 0, 'money' => round(
$z['money'], 2
), 'money3' => 0];
$ins = mysql_query(
'INSERT INTO `battle` (`otmorozok`,`smert`,`noart`,`noeff`,`noatack`,`arand`,`kingfight`,`nobot`,`fastfight`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES (
"' . mysql_real_escape_string($btl['otmorozok']) . '",
"' . mysql_real_escape_string($btl['smert']) . '",
"' . mysql_real_escape_string($btl['noart']) . '",
"' . mysql_real_escape_string($btl['noeff']) . '",
"' . mysql_real_escape_string($btl['noatack']) . '",
"' . mysql_real_escape_string($btl['arand']) . '",
"' . mysql_real_escape_string($btl['kingfight']) . '",
"' . mysql_real_escape_string($btl['nobot']) . '",
"' . mysql_real_escape_string($btl['fastfight']) . '",
"' . $this->u->info['city'] . '",
"' . time() . '",
"' . mysql_real_escape_string($btl['players']) . '",
"' . mysql_real_escape_string($btl['timeout']) . '",
"' . mysql_real_escape_string($btl['type']) . '",
"' . mysql_real_escape_string($btl['invis']) . '",
"' . mysql_real_escape_string($btl['noinc']) . '",
"' . mysql_real_escape_string($btl['travmChance']) . '",
"' . mysql_real_escape_string($btl['typeBattle']) . '",
"' . mysql_real_escape_string($btl['addExp']) . '",
"' . mysql_real_escape_string($btl['money']) . '")'
);
$btl_id = mysql_insert_id();
if ($ins) {
//обновляем данные о поединке
$upd1 = mysql_query('UPDATE `stats` SET `zv`="0" WHERE `zv` = "' . $z['id'] . '" LIMIT 2');
$upd2 = mysql_query(
'UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $this->u->info['id'] . '" OR `id` = "' . $zu['id'] . '" LIMIT 2'
);
//Если бой кулачный, то снимаем вещи
if ($z['type'] == 1) {
mysql_query(
'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $this->u->info['id'] . '" AND `inOdet`!=0'
);
mysql_query(
'UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $zu['id'] . '" AND `inOdet`!=0'
);
}
//обновляем заявку, что бой начался
$upd = mysql_query(
'UPDATE `zayvki` SET `start` = "' . time(
) . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $z['id'] . '" LIMIT 1'
);
$this->u->info['battle'] = $btl_id;
//Отправляем сообщение в чат всем бойцам
$this->sendSysChatSound($uz['login']);
die('<script>location="main.php?battle_id=' . $btl_id . '";</script>');
} else {
$this->error = 'Ошибка создания битвы.';
}
} else {
$this->error = 'Вы не можете начать поединок, вашу заявку никто не принял.';
}
} else {
$this->error = 'Вы не можете начать поединок.';
}
}
}
mysql_query('UNLOCK TABLES');
mysql_query('COMMIT');
}
public function cancelzv()
{
global $zi;
if (isset($_GET['cancelzv'], $zi['id']) && $zi['razdel'] >= 1 && $zi['razdel'] <= 3) {
$enemy = mysql_fetch_array(
mysql_query(
'SELECT `u`.*,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team` = "2" LIMIT 1'
)
);
if (isset($enemy['id'])) {
$chat = new Chat();
$cmsg = new ChatMessage();
$cmsg->setType(6);
if ($this->u->info['team'] == 1) {
//выкидываем из заявки + пишем сообщение в чат
$upd = mysql_query(
'UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "' . $enemy['id'] . '" LIMIT 1'
);
if ($upd) {
mysql_query('UPDATE `users` SET `otk` = (`otk` + 1) WHERE `id` = "' . $zi['id'] . '" LIMIT 1');
$this->error = 'Вы отказали ' . $enemy['login'] . ' в поединке';
//отправляем сообщение в чат
$sa = '';
if ($this->u->info['sex'] == 2) {
$sa = 'а';
}
$cmsg->setText(' [login:' . $this->u->info['login'] . '] отказал' . $sa . ' вам в поединке.');
$cmsg->setCity($enemy['city']);
$cmsg->setTo($enemy['login']);
$chat->sendMsg($cmsg);
}
} elseif ($this->u->info['id'] == $enemy['id'] && $zi['start'] == 0) {
//выкидываем из заявки + пишем сообщение в чат
$upd = mysql_query(
'UPDATE `stats` SET `zv` = "0",`team`="0" WHERE `id` = "' . $enemy['id'] . '" LIMIT 1'
);
if ($upd) {
$uz = mysql_fetch_array(
mysql_query(
'SELECT `u`.`sex`,`u`.`login`,`u`.`city`,`u`.`room`,`u`.`id`,`st`.`zv`,`st`.`team` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team` = "1" LIMIT 1'
)
);
if (isset($uz['id'])) {
$this->error = 'Вы отозвали свой запрос на бой.';
//отправляем сообщение в чат
$sa = '';
if ($this->u->info['sex'] == 2) {
$sa = 'а';
}
$cmsg->setText(' [login:' . $this->u->info['login'] . '] отозвал' . $sa . ' свой запрос на бой.');
$cmsg->setCity($uz['city']);
$cmsg->setTo($uz['login']);
$chat->sendMsg($cmsg);
}
$this->u->info['zv'] = 0;
$this->u->info['team'] = 0;
}
}
if ($enemy['bot'] == 1) {
//удаляем бота , предметы и эффекты
mysql_query('DELETE FROM `users` WHERE `id` = "' . $enemy['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $enemy['id'] . '" LIMIT 1');
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $enemy['id'] . '" LIMIT 100');
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . $enemy['id'] . '" LIMIT 100');
}
} else {
if ($this->u->info['team'] == 1) {
//удаляем заявку на бой
$upd = mysql_query(
'UPDATE `zayvki` SET `cancel` = "' . time() . '" WHERE `id` = "' . $zi['id'] . '" LIMIT 1'
);
if ($upd) {
mysql_query(
'UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
$this->error = 'Вы отозвали свою заявку';
$zi = false;
$this->u->info['zv'] = 0;
}
}
}
}
}
public function see()
{
global $c, $code, $zi;
if (isset($_GET['r']) && ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id']))) {
$r = round(intval($_GET['r']));
if (in_array($r, [1, 4, 5, 8, 10])) {
$this->zv_see = 1;
if ($this->u->room['FR'] == 0 && $this->u->room['zvsee'] == 0) {
echo '<br><br><br><b><center>Подать заявку можно только в комнатах бойцовского клуба</center></b>';
$this->zv_see = 0;
} elseif ($r == 1 && $this->u->info['level'] > 0) {
echo '<br><br><br><b><center>Вы уже выросли из ползунков ;)</center></b>';
$this->zv_see = 0;
} elseif ($r > 1 && $r < 6 && $this->u->info['level'] < 1) {
echo '<br><br><br><b><center>Вы еще не выросли из ползунков ;)</center></b>';
$this->zv_see = 0;
} elseif ($r > 3 && $r < 6 && $this->u->info['level'] < 2) {
echo '<br><br><br><b><center>В ' . $this->z1n[$r] . ' бои только со второго уровня.</center></b>';
$this->zv_see = 0;
} elseif ($r == 8 && $this->u->info['level'] < 1) {
echo '<br><br><br><b><center>Принимать участие в турнире только с первого уровня.</center></b>';
$this->zv_see = 0;
} elseif ($r == 10) {
if (\Insallah\Tournament::IS_ENABLED) {
/** Турниры by Insallah*/
# Защита от F5
if (!isset($_SESSION['bypass'])) {
$_SESSION['bypass'] = mt_rand();
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['key'] == $_SESSION['bypass']) {
unset($_SESSION['bypass']);
if (array_key_exists('tournament_start', $_POST)) {
(new \Insallah\Tournament())->join($this->u->info['id']);
}
}
##
# Формируем список идущих турниров.
$tournamentsList = Db::getRows('select * from tournaments');
$tournaments = '<ul>';
foreach ($tournamentsList as $tournament) {
$time = $tournament['start_time'] === -1 ? 'Турнир уже начался!' : date(
'G:i', $tournament['start_time']
);
$tournament_members_id = \Insallah\TournamentModel::getFreeFighters($tournament['tid']);
$members = [];
foreach ($tournament_members_id as $member) {
$members[] = \Insallah\TournamentModel::uidToLogin($member);
}
$tournaments .= sprintf(
"<li>Турнир для %d уровней.<br>Время подачи заявки: %s<br>Участники: %s</li>",
$tournament['tid'], $time, implode(', ', $members)
);
}
$tournaments .= '</ul>';
?>
<div>
<strong style="color: red;">Внимание!</strong>
<ul>
<li style="color: blue;">В случае создания либо присоединения к Турниру, покинуть его -
<u>невозможно</u>!
</li>
<?php if (\Insallah\TournamentModel::isEkrOverpriced($this->u->info['id'])): ?>
<li>Стоимость предметов, одетых на вас не должна
превышать <?= \Insallah\Tournament::ekrOverpriceFormula(
$this->u->info['level']
) ?> еврокредитов.
</li>
<?php endif; ?>
<?php if ($this->u->info['exp'] < \Insallah\Tournament::MIN_EXP): ?>
<li>У вас должно быть не менее <?= \Insallah\Tournament::MIN_EXP ?> опыта.</li>
<?php endif; ?>
<li style="color: blue;">Турнир начнётся, когда в заявке
наберётся <?= \Insallah\Tournament::START_TOURNAMENT ?> человек.
</li>
<li style="color: blue;">Игроки занявшие 1, 2 и 3 места получат 25, 15, 5 Реликвий
Ангела, а так же задержки на участие в турнире 12 часов, 6 и 3 часа соответственно!
</li>
</ul>
</div>
<?php if (!empty($tournamentsList)): ?>
<div>
<strong>Активные турниры.</strong><br>
<?= $tournaments ?>
</div>
<?php endif; ?>
<?php if (!\Insallah\TournamentModel::getTournamentIdByUserId(
$this->u->info['id']
) || !\Insallah\TournamentModel::isStarted($this->u->info['level'])): ?>
<form method="post">
<input type="submit" name="tournament_start" value="Принять участие в турнире">
<input type="hidden" name="key" value="<?= $_SESSION['bypass'] ?>">
</form>
<?php else: ?>
Вы учавствуете.
<?php endif; ?>
<?php
} else {
?>
<div>
<strong style="color: crimson;">В данный момент турниры не проводятся!</strong>
</div>
<?php
}
/** Конец турниров от Insallah. */
} elseif ($this->u->info['zv'] > 0 && $this->u->info['battle'] == 0 && $r != 8) {
if ($zi['razdel'] == 1 || $zi['razdel'] == 2 || $zi['razdel'] == 3) {
echo '
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">';
if ($this->u->info['team'] == 1) {
$uz = mysql_fetch_array(
mysql_query(
'SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team`="2" LIMIT 1'
)
);
if (!isset($uz['id'])) {
//если никто не принял
echo '<div style="float:left;"><div style="float:left;">Вы уже подали заявку на бой <INPUT class="btn btn-danger" onClick="location=\'main.php?zayvka=1&r=' . $_GET['r'] . '&rnd=' . $code . '&cancelzv\';" TYPE=submit name=close value="Отозвать заявку"></div>';
} else {
//если кто-то принял
$sa = '';
if ($uz['sex'] == 2) {
$sa = 'а';
}
echo '<script> zv_Priem = ' . (0 + $uz['id']) . ';</script><font color="red"><b>Вашу заявку принял' . $sa . ' ' . $ca . '</font></b> ' . $this->u->microLogin(
$uz['id'], 1
) . '</a><font color="red"><b> Хотите подтвердить бой? </b></font><INPUT class="btn btn-success" onClick="location=\'main.php?zayvka=1&r=' . $_GET['r'] . '&rnd=' . $code . '&startBattle\';" TYPE=submit name=close value="Подтвердить"> <INPUT class="btn btn-danger" onClick="location=\'main.php?zayvka=1&r=' . $_GET['r'] . '&rnd=' . $code . '&cancelzv\';" TYPE=submit name=close value="Отказать">';
}
} else {
$uz = mysql_fetch_array(
mysql_query(
'SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zi['id'] . '" AND `st`.`team`="1" LIMIT 1'
)
);
if (isset($uz['id'])) {
echo 'Ожидаем подтверждения боя от ' . $this->u->microLogin(
$uz['id'], 1
) . ' <INPUT class="btn" onClick="location=\'main.php?zayvka=1&r=' . $_GET['r'] . '&rnd=' . $code . '&cancelzv\';" TYPE=submit name=close value="Отозвать запрос">';
}
}
echo '</td><td align="right" valign="top"></td></tr></table></div>';
} else {
$tm_start = floor(($zi['time'] + $zi['time_start'] - time()) / 6) / 10;
$tm_start = $this->rzv($tm_start);
echo '<b>Ожидаем начала ' . $this->z2n[$zi['razdel']] . ' боя</b>';
echo '<br>Ваш бой начнется через ' . $tm_start . ' мин.';
}
} elseif ($r == 8) {
//Турниры
$ttur = [
0 => 'Выжить любой ценой!',
1 => 'Каждый сам за себя!',
2 => 'Захват ключа!',
];
if (isset($_POST['trn1']) && $this->u->room['zvsee'] == 0) {
if ($this->u->info['inTurnirnew'] == 0) {
$totr = mysql_fetch_array(
mysql_query(
'SELECT * FROM `turnirs` WHERE `id` = "' . mysql_real_escape_string(
$_POST['trn1']
) . '" AND `status` = "0" LIMIT 1'
)
);
if (isset($totr['id'])) {
mysql_query(
'UPDATE `users` SET `inTurnirnew` = "' . $totr['id'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `turnirs` SET `users_in` = `users_in` + 1 WHERE `id` = "' . $totr['id'] . '" LIMIT 1'
);
$this->u->info['inTurnirnew'] = $totr['id'];
$this->error = 'Вы записались на участие в турнире.';
} else {
$this->error = 'Заявка на турнир не найдена.';
}
} else {
$this->error = 'Вы уже находитесь в заявке на турнир.';
}
} elseif (isset($_GET['cancel13']) && $this->u->room['zvsee'] == 0) {
if ($this->u->info['inTurnirnew'] > 0) {
$totr = mysql_fetch_array(
mysql_query(
'SELECT * FROM `turnirs` WHERE `id` = "' . mysql_real_escape_string(
$this->u->info['inTurnirnew']
) . '" AND `status` = "0" LIMIT 1'
)
);
if (isset($totr['id'])) {
mysql_query(
'UPDATE `users` SET `inTurnirnew` = "0" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
mysql_query('UPDATE `turnirs` SET `users_in` = `users_in` - 1 LIMIT 1');
$this->u->info['inTurnirnew'] = 0;
$this->error = 'Вы отказались от заявки на турнир.';
} else {
$this->error = 'Нельзя отказаться от заявки находясь в турнире.';
}
} else {
$this->error = 'Вы не принимаете участия ни в одном из турниров.';
}
}
$dv = '';
$trse = '';
if ($this->u->info['inTurnirnew'] > 0) {
$pl = mysql_fetch_array(
mysql_query(
'SELECT * FROM `turnirs` WHERE `id` = "' . $this->u->info['inTurnirnew'] . '" LIMIT 1'
)
);
if (!isset($pl['id'])) {
mysql_query(
'UPDATE `users` SET `inTurnirnew` = "0" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
echo 'Что-то не так... Обновите страницу.';
} else {
$dv = '<b><u>Участники турнира [' . $pl['users_in'] . ']</u></b>:<br>';
$spu = mysql_query(
'SELECT `u`.`id`,`u`.`align`,`u`.`login`,`u`.`clan`,`u`.`level`,`u`.`city`,`u`.`online`,`u`.`sex`,`u`.`cityreg`,`u`.`palpro`,`u`.`invis` FROM `users` AS `u` WHERE `u`.`inTurnirnew` = "' . $pl['id'] . '" LIMIT ' . $pl['users_in']
);
$i = 1;
while ($plu = mysql_fetch_array($spu)) {
$dv .= '<div style="padding:3px;">' . $i . '. ' . $this->u->microLogin(
$plu, 2
) . '</div>';
$i++;
}
echo '
<script type="text/javascript">
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval("location=\'"+selObj.options[selObj.selectedIndex].value+"\'");
if (restore) selObj.selectedIndex=0;
}
</script>
<FORM style="margin:0px; padding:0px; border:0px;" METHOD=\'POST\' ACTION=\'main.php?zayvka=1&r=' . $r . '&rnd=' . $code . '\'>
<input type="hidden" name="add_new_zv" id="add_new_zv" value="' . floor(time() / 3) . '" />
<TABLE width=100% cellspacing=0 cellpadding=0>
<TR>
<TD valign=top>
<font color="red"><b>' . $this->error . '</b></font>
<div style="border-bottom:#b2b2b2 solid 1px;padding:5px;">
Начало турнира через ' . $this->u->timeOut(
$pl['time'] - time()
) . ' <INPUT class="btn" onClick="location=\'main.php?zayvka&r=8&cancel13&tlvl=' . $pl['level'] . '&rnd=' . $code . '\';" TYPE=button name=tmp value="Отказаться">
</div>
<div style="border-bottom:#b2b2b2 solid 1px;padding:5px;margin-bottom:5px;">
' . $dv . '
</div>
</TD>
<TD align=right valign=top>&nbsp;</TD>
</TR>
</TABLE>
</FORM>';
}
} else {
$tlvl = 4;
$i = 4;
$trnmz = [4 => 'Физический', 5 => 'Магический', 6 => 'Физ.\Маг.'];
while ($i <= 6) {
if ($_GET['tlvl'] == $i) {
$trse .= '<option value="/main.php?zayvka&r=8&tlvl=' . $i . '" selected="selected">' . $trnmz[$i] . '</option>';
$tlvl = $i;
} else {
$trse .= '<option value="/main.php?zayvka&r=8&tlvl=' . $i . '">' . $trnmz[$i] . '</option>';
}
$i++;
}
$prb = '<INPUT class="btn" TYPE="submit" name=open value="Принять участие">';
echo '<style>.zvnkj { padding:5px; }</style>';
$sp = mysql_query('SELECT * FROM `turnirs` WHERE `status` = "0" AND `level` = "' . $tlvl . '"');
$j = 0;
while ($pl = mysql_fetch_array($sp)) {
$j++;
$dinf = 'Начало через ' . $this->u->timeOut($pl['time'] - time()) . '';
$dv .= '<label><div class="zvnkj">';
if ($this->u->room['zvsee'] == 0) {
$dv .= '<input type="radio" name="trn1" id="trn1_' . $j . '" value="' . $pl['id'] . '">';
}
$dv .= ' Физический турнир. Участников турнира: ' . $pl['users_in'] . ' чел. | ' . $dinf . '</div></label>';
}
if ($dv == '') {
$dv = 'Список турниров для данного типа пуст...';
}
echo '
<script type="text/javascript">
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval("location=\'"+selObj.options[selObj.selectedIndex].value+"\'");
if (restore) selObj.selectedIndex=0;
}
</script>
<FORM style="margin:0px; padding:0px; border:0px;" METHOD=\'POST\' ACTION=\'main.php?zayvka=1&r=' . $r . '&rnd=' . $code . '\'>
<input type="hidden" name="add_new_zv" id="add_new_zv" value="' . floor(time() / 3) . '" />
<TABLE width=100% cellspacing=0 cellpadding=0>
<TR>
<TD valign=top>
<font color="red"><b>' . $this->error . '</b></font>
<div style="border-bottom:#b2b2b2 solid 1px;padding:5px;">
Тип турнира:
<SELECT NAME=turlevel onChange="MM_jumpMenu(null,this,0)">
' . $trse . '
</SELECT>
' . $prb . '
</div>
<div style="border-bottom:#b2b2b2 solid 1px;padding:5px;margin-bottom:5px;">
' . $dv . '
</div>
' . $prb . '
</TD>
<TD align=right valign=top></TD>
</TR>
</TABLE>
</FORM>';
}
} elseif ($r == 1) {
//новички, физические и договорные удаляются. Инс. 29.05.22
$zi = [
1 => 'Если вы не достигли первого уровня, то для вас это единственный способ для проведения битв.',
];
$dv = '';
if ($this->u->room['zvsee'] == 0) {
if ($this->u->info['level'] <= $c['bot_level'] || $this->u->info['admin'] > 0) {
$dv = '<b><font color="green">Тренировочные бои доступны до ' . ($c['bot_level'] + 1) . '-го уровня.</font></b> <INPUT class="btn btn-inverse" onClick="location=\'main.php?zayvka=1&r=' . $_GET['r'] . '&bot=' . $this->u->info['nextAct'] . '\';" TYPE=button name=clone value="Начать бой с клоном">';
} else {
if ($this->u->info['level'] < 9) {
$tstw = ' для <b>8</b> левелов недоступны';
} else {
$tstw = '<input type="text" value="" name="commentfiz" id="commentfiz" style="width:244px; padding:3px;">';
}
$dv .= '<br>
<div>
<div style="padding-top:5px;">
Комментарий к бою ' . $tstw . '
</div>
</div>
<div style="padding-top:5px;"><INPUT class="btn" TYPE=submit name=open value="Подать заявку"></div>';
}
if ($this->u->info['admin'] > 0) {
if (isset($_GET['adminbotatack'])) {
$bot_atack = mysql_fetch_array(
mysql_query(
'SELECT * FROM `test_bot` WHERE `id` = "' . mysql_real_escape_string(
$_GET['adminbotatack']
) . '" LIMIT 1'
)
);
if (isset($bot_atack['id'])) {
$logins_bot = [];
$k = $this->u->addNewbot($bot_atack['id'], null, null, $logins_bot);
if (isset($k['id'])) {
$expB = 0;
$btl = [
'players' => '',
'timeout' => 180,
'type' => 0,
'invis' => 0,
'noinc' => 0,
'travmChance' => 0,
'typeBattle' => 0,
'addExp' => $expB,
'money' => 0,
];
$ins = mysql_query(
'INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES (
"0",
"0",
"0",
"0",
"' . $this->u->info['city'] . '",
"' . time() . '",
"' . $btl['players'] . '",
"' . $btl['timeout'] . '",
"' . $btl['type'] . '",
"' . $btl['invis'] . '",
"' . $btl['noinc'] . '",
"' . $btl['travmChance'] . '",
"' . $btl['typeBattle'] . '",
"' . $btl['addExp'] . '",
"' . $btl['money'] . '")'
);
$btl_id = mysql_insert_id();
mysql_query(
'UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" OR `id` = "' . $this->u->info['id'] . '" LIMIT 2'
);
mysql_query(
'UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $k['id'] . '" LIMIT 1'
);
mysql_query(
'UPDATE `stats` SET `team` = "1" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
die('<script>top.frames[\'main\'].location = "main.php";</script>');
}
}
}
$dv .= '<script type="text/javascript">
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval("location=\'main.php?zayvka=1&r=2&rnd=1&adminbotatack="+selObj.options[selObj.selectedIndex].value+"\'");
if (restore) selObj.selectedIndex=0;
}
</script><form name="form55" id="form55">';
$dv .= '<hr>Бой с монстром: <select style="font-size:12px;" onChange="MM_jumpMenu(\'parent\',this,0)" name="botadminatack"><option value="0">------ Выберите монстра из списка ------</option>';
$sp_m = mysql_query('SELECT * FROM `test_bot` WHERE `pishera` != 0 ORDER BY `id` ASC');
while ($pl_m = mysql_fetch_array($sp_m)) {
$dv .= '<option value="' . $pl_m['id'] . '">' . $pl_m['id'] . ' [ ' . $pl_m['align'] . ' ] - ' . $pl_m['login'] . ' [' . $pl_m['level'] . '] ' . $pl_m['pishera'] . '</option>';
}
$dv .= '</select></form>';
}
echo '
<FORM style="margin:0px; padding:0px; border:0px;" METHOD=\'POST\' ACTION=\'main.php?zayvka=1&r=' . $r . '&rnd=' . $code . '\'>
<input type="hidden" name="add_new_zv" id="add_new_zv" value="' . floor(time() / 3) . '" />
<TABLE width=100% cellspacing=0 cellpadding=0>
<TR>
<TD valign=top><!--' . $zi[$r] . '<BR>-->
<table cellspacing=0 cellpadding=0>
<tr>
<td>
' . $dv . '
</td>
</tr>
</table></TD>
<TD align=right valign=top></TD>
</TR>
</TABLE>
</FORM>';
}
} elseif ($r == 4) {
if ($this->u->room['zvsee'] == 0) { //групповые ?>
<span id="hidezv1_btn"><INPUT class="btn" onClick="openfizrmk();" TYPE=button name=tmp
value="Подать заявку на групповой бой" style="margin:3px;"></span>
<FIELDSET id="hidezv1" style="display:none; border-color:#FFF; width:500px;">
<LEGEND><B style="color:#8f0000">Подать заявку на групповой бой</B></LEGEND>
<form method="post"
action="main.php?zayvka&r=<?= $_GET['r'] ?>&add_group&rnd=<?= $code ?>">
<table>
<tr>
<td>
Начало боя через
<select style="padding:2px;" name="startime">
<option value="300">5 минут</option>
<option value="600">10 минут</option>
</select>
&nbsp;&nbsp;&nbsp;&nbsp;Таймаут
<select style="padding:2px;" name="timeout">
<option value="1">1 мин.</option>
<option value="2">2 мин.</option>
<option value="3">3 мин.</option>
</select>
<br/>
Ваша команда
<input style="padding:2px;" type="text" name="nlogin1" size="3"
maxlength="2"/> игроков
<select style="padding:2px;" name="levellogin1">
<option value="0">любой</option>
<option value="1">только моего и ниже</option>
<option value="2">только ниже моего уровня</option>
<option value="3">только моего уровня</option>
<option value="4">не старше меня более чем на уровень</option>
<option value="5">не младше меня более чем на уровень</option>
<option value="6">мой уровень +/- 1</option>
<option value="99">мой клан</option>
<option value="98">моя склонность</option>
</select>
<br/>
Противники &nbsp;
<input style="padding:2px;" type="text" name="nlogin2" size="3"
maxlength="2"/>
игроков
<select style="padding:2px;" name="levellogin2">
<option value="0">любой</option>
<option value="1">только моего и ниже</option>
<option value="2">только ниже моего уровня</option>
<option value="3">только моего уровня</option>
<option value="4">не старше меня более чем на уровень</option>
<option value="5">не младше меня более чем на уровень</option>
<option value="6">мой уровень +/- 1</option>
<option value="99">только клан</option>
<option value="98">только склонность</option>
</select>
<br/>
<input type="checkbox" name="travma"/>
<label for="travma">Бой без правил <font class="dsc">(проигравшая сторона
получает инвалидность)</font></label><br/>
Комментарий к бою
<?php if ($this->u->info['level'] < 9) {
?> для <b>8</b> левелов недоступны
<?php } else { ?>
<input type="text" style="padding:2px;" name="cmt" maxlength="40"
size="40">
<?php } ?>
</td>
</tr>
<tr>
<td align="left">
<input class="btn" type="submit" value="Подать заявку" name="open">
</td>
</tr>
</table>
</form>
</FIELDSET>
<?php
}
} elseif ($r == 5) {
if ($this->u->room['zvsee'] == 0) {
echo '<div id="hidezv1_btn"><INPUT class="btn" onClick="openfizrmk();" TYPE=button name=tmp value="Подать заявку на хаотичный бой" style="margin:3px;"></div>
<form action="main.php?zayvka=1&r=' . $_GET['r'] . '&start_haot&rnd=' . $code . '" method="post" style="margin:0px; padding:0px;">
<input type="hidden" name="timeout" value="1">
<div style="display:none; width:600px;" id="hidezv1">
<br>
<FIELDSET style="border-color:#FFF;">
<LEGEND><strong style="color:#8f0000">Подать заявку на хаотичный бой</strong> </LEGEND>
Начало боя через
<SELECT name="startime2">
<option value="60" selected>1 минута
<OPTION value="180">3 минуты
<OPTION value="300">5 минут
</SELECT>
Игроков
<SELECT name="players">
<OPTION selected value="6">6</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="12">12</OPTION>
</SELECT>
<BR>
Уровни бойцов   
<SELECT name="levellogin1">
<OPTION value="0">любой
<OPTION selected value="3">только моего уровня
<OPTION value="6">мой уровень +/- 1</OPTION>
</SELECT>
<BR>
<BR>
<INPUT type="checkbox" name="travma">
Бой без правил <font color="#777">(проигравшая сторона получает инвалидность)</font><BR>
<INPUT type="checkbox" name="noatack"> Закрытый поединок <font color="#777">(бой будет изолирован от нападений)</font><BR>
<INPUT type="checkbox" name="noeff">
Запрет на использование свитков восстановления НР и Маны<BR>
';
if (!$this->u->info['no_zv_key']) {
echo '<img src="/show_reg_img/security2.php?id=' . time(
) . '" width="70" height="20"> Код подтверждения: <input style="width:40px;" type="text" value="" name="code21">';
}
$tstw = $this->u->info['level'] < 9 ? ' для <b>8</b> левелов недоступны' : '<INPUT maxLength="40" size="40" name="cmt">';
echo 'Комментарий к бою ' . $tstw . '
<BR><INPUT class="btn" value="Подать заявку" type="submit" name="open">
</FIELDSET>
</DIV>
</div></form>';
}
}
} elseif ($r == 6) {
//текущие
$x = 1;
$html = '';
$p = 0;
$_GET['from'] = round((int)$_GET['from']);
if ($_GET['from'] > 1 && $_GET['from'] < 50) {
$p = $_GET['from'] - 1;
}
$xx = mysql_num_rows(
mysql_query(
'SELECT `id` FROM `battle` WHERE `type` != 329 AND `team_win` = "-1" AND `time_over` = "0" AND `start1` > 0'
)
);
$px = $p * 15;
if ($p > ceil($xx / 15)) {
$p = ceil($xx / 15);
}
$sp = mysql_query(
'SELECT * FROM `battle` WHERE `type` != 329 AND `team_win` = "-1" AND `time_over` = "0" AND `start1` > 0 ORDER BY `time_start` DESC LIMIT ' . ((int)$px) . ',15'
);
while ($pl = mysql_fetch_array($sp)) {
$tm = '';
$tmu = [];
$tms = [];
$spi = mysql_query(
'SELECT `u`.`login`,`st`.`id`,`st`.`team`,`u`.`id` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`battle` = "' . $pl['id'] . '"'
);
while ($pli = mysql_fetch_array($spi)) {
if (!isset($tmu[$pli['team']])) {
$tms[count($tms)] = $pli['team'];
}
$tmu[$pli['team']][count($tmu[$pli['team']])] = $pli['id'];
}
$i = 0;
while ($i < count($tms)) {
$tmsu = '';
$j = 0;
while ($j < count($tmu[$tms[$j]])) {
if ($tmu[$tms[$i]][$j] > 0) {
$tmsu .= $this->u->microLogin($tmu[$tms[$i]][$j], 1) . ', ';
}
$j++;
}
$tmsu = rtrim($tmsu, ', ');
$tm .= $tmsu;
if ($i + 1 != count($tms)) {
$tm .= ' <SPAN style=\'color: red; font-weight: bold;\'>против</SPAN> ';
}
$i++;
}
if ($tm != '') {
$html .= ($p + $x) . '. <font class=date>' . date(
'd.m.y H:i', $pl['time_start']
) . '</font> ' . $tm . ' <IMG SRC="//img.new-combats.tech/i/fighttype' . $pl['typeBattle'] . '.gif" WIDTH=20 HEIGHT=20 ALT="Физический бой"> <A HREF="logs.php?log=' . $pl['id'] . '&rnd=' . $code . '" target=_blank>»»</A><BR>';
}
$x++;
}
?>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="center"><h3>Записи текущих боев на <?= date('d.m.Y'); ?>
(всего <?= $xx; ?>)</h3></td>
<td valign="top" align="right"></td>
</tr>
</table>
<?php if ($html == '') {
echo '<div align="center">К сожалению сейчас боев нет...</div>';
} else {
echo '<div>' . $html . '</div>';
} ?>
<TABLE width=100% cellspacing=0 cellpadding=0>
<TR>
<TD align=left><?php if ($p > 0 && $xx > 15) { ?><A HREF="?zayvka=1&r=6&from=<?= ($p - 1); ?>">««
предыдущая страница</A><?php } ?>&nbsp;
</TD>
<TD align=right><?php if ($p * 15 - $xx > 0) { ?><A HREF="?zayvka=1&r=6&from=<?= ($p + 1); ?>">
следующая страница »»</A><?php } ?>&nbsp;
</TD>
</TR>
</TABLE>
<?php
} elseif ($r == 7) {
//завершенные
$btl = '';
$dt = time();
if (isset($_GET['logs2'])) {
$dt = round((int)$_GET['logs2']);
}
$dt = strtotime(date('d F Y', $dt) . ' 00:00:00');
$slogin = $this->u->info['login'];
if (isset($_GET['filter'])) {
$slogin = $_GET['filter'];
}
if (isset($_POST['filter'])) {
$slogin = $_POST['filter'];
}
$slogin = str_replace('"', '', $slogin);
$slogin = str_replace("'", '', $slogin);
$slogin = str_replace('\\', '', $slogin);
$see = '<TABLE width=100% cellspacing=0 cellpadding=0><TR>
<TD valign=top>&nbsp;<A HREF="?filter=' . $slogin . '&zayvka=1&r=7&logs2=' . ($dt - 86400) . '">« Предыдущий день</A></TD>
<TD valign=top align=center><H3>Записи о завершенных боях за ' . date('d.m.Y', $dt) . '</H3></TD>
<TD valign=top align=right><A HREF="?filter=' . $slogin . '&zayvka=1&r=7&logs2=' . ($dt + 86400) . '">Следующий день »</A>&nbsp;</TD>
</TR><TR><TD colspan=3 align=center>
<form method="POST" action="main.php?zayvka=1&r=7&rnd=' . $code . '">
Показать только бои персонажа: <INPUT TYPE=text NAME=filter value="' . $slogin . '"> за <INPUT TYPE=text NAME=logs size=12 value="' . date(
'd.m.Y', $dt
) . '"> <INPUT class="btn" TYPE=submit value="фильтр!">
</form>
</TD>
</TR></TABLE>';
$usr = mysql_fetch_array(
mysql_query(
'SELECT `id`,`login`,`level`,`city` FROM `users` WHERE `login` = "' . mysql_real_escape_string(
$slogin
) . '" LIMIT 1'
)
);
if (isset($usr['id'])) {
$tms = $dt;
$tmf = $dt + 86400;
$sp = mysql_query(
'SELECT * FROM `battle_last` WHERE `time` >= ' . $tms . ' AND `time` < ' . $tmf . ' AND `uid` = "' . $usr['id'] . '" ORDER BY `id` DESC'
);
$j = 1;
$jk = 0;
$btl_lst = [];
while ($pl = mysql_fetch_array($sp)) {
$b = mysql_fetch_array(
mysql_query(
'SELECT * FROM `battle_end` WHERE `battle_id` = "' . $pl['battle_id'] . '" LIMIT 1'
)
);
$tm = '';
if (isset($b['id'])) {
$tms = [];
$ts = [];
$spi = mysql_query(
'SELECT * FROM `battle_last` WHERE `battle_id` = "' . $pl['battle_id'] . '"'
);
while ($pli = mysql_fetch_array($spi)) {
if (!isset($tms[$pli['team']])) {
$ts[count($ts)] = $pli['team'];
}
$tms[$pli['team']][count($tms[$pli['team']])] = $pli;
}
$k = 0;
while ($k < count($ts)) {
$g = $ts[$k];
$h = 0;
$tm2 = '';
while ($h < count($tms[$g])) {
if ($tms[$g][$h]['uid'] > 0) {
if ($tms[$g][$h]['align'] > 0) {
$tm2 .= '<img src="//img.new-combats.tech/i/align/align' . $tms[$g][$h]['align'] . '.gif">';
}
$tm2 .= '<b>' . $tms[$g][$h]['login'] . '</b> [' . $tms[$g][$h]['lvl'] . ']<a href="info/' . $tms[$g][$h]['uid'] . '" target="_blank"><img src="//img.new-combats.tech/i/inf_capitalcity.gif"></a>, ';
}
$h++;
}
$tm2 = rtrim($tm2, ', ');
$btlg = mysql_fetch_array(
mysql_query(
'SELECT `id`,`team_win` FROM `battle` WHERE `id` = "' . $pl['battle_id'] . '" LIMIT 1'
)
);
if (isset($btlg['id']) && $g == $btlg['team_win']) {
$tm2 .= ' <img width="20" height="20" src="//img.new-combats.tech/i/flag.gif" title="Победа"> ';
}
$tm .= $tm2;
if ($k + 1 < count($ts) && $tm2 != '' && $ts[$k + 1] > 0) {
$tm .= ' <font color=red><b>против</b></font> ';
}
$k++;
}
}
if (!isset($btl_lst[$b['id']])) {
$btl_lst[$b['id']] = true;
if ($tm == '') {
$tm = 'Данные поединка потеряны';
}
$jk++;
$btl .= $jk . '. <font class=date>' . date(
'd.m.y H:i', $pl['time']
) . '</font> ' . $tm . ' <A HREF="logs.php?log=' . $pl['battle_id'] . '&rnd=' . $code . '" target=_blank>»»</A><br>';
}
$j++;
}
}
if ($btl == '') {
$see .= '<CENTER><BR><BR><B>В этот день не было боев, или же, летописец опять потерял свитки...</B><BR><BR><BR></CENTER><HR><BR>';
} else {
$see .= $btl;
}
echo $see;
} else {
if ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) {
echo '<BR><BR><CENTER><B>Выберите раздел</B></CENTER>';
}
}
} else {
if ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) {
echo '<BR><BR><CENTER><B>Выберите раздел</B></CENTER>';
}
}
}
public function rzv($v)
{
$v = explode('.', $v);
if (!isset($v[1])) {
$v = $v[0] . '.0';
} else {
$v = $v[0] . '.' . $v[1];
}
return $v;
}
public function testzvu($id, $tm, $bt = 0)
{
$query = "select id from stats where zv = $id and team = $tm";
if ($bt) {
$query .= " and bot = 2";
}
return mysql_num_rows(mysql_query($query));
}
public function seeZv()
{
global $code, $zi;
if (isset($_GET['r']) && $this->zv_see == 1) {
$r = round(intval($_GET['r']));
if ($r >= 1 && $r <= 5) {
//Список заявок
$i = 0;
$cl = mysql_query(
'SELECT * FROM `zayvki` WHERE `razdel` = "' . mysql_real_escape_string(
$r
) . '" AND `start` = "0" AND `cancel` = "0" AND `time` > "' . (time(
) - 60 * 60 * 2) . '" /*AND `city` = "' . $this->u->info['city'] . '"*/ ORDER BY `id` DESC'
);
$zvb = '';
while ($pl = mysql_fetch_array($cl)) {
if ($pl['razdel'] == 5) {
if ($pl['min_lvl_1'] < 2) {
$pl['min_lvl_1'] = 2;
}
if ($pl['max_lvl_1'] > 21) {
$pl['max_lvl_1'] = 21;
}
$tm = '';
$tmStart = floor(($pl['time'] + $pl['time_start'] - time()) / 6) / 10;
if ((($pl['time'] + $pl['time_start']) / 10) != (int)(($pl['time'] + $pl['time_start']) / 10)) {
$pl['time'] = ceil($pl['time'] / 60) * 60;
mysql_query(
'UPDATE `zayvki` SET `time` = "' . $pl['time'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
}
$tmStart = $this->rzv($tmStart);
$users = mysql_query(
'SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`admin`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`zv` = "' . $pl['id'] . '"'
);
$col_p = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $pl['id'] . '"')
);
$cols = $col_p[0];
while ($s = mysql_fetch_array($users)) {
$tm .= $this->u->microLogin($s['id'], 1) . ', ';
}
$rad = '';
$tm = rtrim($tm, ', ');
if (!isset($zi['id']) && $this->u->room['zvsee'] == 0 && $this->u->info['inTurnirnew'] == 0) {
$rad = '<input type="radio" name="btl_go" id="btl_go' . $pl['id'] . '" value="' . $pl['id'] . '"> ';
}
$n1tv = '';
$unvs = '';
if ($pl['invise'] == 1) {
//невидимый бой
$tm = '<i>невидимый</i>';
$unvs = 0;
$usrszv = '';
//if( $this->u->info['admin'] > 0 ) {
$spzm = mysql_query(
'SELECT `id`,`team` FROM `stats` WHERE `zv` = "' . $pl['id'] . '" AND `id` != "' . $pl['creator'] . '"'
);
while ($plzm = mysql_fetch_array($spzm)) {
if ($this->u->info['admin'] > 0 || ($this->u->info['align'] > 1 && $this->u->info['align'] < 2) || ($this->u->info['align'] > 3 && $this->u->info['align'] < 4)) {
$usrszv .= ',' . $this->u->microLogin($plzm['id'], 1) . '';
}
$unvs++;
}
//}
$tm = '<font color=grey><span style="color:maroon">' . $this->u->microLogin(
$pl['creator'], 1
) . '</span>' . $usrszv . '</font> - ' . $tm;
$unvs = ' Участников: ' . (1 + $unvs) . ' чел. ';
$n1tv = ' <img src="//img.new-combats.tech/i/fighttypehidden0.gif" title="Невидимый">';
}
if ($pl['kingfight'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/king.gif" title="Призовой поединок">';
}
if ($pl['travmaChance'] == 100) {
$n1tv .= '<img src="//img.new-combats.tech/fighttype6.gif" title="Кровавый поединок">';
}
if ($pl['noatack'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/i/fighttypehidden0.gif" title="Закрытый бой">';
}
if ($pl['nobot'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/nobot.gif" title="В бой не вступают боты">';
}
if ($pl['fastfight'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/fastfight.gif" title="Для начала боя необходимо минимум 2 игрока">';
}
if ($pl['noeff'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/svitok4.png" width="20" height="20" title="Запрет на использование свитков восстановления НР и маны">';
}
if ($pl['arand'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/random.png" width="20" height="20" title="Распределение бойцов случайным образом">';
}
if ($pl['noart'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/noart.png" width="20" height="20" title="Бой без артефактов">';
}
if ($pl['otmorozok'] == 1) {
$n1tv .= ' <img src="//img.new-combats.tech/snow.gif" width="20" height="20" title="В бой могут вмешаться Отморозки">';
}
if ($pl['comment'] != '') {
$dl = '';
if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) {
$dl .= ' (<a href="main.php?zayvka=1&r=5&delcom=' . $pl['id'] . '&key=' . $this->u->info['nextAct'] . '&rnd=' . $code . '">удалить комментарий</a>)';
if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $this->u->newAct(
$_GET['key']
) == true) {
mysql_query(
'UPDATE `zayvki` SET `dcom` = "' . $this->u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
$pl['dcom'] = $this->u->info['id'];
}
}
if ($pl['dcom'] > 0) {
$dl = '<font color="grey"><i>Комментарий удален модератором</i></font>';
}
if ($pl['dcom'] > 0) {
if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) {
$pl['comment'] = '[ Текст комментария : <font color="red">' . $pl['comment'] . '</font>]&nbsp;';
} else {
$pl['comment'] = '';
}
}
$zv_comm = ' ' . $pl['comment'] . '' . $dl . ' ';
} else {
$zv_comm = '';
}
if ($pl['priz'] == 1) {
$imn = '';
if ($pl['min_lvl_1'] == 10) {
$imn .= ' им. Jora Kardan';
}
$zv_comm = ' <a href="/n/567/" target="_blank"><span style="color:#e65700;" title="Участники получают жетоны, чем больше призовых хаотов за сутки, тем больше падает жетонов за победу "><b>(Героическое Сражение' . $imn . ')</b></span></a>';
}
if ($r == 5 && ($pl['creator'] == $this->u->info['id']) && $cols < 2 && $pl['priz'] == 0) {
$del_q = '&nbsp;&nbsp;<a href="main.php?zayvka=1&r=5&del_z_time=' . $pl['id'] . '&rnd=' . $code . '"><img src="//img.new-combats.tech/i/clear.gif" title="Удалить заявку" /></a>';
} else {
$del_q = '';
}
$lvldt = '';
if ($pl['min_lvl_1'] != $pl['max_lvl_2']) {
$lvldt .= '' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_2'] . ' ур. ';
} else {
$lvldt .= '' . $pl['min_lvl_1'] . ' ур. ';
}
$lvldt .= (0 + $cols) . '/' . $pl['maxplayers'] . '';
$zvb .= $rad . '<font class="date">' . date(
'H:i', $pl['time']
) . '</font> <font color="green"><b><i>(' . $lvldt . ')</i></b></font> тип боя: <IMG SRC="//img.new-combats.tech/i/fighttype' . $pl['type'] . '.gif" WIDTH="20" HEIGHT="20" title="Хаотичный бой">' . $n1tv . ' (таймаут <b>' . ($pl['timeout'] / 60) . ' мин.</b>) <b>' . $zv_comm . '</b> <font class="dsc"><i><font color="green">(' . $unvs . 'Бой начнется через <B>' . $tmStart . '</B> мин.)</font> </font></i> ' . $mon . ' <i>Участники:</i> ' . $tm . ' ' . $del_q . '<br />';
} elseif ($pl['razdel'] == 4) {
if ($pl['min_lvl_1'] < 2) {
$pl['min_lvl_1'] = 2;
}
if ($pl['max_lvl_1'] > 21) {
$pl['max_lvl_1'] = 21;
}
if ($pl['min_lvl_2'] < 2) {
$pl['min_lvl_2'] = 2;
}
if ($pl['max_lvl_2'] > 21) {
$pl['max_lvl_2'] = 21;
}
//Заявки группового боя
$tm1 = '';
$tm2 = '';
$tmStart = floor(($pl['time'] + $pl['time_start'] - time()) / 6) / 10;
$tmStart = $this->rzv($tmStart);
//Персонаж в заявке, подключаем ему противника
//Ищем апонента для групповых
$xx2 = $this->testzvu($pl['id'], 2, 0);
if ($pl['bot2'] > 0 && $xx2 < $pl['tm2max']) {
//Добавляем ботов за вторую команду
$spb = mysql_query(
'SELECT `u`.*,`st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`bot` = 3 AND `u`.`level` = "' . $pl['min_lvl_2'] . '" AND `u`.`battle` = 0 AND `st`.`zv` = 0 LIMIT 100'
);
$logins_bot = [];
while ($plb = mysql_fetch_array($spb)) {
if ($xx2 < $pl['tm2max'] && rand(0, 10000) < 5000 && rand(0, 10000) > 5000) {
$bt = $this->u->addNewbot(0, '', $plb['id']);
$logins_bot = $bt['logins_bot'];
if ($bt > 0) {
mysql_query(
'UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "2" WHERE `id` = "' . $bt . '" LIMIT 1'
);
$xx2++;
}
}
}
unset($plb, $spb, $logins_bot, $bt);
}
unset($xx2);
//генерируем команды
$users = mysql_query(
'SELECT `u`.`id`,`u`.`login`,`u`.`level`,`u`.`align`,`u`.`clan`,`u`.`admin`,`st`.`team` FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON `u`.`id` = `st`.`id` WHERE `st`.`zv` = "' . $pl['id'] . '"'
);
$tmc = [];
while ($s = mysql_fetch_array($users)) {
${'tm' . $s['team']} .= $this->u->microLogin($s['id'], 1) . ', ';
$tmc[$s['team']]++;
}
if ($tm1 == '') {
$tm2 = '<font color="#777"><i>группа пока не набрана</i></font>';
} else {
$tm1 = rtrim($tm1, ', ');
}
if ($tm2 == '') {
$tm2 = '<font color="#777"><i>группа пока не набрана</i></font>';
} else {
$tm2 = rtrim($tm2, ', ');
}
//
if ($pl['teams'] == 3) {
if ($tm3 == '') {
$tm2 = '<font color="#777"><i>группа пока не набрана</i></font>';
} else {
$tm3 = rtrim($tm3, ', ');
}
$ttl1 = '';
$ttl2 = '';
$ttl3 = '';
if ($pl['align1'] == 3) {
$ttl1 = 'Тьма';
} elseif ($pl['align1'] == 7) {
$ttl1 = 'Нейтралы';
} else {
$ttl1 = 'Свет';
}
if ($pl['align2'] == 3) {
$ttl2 = 'Тьма';
} elseif ($pl['align2'] == 7) {
$ttl2 = 'Нейтралы';
} else {
$ttl2 = 'Свет';
}
if ($pl['align3'] == 3) {
$ttl3 = 'Тьма';
} elseif ($pl['align3'] == 7) {
$ttl3 = 'Нейтралы';
} else {
$ttl3 = 'Свет';
}
$tm1 = '<img src="//img.new-combats.tech/i/align/align' . $pl['align1'] . '.gif"> ' . $ttl1 . ': ' . $tm1;
$tm2 = '<img src="//img.new-combats.tech/i/align/align' . $pl['align2'] . '.gif"> ' . $ttl2 . ': ' . $tm2;
$tm3 = '<img src="//img.new-combats.tech/i/align/align' . $pl['align3'] . '.gif"> ' . $ttl3 . ': ' . $tm3;
}
//
$rad = '';
if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) {
$rad = '<input type="radio" name="groupClick" id="groupClick" value="' . $pl['id'] . '"> ';
}
if ($pl['comment'] != '') {
$dl = '';
if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) {
$dl .= ' (<a href="main.php?zayvka=1&r=4&delcom=' . $pl['id'] . '&key=' . $this->u->info['nextAct'] . '&rnd=' . $code . '">удалить комментарий</a>)';
if (isset($_GET['delcom']) && $_GET['delcom'] == $pl['id'] && $this->u->newAct(
$_GET['key']
) == true) {
mysql_query(
'UPDATE `zayvki` SET `dcom` = "' . $this->u->info['id'] . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'
);
$pl['dcom'] = $this->u->info['id'];
}
}
if ($pl['dcom'] > 0) {
$dl = '<font color="grey"><i>Комментарий удален модератором</i></font>';
}
if ($pl['dcom'] > 0) {
if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) {
$pl['comment'] = '[ Текст комментария : <font color="red">' . $pl['comment'] . '</font>]&nbsp;';
} else {
$pl['comment'] = '';
}
}
$zv_comm = '' . $pl['comment'] . '' . $dl . '';
} else {
$zv_comm = '';
}
if ($pl['teams'] == 3) {
$zv_comm .= ' <a href="/lib/turnir-sklonnostei/" target="_blank"><span style="color:#543666;" title="В турнире участвует три склонности: Свет, Тьма, Нейтралы. Победившая склонность получает особенное благословение на протяжении дня."><b>(Турнир трех склонностей)</b></span></a>';
}
$zvb .= $rad . '<font class="date">' . date('H:i', $pl['time']) . '</font> ';
$zvb .= '(<font color=green>' . (0 + $tmc[1]) . '/<b>' . $pl['tm1max'] . '</b></font>)';
$zvb .= ' ' . $tm1;
$zvb .= ' <font color="green"><b><i>(';
if ($pl['min_lvl_1'] == $pl['max_lvl_1']) {
$zvb .= $pl['min_lvl_1'];
} else {
$zvb .= $pl['min_lvl_1'] . '-' . $pl['max_lvl_1'];
}
$zvb .= ' ур.)</i></b></font>';
$zvb .= ' <i>против</i> ';
$zvb .= '(<font color=green>' . (0 + $tmc[2]) . '/<b>' . $pl['tm2max'] . '</b></font>)';
$zvb .= ' ' . $tm2;
$zvb .= ' <font color="green"><b><i>(';
if ($pl['min_lvl_2'] == $pl['max_lvl_2']) {
$zvb .= $pl['min_lvl_2'];
} else {
$zvb .= $pl['min_lvl_2'] . '-' . $pl['max_lvl_2'];
}
$zvb .= ' ур.)</i></b></font>';
$zvb .= ' тип боя: <IMG SRC="//img.new-combats.tech/i/fighttype' . $pl['type'] . '.gif" WIDTH="20" HEIGHT="20" title="Групповой бой"> (таймаут: <b>' . ($pl['timeout'] / 60) . ' мин.</b>) ';
$zvb .= ' <b>' . $zv_comm . '</b> ';
$zvb .= ' <font color="green"><i>(Бой начнется через <b>' . $tmStart . '</b>)</i></font> ' . $mon . '<BR>';
} elseif ($pl['razdel'] >= 1 && $pl['razdel'] <= 3) {
$uz = mysql_fetch_array(
mysql_query(
'SELECT `u`.`banned`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $pl['id'] . '" AND `st`.`team`="1" LIMIT 1'
)
);
if (isset($uz['id'])) {
$uze = mysql_fetch_array(
mysql_query(
'SELECT `u`.*,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $pl['id'] . '" AND `st`.`team` = "2" LIMIT 1'
)
);
$d1 = '';
if ($uz['id'] == $this->u->info['id'] || $uze['id'] == $this->u->info['id'] || $this->u->info['level'] <= Config::get('bot_level')) {
$d1 = 'disabled="disabled"';
}
if (!isset($uze['id']) || $this->u->info['zv'] == $pl['id']) {
$enm = '';
if (isset($uze['id'])) {
$enm = ' против ' . $this->u->microLogin($uze['id'], 1) . '';
}
if ($uz['banned'] > 0) {
$pl['id'] = 0;
$d1 = 'disabled="disabled"';
$zvb .= '<span style="text-decoration:line-through;">';
}
$dp1 = '';
if ($pl['money'] > 0) {
$dp1 = ' Бой на деньги, ставка: <b>' . $this->u->round2($pl['money']) . ' кр.</b>';
}
if ($this->u->room['zvsee'] == 0) {
$zvb .= '<input name="btl_go" ' . $d1 . ' type="radio" value="' . $pl['id'] . '" />';
}
$mbcom = '';
if ($pl['comment'] != '') {
$mbcom = ' <b>' . $pl['comment'] . '</b>';
}
$zvb .= '<font class="date">' . date(
'H:i', $pl['time']
) . '</font> ' . $this->u->microLogin(
$uz['id'], 1
) . ' ' . $enm . ' тип боя: <img src="//img.new-combats.tech/i/fighttype' . ($pl['type']) . '.gif"> ( таймаут <b>' . round(
$pl['timeout'] / 60
) . ' мин.</b>' . $dp1 . ' ' . $mon . ')' . $mbcom . '<br>';
if ($uz['banned'] > 0) {
$zvb .= '</span>';
}
}
}
}
$i++;
}
if ($i == 0) {
//заявок нет
if ($this->u->room['zvsee'] > 0) {
echo '<br><br><br><div align="center"><b>В данном разделе нет ни одной заявки</b></div>';
}
} else {
if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) {
if ($_GET['r'] == 5) {
if (!$this->u->info['no_zv_key']) {
echo '<div style="float:left;"><form method="post" style="margin:0px;padding:0px;" action="main.php?zayvka=1&r=' . $r . '&rnd=' . $code . '"><br>
<img src="/show_reg_img/security2.php?id=' . time() . '" width="70" height="20"> Код подтверждения: <input style="width:40px;" type="text" value="" name="code21">
<input class="btn" name="" type="submit" value="Принять участие в мясорубке" /><br>' . $zvb . ' <img src="/show_reg_img/security2.php?id=' . time(
) . '" width="70" height="20"> Код подтверждения: <input style="width:40px;" type="text" value="" name="code22">
<input class="btn" style="margin-top:1px;" type="submit" value="Принять участие в мясорубке" />
</form></div>';
} else {
echo '<div style="float:left;"><form method="post" style="margin:0px;padding:0px;" action="main.php?zayvka=1&r=' . $r . '&rnd=' . $code . '"><br>
<input class="btn" name="" type="submit" value="Принять участие в мясорубке" /><br>' . $zvb . '
<input class="btn" style="margin-top:1px;" type="submit" value="Принять участие в мясорубке" /></form></div>';
}
} else {
if ($zvb != '' && $this->u->info['level'] > Config::get('bot_level')) {
echo '<div style="float:left;"><form method="post" style="margin:0px;padding:0px;" action="main.php?zayvka=1&r=' . $r . '&rnd=' . $code . '"><br><input class="btn" name="" type="submit" value="Принять вызов" /><br>' . $zvb . '<input class="btn" style="margin-top:1px;" type="submit" value="Принять вызов" /></form></div>';
} else {
echo '<div style="float:left;">' . $zvb . '</div>';
}
}
} else {
echo $zvb;
}
}
}
}
}
public function go($id)
{
global $zi;
$filter = new Filter();
if (isset($zi['id'])) {
$this->error = 'Вы не можете принять бой. Сначала отзовите свою заявку.';
} else {
if ($this->u->info['battle'] == 0 && $this->u->info['inTurnirnew'] == 0) {
$z = mysql_fetch_array(
mysql_query(
'SELECT * FROM `zayvki` WHERE `id`="' . mysql_real_escape_string(
intval($id)
) . '" /*AND `city` = "' . $this->u->info['city'] . '"*/ AND `start` = "0" AND `cancel` = "0" AND `time` > "' . (time(
) - 60 * 60 * 2) . '" LIMIT 1'
)
);
if (isset($z['id'])) {
if ($z['razdel'] >= 1 && $z['razdel'] <= 3) {
//новички, физы, договорные
$uz1 = mysql_fetch_array(
mysql_query(
'SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $z['id'] . '" AND `st`.`team`="1" LIMIT 1'
)
);
if (isset($uz1['id'])) {
$uz2 = mysql_fetch_array(
mysql_query(
'SELECT `u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $z['id'] . '" AND `st`.`team`="2" LIMIT 1'
)
);
if ($this->testTravm() == 1 && $z['type'] != 1) {
$this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.';
$az = 0;
} elseif ($this->testTravm() == 2) {
$this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.';
$az = 0;
} elseif ($this->u->info['hpNow'] < $this->u->stats['hpAll'] / 100 * 30 && ($z['razdel'] >= 1 || $z['razdel'] <= 3)) {
$this->error = 'Вы еще слишком ослаблены чтобы начать новый бой';
$az = 0;
} elseif ($uz1['clan'] == $this->u->info['clan'] && $this->u->info['clan'] != 0 && $this->u->info['admin'] == 0 && true == false) {
$this->error = 'Вы не можете сражаться против сокланов';
} elseif ($z['withUser'] != '' && $filter->mystr($this->u->info['login']) != $filter->mystr(
$z['withUser']
) && $z['razdel'] == 3) {
$this->error = 'Вы не можете принять эту заявку';
} elseif ($z['money'] > 0 && $z['money'] > $this->u->info['money']) {
$this->error = 'У Вас недостаточно денег, чтобы принять эту заявку';
} elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) {
$this->error = 'Вы слишком ослаблены, восстановитесь';
} elseif (!isset($uz2['id'])) {
$upd = mysql_query(
'UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "2" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
if ($upd) {
$ca = '';
if ($uz1['clan'] != 0) {
$pc = mysql_fetch_array(
mysql_query(
'SELECT * FROM `clan` WHERE `id`="' . $uz1['clan'] . '" LIMIT 1'
)
);
if (isset($pc['id'])) {
$pc['img'] = $pc['name_mini'] . '.gif';
$ca = '<img title="' . $pc['name'] . '" src="//img.new-combats.tech/i/clan/' . $pc['name_mini'] . '.gif">';
}
}
if ($uz1['align'] != 0) {
$ca = '<img src="//img.new-combats.tech/i/align/align' . $uz1['align'] . '.gif">' . $ca;
}
$this->error = 'Ожидаем подтверждения боя от ' . $ca . ' ' . $uz1['login'] . ' [' . $uz1['level'] . ']<a href="info/' . $uz1['id'] . '" target="_blank"><img src="//img.new-combats.tech/i/inf_capitalcity.gif"></a>';
$sa = '';
if ($this->u->info['sex'] == 2) {
$sa = 'а';
}
$cmsg = new ChatMessage();
$cmsg->setText(' [login:' . $this->u->info['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . $this->u->info['id'] . ']');
$cmsg->setCity($uz1['city']);
$cmsg->setTo($uz1['login']);
$cmsg->setType(6);
(new Chat())->sendMsg($cmsg);
$zi = $z;
$this->u->info['zv'] = $z['id'];
$this->u->info['team'] = 2;
} else {
$this->error = 'Невозможно принять заявку.';
}
} else {
$this->error = 'Заявку уже кто-то принял до вас.';
}
} else {
$this->error = 'Заявка на бой заблокирована.';
}
} elseif ($z['razdel'] == 4 && $this->u->info['level'] > 1) {
$tm = 0;
//групповые
if (isset($_GET['tm1'])) {
$tm = 1;
} elseif (isset($_GET['tm2'])) {
$tm = 2;
} else {
$this->error = 'Что-то здесь не так';
}
if ($tm != 0) {
$t1 = $tm;
$t2 = 1;
$tmmax = 0;
if ($tm == 1) {
$t2 = 2;
}
$cl111 = mysql_query(
'SELECT `u`.`clan`,`st`.`team`,`st`.`id`,`st`.`zv` FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv` = "' . $z['id'] . '" LIMIT 200'
);
$cln = 0;
while ($pc111 = mysql_fetch_array($cl111)) {
if ($pc111['clan'] == $this->u->info['clan'] && $this->u->info['clan'] != 0 && $pc111['team'] == $t2) {
$cln++;
}
if ($pc111['team'] == $t1) {
$tmmax++;
}
}
if ($cln > 0) {
$this->error = 'Вы не можете сражаться против сокланов';
} elseif ($z['bot2'] == 1 && $t1 == 2) {
$this->error = 'Вы не можете сражаться на стороне ботов';
} elseif ($z['money3'] > 0 && $z['money3'] > $this->u->info['money3']) {
$this->error = 'У Вас недостаточно денег, чтобы принять эту заявку';
} elseif (($z['money'] > 0 || $z['money3'] > 0) && $this->u->info['level'] < 4) {
$this->error = 'Бои на деньги проводятся с 4-го уровня';
} elseif ($z['tm' . $t1 . 'max'] > $tmmax) {
if ($z['min_lvl_' . $t1] > $this->u->info['level'] || $z['max_lvl_' . $t1] < $this->u->info['level']) {
$this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи ' . $z['min_lvl_' . $t1] . ' - ' . $z['max_lvl_' . $t1] . ' уровня';
} elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) {
$this->error = 'Вы слишком ослаблены, восстановитесь';
} else {
$upd = mysql_query(
'UPDATE `stats` SET `zv` = "' . $z['id'] . '",`team` = "' . mysql_real_escape_string(
(int)$t1
) . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1'
);
if (!$upd) {
$this->error = 'Ошибка приема заявки...';
} else {
$this->error = 'Вы приняли групповой бой...';
$zi = $z;
$this->u->info['zv'] = $z['id'];
$this->u->info['team'] = mysql_real_escape_string((int)$t1);
}
}
} else {
$this->error = 'Группа уже набрана (' . ($z['tm' . $t1 . 'max'] - $tmmax) . ')';
}
}
} elseif ($z['razdel'] == 5 && $this->u->info['level'] > 1) {
//хаотичные
$col_p = mysql_fetch_array(
mysql_query('SELECT COUNT(*) FROM `stats` WHERE `zv` = "' . $z['id'] . '"')
);
$cols = $col_p[0];
if ($cols >= $z['maxplayers']) {
$this->error = 'Достигнут максимальный предел участников в этой заявке!';
} elseif ($this->testTravm() == 1 && $z['k'] != 1) {
$this->error = 'Вы травмированы. С такими увечьями доступны кулачные бои.';
} elseif ($this->testTravm() == 2) {
$this->error = 'Вы травмированы. С такими увечьями невозможно сражаться.';
} elseif (!$this->u->info['no_zv_key'] && (!isset($_SESSION['code2']) || $_SESSION['code2'] < 1 || ($_POST['code21'] != $_SESSION['code2'] && $_POST['code22'] != $_SESSION['code2']))) {
$this->error = 'Неправильный код подтверждения';
} elseif ($z['min_lvl_1'] > $this->u->info['level'] || $z['max_lvl_1'] < $this->u->info['level']) {
$this->error = 'Вы не подходите по уровню, за эту команду могут зайти персонажи ' . $z['min_lvl_1'] . ' - ' . $z['max_lvl_1'] . ' уровня';
} elseif ($this->u->stats['hpNow'] < ceil($this->u->stats['hpMax'] / 100 * 30)) {
$this->error = 'Вы слишком ослаблены, восстановитесь';
} elseif ($z['money'] > 0 && $this->u->info['level'] < 4) {
$this->error = 'Бои на деньги проводятся с 4-го уровня';
} else {
$t1 = 0;
if ($z['type'] == 33) {
//============================================================================================= Призовые
Db::sql(
'insert into users (name, align, `real`, login, host_reg, pass, ip, ipreg, city, cityreg, room, timereg, mail, bithday, sex, fnq, battle, molch2, level)
values (?,?,1,?,0,?,?,?,?,?,422,unix_timestamp(),?,?,?,0,0,unix_timestamp() + 86400,8)',
[
$this->u->info['name'],
$this->u->info['align'],
$this->u->info['login'],
$this->u->info['pass'],
IP,
IP,
'capitalcity',
'capitalcity',
'haot@new-combats.com',
'01.01.1980',
$this->u->info['sex'],
]
);
$uidb = Db::lastInsertId();
Db::sql('update users set inUser = ? where id = ?', [$uidb, $this->u->info['id']]);
//тут классы
$sellclass = rand(1, 6);
$stmt1 = Db::prepare('update items_users set inOdet = ? where id = ?');
$stmt2 = Db::prepare(
'update items_users set `1price` = (select price_1 from items_shop where sid = 1 and items_shop.item_id = ?) where id = ?'
);
$stmt3 = Db::prepare(
'insert into stats (id, stats, ability, skills, exp, priems) values (?,?,-75,-9,100000,?)'
);
if ($sellclass == 1) {
//уворот класс 1
$this->add_effn($uidb, 8); // ловка
$this->add_effn($uidb, 20); // сокрушение
$items = [
1 => 525,
2 => 539,
3 => 523,
14 => 523,
4 => 290,
5 => 541,
7 => 633,
8 => 647,
9 => 680,
10 => 685,
11 => 685,
12 => 685,
13 => 1151,
16 => 707,
17 => 712,
];
foreach ($items as $slot => $itemId) {
$re = $this->u->addItem($itemId, $uidb);
$stmt1->execute([$slot, $re]);
$stmt2->execute([$itemId, $re]);
}
$stmt3->execute(
[
$uidb,
's1=21|s2=31|s3=16|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=10|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0',
'193|8|217|221|6|213|14|220|141|232|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0',
]
);
//уворот класс закончен
} elseif ($sellclass == 2) {
//крит класс 2
$this->add_effn($uidb, 7); // инта
$this->add_effn($uidb, 20); // сокрушение
$items = [
1 => 527,
2 => 537,
3 => 567,
14 => 723,
4 => 291,
5 => 544,
7 => 626,
8 => 651,
9 => 683,
10 => 686,
11 => 686,
12 => 686,
13 => 706,
16 => 708,
17 => 717,
];
foreach ($items as $slot => $itemId) {
$re = $this->u->addItem($itemId, $uidb);
$stmt1->execute([$slot, $re]);
$stmt2->execute([$itemId, $re]);
}
$stmt3->execute(
[
$uidb,
's1=24|s2=20|s3=24|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=9|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
'193|204|221|138|9|188|240|215|147|232|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0',
]
);
} elseif ($sellclass == 3) {
//танк класс 3
$this->add_effn($uidb, 1); // сила
$this->add_effn($uidb, 20); // сокрушение
$items = [
1 => 533,
2 => 536,
3 => 558,
14 => 722,
4 => 291,
5 => 545,
7 => 628,
8 => 654,
9 => 684,
10 => 689,
11 => 689,
12 => 689,
13 => 700,
16 => 710,
17 => 718,
];
foreach ($items as $slot => $itemId) {
$re = $this->u->addItem($itemId, $uidb);
$stmt1->execute([$slot, $re]);
$stmt2->execute([$itemId, $re]);
}
$stmt3->execute(
[
$uidb,
's1=42|s2=3|s3=3|s4=50|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=9|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
'11|204|233|226|45|14|139|221|6|232|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0',
]
);
} elseif ($sellclass == 4) {
//топор класс 4
$this->add_effn($uidb, 1); // сила
$this->add_effn($uidb, 20); // сокрушение
$items = [
1 => 528,
2 => 538,
3 => 552,
14 => 552,
4 => 291,
5 => 543,
7 => 627,
8 => 653,
9 => 681,
10 => 687,
11 => 687,
12 => 687,
13 => 320,
16 => 709,
17 => 716,
];
foreach ($items as $slot => $itemId) {
$re = $this->u->addItem($itemId, $uidb);
$stmt1->execute([$slot, $re]);
$stmt2->execute([$itemId, $re]);
}
$stmt3->execute(
[
$uidb,
's1=43|s2=15|s3=15|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=10|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0',
'193|139|49|14|6|217|221|204|147|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0',
]
);
} elseif ($sellclass == 5) {
//м земля класс 5
//кастим эфекты
$this->add_effn($uidb, 9); // интелект
$this->add_effn($uidb, 32); // Холодный разум
$this->add_effn($uidb, 54); // Маг уселок земля
$this->add_effn($uidb, 439); // Маг уселок
$items = [
1 => 531,
2 => 534,
3 => 1026,
4 => 291,
5 => 548,
7 => 629,
8 => 657,
9 => 674,
10 => 692,
11 => 692,
12 => 692,
13 => 699,
16 => 711,
17 => 714,
];
foreach ($items as $slot => $itemId) {
$re = $this->u->addItem($itemId, $uidb);
$stmt1->execute([$slot, $re]);
$stmt2->execute([$itemId, $re]);
}
$stmt3->execute(
[
$uidb,
's1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=0|mg4=6|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
'208|117|170|44|113|128|122|249|246|147|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0',
]
);
} elseif ($sellclass == 6) {
//м воздух 6
//кастим эфекты
$this->add_effn($uidb, 9); // интелект
$this->add_effn($uidb, 32); // Холодный разум
$this->add_effn($uidb, 53); // Маг уселок воздух
$this->add_effn($uidb, 439); // Маг уселок
$items = [
1 => 531,
2 => 534,
3 => 1026,
4 => 291,
5 => 548,
7 => 629,
8 => 658,
9 => 675,
10 => 693,
11 => 693,
12 => 693,
13 => 699,
16 => 711,
17 => 714,
];
foreach ($items as $slot => $itemId) {
$re = $this->u->addItem($itemId, $uidb);
$stmt1->execute([$slot, $re]);
$stmt2->execute([$itemId, $re]);
}
$stmt3->execute(
[
$uidb,
's1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=6|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
'208|93|98|260|39|263|257|104|30|147|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0',
]
);
}
// классы кончились
//кастим эфекты
$this->add_effn($uidb, 37);//нектар
$this->add_effn($uidb, 38);//нектар отрицания
$this->add_effn($uidb, 283);//Бутерброд -Завтрак Рыцаря- толстый
$this->add_effn($uidb, 25);//Защита от оружия
$this->add_effn($uidb, 296);//Жажда Жизни +6
Db::sql('update users set money = -3000, money2 = 0 where id = ?', [$uidb]);
//Корекция хп в призовых
Db::sql('update stats set hpNow = hpAll, mpNow = mpAll where id = ?', [$uidb]);
$this->u->info['id'] = $uidb;
//=============================================================================================
$this->error = 'Вы вселены в клона 8го левела'; //ТУТ вселяем в клона призовые хаоты
echo '<script>location="main.php?battle_id=' . $btl_id . '";</script>';
}
$this->u->info['login2'] = '';
$blnc = $this->u->stats['reting'];
$z['tm' . $t1] += $blnc;
$upd = Db::run(
'update stats set zv = ?, team = ? where id = ?',
[$z['id'], $t1, $this->u->info['id']]
);
if ($upd) {
Db::sql(
'update users set login2 = ? where id = ?',
[$this->u->info['login2'], $this->u->info['id']]
);
Db::sql(
'update zayvki set tm1 = ?, tm2 = ? where id = ?',
[$z['tm1'], $z['tm2'], $z['id']]
);
$zi = $z;
$this->u->info['zv'] = $z['id'];
$this->u->info['team'] = $t1;
$this->error = 'Вы приняли хаотичный бой...';
} else {
$this->error = 'Ошибка приема заявки...';
}
}
}
} else {
$this->error = 'Заявка на бой не найдена.';
}
}
}
}
}