'групповые', 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('Турниры: До начала турнира осталось 5 минут.');
$stmt->execute([1, $pl['id']]);
} elseif (floor(($pl['time'] - time()) / 60) <= 10 && $pl['chat'] > 2) {
//Осталось 10 мин.
$chat->sendsys('Турниры: До начала турнира осталось 10 минут.');
$stmt->execute([2, $pl['id']]);
} elseif (floor(($pl['time'] - time()) / 60) <= 15 && $pl['chat'] > 3) {
//Осталось 15 мин.
$chat->sendsys('Турниры: До начала турнира осталось 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 .= '
' . $this->u->microLogin($this->u->info['id'], 1) . '
' . floor(
$this->u->stats['hpNow']
) . '/' . $this->u->stats['hpAll'] . '
';
if ($this->u->stats['mpAll'] > 0) {
$r .= '
' . floor(
$this->u->stats['mpNow']
) . '/' . $this->u->stats['mpAll'] . '
';
}
$r .= '
';
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('"', '"', $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 = 'Что-то не так... ';
}
} 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('"', '"', $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 .= 'Неверное кол-во союзников ';
$gad = 0;
}
$nz['tm2max'] = (int)$_POST['nlogin2'];
if ($nz['tm2max'] < 1 || $nz['tm2max'] > 99) {
$this->error .= 'Неверное кол-во противников ';
$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 подаются в разделе физические или договорные бои ';
$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 = 'Что-то не так... ';
$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 = 'Что-то не так... ';
$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 = 'Что-то не так... ';
}
}
$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 уровня... Со стороны посматривает Общий Враг, ему явно что-то не понравилось... ';
} 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 'Cannot start battle (no prototype "ND0Clone") ';
} 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('');
} 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 'Cannot start battle (no prototype "ND0Clone") ';
} 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('');
} 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('');
} 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 'Подать заявку можно только в комнатах бойцовского клуба ';
$this->zv_see = 0;
} elseif ($r == 1 && $this->u->info['level'] > 0) {
echo 'Вы уже выросли из ползунков ;) ';
$this->zv_see = 0;
} elseif ($r > 1 && $r < 6 && $this->u->info['level'] < 1) {
echo 'Вы еще не выросли из ползунков ;) ';
$this->zv_see = 0;
} elseif ($r > 3 && $r < 6 && $this->u->info['level'] < 2) {
echo 'В ' . $this->z1n[$r] . ' бои только со второго уровня. ';
$this->zv_see = 0;
} elseif ($r == 8 && $this->u->info['level'] < 1) {
echo 'Принимать участие в турнире только с первого уровня. ';
$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 = '';
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(
"Турнир для %d уровней. Время подачи заявки: %s Участники: %s ",
$tournament['tid'], $time, implode(', ', $members)
);
}
$tournaments .= ' ';
?>
Внимание!
В случае создания либо присоединения к Турниру, покинуть его -
невозможно !
u->info['id'])): ?>
Стоимость предметов, одетых на вас не должна
превышать = \Insallah\Tournament::ekrOverpriceFormula(
$this->u->info['level']
) ?> еврокредитов.
u->info['exp'] < \Insallah\Tournament::MIN_EXP): ?>
У вас должно быть не менее = \Insallah\Tournament::MIN_EXP ?> опыта.
Турнир начнётся, когда в заявке
наберётся = \Insallah\Tournament::START_TOURNAMENT ?> человек.
Игроки занявшие 1, 2 и 3 места получат 25, 15, 5 Реликвий
Ангела, а так же задержки на участие в турнире 12 часов, 6 и 3 часа соответственно!
Активные турниры.
= $tournaments ?>
u->info['id']
) || !\Insallah\TournamentModel::isStarted($this->u->info['level'])): ?>
Вы учавствуете.
В данный момент турниры не проводятся!
u->info['zv'] > 0 && $this->u->info['battle'] == 0 && $r != 8) {
if ($zi['razdel'] == 1 || $zi['razdel'] == 2 || $zi['razdel'] == 3) {
echo '
';
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 'Вы уже подали заявку на бой
';
} else {
//если кто-то принял
$sa = '';
if ($uz['sex'] == 2) {
$sa = 'а';
}
echo '
Вашу заявку принял' . $sa . ' ' . $ca . ' ' . $this->u->microLogin(
$uz['id'], 1
) . '
Хотите подтвердить бой? ';
}
} 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
) . '
';
}
}
echo '
';
} else {
$tm_start = floor(($zi['time'] + $zi['time_start'] - time()) / 6) / 10;
$tm_start = $this->rzv($tm_start);
echo 'Ожидаем начала ' . $this->z2n[$zi['razdel']] . ' боя ';
echo ' Ваш бой начнется через ' . $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 = 'Участники турнира [' . $pl['users_in'] . '] : ';
$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 .= '' . $i . '. ' . $this->u->microLogin(
$plu, 2
) . '
';
$i++;
}
echo '
';
}
} else {
$tlvl = 4;
$i = 4;
$trnmz = [4 => 'Физический', 5 => 'Магический', 6 => 'Физ.\Маг.'];
while ($i <= 6) {
if ($_GET['tlvl'] == $i) {
$trse .= '' . $trnmz[$i] . ' ';
$tlvl = $i;
} else {
$trse .= '' . $trnmz[$i] . ' ';
}
$i++;
}
$prb = ' ';
echo '';
$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 .= '';
if ($this->u->room['zvsee'] == 0) {
$dv .= ' ';
}
$dv .= ' Физический турнир. Участников турнира: ' . $pl['users_in'] . ' чел. | ' . $dinf . '
';
}
if ($dv == '') {
$dv = 'Список турниров для данного типа пуст...';
}
echo '
';
}
} 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 = 'Тренировочные бои доступны до ' . ($c['bot_level'] + 1) . '-го уровня. ';
} else {
if ($this->u->info['level'] < 9) {
$tstw = ' для 8 левелов недоступны';
} else {
$tstw = '';
}
$dv .= '
Комментарий к бою ' . $tstw . '
';
}
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('');
}
}
}
$dv .= '';
}
echo '
';
}
} elseif ($r == 4) {
if ($this->u->room['zvsee'] == 0) { //групповые ?>
Подать заявку на групповой бой
u->room['zvsee'] == 0) {
echo '
';
}
}
} 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 .= ' против ';
}
$i++;
}
if ($tm != '') {
$html .= ($p + $x) . '. ' . date(
'd.m.y H:i', $pl['time_start']
) . ' ' . $tm . ' »» ';
}
$x++;
}
?>
Записи текущих боев на = date('d.m.Y'); ?>
(всего = $xx; ?>)
К сожалению сейчас боев нет...';
} else {
echo '' . $html . '
';
} ?>
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 = '';
$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 .= ' ';
}
$tm2 .= '' . $tms[$g][$h]['login'] . ' [' . $tms[$g][$h]['lvl'] . '] , ';
}
$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 .= ' ';
}
$tm .= $tm2;
if ($k + 1 < count($ts) && $tm2 != '' && $ts[$k + 1] > 0) {
$tm .= ' против ';
}
$k++;
}
}
if (!isset($btl_lst[$b['id']])) {
$btl_lst[$b['id']] = true;
if ($tm == '') {
$tm = 'Данные поединка потеряны';
}
$jk++;
$btl .= $jk . '. ' . date(
'd.m.y H:i', $pl['time']
) . ' ' . $tm . ' »» ';
}
$j++;
}
}
if ($btl == '') {
$see .= 'В этот день не было боев, или же, летописец опять потерял свитки... ';
} else {
$see .= $btl;
}
echo $see;
} else {
if ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) {
echo 'Выберите раздел ';
}
}
} else {
if ((!isset($_GET['new_group']) && !isset($_POST['groupClick'])) || isset($zi['id'])) {
echo 'Выберите раздел ';
}
}
}
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 = ' ';
}
$n1tv = '';
$unvs = '';
if ($pl['invise'] == 1) {
//невидимый бой
$tm = 'невидимый ';
$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 = '' . $this->u->microLogin(
$pl['creator'], 1
) . ' ' . $usrszv . ' - ' . $tm;
$unvs = ' Участников: ' . (1 + $unvs) . ' чел. ';
$n1tv = ' ';
}
if ($pl['kingfight'] == 1) {
$n1tv .= ' ';
}
if ($pl['travmaChance'] == 100) {
$n1tv .= ' ';
}
if ($pl['noatack'] == 1) {
$n1tv .= ' ';
}
if ($pl['nobot'] == 1) {
$n1tv .= ' ';
}
if ($pl['fastfight'] == 1) {
$n1tv .= ' ';
}
if ($pl['noeff'] == 1) {
$n1tv .= ' ';
}
if ($pl['arand'] == 1) {
$n1tv .= ' ';
}
if ($pl['noart'] == 1) {
$n1tv .= ' ';
}
if ($pl['otmorozok'] == 1) {
$n1tv .= ' ';
}
if ($pl['comment'] != '') {
$dl = '';
if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) {
$dl .= ' (удалить комментарий )';
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 = 'Комментарий удален модератором ';
}
if ($pl['dcom'] > 0) {
if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) {
$pl['comment'] = '[ Текст комментария : ' . $pl['comment'] . ' ] ';
} 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 = ' (Героическое Сражение' . $imn . ') ';
}
if ($r == 5 && ($pl['creator'] == $this->u->info['id']) && $cols < 2 && $pl['priz'] == 0) {
$del_q = ' ';
} 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 . '' . date(
'H:i', $pl['time']
) . ' (' . $lvldt . ') тип боя: ' . $n1tv . ' (таймаут ' . ($pl['timeout'] / 60) . ' мин. ) ' . $zv_comm . ' (' . $unvs . 'Бой начнется через ' . $tmStart . ' мин.) ' . $mon . ' Участники: ' . $tm . ' ' . $del_q . ' ';
} 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 = 'группа пока не набрана ';
} else {
$tm1 = rtrim($tm1, ', ');
}
if ($tm2 == '') {
$tm2 = 'группа пока не набрана ';
} else {
$tm2 = rtrim($tm2, ', ');
}
//
if ($pl['teams'] == 3) {
if ($tm3 == '') {
$tm2 = 'группа пока не набрана ';
} 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 = ' ' . $ttl1 . ': ' . $tm1;
$tm2 = ' ' . $ttl2 . ': ' . $tm2;
$tm3 = ' ' . $ttl3 . ': ' . $tm3;
}
//
$rad = '';
if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) {
$rad = ' ';
}
if ($pl['comment'] != '') {
$dl = '';
if (($moder['boi'] == 1 || $this->u->info['admin'] > 0) && $pl['dcom'] == 0) {
$dl .= ' (удалить комментарий )';
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 = 'Комментарий удален модератором ';
}
if ($pl['dcom'] > 0) {
if ($moder['boi'] == 1 || $this->u->info['admin'] > 0) {
$pl['comment'] = '[ Текст комментария : ' . $pl['comment'] . ' ] ';
} else {
$pl['comment'] = '';
}
}
$zv_comm = '' . $pl['comment'] . '' . $dl . '';
} else {
$zv_comm = '';
}
if ($pl['teams'] == 3) {
$zv_comm .= ' (Турнир трех склонностей) ';
}
$zvb .= $rad . '' . date('H:i', $pl['time']) . ' ';
$zvb .= '(' . (0 + $tmc[1]) . '/' . $pl['tm1max'] . ' )';
$zvb .= ' ' . $tm1;
$zvb .= ' (';
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 .= ' ур.) ';
$zvb .= ' против ';
$zvb .= '(' . (0 + $tmc[2]) . '/' . $pl['tm2max'] . ' )';
$zvb .= ' ' . $tm2;
$zvb .= ' (';
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 .= ' ур.) ';
$zvb .= ' тип боя: (таймаут: ' . ($pl['timeout'] / 60) . ' мин. ) ';
$zvb .= ' ' . $zv_comm . ' ';
$zvb .= ' (Бой начнется через ' . $tmStart . ' ) ' . $mon . ' ';
} 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 .= '';
}
$dp1 = '';
if ($pl['money'] > 0) {
$dp1 = ' Бой на деньги, ставка: ' . $this->u->round2($pl['money']) . ' кр. ';
}
if ($this->u->room['zvsee'] == 0) {
$zvb .= ' ';
}
$mbcom = '';
if ($pl['comment'] != '') {
$mbcom = ' ' . $pl['comment'] . ' ';
}
$zvb .= '' . date(
'H:i', $pl['time']
) . ' ' . $this->u->microLogin(
$uz['id'], 1
) . ' ' . $enm . ' тип боя: ( таймаут ' . round(
$pl['timeout'] / 60
) . ' мин. ' . $dp1 . ' ' . $mon . ')' . $mbcom . ' ';
if ($uz['banned'] > 0) {
$zvb .= ' ';
}
}
}
}
$i++;
}
if ($i == 0) {
//заявок нет
if ($this->u->room['zvsee'] > 0) {
echo 'В данном разделе нет ни одной заявки
';
}
} else {
if (!isset($zi['id']) && $this->u->room['zvsee'] == 0) {
if ($_GET['r'] == 5) {
if (!$this->u->info['no_zv_key']) {
echo '';
} else {
echo '
';
}
} else {
if ($zvb != '' && $this->u->info['level'] > Config::get('bot_level')) {
echo '
';
} else {
echo '' . $zvb . '
';
}
}
} 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 = ' ';
}
}
if ($uz1['align'] != 0) {
$ca = ' ' . $ca;
}
$this->error = 'Ожидаем подтверждения боя от ' . $ca . ' ' . $uz1['login'] . ' [' . $uz1['level'] . '] ';
$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 '';
}
$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 = 'Заявка на бой не найдена.';
}
}
}
}
}