From a2c658166da3ce173c948e3e6202a0db1188fb30 Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Sat, 6 Jan 2024 00:14:35 +0200 Subject: [PATCH] =?UTF-8?q?WIP:=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=B2?= =?UTF-8?q?=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=BC=D0=B5=D0=BC=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20Fighter.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .htaccess | 12 +- AI.php | 34 +- Array | 6 - _incl_data/class/Battle.php | 2796 ++++++----------- _incl_data/class/Battle/Fighter.php | 8 + _incl_data/class/Battle/Finish.php | 81 +- _incl_data/class/Battle/Log.php | 494 ++- .../class/Battle/Priem/AbstractPriem.php | 114 + _incl_data/class/Battle/Priem/Priem.php | 78 + .../class/Battle/Priem/PriemInterface.php | 36 + _incl_data/class/Battle/Priem/UsePriem.php | 13 + _incl_data/class/Battle/Razmen.php | 580 ++++ _incl_data/class/ComissionShop.php | 3 - _incl_data/class/Core/Config.php | 2 - _incl_data/class/Core/Debug.php | 13 + _incl_data/class/FightRequest.php | 51 +- _incl_data/class/Magic/Elemental/Fire.php | 1 - _incl_data/class/Model/ActionModel.php | 25 +- _incl_data/class/Model/BattleModel.php | 48 + _incl_data/class/Priems.php | 114 +- _incl_data/class/Quests.php | 13 +- _incl_data/class/User.php | 313 +- _incl_data/class/User/ItemsModel.php | 2 +- _incl_data/class/User/Login.php | 23 + _incl_data/class/User/Stats.php | 206 +- _incl_data/class/priem/161.php | 2 +- _incl_data/class/priem/162.php | 2 +- _incl_data/class/priem/163.php | 2 +- _incl_data/class/priem/210.php | 272 +- _incl_data/class/priem/215.php | 203 +- _incl_data/class/priem/220.php | 2 +- _incl_data/class/priem/299.php | 2 +- _incl_data/class/priem/300.php | 2 +- _incl_data/class/priem/301.php | 2 +- _incl_data/class/priem/302.php | 4 +- _incl_data/class/priem/48.php | 209 +- _incl_data/class/priems/eath.php | 4 +- _incl_data/class/priems/fire.php | 4 +- _incl_data/class/priems/moment.php | 2 +- _incl_data/class/priems/water.php | 4 +- answer.txt | 3 - buttons.php | 1 + clans_inf.php | 25 +- exp.php | 1941 ------------ getbattle.php | 440 +-- hmonitor.php | 5 - inf.php | 6 +- items_info.php | 20 +- js/btl_info.js | 4 +- js/onlineList.js | 9 +- jx/battle/log_text.php | 5 + jx/battle/refresh.php | 8 +- jx/battle/refresh_bot.php | 9 +- logs.php | 1214 +++---- main.php | 414 +-- modules_data/_zv.php | 6 +- modules_data/btl_.php | 20 +- modules_data/location/bsenter.php | 6 +- modules_data/location/elka.php | 825 ++--- modules_data/location/novich.php | 6 +- modules_data/location/objaga.php | 30 +- modules_data/location/znahar1.php | 452 ++- modules_data/stats_inv.php | 1262 ++++---- modules_data/stats_loc.php | 177 +- modules_data/vip.php | 6 +- rating_ref.php | 2 +- robots.txt | 12 - 67 files changed, 5555 insertions(+), 7135 deletions(-) delete mode 100644 Array create mode 100644 _incl_data/class/Battle/Fighter.php create mode 100644 _incl_data/class/Battle/Priem/AbstractPriem.php create mode 100644 _incl_data/class/Battle/Priem/Priem.php create mode 100644 _incl_data/class/Battle/Priem/PriemInterface.php create mode 100644 _incl_data/class/Battle/Priem/UsePriem.php create mode 100644 _incl_data/class/Battle/Razmen.php create mode 100644 _incl_data/class/Core/Debug.php create mode 100644 _incl_data/class/Model/BattleModel.php create mode 100644 _incl_data/class/User/Login.php delete mode 100644 answer.txt delete mode 100644 exp.php delete mode 100644 robots.txt diff --git a/.htaccess b/.htaccess index 88f4d734..68b70a2b 100644 --- a/.htaccess +++ b/.htaccess @@ -5,7 +5,7 @@ DefaultLanguage ru Options -Indexes Options -MultiViews RewriteEngine On - + RewriteCond %{HTTP:VIA} !^$ [OR] RewriteCond %{HTTP:FORWARDED} !^$ [OR] RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR] @@ -25,10 +25,6 @@ RewriteRule casino/SWFP.pl casino/SWFP.php [L] RewriteCond %{ENV:REDIRECT} !^yes$ RewriteRule ^r([0-9]+)/?$ /register.php?ref=$1 [L] -RewriteRule ^adminion/([a-zA-Z0-9]+)/?$ /adminion/index.php?mod=$1 [L] -RewriteRule ^adminion/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ /adminion/index.php?mod=$1 [L] -RewriteRule ^adminion/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ /adminion/index.php?mod=$1 [L] - RewriteRule ^settings/?$ /settings.php [L] RewriteRule ^info/(.*)/?$ /inf.php?$1 [L] @@ -45,9 +41,6 @@ RewriteRule ^clan/?$ /clans_inf.php [L] RewriteRule ^ruins/(.*)/?$ /ruins.php?$1 [L] RewriteRule ^ruins/?$ /ruins.php [L] -RewriteRule ^exp/(.*)/?$ /exp.php?$1 [L] -RewriteRule ^exp/?$ /exp.php [L] - RewriteRule ^news/(.*)/?$ /n/$1 [R=301,L] RewriteRule ^news/?$ /n [R=301,L] @@ -91,6 +84,3 @@ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] - -Order Allow,Deny -Allow from all diff --git a/AI.php b/AI.php index 4b4c2502..23aae1ea 100644 --- a/AI.php +++ b/AI.php @@ -483,4 +483,36 @@ foreach ($p as $prow) { echo " [даёт] "; } echo "
"; -} \ No newline at end of file +} + +$stats = Db::getRows('select id, stats from stats'); +$sarr = []; +foreach ($stats as $stat) { + $data = Conversion::dataStringToArray($stat['stats']); + $arr = [ + 'uid' => $stat['id'], + 's1' => $data['s1'] ?? 0, + 's2' => $data['s2'] ?? 0, + 's3' => $data['s3'] ?? 0, + 's4' => $data['s4'] ?? 0, + 's5' => $data['s5'] ?? 0, + 's6' => $data['s6'] ?? 0, + 's7' => $data['s7'] ?? 0, + 'a1' => $data['a1'] ?? 0, + 'a2' => $data['a2'] ?? 0, + 'a3' => $data['a3'] ?? 0, + 'a4' => $data['a4'] ?? 0, + 'mg1' => $data['mg1'] ?? 0, + 'mg2' => $data['mg2'] ?? 0, + 'mg3' => $data['mg3'] ?? 0, + 'mg4' => $data['mg4'] ?? 0, + ]; + unset($data['s1'], $data['s2'], $data['s3'], $data['s4'], $data['s5'], $data['s6'], $data['s7'], + $data['a1'], $data['a2'], $data['a3'], $data['a4'], + $data['mg1'], $data['mg2'], $data['mg3'], $data['mg4']); + $arr['tails'] = Conversion::arrayToDataString($data); + $arr['tails_json'] = json_encode($data); + $sarr[] = $arr; +} + +var_dump($sarr); \ No newline at end of file diff --git a/Array b/Array deleted file mode 100644 index 5dfe4f0c..00000000 --- a/Array +++ /dev/null @@ -1,6 +0,0 @@ -# Netscape HTTP Cookie File -# https://curl.haxx.se/rfc/cookie_spec.html -# This file was generated by libcurl! Edit at your own risk. - -new-combats.com FALSE / FALSE 0 PHPSESSID vt7d2f0tttjoneil7bqsc7org0 -new-combats.com FALSE /jx/battle/ FALSE 1517571089 btl 0 diff --git a/_incl_data/class/Battle.php b/_incl_data/class/Battle.php index 0ec7ee77..37501bad 100644 --- a/_incl_data/class/Battle.php +++ b/_incl_data/class/Battle.php @@ -1,14 +1,17 @@ ['name' => 'Кровожадность', 'act' => 2, 'type_of' => 0, 'moment' => 0, 'moment_end' => 3], ]; - public bool $cached = false; //Кэширование данных - public int $mainStatus = 1; //Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка) - public array $info = []; //Информация о поединке - public array $users = []; //Информация о пользователях в этом бою - public array $stats = []; //Информация о статах пользователей в этом бою - public array $uids = []; //Список пользователей и их id в stats или users пример id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats - public array $atacks = []; //Список ударов в этом бою (действующих) - public array $ga = []; //Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ] - private array $ag = []; //Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ] + /**Кэширование данных (?!)*/ + public bool $cached = false; + + /**Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка)*/ + public int $mainStatus = 1; + + /**Информация о поединке*/ + public array $info = []; + + /**Информация о пользователях в этом бою*/ + public array $users = []; + + /**Информация о статах пользователей в этом бою. Фактичесчки $user->stats для каждого участинка поединко.*/ + public array $stats = []; + + /**Массив объектов бойцов*/ + public array $fighters = []; + + /**Список пользователей и их id в stats или users. + * + * Все id пользователей записываются в этот массив по очереди, где id выступает ключом, а значение + * это порядковый номер. + * + * Например id пользователя = 555 , то $uids[555] выдаст его порядковый номер в массиве users \ stats + */ + public array $uids = []; + + /**Список ударов в этом бою (действующих)*/ + public array $atacks = []; + + /**Список uid кто нанес удар и по кому $ga[ {id кто ударил} ][ {id кого ударил} ]*/ + public array $ga = []; + + /**Список uid кто нанес удар и по кому $ga[ {id кого ударили} ][ {id кто ударил} ]*/ + private array $ag = []; public int $hodID = 0; private int|array $stnZbVs = 0; public array $bots = []; // ID ботов private array $iBots = []; // i бота private array $stnZb = []; - /** Выбранные зоны атаки и блока. - * @var array - */ + /** Выбранные зоны атаки и блока */ private array $uAtc = [ 'id' => 0, 'a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0], 'b' => 0, ]; //Если игрок нанес удар - /** - * Чем лупили - * @var array|array[] - */ - private array $lgItm = [ - 0 => [ - 'грудью', - 'ребром руки', - 'лбом', - 'кулаком', - 'ногой', - 'левой ногой', - 'правой ногой', - 'коленом', - ], - 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], - 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], - 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], - 4 => [ - 'ножнами', - 'гардой', - 'мечом', - 'лезвием меча', - 'рукоятью меча', - 'тупым лезвием', - 'острой стороной меча', - 'огромным мечом', - ], - 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], - 22 => ['костылем'], - ]; - - /** - * Куда лупили - * @var array|array[] - */ - private array $lgZon = [ - 1 => [ - 'в нос', - 'в глаз', - 'в челюсть', - 'по переносице', - 'в кадык', - 'по затылку', - 'в правый глаз', - 'в левый глаз', - 'в скулу', - ], - 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], - 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], - 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], - 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'], - ]; - - /** - * Ошибка (текст) - * @var string - */ - public string $e; + /** Ошибка (текст) */ + public string $e = ''; public array $is = []; public array $items = []; //Очистка кэша для ... @@ -283,13 +253,14 @@ class Battle private array $ucleari = []; public array $rehodeff = []; private array $poglast = []; + + /** Для номерных приёмов */ public array $um_priem = []; private int $importUser = 0; public array $pr_not_use = []; public array $del_val = []; - //Добавляем нанесенный урон private Finish $finish; public function __construct() @@ -298,9 +269,17 @@ class Battle $this->finish = new Finish($this); } + public function initRefresh(User $user): bool + { + $this->is = $user->is; + $this->items = $user->items; + $this->info = $this->battleInfo($user->info['battle']); + return !empty($this->info['id']); + } + //JS информация о игроке - public function maginfoattack($u1, $u2, $type): string + public function maginfoattack($u1, $u2, $type): int { /* 1 - огонь, @@ -322,7 +301,7 @@ class Battle return ' magelogin=' . $v_l . ' onMouseOver=top.hi(this,maginfo(' . $v_z . ',' . $v_p . ',' . $v_m . ',this),event,3,1,1,1,null); onMouseOut=top.hic(); onMouseDown=top.hic(); '; } - public function hphe($uid, $hp, $false_t7 = false) + public function hphe($uid, $hp, $false_t7 = false): float { if (!isset($this->stats[$this->uids[$uid]])) { echo 'WARNING! ОШИБКА! ПОТЕРЯНА ПЕРЕМЕННАЯ ЗДОРОВЬЯ ПЕРСОНАЖА!'; @@ -389,10 +368,9 @@ class Battle ); } - return floor($hp); + return (int)floor($hp); } - // todo stopped here // //Мини лог @@ -470,6 +448,7 @@ class Battle if (!isset($this->users[$this->uids[$id]]) && $u->info['id'] != $id) { return ''; } + if ($u->info['id'] == $id || ($u->info['enemy'] == $id && $id > 0)) { //Всегда обновляем $this->users[$this->uids[$id]] = Db::getRow( @@ -495,14 +474,9 @@ class Battle $armor4 = '
Броня ног: '; if ($u->info['seff'] < 1) { + # Передаётся в js, переносы строк всё ломают! $ef = << - - +
HTML; while ($i != -1) { @@ -652,9 +626,7 @@ class Battle $efcol = $eff[$i]['x']; $efimg = $eff[$i]['img']; $ef .= << - - +
HTML; unset($efix, $efcol, $efimg); @@ -715,9 +687,7 @@ class Battle if ($st['s7'] != 0) { $stsua .= '
Духовность: ' . $st['s7']; } - if ($u->isAdmin()) { - $align = $ur['align']; - } + $tpImg = [ 1 => 4, 2 => 5, @@ -734,13 +704,15 @@ class Battle 11 => 17, //кольцо 2 12 => 18, //кольцо 3 ]; - $info = 'info_reflesh(' . $t . ',' . $ur['id'] . ',"' . $ca . '' . $ur['login2'] . ' [' . $ur['level'] . '] ","' . $ur['obraz'] . '",' . floor( - $st['hpNow'] - ) . ',' . floor($st['hpAll']) . ',' . floor( - $st['mpNow'] - ) . ',' . floor( - $st['mpAll'] - ) . ',0,' . $ur['sex'] . ',"' . $ef . '","' . $stsua . '", "' . $align . '", "' . $ur['zag'] . '");shpb();'; + + $upinfo = <<{$ur['login2']} [{$ur['level']}]  +JS; + $hpmp = [floor($st['hpNow']), floor($st['hpAll']), floor($st['mpNow']), floor($st['mpAll']), ]; + $info = <<'; $td = Conversion::dataStringToArray($itm[$i]['data']); + var_dump($td); $lvar = ''; if ($td['add_hpAll'] > 0) { $td['add_hpAll'] = '+' . $td['add_hpAll']; @@ -795,11 +768,7 @@ class Battle if ($itm[$i]['iznosMAXi'] == 999999999) { $lvar .= '
Долговечность: неразрушимо'; } else { - $lvar .= '
Долговечность: ' . floor( - $itm[$i]['iznosNOW'] - ) . '/' . floor( - $itm[$i]['iznosMAX'] - ); + $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor($itm[$i]['iznosMAX']); } } $ttl .= $lvar; @@ -811,7 +780,7 @@ class Battle } $mgi = Db::getRow('select * from eff_main where id2 = ? and type1 = 12345', [$itm[$i]['magic_inc']]); if (isset($mgi['id2'])) { - $ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $itm[$i]['id'] . ',\'' . $mgi['img'] . '\',1,2);'; + $ccv .= "top.useMagicBattle('{$mgi['mname']}','{$itm[$i]['id']}','{$mgi['img']}',1,2)"; } } @@ -824,7 +793,7 @@ class Battle $var7 = $itm[$i]['img']; $var8 = $ccv; - $info .= "abitms($var1,$var2,$var3,$var4,'$var5','$var6','$var7','$var8');"; + $info .= "abitms($var1,$var2,$var3,$var4,`$var5`,`$var6`,`$var7`,`$var8`);"; unset($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8); $i++; } @@ -836,33 +805,26 @@ class Battle /** * Проверка на выживших. - * Проклято и сломано. + * Дополнительно обнуляет отрицательное здоровье. * @return bool */ public function testUsersLive(): bool { - $r = false; $tl = 0; - $i = 0; - $j = 0; - while ($i < count($this->uids)) { - if ($this->stats[$i]['id'] > 0) { - if (floor($this->stats[$i]['hpNow']) < 1) { - $this->stats[$i]['hpNow'] = 0; - } - $hp[$this->users[$i]['team']] += floor($this->stats[$i]['hpNow']); - if (!isset($tml[$this->users[$i]['team']]) && floor($this->stats[$i]['hpNow']) >= 1) { - $tml[$this->users[$i]['team']] = 1; - $tmv[$j] = $this->users[$i]['team']; - $tl++; - } + + for ($i = 0; $i < count($this->uids); $i++) { + if (empty($this->stats[$i]['id'])) { + continue; } - $i++; + $this->stats[$i]['hpNow'] = max(0, (int)$this->stats[$i]['hpNow']); + if (!empty($tml[$this->stats[$i]['team']]) || $this->stats[$i]['hpNow'] == 0) { + continue; + } + $tml[$this->stats[$i]['team']] = 1; + $tl++; } - if ($tl > 1) { - $r = true; - } - return $r; + + return $tl > 1; } //Запускаем магические предметы, если в них что-то встроено @@ -886,6 +848,7 @@ class Battle $tl = 0; $i = 0; $j = 0; + //fixme есть аналогичное во внешней функции, возможно ошибка. testUsersLive() while ($i < count($this->uids)) { if ($this->stats[$i]['id'] > 0) { if (floor($this->stats[$i]['hpNow']) < 1) { @@ -1123,6 +1086,7 @@ class Battle $mas['text'] .= ' +' . $textpart2 . ''; $mas['text'] .= ' [' . floor($u->info['hpNow'] + $hpSks) . '/' . $u->stats['hpAll'] . ']'; + $this->add_log($mas); Db::sql( @@ -1164,7 +1128,7 @@ class Battle (new Chat())->sendMsg($cmsg); $i01 = 1; - while ($i01 <= (($this->info['izlomObr'] - $this->info['izlomObrNow'])) * 7) { + while ($i01 <= ($this->info['izlomObr'] - $this->info['izlomObrNow']) * 7) { ItemsModel::addItem(1226, $u->info['id'], '|sudba=' . $u->info['login']); $i01++; } @@ -1209,12 +1173,8 @@ class Battle if (empty($bot)) { return; } - $imgBase = Config::img() . DIRECTORY_SEPARATOR . 'i'; - $alignStr = empty($align) ? '' : ""; - $clanStr = empty($clan) ? '' : "$clan"; - $spacedLogin = str_replace(' ', '%20', $login); - $loginLink = "Инф. о $login"; - $btxt = "$alignStr$clanStr$login [$level]$loginLink"; + + $btxt = (new Login($align, $clan, $level, $login))->fullLogin; $btxt .= $gender == 1 ? ' вмешалась в поединок.' : ' вмешался в поединок.'; Log::add( @@ -1271,11 +1231,10 @@ class Battle //Проверка ухода удара в игрока - public function addTravm($uid, $type, $lvl) + public function addTravm($uid, $type, $lvl): void { $stat = rand(1, 3); // пока без духовности $img = "eff_travma$type.gif"; - $timeEnd = 0; if ($type == 1) { $name = 'Легкая травма'; $timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов @@ -1288,7 +1247,7 @@ class Battle $name = 'Тяжелая травма'; $timeEnd = rand(5, 7);// время травмы от 12 до 6 часов $data = 'add_s' . $stat . '=-' . ($lvl * 3); - } elseif ($type == 4) { + } else { $name = 'Неизлечимая травма'; $timeEnd = 24;// время травмы от 24 часа $data = 'add_s' . $stat . '=-' . ($lvl * 50); @@ -1336,28 +1295,38 @@ class Battle /** Осторожно! Подключаются файлы!!! * Трогать очень осторожно. Этот шайтан как-то проверяет приёмы на враге * и рассчитывает урон учитывая и эти приёмы тоже. - * @param $uid1 - * @param $uid2 - * @param $priem - * @param $yron - * @param $profil - * @param $stabil - * @param $test - * @param $inlog + * @param int $uid1 + * @param int $uid2 + * @param int $priem + * @param $yron + * @param int $profil + * @param bool $stabil + * @param bool $test + * @param int $inlog * @return float|int|mixed */ - public function testYronPriem($uid1, $uid2, $priem, $yron, $profil, $stabil, $test = false, $inlog = 0) - { - /* - profil = { - -1 - урон оружием - -2 - урон магией - 0 - неизвестно - 1-4 - профильный оружия - 5-12 - профильный магия - } - stabil - урон не подвержен мощностям и т.д - */ + public function testYronPriem( + int $uid1, + int $uid2, + int $priem, + $yron, + int $profil, + bool $stabil, + bool $test = false, + int $inlog = 0 + ): mixed { + + /** + * profil = { + * -1 - урон оружием + * -2 - урон магией + * 0 - неизвестно + * 1-4 - профильный оружия + * 5-12 - профильный магия + * } + * stabil - урон не подвержен мощностям и т.д + */ + //Проверка $a = 1; $b = 2; @@ -1367,109 +1336,63 @@ class Battle //Проверяем приемы защиты игрока $u1 на урон игрока $u2 //Получаем приемы и смотрим когда какой действует if (!isset($this->stats[$this->uids[$u2]]['u_priem'])) { - $eff = $this->stats[$this->uids[$u2]]['effects']; $j = 0; - while ($j <= count($eff)) { - if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { - $this->stats[$this->uids[$u2]]['u_priem'][] = [ - $j, - $eff[$j]['v2'], - $this->prm[$eff[$j]['v2']]['act'], - $eff[$j]['id'], - $this->prm[$eff[$j]['v2']]['type_of'], - $this->prm[$eff[$j]['v2']]['moment'], - ]; + foreach ($this->stats[$this->uids[$u2]]['effects'] as $effect) { + if ($effect['id_eff'] != 22 || $effect['v1'] != 'priem' || $effect['v2'] < 1) { + continue; } - $j++; + $this->stats[$this->uids[$u2]]['u_priem'][] = [ + $j, + $effect['v2'], + $this->prm[$effect['v2']]['act'], + $effect['id'], + $this->prm[$effect['v2']]['type_of'], + $this->prm[$effect['v2']]['moment'], + ]; } - unset($eff); } - //Приемы защиты + + /** 4: Приемы защиты; 8,9: Прочие приемы; */ $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 4) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php' - )) { - $pr_momental_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - $yron = $fx_moment($u2, $u1, $j, $yron, $profil); - unset($fx_moment); - } + foreach ($this->stats[$this->uids[$u2]]['u_priem'] as $priem) { + if ($priem[2] < 1 || !in_array($priem[4], [4, 8, 9]) || !file_exists("priem/$priem[1].php")) { + continue; + } + $pr_momental_this = $u2; + require_once "priem/$priem[1].php"; + if (isset($fx_moment)) { + $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); + unset($fx_moment); } $j++; } - //Прочие приемы $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_momental_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment)) { - $yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog); - } - unset($fx_moment); - } + foreach ($this->stats[$this->uids[$u1]]['u_priem'] as $priem) { + if ($priem[2] < 1 || $priem[4] != 5 && $priem[7] != 5 || !file_exists("priem/$priem[1].php")) { + continue; } - $j++; - } - - //Прочие приемы (влияет на урон от моментальных приемов) - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][7] == 5) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_momental_this_seven = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment_seven)) { - $yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog); - } - unset($fx_moment_seven); - } + if ($priem[4] == 5) { + $pr_momental_this = $u1; + } elseif ($priem[7] == 5) { // влияет на урон от моментальных приемов + $pr_momental_this_seven = $u1; } - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 180) { - // Переохлаждение (снижает урон на 10%). Пан или пропал. + require_once "priem/$priem[1].php"; + if (isset($fx_moment)) { + $yron = $fx_moment($u1, $u2, $j, $yron, $profil, $inlog); + unset($fx_moment); + } + if (isset($fx_moment_seven)) { + $yron = $fx_moment_seven($u1, $u2, $j, $yron, $profil, $inlog); + unset($fx_moment_seven); + } + if ($priem[1] == 180 && $priem[7] == 5) { // Переохлаждение (снижает урон на 10%). $x = Db::getValue('select x from eff_users where v2 = 180 and uid = ?', [$u1]); $yron = 0.1 * $x; } $j++; } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php' - )) { - $pr_momental_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment)) { - $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); - } - unset($fx_moment); - } - } - if ($this->stats[$this->uids[$u2]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php' - )) { - $pr_momental_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - if (isset($fx_moment)) { - $yron = $fx_moment($u2, $u1, $j, $yron, $profil, $inlog); - } - unset($fx_moment); - } - } - $j++; - } if ($this->stats[$this->uids[$u2]]['zaproc'] > 0) { $yron = round($yron - $yron * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); @@ -1482,58 +1405,58 @@ class Battle //Добавляем статистику - public function priemYronSave($u1, $u2, $yron, $type): void + public function priemYronSave($u1, $u2, $yron, $type = 0): void { //$type 0 - урон , 1 - хил $this->testUserInfoBattle($u1); $this->testUserInfoBattle($u2); - if (isset($this->uids[$u1])) { - if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) { - $adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10); - } else { - $adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10); - } - - if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) { - $yron = $this->stats[$this->uids[$u2]]['hpNow']; - } - - if ($yron > 0) { - $this->users[$this->uids[$u1]]['battle_yron'] += $yron; - $this->users[$this->uids[$u1]]['battle_exp'] += round( - $this->testExp($yron, $this->stats[$this->uids[$u2]]) - ); - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic6'] += $adt6; - $this->stats[$this->uids[$u1]]['tactic6'] += $adt6; - } else { - $this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3; - $this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3; - } - } else { - $adt6 = 0; - } - // - $this->users[$this->uids[$u2]]['last_hp'] = -$yron; - // - mysql_query( - 'UPDATE `stats` SET - `tactic6` = `tactic6` + "' . $adt6 . '", - `battle_yron` = `battle_yron` + "' . $yron . '", - `battle_exp` = `battle_exp` + "' . round( - $this->testExp($yron, $this->stats[$this->uids[$u2]]) - ) . '" - WHERE `id` = "' . $u1 . '" LIMIT 1' - ); - // - mysql_query( - 'UPDATE `stats` SET - `last_hp` = "' . $this->users[$this->uids[$u2]]['last_hp'] . '" - WHERE `id` = "' . $u2 . '" LIMIT 1' - ); + if (!isset($this->uids[$u1], $this->uids[$u2])) { + return; } + + if ($this->stats[$this->uids[$u2]]['hpAll'] <= 1000) { + $adt6 = round(0.1 * (floor($yron) / $this->stats[$this->uids[$u2]]['hpAll'] * 100), 10); + } else { + $adt6 = round(0.1 * (floor($yron) / 1000 * 100), 10); + } + + if ($yron > $this->stats[$this->uids[$u2]]['hpNow']) { + $yron = $this->stats[$this->uids[$u2]]['hpNow']; + } + + if ($yron > 0) { + $this->users[$this->uids[$u1]]['battle_yron'] += $yron; + $this->users[$this->uids[$u1]]['battle_exp'] += round( + $this->testExp($yron, $this->stats[$this->uids[$u2]]) + ); + if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic6'] += $adt6; + $this->stats[$this->uids[$u1]]['tactic6'] += $adt6; + } else { + $this->users[$this->uids[$u1]]['tactic6'] += $adt6 / 3; + $this->stats[$this->uids[$u1]]['tactic6'] += $adt6 / 3; + } + } else { + $adt6 = 0; + } + + $this->users[$this->uids[$u2]]['last_hp'] = -$yron; + + Db::sql( + 'update stats set tactic6 = tactic6 + ?, battle_yron = battle_yron + ?, battle_exp = battle_exp + ? where id = ?', + [ + $adt6, + $yron, + round($this->testExp($yron, $this->stats[$this->uids[$u2]])), + $u1, + ] + ); + + Db::sql('update stats set last_hp = ? where id = ?', [-$yron, $u2]); + + $this->addNewStat( [ 1 => [ @@ -1570,11 +1493,11 @@ class Battle } $this->users[$this->uids[$uid]] = mysql_fetch_array( mysql_query( - 'SELECT + 'SELECT `u`.`id`,`u`.`login`,`u`.`login2`,`u`.`online`,`u`.`admin`,`u`.`city`,`u`.`cityreg`,`u`.`align`,`u`.`align_lvl`,`u`.`align_exp`,`u`.`clan`, `u`.`level`,`u`.`money`,`u`.`money3`,`u`.`money2`,`u`.`money4`,`u`.`battle`,`u`.`sex`,`u`.`obraz`,`u`.`win`,`u`.`win_t`, `u`.`lose`,`u`.`lose_t`,`u`.`nich`,`u`.`timeMain`,`u`.`invis`,`u`.`bot_id`,`u`.`animal`,`u`.`type_pers`, - `u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`stopexp`,`u`.`real`, + `u`.`notrhod`,`u`.`bot_room`,`u`.`inUser`,`u`.`inTurnir`,`u`.`inTurnirnew`,`u`.`stopexp`,`u`.`real`, `st`.* FROM `users` AS `u` LEFT JOIN `stats` AS `st` ON (`u`.`id` = `st`.`id`) WHERE `u`.`id` = "' . $uid . '" LIMIT 1' ) @@ -1692,9 +1615,10 @@ class Battle public function lookLog(): string { global $u; + $hodID = mysql_fetch_array( mysql_query( - 'SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1' + 'SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` LIMIT 1' ) ); if ($hodID['id_hod'] <= 1) { @@ -1703,21 +1627,19 @@ class Battle $js = ''; $pll = 0; - if ($_POST['idlog'] < 1) { - $_POST['idlog'] = 0; - } + $talog = mysql_fetch_array( mysql_query('SELECT `alog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1') ); $sp = mysql_query( - 'SELECT + 'SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs` + FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC' ); if (isset($sp) && $this->info['team_win'] != -1) { $sp = mysql_query( - 'SELECT + 'SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $talog['alog'] . ' ORDER BY `id` DESC' @@ -1780,35 +1702,28 @@ class Battle if ($this->info['type'] != 9) { $hodID = mysql_fetch_array( mysql_query( - 'SELECT `id`,`id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1' + 'SELECT `id_hod` FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` LIMIT 1' ) ); if ($hodID['id_hod'] <= 1) { $u->info['mlog'] = 0; } - if (isset($hodID['id']) && $this->info['team_win'] != -1) { - $hodID = mysql_fetch_array( - mysql_query( - 'SELECT `id` FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" ORDER BY `time` ASC LIMIT 1' - ) - ); - } $tmlog = mysql_fetch_array( mysql_query('SELECT `mlog` FROM `stats` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1') ); $spm = mysql_query( - 'SELECT + 'SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs` + FROM `battle_logs` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC' ); if (isset($spm) && $this->info['team_win'] != -1) { $spm = mysql_query( - 'SELECT + 'SELECT `id`,`type`,`time`,`battle`,`id_hod`,`text`,`vars`,`zona1`,`zona2`,`zonb1`,`zonb2` - FROM `battle_logs_save` + FROM `battle_logs_save` WHERE `battle` = "' . $this->info['id'] . '" AND `id_hod` >= ' . $tmlog['mlog'] . ' AND `vars` LIKE "%' . $u->info['login'] . '%" ORDER BY `id` DESC' ); } @@ -1974,7 +1889,7 @@ class Battle //Проверяем приемы - public function testActions() + public function testActions(): void { global $u; //проверяем удары @@ -2038,10 +1953,17 @@ class Battle $this->addNewAtack($u); } } + + var_dump($this->ga, $this->ag); + //тест, бот делает удары while ($i < count($this->bots)) { $bot = $this->bots[$i]; - if (isset($bot) && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia') { //Тут проверка на бота saintlucia + if ( + isset($bot) && + $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && + $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia' + ) { //Тут проверка на бота saintlucia $j = 0; while ($j < count($this->users)) { if ($this->info['razdel'] == 0) { @@ -2049,23 +1971,58 @@ class Battle } else { $tnbot = time() + rand(1, 2); } - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time( - ) && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['team'] != $this->users[$j]['team']) { - if (isset($this->users[$j]) && $this->stats[$j]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && !isset($this->ga[$bot][$this->users[$j]['id']]) && !isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['id'] != $bot && $this->users[$j]['team'] != $this->users[$this->uids[$bot]]['team']) { - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + if ( + $this->users[$j]['timeGo'] < time() && + $this->users[$this->uids[$bot]]['timeGo'] < time() && + $this->users[$j]['hpNow'] >= 1 && + $this->users[$this->uids[$bot]]['hpNow'] >= 1 && + $this->users[$this->uids[$bot]]['team'] != $this->users[$j]['team'] + ) { + if ( + isset($this->users[$j]) && + $this->stats[$j]['hpNow'] >= 1 && + $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && + !isset($this->ga[$bot][$this->users[$j]['id']]) && + !isset($this->ag[$bot][$this->users[$j]['id']]) && + $this->users[$j]['id'] != $bot && + $this->users[$j]['team'] != $this->users[$this->uids[$bot]]['team'] + ) { + if ( + $this->users[$j]['timeGo'] < time() && + $this->users[$this->uids[$bot]]['timeGo'] < time() + ) { $this->botAtack($this->users[$j]['id'], $bot, 1); mysql_query( 'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1' ); } - } elseif (isset($this->users[$i]) && $this->users[$i]['bot'] > 0 && $this->stats[$i]['hpNow'] >= 1 && $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && $this->users[$i]['id'] != $bot && $this->users[$i]['team'] != $this->users[$this->uids[$bot]]['team']) { - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time() && $this->botAct($bot)) { - if (!isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time() && !isset($this->ag[$bot][$this->users[$i]['id']])) { + } elseif ( + isset($this->users[$i]) && + $this->users[$i]['bot'] > 0 && + $this->stats[$i]['hpNow'] >= 1 && + $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && + $this->users[$i]['id'] != $bot && + $this->users[$i]['team'] != $this->users[$this->uids[$bot]]['team'] + ) { + if ( + $this->users[$j]['timeGo'] < time() && + $this->users[$this->uids[$bot]]['timeGo'] < time() && + $this->botAct($bot) + ) { + if ( + !isset($this->ga[$bot][$this->users[$i]['id']]) && + $this->users[$this->uids[$bot]]['timeGo'] < time() && + !isset($this->ag[$bot][$this->users[$i]['id']]) + ) { $this->botAtack($this->users[$i]['id'], $bot, 1); mysql_query( 'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1' ); - } elseif (!isset($this->ag[$bot][$this->users[$i]['id']]) && isset($this->ga[$bot][$this->users[$i]['id']]) && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + } elseif ( + !isset($this->ag[$bot][$this->users[$i]['id']]) && + isset($this->ga[$bot][$this->users[$i]['id']]) && + $this->users[$this->uids[$bot]]['timeGo'] < time() + ) { $this->botAtack($bot, $this->users[$i]['id'], 1); mysql_query( 'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1' @@ -2074,38 +2031,40 @@ class Battle } } else { //Удары между ботами - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time( - ) && $this->users[$j]['hpNow'] >= 1 && $this->users[$this->uids[$bot]]['hpNow'] >= 1) { - $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = rand( - 1, 5 - ) . '' . rand( - 1, - 5 - ) . rand(1, 5) . rand(1, 5) . rand(1, 5); + if ( + $this->users[$j]['timeGo'] < time() && + $this->users[$this->uids[$bot]]['timeGo'] < time() && + $this->users[$j]['hpNow'] >= 1 && + $this->users[$this->uids[$bot]]['hpNow'] >= 1 + ) { + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a1'] = + rand(1, 5) . '' . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); - $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = rand( - 1, 5 - ) . '' . rand( - 1, - 5 - ) . rand(1, 5) . rand(1, 5) . rand(1, 5); + + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['a2'] = + rand(1, 5) . '' . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ga[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); - $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = rand( - 1, 5 - ) . '' . rand( - 1, - 5 - ) . rand(1, 5) . rand(1, 5) . rand(1, 5); + + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a1'] = + rand(1, 5) . '' . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b1'] = rand(1, 5); - $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = rand( - 1, 5 - ) . '' . rand( - 1, - 5 - ) . rand(1, 5) . rand(1, 5) . rand(1, 5); + + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['a2'] = + rand(1, 5) . '' . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); + $this->atacks[$this->ag[$bot][$this->users[$j]['id']]]['b2'] = rand(1, 5); - if (isset($this->ga[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { - if ($this->users[$j]['timeGo'] < time() && $this->users[$this->uids[$bot]]['timeGo'] < time()) { + + if ( + isset($this->ga[$bot][$this->users[$j]['id']]) && + $this->users[$j]['bot'] > 0 + ) { + if ( + $this->users[$j]['timeGo'] < time() && + $this->users[$this->uids[$bot]]['timeGo'] < time() + ) { $tnbot = time() + rand(3, 7); if ($this->info['type'] == 329) { // тестовый бой $tnbot = time() - 1; @@ -2116,8 +2075,14 @@ class Battle 'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1' ); } - } elseif (isset($this->ag[$bot][$this->users[$j]['id']]) && $this->users[$j]['bot'] > 0) { - if ($this->users[$this->uids[$bot]]['timeGo'] < time() && $this->users[$j]['timeGo'] < time()) { + } elseif ( + isset($this->ag[$bot][$this->users[$j]['id']]) && + $this->users[$j]['bot'] > 0 + ) { + if ( + $this->users[$this->uids[$bot]]['timeGo'] < time() && + $this->users[$j]['timeGo'] < time() + ) { $this->startAtack($this->ag[$bot][$this->users[$j]['id']]); $tnbot = time() + rand(3, 7); if ($this->info['type'] == 329) { // тестовый бой @@ -2141,7 +2106,7 @@ class Battle //Приемы которые используются моментально - private function botAtack($uid, $pl, $tp) + private function botAtack($uid, $pl, $tp): void { $test_atack = mysql_fetch_array( mysql_query( @@ -2163,8 +2128,9 @@ class Battle if (isset($test_uid['id']) && isset($test_pl['id']) && $test_uid['id'] != $test_pl['id']) { $a = rand(1, 5) . '' . rand(1, 5) . rand(1, 5) . rand(1, 5) . rand(1, 5); $b = rand(1, 5); - mysql_query( - 'INSERT INTO `battle_act` (`battle`,`time`,`uid1`,`uid2`,`a1`,`b1`) VALUES ("' . $this->info['id'] . '","' . time() . '","' . $pl . '","' . $uid . '","' . $a . '","' . $b . '")' + Db::sql( + "insert into battle_act (battle,time,uid1,uid2,a1,b1,a2,b2,invis1,invis2) values (?,unix_timestamp(),?,?,?,?,'',0,0,0)", + [$this->info['id'], $pl, $uid, $a, $b,] ); } } elseif ($tp == 2) { @@ -2203,7 +2169,7 @@ class Battle //Приемы которые используются моментально (в конце хода) - public function startAtack($id) + public function startAtack($id): void { global $u, $priem; @@ -2228,7 +2194,7 @@ class Battle $pvr['sp'] = mysql_query( 'SELECT `a`.* FROM `eff_users` AS `a` WHERE `a`.`uid` = "' . $this->atacks[$id]['uid' . $j] . '" AND `a`.`delete` = 0 AND `a`.`v1` = "priem" and v2 not in (29, 30, 31, 32, 36, 49, 85, 86, 87, 88, 89, 90, 139, 174, 175, 176, 177, 178, 179, 187, 188, 191, 201, 206, 207, 208, 209, 210, 211, 217, 220, 222, 226, - 227, 228, 229, 233, 236, 238, 245, 248, 249, 256, 258, 261, 262, 263, 269, 270, 276, 277, 284, 285, 324, 332, 333, 334, 335) + 227, 228, 229, 233, 236, 238, 245, 248, 249, 256, 258, 261, 262, 263, 269, 270, 276, 277, 284, 285, 324, 332, 333, 334, 335) AND `name` NOT LIKE "%Иммунитет%" LIMIT 30' ); @@ -2291,25 +2257,26 @@ class Battle $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); + + $at = $this->newRazmen($id); + // Получаем приемы игроков $this->priemsRazmen($id, $at); $this->priemsRazmenMoment($id, $at); $this->priemsRazmen($id, $at); - $at = $this->newRazmen($id); // Тестируем какие еще могут быть варианты при ударе // Уворот, парирование, крит, пробить блок, блок щитом // Блок щитом (если есть щит, конечно) - - $at = $this->mf2Razmen($at); //крит - $at = $this->mf3Razmen($id, $at, $v); //парирование - $at = $this->mf4Razmen($id, $at, $v); //блок щитом - - $at = $this->mf1Razmen($id, $at, $v); //уворот - $at = $this->mf5Razmen($id, $at, $v); //контрудар - - $at = $this->yronRazmen($id, $at); //расчет урона + $rzm = new Razmen($this, $id, $at); + $rzm->criticalDamage(); + $rzm->parry(); + $rzm->blockByShield(); + $rzm->evasion(); + $rzm->counterstrike(); + $rzm->damage(); + $at = $rzm->getAt(); // Проверяем приемы // Получаем приемы игроков @@ -2442,49 +2409,54 @@ class Battle ) ); } - mysql_query( - 'UPDATE `stats` SET - - `hpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'] . '", - `mpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'] . '", - `tactic1` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic1'] . '", - `tactic2` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic2'] . '", - `tactic3` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic3'] . '", - `tactic4` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic4'] . '", - `tactic5` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic5'] . '", - `tactic6` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic6'] . '", - `tactic7` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic7'] . '", - - `enemy` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'] . '", - `battle_yron` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'] . '", - `last_hp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['last_hp'] . '", - `battle_exp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_exp'] . '", - `priems_z` = "' . $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'] . '" - - WHERE `id` = "' . $this->atacks[$id]['uid1'] . '" LIMIT 1' - ); - mysql_query( - 'UPDATE `stats` SET - - `hpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'] . '", - `mpNow` = "' . $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'] . '", - `tactic1` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic1'] . '", - `tactic2` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic2'] . '", - `tactic3` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic3'] . '", - `tactic4` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic4'] . '", - `tactic5` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic5'] . '", - `tactic6` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic6'] . '", - `tactic7` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic7'] . '", - - `enemy` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'] . '", - `battle_yron` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'] . '", - `last_hp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['last_hp'] . '", - `battle_exp` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_exp'] . '", - `priems_z` = "' . $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'] . '" - - WHERE `id` = "' . $this->atacks[$id]['uid2'] . '" LIMIT 1' - ); + + $sql = 'update stats set hpNow = :hpnow, mpNow = :mpnow, + tactic1 = :t1, tactic2 = :t2, tactic3 = :t3, tactic4 = :t4, + tactic5 = :t5, tactic6 = :t6, tactic7 = :t7, enemy = :enemy, + battle_yron = :by, last_hp = :lasthp, battle_exp = :be, + priems_z = :pz where id = :uid'; + $arg1 = [ + 'hpnow' => $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['hpNow'], + 'mpnow' => $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['mpNow'], + 't1' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic1'], + 't2' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic2'], + 't3' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic3'], + 't4' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic4'], + 't5' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic5'], + 't6' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic6'], + 't7' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['tactic7'], + 'enemy' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['enemy'], + 'by' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_yron'], + 'lasthp' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['last_hp'], + 'be' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['battle_exp'], + 'pz' => $this->users[$this->uids[$this->atacks[$id]['uid1']]]['priems_z'], + 'uid' => $this->atacks[$id]['uid1'], + ]; + $arg2 = [ + 'hpnow' => $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['hpNow'], + 'mpnow' => $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['mpNow'], + 't1' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic1'], + 't2' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic2'], + 't3' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic3'], + 't4' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic4'], + 't5' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic5'], + 't6' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic6'], + 't7' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['tactic7'], + 'enemy' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['enemy'], + 'by' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_yron'], + 'lasthp' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['last_hp'], + 'be' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['battle_exp'], + 'pz' => $this->users[$this->uids[$this->atacks[$id]['uid2']]]['priems_z'], + 'uid' => $this->atacks[$id]['uid2'], + ]; + + Db::sql($sql, $arg1); + Db::sql($sql, $arg2); + unset($sql, $arg1, $arg2); + + $this->priemsRazmenMomentEnd($id, $at); + //Минусуем заряд приема \ эффекта $j = 1; while ($j <= 2) { @@ -2565,13 +2537,13 @@ class Battle 'UPDATE `stats` SET `mpNow` = "' . $btl->stats[$btl->uids[$pvr['uid']]]['mpNow'] . '" WHERE `id` = "' . $pvr['uid'] . '" LIMIT 1' ); - $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex'], null); - $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; + $pvr['text'] = $this->addlt(1, 21, $this->users[$this->uids[$pvr['uid']]]['sex']); + $pvr['text2'] = '{tm1} ' . $pvr['text'] . ' на ' . $pvr['mpSee'] . ' [' . $pvr['mpNow'] . '/' . $pvr['mpAll'] . '] (Мана)'; $this->priemAddLog( $id, 1, 2, $pvr['uid'], 0, '' . $pvr['x'] . '', $pvr['text2'], - ($this->hodID + 0) + $this->hodID ); unset($pvr); } @@ -2682,7 +2654,7 @@ class Battle $this->priemAddLog( $id, 1, 2, $this->atacks[$id]['uid1'], 0, '', $pvr['text2'], - ($this->hodID + 0) + $this->hodID ); unset($pvr); mysql_query( @@ -2694,7 +2666,7 @@ class Battle $this->priemAddLog( $id, 1, 2, $this->atacks[$id]['uid2'], 0, '', $pvr['text2'], - ($this->hodID + 0) + $this->hodID ); unset($pvr); mysql_query( @@ -2725,26 +2697,20 @@ class Battle //Используем приемы /** Осторожно! Подключаются файлы!!! - * @param $pl - * @param $u1 - * @param $t - * @param $u2 - * @param $rznm - * @param $k2nm - * @param $yrn - * @param $yrnt + * @param $pl + * @param $u1 + * @param int $t + * @param int|array $u2 + * @param string $rznm * @return void */ public function delPriem( $pl, $u1, - $t = 1, - $u2 = false, - $rznm = 'Очиститься Кровью', - $k2nm = null, - $yrn = null, - $yrnt = null - ) { + int $t = 1, + int|array $u2 = 0, + string $rznm = 'Очиститься Кровью' + ): void { global $u, $priem; if (!isset($pl['priem']['id']) || isset($this->del_val['eff'][$pl['priem']['id']])) { return; @@ -2757,19 +2723,14 @@ class Battle mysql_query('DELETE FROM `eff_users` WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); } $vLog = 'time1=' . time() . '||s1=' . $u1['sex'] . '||t1=' . $u1['team'] . '||login1=' . $u1['login']; - if (isset($u2['id'])) { + if (is_array($u2) && isset($u2['id'])) { $vLog .= '||s2=' . $u2['sex'] . '||t2=' . $u2['team'] . '||login2=' . $u2['login']; } $mas1 = [ - 'time' => time(), 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'text' => '', 'vars' => $vLog, - 'zona1' => '', - 'zonb1' => '', - 'zona2' => '', - 'zonb2' => '', 'type' => '1', ]; if ($t == 4) { @@ -2780,11 +2741,11 @@ class Battle $mas1['id_hod']++; if ($pl['priem']['file'] != '0') { if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file'] . '.php')) { - require('priems/' . $pl['priem']['file'] . '.php'); + require_once 'priems/' . $pl['priem']['file'] . '.php'; } } elseif ($pl['priem']['file3'] != '0') { if (file_exists('../../_incl_data/class/priems/' . $pl['priem']['file3'] . '.php')) { - require('priems/' . $pl['priem']['file3'] . '.php'); + require_once 'priems/' . $pl['priem']['file3'] . '.php'; } } else { $mas1['text'] = '{tm1} {u1} {1x16x0} прием "' . $pl['name'] . '".'; @@ -2808,7 +2769,7 @@ class Battle //Повторная проверка приемов - private function testZonb($uid, $uid2) + private function testZonb($uid, $uid2): void { $zba = []; @@ -2883,42 +2844,42 @@ class Battle //Проверка действия приема - /** Осторожно! Подключаются файлы!!! - * @param $uid1 - * @param $uid2 - * @param $end + /** + * Осторожно! Подключаются файлы!!! + * @param int $uid1 + * @param int $uid2 НЕ УДАЛЯТЬ!!! + * @param int $end * @return void */ - private function magicItems($uid1, $uid2, $end) + private function magicItems(int $uid1, int $uid2, int $end): void { if (!isset($this->stats[$this->uids[$uid1]])) { return; } - $i = 0; - while ($i < count($this->stats[$this->uids[$uid1]]['items'])) { - $itm = $this->stats[$this->uids[$uid1]]['items'][$i]; - if (isset($itm['id'])) { - $e = Conversion::dataStringToArray($itm['data']); - if (isset($e['bm_a1'])) { - if ($end > 0) { - if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php')) { - require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.end.php'); - } - } else { - if (file_exists('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php')) { - require('../../_incl_data/class/priems/' . $e['bm_a1'] . '.php'); - } - } + + foreach ($this->stats[$this->uids[$uid1]]['items'] as $item) { + if (!isset($item['id'])) { + continue; + } + $e = Conversion::dataStringToArray($item['data']); + if (!isset($e['bm_a1'])) { + continue; + } + if ($end > 0) { + if (file_exists('priems/' . $e['bm_a1'] . '.end.php')) { + require_once 'priems/' . $e['bm_a1'] . '.end.php'; + } + } else { + if (file_exists('priems/' . $e['bm_a1'] . '.php')) { + require_once 'priems/' . $e['bm_a1'] . '.php'; } } - $i++; } - unset($itm); } //Проверка урона приемов - public function priemsRazmen($id, $at) + public function priemsRazmen(array|int $id, array|string $at): void { if ($at == 'fast') { $uid1 = $id[0]; @@ -2927,39 +2888,54 @@ class Battle $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; } - $i = 1; - while ($i <= 2) { - $u1 = $i == 1 ? $uid1 : $uid2; + $this->stats[$this->uids[$uid1]]['u_priem'] = []; + $this->stats[$this->uids[$uid2]]['u_priem'] = []; - //Получаем приемы и смотрим когда какой действует - $eff = $this->stats[$this->uids[$u1]]['effects']; - $this->stats[$this->uids[$u1]]['u_priem'] = []; - $j = 0; - while ($j <= count($eff)) { - if (isset($eff[$j]) && $eff[$j]['id_eff'] == 22 && $eff[$j]['v1'] == 'priem' && $eff[$j]['v2'] > 0) { - $this->stats[$this->uids[$u1]]['u_priem'][] = [ - $j, - $eff[$j]['v2'], - $this->prm[$eff[$j]['v2']]['act'], - $eff[$j]['id'], - $this->prm[$eff[$j]['v2']]['type_of'], - $this->prm[$eff[$j]['v2']]['moment'], - $this->prm[$eff[$j]['v2']]['moment_end'], - $this->prm[$eff[$j]['v2']]['type_sec'], - ]; - } - $j++; + //Получаем приемы и смотрим когда какой действует + + $j = 0; + foreach ($this->stats[$this->uids[$uid1]]['effects'] as $effect) { + if ($effect['id_eff'] != 22 || $effect['v1'] != 'priem' || $effect['v2'] < 1) { + continue; } - $i++; + $this->stats[$this->uids[$uid1]]['u_priem'] = [ + $j, + $effect['v2'], + $this->prm[$effect['v2']]['act'], + $effect['id'], + $this->prm[$effect['v2']]['type_of'], + $this->prm[$effect['v2']]['moment'], + $this->prm[$effect['v2']]['moment_end'], + $this->prm[$effect['v2']]['type_sec'], + ]; + $j++; + } + + $j = 0; + foreach ($this->stats[$this->uids[$uid2]]['effects'] as $effect) { + if (empty($effect) || $effect['id_eff'] != 22 || $effect['v1'] != 'priem' || $effect['v2'] < 1) { + continue; + } + $this->stats[$this->uids[$uid2]]['u_priem'] = [ + $j, + $effect['v2'], + $this->prm[$effect['v2']]['act'], + $effect['id'], + $this->prm[$effect['v2']]['type_of'], + $this->prm[$effect['v2']]['moment'], + $this->prm[$effect['v2']]['moment_end'], + $this->prm[$effect['v2']]['type_sec'], + ]; + $j++; } } /** Осторожно! Подключаются файлы!!! * @param $id * @param $at - * @return mixed + * @return void */ - private function priemsRazmenMoment($id, $at) + private function priemsRazmenMoment($id, $at): void { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; @@ -2981,99 +2957,45 @@ class Battle $at['p'] = $at; $at['p']['p_cast'] = true; } - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 1) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - $this->stats[$this->uids[$u2]]['nopryh']--; - } - } - $j++; - } - } - //Приемы крита + $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 2) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } + foreach ($this->stats[$this->uids[$u1]]['u_priem'] as $priem) { + /** $priem[5] + * 1 Приемы ухода от удара + * 2 Приемы крита + * 3 Приемы атаки + * 4 Приемы защиты + * 5 Прочие приемы + */ + if ( + empty($priem[2]) || + !in_array($priem[5], [1, 2, 3, 4, 5]) || + !file_exists("priem/$priem[1].php") || + $priem[5] == 1 && empty($this->stats[$this->uids[$u2]]['nopryh']) + ) { + continue; + } + + $pr_used_this = $u1; + $pr_moment = true; + require_once "priem/$priem[1].php"; + if (isset($fx_priem)) { + $fx_priem($id, $at, $u1, $j); + unset($fx_priem); } $j++; - } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 3) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset($fx_priem); - } + + if ($priem[5] == 1) { + $this->stats[$this->uids[$u2]]['nopryh']--; } - $j++; - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 4) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][5] == 5) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; } $i++; } - return $at; } //Наносим удар между игроками - private function newRazmen($id, $at = null) + private function newRazmen($id): array { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; @@ -3095,14 +3017,7 @@ class Battle private function usersTestAtack($id, $uid1, $uid2): array { $r = []; - $block = [ - 0, - 0, - 0, - 0, - 0, - 0, - ]; + $block = [0, 0, 0, 0, 0, 0,]; //Проверка блоков $i = 1; @@ -3129,7 +3044,8 @@ class Battle $this->atacks[$id]['a2'][4], ]; } - if ($this->atacks[$id]['out' . $a] == 0) { + + if (isset($a, $j) && $this->atacks[$id]['out' . $a] == 0) { while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { $block[$j] = 1; $j++; @@ -3139,9 +3055,9 @@ class Battle $i++; } } + //Проверка ударов - $i = 1; - while ($i <= $this->stats[$this->uids[$uid1]]['zona']) { + for ($i = 1; $i <= $this->stats[$this->uids[$uid1]]['zona']; $i++) { if (!isset($atack[$i]) || $atack[$i] == 0) { $atack[$i] = rand(1, 5); } @@ -3156,118 +3072,12 @@ class Battle $r['atack'][] = [$atack[$i], 1, 0]; } } - $i++; } + return $r; } - /** Критический размен - * @param $at - * @param $pat - * @param $rjd - * @return array|false|mixed - */ - private function mf2Razmen($at, $pat = false, $rjd = 0) - { - if ($pat) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user( - $this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] - ); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user( - $this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] - ); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $u1 = $uid2; - $u2 = $uid1; - } - - //Расчет крита Атакующего (u1) по Цели (u2) - $j = 0; - $wp01 = 0; - $k01 = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - - if (is_array($at[$a]['atack'])) { - while ($j < count($at[$a]['atack']) && $j <= 8) { - // КУДА БИЛ , ТИП УДАРА - if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - //Левая рука - $wp01 = 3; - $k01 = 1; - } else { - //Правая рука - if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { - $wp01 = 14; - } else { - $wp01 = 3; - } - $k01 = 0; - } - $witm_type01 = 0; - $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; - $witm_data01 = Conversion::dataStringToArray($witm01['data']); - if ($this->mfs( - 1, - [ - 'u1' => $u1, - 'u2' => $u2, - 'mf' => $this->stats[$this->uids[$u1]]['m1'] + $witm_data01['sv_m1'], - 'amf' => $this->stats[$this->uids[$u1]]['m14'], - 'smf' => $this->stats[$this->uids[$u2]]['m2'], - 'aamf1' => (int)$this->stats[$this->uids[$u2]]['enemy_am1'], - ] - ) == 1) { - //кританул, гад :) - if ($at[$a]['atack'][$j][1] == 3) { - //в блок - $at[$a]['atack'][$j][1] = 4; //Тут тест - } elseif ($at[$a]['atack'][$j][1] != 2 && $at[$a]['atack'][$j][1] != 6 && $at[$a]['atack'][$j][1] != 7 && $at[$a]['atack'][$j][1] != 8) { - //обычный крит - $at[$a]['atack'][$j][1] = 5; - } else { - $at[$a]['atack'][$j][1] = 1; - } - } - $j++; - } - } - $i++; - } - unset($witm01, $witm_type01, $k01, $wp01); - - if (isset($pat) && $pat) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - private function yhod_user($uid1, $uid2, $type) + public function yhod_user($uid1, $uid2, $type) { // 1 - кто бьет . 2 - в кого бьют . тип //Удал летит прямо в противника @@ -3316,7 +3126,7 @@ class Battle $r = $type; } } - if ($rand_user && count($rand_user) > 0) { + if (!empty($rand_user)) { $r = $rand_user[rand(0, (count($rand_user) - 1))]; } $this->importUser = $r; @@ -3326,478 +3136,23 @@ class Battle return $r; } - private function mfs(int $type, array|int $mf): int + + public function testRazmenblock1($id, $uid1, $uid2): bool { - $rval = 0; - switch ($type) { - case 1: - //Крит - if ($mf['amf'] < 0) { - $mf['amf'] = 0; - } - if ($mf['mf'] < 0) { - $mf['mf'] = 0; - } - if ($mf['mf'] > $mf['smf']) { - $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); - } + //перенести в Battle/Razmen. - if ($rval < 1) { - $rval = 0; - } - if ($rval > 75) { - $rval = 75; - } - if ($mf['amf'] >= 1) { - if ($mf['amf'] > 100) { - $mf['amf'] = 100; - } - if (($mf['amf'] * 100) >= mt_rand(1, 10000)) { - $rval = 100; - } - } - break; - case 2: - if ($mf['mf'] < 0) { - $mf['mf'] = 0; - } - if ($mf['amf'] < 0) { - $mf['amf'] = 0; - } - if ($mf['smf'] < 0) { - $mf['smf'] = 0; - } - if ($mf['asmf'] < 0) { - $mf['asmf'] = 0; - } - if ($mf['mf'] > $mf['smf']) { - $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5 - } - if ($rval < 1) { - $rval = 0; - } - if ($rval > 75) { - $rval = 75; - } - if ($mf['asmf'] >= 0) { - if ($mf['asmf'] > 100) { - $mf['asmf'] = 100; - } - if ($mf['asmf'] >= rand(1, 100)) { - $rval = 0; - } - } - if ($mf['amf'] >= 0) { - if ($mf['amf'] > 100) { - $mf['amf'] = 100; - } - if ($mf['amf'] >= rand(1, 100)) { - $rval = 100; - } - } - break; - case 3: - if ($mf[1] < 1) { - $mf[1] = 1; - } - if ($mf[2] < 1) { - $mf[2] = 1; - } - $rval = $mf[1] - $mf[2] / 2; - if ($rval > 75) { - $rval = 75; - } - if ($rval < 1) { - $rval = 1; - } - break; - case 4: - $mf = round($mf * 0.6); - if ($mf < 1) { - $mf = 0; - } - if ($mf > 100) { - $mf = 100; - } - $rval = min($mf, 100); //пробой брони - break; - case 5: - if ($mf < 1) { - $mf = 0; - } - $rval = min($mf, 85); //блок щитом - break; - case 6: - //Контрудар - if ($mf['a'] > 0) { - if ($mf['b'] > 0) { - $rval = round($mf['a'] - ($mf['b'] / 2)); - } else { - $rval = $mf['a']; - } - } - if ($rval < 1) { - $rval = 0; - } - if ($rval > 75) { - $rval = 75; - } - break; - } - return Helper::getChanse($rval) ? 1 : 0; - } - - //Сохранение данные - - /** Парирование размен - * @param $id - * @param $at - * @param $v - * @param $pat - * @param $rjd - * @return array|false|mixed - */ - private function mf3Razmen($id, $at, $v, $pat = false, $rjd = 0) - { - if ($pat) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user( - $this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] - ); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user( - $this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] - ); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - - //Расчет парирования Цели (u2) от Атакующего (u1) - $j = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - - if (is_array($at[$a]['atack'])) { - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ((!isset($this->stats[$this->uids[$u2]]['no_pr1']) || $this->stats[$this->uids[$u2]]['no_pr1'] == 0) && $at[$a]['atack'][$j][2] == $v) { - if ($this->mfs( - 3, - [ - 'u1' => $u1, - 'u2' => $u2, - '1' => $this->stats[$this->uids[$u2]]['m7'], - '2' => $this->stats[$this->uids[$u1]]['m7'], - ] - ) == 1 && $this->atacks[$id]['out' . $b] == 0) { - //Парировал, гад :) - $this->stats[$this->uids[$u1]]['nopryh'] = floor( - 0 + (int)$this->stats[$this->uids[$u1]]['nopryh'] - ); - if ((!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] == 0) && $this->stats[$this->uids[$u1]]['nopryh_act'] < 1) { - $at[$a]['atack'][$j][1] = 6; - $this->stats[$this->uids[$u1]]['nopryh']--; - $this->stats[$this->uids[$u1]]['nopryh_act']++; - } - } - } - $j++; - } - } - $i++; - } - - if (isset($pat) && $pat) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - //Отображение НР - - private function mf4Razmen($id, $at, $v, $pat = false) - { - if ($pat) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user( - $this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] - ); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user( - $this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] - ); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if ($this->stats[$this->uids[$u2]]['sheld1'] > 0) { - //Расчет блока щитом Цели (u2) от Атакующего (u1) - $j = 0; - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($at[$a]['atack'][$j][2] == $v) { - if ($this->mfs( - 5, - ($this->stats[$this->uids[$u2]]['m8'] / 2 + $this->stats[$this->uids[$u2]]['m18']) - ) == 1 && $this->atacks[$id]['out' . $b] == 0) { - //блокировал щитом, гад :) - $at[$a]['atack'][$j][1] = 7; - } - } - $j++; - } - } - $i++; - } - - if (isset($pat) && $pat) { - $pat['p'] = $at; - $at = $pat; - } - - return $at; - } - - - //Выводим лог боя - - private function mf1Razmen($id, $at, $v, $pat = false, $rjd = 0) - { - if ($pat) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user( - $this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] - ); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user( - $this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] - ); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - - //Расчет уворота Цели (u2) от Атакующего (u1) - $j = 0; - $wp01 = 3; - $k01 = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - if (is_array($at[$a]['atack'])) { - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($k01 == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - //Левая рука - $wp01 = 3; - $k01 = 1; - } else { - //Правая рука - if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { - $wp01 = 14; - } else { - $wp01 = 3; - } - $k01 = 0; - } - $witm_type01 = 0; - $witm01 = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp01 . 'id']]; - $witm_data01 = Conversion::dataStringToArray($witm01['data']); - if ($at[$a]['atack'][$j][2] == $v) { - $tyv = $this->mfs( - 2, - [ - 'u1' => $u1, - 'u2' => $u2, - 'mf' => $this->stats[$this->uids[$u2]]['m4'], - 'amf' => (int)$this->stats[$this->uids[$u2]]['m15'], - 'smf' => ($this->stats[$this->uids[$u1]]['m5'] + $witm_data01['sv_m5']), - 'asmf' => $this->stats[$this->uids[$u1]]['m21'], - ] - ); - if ($tyv == 1 && $this->atacks[$id]['out' . $b] == 0) { - //увернулся, гад :) - $this->stats[$this->uids[$u1]]['nopryh'] = floor( - (int)$this->stats[$this->uids[$u1]]['nopryh'] - ); - if (!isset($this->stats[$this->uids[$u1]]['nopryh']) || $this->stats[$this->uids[$u1]]['nopryh'] <= 0) { - $at[$a]['atack'][$j][1] = 2; - } else { - $this->stats[$this->uids[$u1]]['nopryh']--; - $this->stats[$this->uids[$u1]]['nopryh_act']++; - } - } - } - $j++; - } - } - $i++; - } - unset($witm01, $witm_type01, $wp01, $k01); - - if (isset($pat) && $pat) { - $pat['p'] = $at; - $at = $pat; - } - return $at; - } - - //Новый лог Мой Лог - - private function mf5Razmen($id, $at, $v) - { - $rjd = 0; - - $uid1 = $this->atacks[$id]['uid1']; - $uid2 = $this->atacks[$id]['uid2']; - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $uid1 = $this->yhod_user( - $this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], - $this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] - ); - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $uid2 = $this->yhod_user( - $this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], - $this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] - ); - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - - //Расчет контрудара Цели (u2) по Атакующему (u1) - $j = 0; - if ($rjd > 0) { - $j = $rjd - 1; - } - while ($j < count($at[$a]['atack']) && $j < 8) { - // КУДА БИЛ , ТИП УДАРА - if ($at[$a]['atack'][$j][2] == $v) { - if ($at[$a]['atack'][$j][1] == 2) { - if ($this->mfs( - 6, - [ - 'u1' => $u1, - 'u2' => $u2, - 'a' => $this->stats[$this->uids[$u2]]['m6'], - 'b' => $this->stats[$this->uids[$u1]]['m6'], - ] - ) == 1) { - //контрудар, гад :) - $at[$a]['atack'][$j][1] = 8; - $rnd_a = rand(1, 5); - $rjd = count($at[$b]['atack']); - if (!$this->testRazmenblock1($id, $u2, $u1, $rnd_a)) { - $at[$b]['atack'][] = [$rnd_a, 1, 0, 1]; // 3 , 0 , 1 - } else { - $at[$b]['atack'][] = [$rnd_a, 3, 0, 1]; // 3 , 0 , 1 - } - $at = $this->contrRestart($id, $at, 1, $rjd); - } - } - } - $j++; - } - $i++; - } - return $at; - } - - - public function testRazmenblock1($id, $uid1, $uid2, $atack): bool - { - $r = false; $block = []; $j = 0; + //Проверка блоков $i = 1; + if ($uid1 == $this->atacks[$id]['uid1']) { $j = $this->atacks[$id]['b2']; } elseif ($uid2 == $this->atacks[$id]['uid1']) { $j = $this->atacks[$id]['b1']; } + if ($this->atacks[$id]['out2'] == 0) { while ($i <= $this->stats[$this->uids[$uid2]]['zonb']) { $block[$j] = 1; @@ -3808,140 +3163,19 @@ class Battle $i++; } } - //Проверка ударов - if ($atack > 0) { - $r = $block[$atack] == 1; - } - return $r; + + return !empty($block); } - ///Комментатор - - private function contrRestart($id, $at, $v, $rjd = 0) - { - //уворот - $at = $this->mf1Razmen($id, $at, $v, true, $rjd); - //парирование - $at = $this->mf3Razmen($id, $at, $v, true, $rjd); - //блок щитом (если есть щит, конечно) - $at = $this->mf4Razmen($id, $at, $v, true); - //крит - $at = $this->mf2Razmen($at, true, $rjd); - - return $this->yronRazmen($id, $at, true, $rjd); - } //Расчет типа удара от оружия - - private function yronRazmen($id, $at, $pat = false, $rjd = 0) - { - if ($pat) { - $pat = $at; - $at = $pat['p']; - } else { - unset($pat); - } - - if ($this->stats[$this->uids[$this->atacks[$id]['uid1']]]['yhod'] > 0) { - $yhod = [1 => 1, 2 => 0]; - } elseif ($this->stats[$this->uids[$this->atacks[$id]['uid2']]]['yhod'] > 0) { - $yhod = [1 => 0, 2 => 1]; - } - - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $u1 = $uid2; - $u2 = $uid1; - } - - $j = 0; - $k = 0; - - if ($rjd > 0) { - $j = $rjd - 1; - } - - if (is_array($at[$a]['atack'])) { - while ($j < count($at[$a]['atack']) && $j < 8) { - if ($k == 0 && isset($this->stats[$this->uids[$u1]]['wp3id'])) { - //Левая рука - $wp = 3; - $k = 1; - } else { - //Правая рука - if (isset($this->stats[$this->uids[$u1]]['wp14id']) && $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp14id']]['type'] != 13) { - $wp = 14; - } else { - $wp = 3; - } - $k = 0; - } - $witm = $this->stats[$this->uids[$u1]]['items'][$this->stats[$this->uids[$u1]]['wp' . $wp . 'id']]; - - $at[$a]['atack'][$j]['wt'] = $witm['type']; - $at[$a]['atack'][$j]['yhod'] = $yhod[$a]; - if (!isset($at[$a]['atack'][$j]['yron']) && ( - $at[$a]['atack'][$j][1] == 1 || - $at[$a]['atack'][$j][1] == 4 || - $at[$a]['atack'][$j][1] == 5) - ) { - $at[$a]['atack'][$j]['yron'] = $this->yronGetrazmen($u1, $u2, $wp); - - if ($at[$a]['atack'][$j][1] == 4) { - $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; - $at[$a]['atack'][$j]['yron']['y'] = round($at[$a]['atack'][$j]['yron']['k'] / 2); - } elseif ($at[$a]['atack'][$j][1] == 5) { - $at[$a]['atack'][$j]['yron']['y_old'] = $at[$a]['atack'][$j]['yron']['y']; - $at[$a]['atack'][$j]['yron']['y'] = $at[$a]['atack'][$j]['yron']['k']; - } - $at[$a]['atack'][$j]['yron']['2h'] = $witm['2h']; - $at[$a]['atack'][$j]['yron']['w'] = $wp; - if ($at[$a]['atack'][$j]['yron']['y'] < 1) { - $at[$a]['atack'][$j]['yron']['r'] = '--'; - } else { - $at[$a]['atack'][$j]['yron']['r'] = '-' . $at[$a]['atack'][$j]['yron']['y']; - } - } else { - $at[$a]['atack'][$j]['block'] = $this->yronGetrazmen($u1, $u2, $wp); - if ($at[$a]['atack'][$j][1] == 4) { - $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; - $at[$a]['atack'][$j]['block']['y'] = round($at[$a]['atack'][$j]['block']['k'] / 2); - } elseif ($at[$a]['atack'][$j][1] == 5) { - $at[$a]['atack'][$j]['block']['y_old'] = $at[$a]['atack'][$j]['block']['y']; - $at[$a]['atack'][$j]['block']['y'] = $at[$a]['atack'][$j]['block']['k']; - } - $at[$a]['atack'][$j]['block']['2h'] = $witm['2h']; - $at[$a]['atack'][$j]['block']['w'] = $wp; - if ($at[$a]['atack'][$j]['block']['y'] < 1) { - $at[$a]['atack'][$j]['block']['r'] = '--'; - } else { - $at[$a]['atack'][$j]['block']['r'] = '-' . $at[$a]['atack'][$j]['block']['y']; - } - } - $j++; - } - } - $i++; - } - if (isset($pat) && $pat) { - $pat['p'] = $at; - $at = $pat; - } - return $at; - } - - //Расчет урона от оружия - public function yronGetrazmen($uid1, $uid2, $wp): array + public function yronGetrazmen($uid1, $uid2, $witm): array { - $r = ['r' => '--',]; + // перенести в Battle/Razmen + + /** * Определяем тип урона * Колющий @@ -3949,14 +3183,10 @@ class Battle * Режущий * Дробящий */ - $witm = 0; - $witm_type = 0; - if ($wp > 0) { - $witm = $this->stats[$this->uids[$uid1]]['items'][$this->stats[$this->uids[$uid1]]['wp' . $wp . 'id']]; - $witm_data = Conversion::dataStringToArray($witm['data']); - $witm_type = $this->weaponTx($witm); - } + $witm_data = Conversion::dataStringToArray($witm['data']); + $witm_type = $this->weaponTx($witm_data); + if ($witm_type == 0 || $witm_type == 12) { $witm_type2 = ''; } else { @@ -4021,14 +3251,16 @@ class Battle if ($witm_type == 12) { //удар кулаком $wAp += $this->stats[$this->uids[$uid1]]['m10']; - if ($this->users[$this->uids[$uid1]]['align'] == 7) { - $wAp += 15; - } } elseif ($witm_type < 5) { $wAp += $this->stats[$this->uids[$uid1]]['pa' . $witm_type]; $wAp -= $this->stats[$this->uids[$uid2]]['antpa' . $witm_type]; } else { - $wAp += $this->stats[$this->uids[$uid1]]['m10'] + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4)] + $this->stats[$this->uids[$uid1]]['m11a'] + $witm_data['sv_pm' . ($witm_type - 4)]; + $wAp += + $this->stats[$this->uids[$uid1]]['m10'] + + $this->stats[$this->uids[$uid1]]['pm' . ($witm_type - 4)] + + $this->stats[$this->uids[$uid1]]['m11a'] + + $witm_data['sv_pm' . ($witm_type - 4)]; + $wAp -= $this->stats[$this->uids[$uid2]]['antpm' . ($witm_type - 4)]; } @@ -4064,22 +3296,17 @@ class Battle $r['w_type'] = $witm_type; //тип от оружия - if ($witm['type'] == 18) { - $tp = 1; - } elseif ($witm['type'] == 19) { - $tp = 2; - } elseif ($witm['type'] == 20) { - $tp = 3; - } elseif ($witm['type'] == 21) { - $tp = 4; - } else { - $tp = 0; - } + $tp = match ($witm['type']) { + 18 => 1, + 19 => 2, + 20 => 3, + 21 => 4, + default => 0 + }; - if ($tp != $witm_type && $wp > 0) // ТУТ + if ($tp != $witm_type) // ТУТ { (int)$r['y'] = round((int)$r['y'] / 3); - $r['r'] = round($r['r'] / 3); $r['k'] = round($r['k'] / 3); $r['m_k'] = round($r['m_k'] / 3); $r['m_y'] = round($r['m_y'] / 3); @@ -4087,7 +3314,6 @@ class Battle if (isset($this->stats[$this->uids[$uid2]]['zaproc'])) { $r['y'] = round($r['y'] - $r['y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); - (int)$r['r'] = round((int)$r['r'] - (int)$r['r'] * (int)$this->stats[$this->uids[$uid2]]['zaproc'] / 100); $r['k'] = round($r['k'] - $r['k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); $r['m_k'] = round($r['m_k'] - $r['m_k'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); $r['m_y'] = round($r['m_y'] - $r['m_y'] * $this->stats[$this->uids[$uid2]]['zaproc'] / 100); @@ -4096,63 +3322,48 @@ class Battle } } - if ($r['y'] < 1) { - $r['y'] = 1; - } - if ($r['r'] >= 0) { - $r['r'] = -1; - } - if ($r['k'] < 1) { - $r['k'] = 1; - } - if ($r['m_k'] < 1) { - $r['m_k'] = 1; - } - if ($r['m_y'] < 1) { - $r['m_y'] = 1; - } + $r['y'] = max($r['y'], 1); + $r['k'] = max($r['k'], 1); + $r['m_y'] = max($r['m_y'], 1); + $r['m_k'] = max($r['m_k'], 1); + return $r; } //Расчет урона от оружия - public function weaponTx($item) + public function weaponTx($itemdata) { - $itm = Conversion::dataStringToArray($item['data']); + $itm = is_array($itemdata) ? $itemdata : Conversion::dataStringToArray($itemdata); + $t[0]['z'] = 0; $t[0]['t'] = 0; //колящий урон - $t[1]['z'] = round(0 + $itm['tya1']); + $t[1]['z'] = (int)$itm['tya1']; $t[1]['t'] = 1; //рубящий урон - $t[2]['z'] = round(0 + $itm['tya2']); + $t[2]['z'] = (int)$itm['tya2']; $t[2]['t'] = 2; //дробящий урон - $t[3]['z'] = round(0 + $itm['tya3']); + $t[3]['z'] = (int)$itm['tya3']; $t[3]['t'] = 3; //режущий урон - $t[4]['z'] = round(0 + $itm['tya4']); + $t[4]['z'] = (int)$itm['tya4']; $t[4]['t'] = 4; //урон огня - $t[5]['z'] = round(0 + $itm['tym1']); + $t[5]['z'] = (int)$itm['tym1']; $t[5]['t'] = 5; //урон воздуха - $t[6]['z'] = round(0 + $itm['tym2']); + $t[6]['z'] = (int)$itm['tym2']; $t[6]['t'] = 6; //урон воды - $t[7]['z'] = round(0 + $itm['tym3']); + $t[7]['z'] = (int)$itm['tym3']; $t[7]['t'] = 7; //урон земли - $t[8]['z'] = round(0 + $itm['tym4']); + $t[8]['z'] = (int)$itm['tym4']; $t[8]['t'] = 8; - //урон света - $t[9]['z'] = round(0 + $itm['tym5']); - $t[9]['t'] = 9; - //урон тьмы - $t[10]['z'] = round(0 + $itm['tym6']); - $t[10]['t'] = 10; //урон серой магией - $t[11]['z'] = round(0 + $itm['tym7']); + $t[11]['z'] = (int)$itm['tym7']; $t[11]['t'] = 11; $tpt = $t[0]['z']; @@ -4396,7 +3607,7 @@ class Battle return round((1 - (pow(0.5, ($v / 399.51)))) * 100, 2); } - public function zmgo($v) + public function zmgo($v): float|int { return (1 - (pow(0.5, ($v / 250)))) * 100; } @@ -4406,7 +3617,7 @@ class Battle * @param $at * @return array|mixed */ - private function priemsTestRazmen($id, $at) + private function priemsTestRazmen($id, $at): mixed { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; @@ -4430,167 +3641,38 @@ class Battle $at['p']['p_cast'] = true; } - //ставка + /** $priem[4] + * 1 Приемы ухода от удара + * 2 Приемы крита + * 3 Приемы атаки + * 4 Приемы защиты + * 5, 8, 9 Прочие приемы + */ $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 220 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 237 - || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 286 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 287 || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 288 - || $this->stats[$this->uids[$u1]]['u_priem'][$j][1] == 213) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); + foreach ($this->stats[$this->uids[$u1]]['u_priem'] as $priem) { + if (( + in_array($priem[1], [213, 220, 237, 286, 287, 288]) || + in_array($priem[4], [2, 3, 4, 5, 8, 9]) && $priem[2] > 0 || + $priem[4] == 1 && $priem[2] > 0 && empty($this->stats[$this->uids[$u2]]['nopryh'])) && + file_exists("priem/$priem[1].php") + ) { + $pr_used_this = $u1; + require_once "priem/$priem[1].php"; + if (isset($fx_priem)) { $at = $fx_priem($id, $at, $u1, $j); unset($fx_priem); } - } - $j++; - } - - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - $this->stats[$this->uids[$u2]]['nopryh']--; - } - } $j++; - } - } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); + if ($priem[4] == 1) { + $this->stats[$this->uids[$u2]]['nopryh']--; } } - $j++; } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset($fx_priem); - } - } - $j++; - } - - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset($fx_priem); - } - } - $j++; - } - - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - } - unset($fx_priem); - } - } - $j++; - } $i++; } - $i = 1; - while ($i <= 2) { - if ($i == 1) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - } else { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - - if (!isset($at['p']['p_cast'])) { - $at['p'] = $at; - $at['p']['p_cast'] = true; - } - - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 8) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 9) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - $i++; - } return $at; } @@ -4599,23 +3681,26 @@ class Battle * @param $at * @return mixed */ - private function priemsRestartRazmen($id, $at) + private function priemsRestartRazmen($id, $at): mixed { if (isset($at['p'])) { //Проверка $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; - /* - Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так: - Цикл 1. Проверяем пользователя - Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал - Придется сделать: - Цикл 1. Проверяем пользователя - Цикл 2 внутри Цикла 1. Проверяем приемы уворота - Цикл 3. Проверяем пользователя - Цикл 4 внутри Цикла 3. Проверяем приемы крита - и т.д. - */ + + /** + * Если возникнут проблемы с приемами, придется переписать алгоритм, сейчас он выглядит так: + * Цикл 1. Проверяем пользователя + * Цикл 2 внутри Цикла 1. Проверяем приемы поторые пользователь использовал + * + * Придется сделать: + * Цикл 1. Проверяем пользователя + * Цикл 2 внутри Цикла 1. Проверяем приемы уворота + * Цикл 3. Проверяем пользователя + * Цикл 4 внутри Цикла 3. Проверяем приемы крита + * и т.д. + */ + $i = 1; while ($i <= 2) { if ($i == 1) { @@ -4635,117 +3720,50 @@ class Battle $at['p']['p_cast'] = true; } - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 1) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - $this->stats[$this->uids[$u2]]['nopryh']--; - } + /** $priem[4] + * 1 Приемы ухода от удара + * 2 Приемы крита + * 3 Приемы атаки + * 4 Приемы защиты + * 5, 8, 9 Прочие приемы + */ + + $j = 0; + foreach ($this->stats[$this->uids[$u1]]['u_priem'] as $priem) { + if (( + in_array($priem[4], [2, 3, 4, 5]) && $priem[2] > 0 || + $priem[4] == 1 && $priem[2] > 0 && empty($this->stats[$this->uids[$u2]]['nopryh'])) && + file_exists("priem/$priem[1].php") + ) { + $pr_used_this = $u1; + require_once "priem/$priem[1].php"; + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u1, $j); + unset($fx_priem); + } + $j++; + if ($priem[4] == 1) { + $this->stats[$this->uids[$u2]]['nopryh']--; + } + } + } + + $j = 0; + foreach ($this->stats[$this->uids[$u2]]['u_priem'] as $priem) { + if (in_array($priem[4], [8, 9]) && $priem[2] > 0 && file_exists("priem/$priem[1].php")) { + $pr_used_this = $u2; + require_once "priem/$priem[1].php"; + if (isset($fx_priem)) { + $at = $fx_priem($id, $at, $u2, $j); + unset($fx_priem); } $j++; } } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 2) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 4) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 3) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][4] == 5) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u1; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 8) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u2, $j); - unset($fx_priem); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u2]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u2]]['u_priem'][$j][4] == 9) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php' - )) { - $pr_tested_this = $u2; - require('priem/' . $this->stats[$this->uids[$u2]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u2, $j); - unset($fx_priem); - } - } - $j++; - } $i++; } + $at = $at['p']; unset($at['p']); } @@ -4757,7 +3775,7 @@ class Battle $yr2 = $yr; $checktuman = mysql_fetch_array( mysql_query( - 'SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" AND (`v2` = 273 OR `v2` = 286 OR `v2` = 287 OR `v2` = 288) AND `delete` =0 LIMIT 1' ) @@ -4833,7 +3851,7 @@ class Battle 'add_pog2=$', 'add_pog2=' . $j['y'], $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] ); - $upd = mysql_query( + mysql_query( 'UPDATE `eff_users` SET `data` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['data'] . '" WHERE `id` = "' . $this->stats[$this->uids[$uid]]['effects'][$j['id'] - 1]['id'] . '" LIMIT 1' ); } @@ -4885,20 +3903,20 @@ class Battle //Рассчет дополнительных тактик if ($this->atacks[$id]['out' . $b] > 0) { //Игрок ${'u'.$a} получает тактики, возможно - if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20)) { - //выдаем тактику контрудара - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic3']++; - } + //выдаем тактику контрудара + if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m6'] / 5), 20) && $this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic3']++; } - if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20)) { - //выдаем тактику щита - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic4']++; - } + //выдаем тактику щита + if (rand(0, 100) < min(floor($this->stats[$this->uids[$u1]]['m8'] / 4), 20) && $this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic4']++; } } + if (!isset ($at[$a]['atack'])) { + $at[$a]['atack'] = []; // Argument #1 ($value) must be of type Countable|array, null given + } + //Расчет удара Цели (u2) по Атакующему (u1) $j = 0; while ($j < count($at[$a]['atack']) && $j < 8) { @@ -4913,17 +3931,15 @@ class Battle $this->users[$this->uids[$u1]]['tactic1'] += 2; } } elseif ($at[$a]['atack'][$j][1] != 2) { - if ($at[$a]['atack'][$j][1] == 3) { - //u2 заблокировал удар u1 + if ($at[$a]['atack'][$j][1] == 3 || $at[$a]['atack'][$j][1] == 7) { + //u2 заблокировал удар u1 (3) OR u2 блокировал щитом удар u1 //ТУТ ЩИТ (7) if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic4']++; } } elseif ($at[$a]['atack'][$j][1] == 4) { //u1 пробил блок u2 критом - if (!isset($at[$a]['atack'][$j]['notactic2'])) { - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u1]]['tactic2']++; - } + if (!isset($at[$a]['atack'][$j]['notactic2']) && $this->stats[$this->uids[$u2]]['this_animal'] == 0) { + $this->users[$this->uids[$u1]]['tactic2']++; } $this->users[$this->uids[$u2]]['tactic4']++; //тактика за пробив блок } elseif ($at[$a]['atack'][$j][1] == 5) { @@ -4942,11 +3958,6 @@ class Battle if (!isset($at[$a]['atack'][$j]['notactic5']) && $this->stats[$this->uids[$u1]]['this_animal'] == 0) { $this->users[$this->uids[$u2]]['tactic5']++; } - } elseif ($at[$a]['atack'][$j][1] == 7) { - //u2 блокировал щитом удар u1 //ТУТ ЩИТ - if ($this->stats[$this->uids[$u2]]['this_animal'] == 0) { - $this->users[$this->uids[$u2]]['tactic4']++; - } } elseif ($at[$a]['atack'][$j][1] == 8) { //u2 увернулся от удара u1 и нанес по нему контрудар if ($this->stats[$this->uids[$u1]]['this_animal'] == 0) { @@ -4993,20 +4004,16 @@ class Battle $at[$a]['atack'][$j]['yron']['hp'] = $at[$a]['atack'][$j]['yron']['hpAll']; } //Травмирование - if (rand(0, 100) <= 50) { - if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { - if (!isset($at[$a]['atack'][$j]['yron']['travma']) && rand( - 0, - 1000 - ) < 500 && $this->users[$this->uids[$u2]]['level'] > 1 && $this->stats[$this->uids[$u1]] > 1) { - $trvm_chns = floor(rand(0, 200) / 10); - if ($trvm_chns > 3 || $trvm_chns < 1) { - $trvm_chns = 0; - } - $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; - unset($trvm_chns); - } + if (rand(0, 100) <= 50 && ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) && !isset($at[$a]['atack'][$j]['yron']['travma']) && rand( + 0, + 1000 + ) < 500 && $this->users[$this->uids[$u2]]['level'] > 1 && $this->stats[$this->uids[$u1]] > 1) { + $trvm_chns = floor(rand(0, 200) / 10); + if ($trvm_chns > 3 || $trvm_chns < 1) { + $trvm_chns = 0; } + $at[$a]['atack'][$j]['yron']['travma'] = [$trvm_chns, 'Обыкновенная травма']; + unset($trvm_chns); } } $j++; @@ -5077,7 +4084,7 @@ class Battle 'select dungeonexp from rep where id = ?', [$this->users[$this->uids[$id1]]['id']] ); $rep = explode(',', $rep); - foreach ($rep as $key => $val) { + foreach ($rep as $val) { $val = explode('=', $val); if (isset($val[0]) && isset($val[1]) && $val[0] != '' && $val[1] != 0) { $dun_exp[(int)$val[0]] = (int)$val[1]; @@ -5123,6 +4130,7 @@ class Battle } } + $this->users[$this->uids[$id1]]['battle_exp'] += floor($e); if (!$mgregen && !$nobattle_uron) { $this->users[$this->uids[$id1]]['battle_yron'] += floor($y); @@ -5183,7 +4191,7 @@ class Battle $this->ucleari[] = $uid; } - private function addlogRazmen($id, $at): bool + private function addlogRazmen($id, $at): void { $this->hodID++; @@ -5261,7 +4269,20 @@ class Battle $stat[$a]['a'] = $this->atacks[$id]['a' . $a]; $stat[$a]['b'] = $this->atacks[$id]['b' . $a]; - $vLog = 'at1=00000||at2=00000||zb1=' . $this->stats[$this->uids[$u1]]['zonb'] . '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . '||bl1=' . $this->atacks[$id]['b' . $a] . '||bl2=' . $this->atacks[$id]['b' . $b] . '||time1=' . $this->atacks[$id]['time'] . '||time2=' . $this->atacks[$id]['time2'] . '||s' . $a . '=' . $s1 . '||s' . $b . '=' . $s2 . '||t2=' . $this->users[$this->uids[$u2]]['team'] . '||t1=' . $this->users[$this->uids[$u1]]['team'] . '||login1=' . $this->users[$this->uids[$u1]]['login2'] . '||login2=' . $this->users[$this->uids[$u2]]['login2']; + $vLog = + 'at1=00000||at2=00000||zb1=' . + $this->stats[$this->uids[$u1]]['zonb'] . + '||zb2=' . $this->stats[$this->uids[$u2]]['zonb'] . + '||bl1=' . $this->atacks[$id]['b' . $a] . + '||bl2=' . $this->atacks[$id]['b' . $b] . + '||time1=' . $this->atacks[$id]['time'] . + '||time2=' . $this->atacks[$id]['time2'] . + '||s' . $a . '=' . $s1 . + '||s' . $b . '=' . $s2 . + '||t2=' . $this->users[$this->uids[$u2]]['team'] . + '||t1=' . $this->users[$this->uids[$u1]]['team'] . + '||login1=' . $this->users[$this->uids[$u1]]['login2'] . + '||login2=' . $this->users[$this->uids[$u2]]['login2']; $mas = [ 'text' => '', @@ -5298,6 +4319,7 @@ class Battle $this->add_log($mas); } else { $j = 0; + while ($j < count($at[$a]['atack']) && $j < 8) { $mas['text'] = ''; @@ -5311,59 +4333,49 @@ class Battle 18 => 1, 26 => 22, ]; - $par = [ - 'zona' => '{zn2_' . $at[$a]['atack'][$j][0] . '} ', - 'kyda' => $this->lgZon[$at[$a]['atack'][$j][0]][rand( - 0, - (count($this->lgZon[$at[$a]['atack'][$j][0]]) - 1) - )], - 'chem' => $this->lgItm[$wt[$at[$a]['atack'][$j]['wt']]][rand( - 0, - (count($this->lgItm[$wt[$at[$a]['atack'][$j]['wt']]]) - 1) - )], - ]; + + + [$attackItem, $attackZone] = Log::getAttackTurnText($at[$a]['atack'][$j][0], $wt[$at[$a]['atack'][$j]['wt']]); + $zone = "{zn2_{$at[$a]['atack'][$j][0]}}"; $this->atacks[$id]['uid_' . $u1 . '_t' . $at[$a]['atack'][$j][1]]++; + //2-3 -> 1-2 - if ($at[$a]['atack'][$j][1] == 1) { - //u1 ударил обычным ударом u2 - $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2) . $this->addlt($b, 2, $s2) . $this->addlt($a, 3, $s1) . + if ($at[$a]['atack'][$j][1] == 1 || $at[$a]['atack'][$j][1] == 5) { + //u1 ударил обычным ударом u2 (1) OR u1 ударил критическим ударом u2 (5) + $mas['text'] .= $zone . + '{u2} ' . $this->addlt($b, 1, $s2) . $this->addlt($b, 2, $s2) . $this->addlt($a, 3, $s1) . ' {u1} ' . $this->addlt($a, 4, $s1) . $this->addlt($a, 5, $s1) . $this->addlt($a, 6, $s1) . - ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $attackItem . ' ' . $attackZone . '. '; } elseif ($at[$a]['atack'][$j][1] == 2) { //u2 увернулся от u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . - ' {u2} ' . $this->addlt($b, 11, $s2) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + $mas['text'] .= $zone . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . + ' {u2} ' . $this->addlt($b, 11, $s2) . ' ' . $attackItem . ' ' . $attackZone . '. '; } elseif ($at[$a]['atack'][$j][1] == 3) { //u2 заблокировал удар u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . + $mas['text'] .= $zone . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2} ' . $this->addlt($b, 10, $s2) . ' ' . $this->addlt(1, 7, 0, $s1) . - ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + ' ' . $attackItem . ' ' . $attackZone . '. '; } elseif ($at[$a]['atack'][$j][1] == 4) { //u1 пробил блок u2 критом if (isset($at[$a]['atack'][$j]['yron']['t'])) { - $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2) . $this->addlt($b, 2, $s2) . $this->addlt($a, 3, $s1) . + $mas['text'] .= $zone . '{u2} ' . $this->addlt($b, 1, $s2) . $this->addlt($b, 2, $s2) . $this->addlt($a, 3, $s1) . ' {u1} ' . $this->addlt($a, 4, $s1) . $this->addlt($a, 5, $s1) . ', пробив блок, ' . $this->addlt($a, 6, $s1) . - ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $attackItem . ' ' . $attackZone . '. '; } - } elseif ($at[$a]['atack'][$j][1] == 5) { - //u1 ударил критическим ударом u2 - $mas['text'] .= $par['zona'] . '{u2} ' . $this->addlt($b, 1, $s2) . $this->addlt($b, 2, $s2) . $this->addlt($a, 3, $s1) . - ' {u1} ' . $this->addlt($a, 4, $s1) . $this->addlt($a, 5, $s1) . $this->addlt($a, 6, $s1) . - ' ' . $this->addlt(1, 7, $s1, $at[$a]['atack'][$j]['yron']['t']) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; } elseif ($at[$a]['atack'][$j][1] == 6) { //u2 парировал удар u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . - ' {u2} неожиданно парировал ' . $this->addlt(1, 7, 0, $s1) . ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + $mas['text'] .= $zone . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . + ' {u2} неожиданно парировал ' . $this->addlt(1, 7, 0, $s1) . ' ' . $attackItem . ' ' . $attackZone . '. '; } elseif ($at[$a]['atack'][$j][1] == 7) { //u2 блокировал щитом удар u1 - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . + $mas['text'] .= $zone . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . ' {u2}, воспользовавшись своим щитом, ' . $this->addlt($b, 10, $s2) . ' ' . $this->addlt(1, 7, 0, $s1) . - ' ' . $par['chem'] . ' ' . $par['kyda'] . '. '; + ' ' . $attackItem . ' ' . $attackZone . '. '; } elseif ($at[$a]['atack'][$j][1] == 8) { //u2 увернулся от удара u1 и нанес по нему контрудар - $mas['text'] .= $par['zona'] . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . - ' {u2} ' . $this->addlt($b, 11, $s2) . ' ' . $par['chem'] . ' ' . $par['kyda'] . ' и нанес контрудар. '; + $mas['text'] .= $zone . '{u1} ' . $this->addlt($a, 8, $s1) . $this->addlt($a, 9, $s1) . + ' {u2} ' . $this->addlt($b, 11, $s2) . ' ' . $attackItem . ' ' . $attackZone . ' и нанес контрудар. '; } $stat[$a]['type_a'] .= '' . $at[$a]['atack'][$j][1]; @@ -5387,7 +4399,7 @@ class Battle ); if (!isset($tr_pl2['id']) && $at[$a]['atack'][$j]['yron']['travma'][0] <= 3) { $mas['text'] = rtrim($mas['text'], '. '); - $mas['text'] .= ', нанеся противнику '; + $mas['text'] .= ', нанеся противнику '; if ($at[$a]['atack'][$j]['yron']['travma'][0] == 1) { $mas['text'] .= 'Легкую'; $this->addTravm($u2, 1, rand(3, 5)); @@ -5398,7 +4410,7 @@ class Battle $mas['text'] .= 'Тяжелую'; $this->addTravm($u2, 3, rand(3, 5)); } - $mas['text'] .= ' травму. '; + $mas['text'] .= ' травму. '; } } unset($tr_pl); @@ -5418,16 +4430,14 @@ class Battle } else { $mas['textWP'] = '(непонятно чем)'; } - if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) { - if ($at[$a]['atack'][$j]['yron']['y'] < 1) { - $at[$a]['atack'][$j]['yron']['r'] = '--'; - } + if (($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5 || $at[$a]['atack'][$j][1] == 1) && $at[$a]['atack'][$j]['yron']['y'] < 1) { + $at[$a]['atack'][$j]['yron']['r'] = 0; } if ($at[$a]['atack'][$j][1] == 4 || $at[$a]['atack'][$j][1] == 5) { $stat[$a]['yrn_krit'] += -$at[$a]['atack'][$j]['yron']['r']; - $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; } else { - $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; + $mas['text'] .= ' ' . $at[$a]['atack'][$j]['yron']['r'] . ''; } $stat[$a]['yrn'] += -$at[$a]['atack'][$j]['yron']['r']; } @@ -5448,6 +4458,7 @@ class Battle $il = 0; while ($il <= count($at[$a]['atack'][$j]['yron']['plog'])) { if (isset($at[$a]['atack'][$j]['yron']['plog'][$il])) { + //FIXME EVAL!!!!???? eval($at[$a]['atack'][$j]['yron']['plog'][$il]); } $il++; @@ -5457,142 +4468,144 @@ class Battle $j++; } } + + //Добавляем статистику + записываем в баттл_юзерс НР игроков + $this->addNewStat($stat); + + //Вывод в лог смерти персонажа + if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { + $dies[1] = 1; + } + if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) { + $dies[2] = 1; + } + if ($dies[1] > 0 || $dies[2] > 0) { + + $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; + $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; + + if ($this->info['typeBattle'] == 99) { + + if ($this->finish->getBtlstatus()[0] == 0) { + //Кровавые бои обычные + $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; + if ($this->info['razdel'] == 5) { + //не хаот + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } else { + //хаот + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } elseif ($this->finish->getBtlstatus()[0] == 25) { + //Кровавая битва + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 50) { + //Кровавая резня + $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 75) { + //Кровавая сеча + $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 100) { + //Кровавое побоище + $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 150) { + //Судный день + $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } + } else { + if ($this->finish->getBtlstatus()[0] == 0) { + //Обычный поединок + if ($this->info['razdel'] != 5) { + //хаот + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + } elseif ($this->finish->getBtlstatus()[0] == 25) { + //великая битва + $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 50) { + //величайшая битва + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 75) { + //историческая битва сеча + $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 100) { + //эпохальная битва + $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } elseif ($this->finish->getBtlstatus()[0] == 150) { + //судный день + $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; + $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; + } + } + + if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { + //Пещерные бои не считаются и Изломы тоже, ну и Турниры + $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { + //Клановая война + $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; + $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; + } + + $rtng1 = 0; + $rtng2 = 0; + + if ($dies[1] == 1) { + if ($this->info['dn_id'] <= 0 && $this->users[$this->uids[$u1]]['level'] >= 4) { + $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; + $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; + } + //Персонаж 1 погиб от рук персонаж 2 + $this->spaCheck($this->users[$this->uids[$u1]]['id']); + } + if ($dies[2] == 1) { + if ($this->info['dn_id'] <= 0 && $this->users[$this->uids[$u1]]['level'] >= 4) { + $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; + $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; + } + //Персонаж 2 погиб от рук персонаж 1 + $this->spaCheck($this->stats[$this->uids[$u2]]['id']); + } + //Записываем рейтинг + // + if ($this->info['type'] != 564 && $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { + // + if ($this->users[$this->uids[$u2]]['bot'] == 0) { + mysql_query( + 'INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( + "' . $u1 . '","' . time() . '","' . $rtng1 . '","' . $this->users[$this->uids[$u1]]['align'] . '","' . $this->users[$this->uids[$u1]]['clan'] . '")' + ); + } + + if ($this->users[$this->uids[$u1]]['bot'] == 0) { + mysql_query( + 'INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( + "' . $u2 . '","' . time() . '","' . $rtng2 . '","' . $this->users[$this->uids[$u2]]['align'] . '","' . $this->users[$this->uids[$u2]]['clan'] . '")' + ); + } + } + } + $i++; } - - //Добавляем статистику + записываем в баттл_юзерс НР игроков - $this->addNewStat($stat); - - //Вывод в лог смерти персонажа - if (floor($this->stats[$this->uids[$u1]]['hpNow']) < 1) { - $dies[1] = 1; - } - if (floor($this->stats[$this->uids[$u2]]['hpNow']) < 1) { - $dies[2] = 1; - } - if ($dies[1] > 0 || $dies[2] > 0) { - - $rtngwin = [1, 2, 3, 5, 10, 20, 40, 80, 160]; - $rtnglos = [0, 0, 0, -1, -2, -5, -10, -20, -40]; - - if ($this->info['typeBattle'] == 99) { - if ($btlstatus[0] == 0) { - //Кровавые бои обычные - $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; - if ($this->info['razdel'] == 5) { - //не хаот - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } else { - //хаот - $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - } elseif ($btlstatus[0] == 25) { - //Кровавая битва - $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 50) { - //Кровавая резня - $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 75) { - //Кровавая сеча - $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 100) { - //Кровавое побоище - $rtngwin = [6, 12, 24, 48, 98, 196, 392, 784, 1568]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 150) { - //Судный день - $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } - } else { - if ($btlstatus[0] == 0) { - //Обычный поединок - if ($this->info['razdel'] != 5) { - //хаот - $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - } elseif ($btlstatus[0] == 25) { - //великая битва - $rtngwin = [2, 4, 6, 10, 20, 40, 80, 160, 320]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 50) { - //величайшая битва - $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 75) { - //историческая битва сеча - $rtngwin = [4, 8, 16, 32, 64, 128, 256, 512, 1024]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 100) { - //эпохальная битва - $rtngwin = [5, 10, 20, 40, 80, 160, 320, 640, 1280]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } elseif ($btlstatus[0] == 150) { - //судный день - $rtngwin = [7, 14, 28, 56, 112, 224, 448, 896, 1792]; - $rtnglos = [0, 0, 0, -2, -4, -10, -20, -40, -80]; - } - } - - if ($this->info['dn_id'] > 0 || $this->info['izlom'] != 0 || $this->info['turnir'] != 0) { - //Пещерные бои не считаются и Изломы тоже, ну и Турниры - $rtngwin = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - $rtnglos = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } elseif ($this->info['clan1'] > 0 && $this->info['clan2'] > 0) { - //Клановая война - $rtngwin = [3, 6, 9, 15, 30, 60, 120, 240, 480]; - $rtnglos = [-1, -2, -4, -8, -16, -32, -64, -128, -256]; - } - - - if ($dies[1] == 1) { - if ($this->info['dn_id'] <= 0 && $this->users[$this->uids[$u1]]['level'] >= 4) { - $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; - $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; - } - //Персонаж 1 погиб от рук персонаж 2 - $this->spaCheck($this->users[$this->uids[$u1]]['id']); - } - if ($dies[2] == 1) { - if ($this->info['dn_id'] <= 0 && $this->users[$this->uids[$u1]]['level'] >= 4) { - $rtng1 += $rtnglos[$this->users[$this->uids[$u1]]['level'] - 4]; - $rtng2 += $rtngwin[$this->users[$this->uids[$u1]]['level'] - 4]; - } - //Персонаж 2 погиб от рук персонаж 1 - $this->spaCheck($this->stats[$this->uids[$u2]]['id']); - } - //Записываем рейтинг - // - if ($this->info['type'] != 564 && $this->stats[$this->uids[$u1]]['inTurnir'] == 0 && $this->stats[$this->uids[$u2]]['inTurnir'] == 0 && $this->info['dn_id'] == 0 && $this->info['izlom'] == 0) { - // - if ($this->users[$this->uids[$u2]]['bot'] == 0) { - mysql_query( - 'INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( - "' . $u1 . '","' . time() . '","' . $rtng1 . '","' . $this->users[$this->uids[$u1]]['align'] . '","' . $this->users[$this->uids[$u1]]['clan'] . '")' - ); - } - unset($rtng); - if ($this->users[$this->uids[$u1]]['bot'] == 0) { - mysql_query( - 'INSERT INTO `users_reting` (`uid`,`time`,`val`,`align`,`clan`) VALUES ( - "' . $u2 . '","' . time() . '","' . $rtng2 . '","' . $this->users[$this->uids[$u2]]['align'] . '","' . $this->users[$this->uids[$u2]]['clan'] . '")' - ); - } - } - unset($rtng1, $rtng2); - } - return true; } - public function addlt($a, $id, $s, $rnd = null): string + public function addlt($a, int $id, int $s, $rnd = null): string { - global $log_text; if ($rnd === null) { - $rnd = rand(0, (count($log_text[$s][$id]) - 1)); + $rnd = Log::addLogLine($id, $s, true); + $rnd = mt_rand(0, $rnd - 1); } return '{' . $a . 'x' . $id . 'x' . $rnd . '}'; } @@ -5601,6 +4614,7 @@ class Battle public function spaCheck($u1): void { + global $u; if ($this->stats[$this->uids[$u1]]['hpNow'] >= 1) { return; } @@ -5611,7 +4625,7 @@ class Battle if ($this->stats[$this->uids[$u1]]['s7'] > 49 && $this->stats[$this->uids[$u1]]['s7'] < 75) { //Даем призрачку mysql_query( - "INSERT INTO `eff_users` + "INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Призрачная защита', 'add_zmproc=75|add_zaproc=75', 0, 77, 0, '" . $u1 . "', 0, 'priem', 141, 'spirit_block25.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);" ); @@ -5620,7 +4634,7 @@ class Battle } elseif ($this->stats[$this->uids[$u1]]['s7'] > 74 && $this->stats[$this->uids[$u1]]['s7'] < 100) { //Абсолютная защита mysql_query( - "INSERT INTO `eff_users` + "INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Абсолютная защита', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'block_absolute.gif', 1, 1, '0', 0, 0, '', 0, 0, 0, 0, 0);" ); @@ -5629,7 +4643,7 @@ class Battle } elseif ($this->stats[$this->uids[$u1]]['s7'] > 99) { //Абсолютная защита x2 mysql_query( - "INSERT INTO `eff_users` + "INSERT INTO `eff_users` (`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) VALUES (22, '" . $u1 . "', 'Защита Мироздателя', 'add_zmproc=100|add_zaproc=100', 0, 77, 0, '" . $u1 . "', 0, 'priem', 358, 'wis_white_shield.gif', 1, 2, '0', 0, 0, '', 0, 0, 0, 0, 0);" ); @@ -5657,11 +4671,12 @@ class Battle 'UPDATE `stats` SET `hpNow` = "' . $this->stats[$this->uids[$u1]]['hpNow'] . '",`mpNow` = "' . $this->stats[$this->uids[$u1]]['mpNow'] . '", `tactic7` = `tactic7` - 25 WHERE `id` = "' . $u1 . '" LIMIT 1' ); $mas['text'] = '{tm1} ' . $this->stats[$this->uids[$u1]]['login'] . ' убит...' . $this->stats[$this->uids[$u1]]['login'] . ' был спасен. '; + $this->priemAddLog( $id, 1, 2, $u->info['id'], $u1, ' ', $mas['text'], - ($this->hodID + 0) + $this->hodID ); } elseif (isset($this->stats[$this->uids[$u1]]['login'])) { mysql_query('UPDATE `stats` SET `hpNow` = "0",`mpNow` = "0" WHERE `id` = "' . $u1 . '" LIMIT 1'); @@ -5686,8 +4701,18 @@ class Battle //Проверяем удары, приемы, свитки, зверей - public function priemAddLog($id, $a, $b, $u1, $u2, $prm, $text, $hodID, $tm1 = 0, $tm2 = 0): void - { + public function priemAddLog( + $id, + $a, + $b, + $u1, + $u2, + $prm, + $text, + $hodID, + $tm1 = 0, + $tm2 = 0 + ): void { $time = time(); if ($tm1 == 0) { $tm1 = isset($this->atacks[$id]) ? $this->atacks[$id]['time'] : $time; @@ -5745,9 +4770,9 @@ class Battle /** Осторожно! Подключаются файлы!!! * @param $id * @param $at - * @return mixed + * @return void */ - private function priemsRazmenMomentEnd($id, $at) + private function priemsRazmenMomentEnd($id, $at): void { $uid1 = $this->atacks[$id]['uid1']; $uid2 = $this->atacks[$id]['uid2']; @@ -5769,94 +4794,36 @@ class Battle $at['p'] = $at; $at['p']['p_cast'] = true; } - //Приемы ухода от удара - if (!isset($this->stats[$this->uids[$u2]]['nopryh']) || $this->stats[$this->uids[$u2]]['nopryh'] == 0) { - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 1) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - $this->stats[$this->uids[$u2]]['nopryh']--; - } + + /** $priem[6] + * 1 Приемы ухода от удара + * 2 Приемы крита + * 3 Приемы атаки + * 4 Приемы защиты + * 5 Прочие приемы + */ + + $j = 0; + foreach ($this->stats[$this->uids[$u1]]['u_priem'] as $priem) { + if (( + in_array($priem[6], [2, 3, 4, 5]) && $priem[2] > 0 || + $priem[6] == 1 && $priem[2] > 0 && empty($this->stats[$this->uids[$u2]]['nopryh'])) && + file_exists("priem/$priem[1].php") + ) { + $pr_used_this = $u1; + require_once "priem/$priem[1].php"; + if (isset($fx_priem)) { + $fx_priem($id, $at, $u1, $j); + unset($fx_priem); } $j++; - } - } - //Приемы крита - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 2) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); + if ($priem[6] == 1) { + $this->stats[$this->uids[$u2]]['nopryh']--; } } - $j++; - } - //Приемы атаки - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 3) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - if (isset($fx_priem)) { - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - } - $j++; - } - //Приемы защиты - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 4) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; - } - //Прочие приемы - $j = 0; - while ($j <= count($this->stats[$this->uids[$u1]]['u_priem'])) { - if ($this->stats[$this->uids[$u1]]['u_priem'][$j][2] > 0 && $this->stats[$this->uids[$u1]]['u_priem'][$j][6] == 5) { - if (file_exists( - '../../_incl_data/class/priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php' - )) { - $pr_used_this = $u1; - $pr_moment = true; - require('priem/' . $this->stats[$this->uids[$u1]]['u_priem'][$j][1] . '.php'); - $at = $fx_priem($id, $at, $u1, $j); - unset($fx_priem); - } - } - $j++; } $i++; } - return $at; } //выделяем пользователей @@ -5966,7 +4933,7 @@ class Battle public function battleInfo($id): array { - $b = Db::getRow('select * from battle where id = ?', [$id]); + $b = self::get($id); if (!isset($b['id'])) { return []; } @@ -6020,8 +4987,7 @@ class Battle return; } - $r = ''; - $rs = ''; + $rs = []; $ts = []; $tsi = 0; @@ -6049,6 +5015,7 @@ class Battle foreach ($usersInBattle as $user) { //записываем данные + $this->fighters[] = new Fighter(); $this->users[$i] = $user; $this->uids[$user['id']] = $i; @@ -6096,7 +5063,14 @@ class Battle [$this->users[$i]['tactic7'], $this->users[$i]['id']] ); - $rs[$this->users[$i]['team']] = $rs[$this->users[$i]['team']] . User::getLogin($this->users[$i]['id']) . ', '; + $rs[$this->users[$i]['team']][] = + (new Login( + $this->users[$i]['align'], + $this->users[$i]['clan'], + $this->users[$i]['level'], + $this->users[$i]['login'] + ))->fullLogin; + } //battle-user (статистика, начальная) @@ -6122,23 +5096,23 @@ class Battle Db::sql('update battle set start1 = unix_timestamp() where id = ?', [$this->info['id']]); - for ($j = 0; $j <= $tsi; $j++) { + $teamlist = []; + for ($j = 1; $j <= $tsi; $j++) { //was 0 if (empty($rs[$j])) { continue; } - $r .= rtrim($rs[$j], ', ') . ' и '; + $teamlist[] = implode(', ', $rs[$j]); } - $r = rtrim($r, ' и'); - $r = str_replace('"', '\\\\\"', $r); + $vsTeams = implode(' и ', $teamlist); $this->hodID++; + $timestart = date('d.m.Y H:i', $this->info['time_start']); + Log::add( [ - 'text' => 'Часы показывали ' . - date('d.m.Y H:i', $this->info['time_start']) . - ', когда ' . $r . ' бросили вызов друг другу.', + 'text' => "Часы показывали $timestart, когда $vsTeams бросили вызов друг другу.", 'battle' => $this->info['id'], 'id_hod' => $this->hodID, 'vars' => 'time1=' . time() . '||', @@ -6166,6 +5140,7 @@ class Battle $this->info['id'], $uid, $this->users[$id]['login'], + $this->users[$id]['level'], $this->users[$id]['align'], $this->users[$id]['clan'], $this->stats[$id]['hpAll'], @@ -6408,4 +5383,29 @@ class Battle Log::addComment($this); } + /** + * @param int|null $experience + * @param bool $hardcore поединок с гарантированной травмой + * @return array|int[] + */ + public static function getType(?int $experience, bool $hardcore = false): array + { + return match (true) { + $experience >= 5000000 => [150, 150, 'Судный День', 'Судный День'], + $experience >= 2500000 => [100, 125, 'Эпохальная Битва', 'Кровавое Побоище'], + $experience >= 1000000 => [75, 100, 'Историческая Битва', 'Кровавая Сеча'], + $experience >= 500000 => [50, 75, 'Величайшая Битва', 'Кровавая Резня'], + $experience >= 100000 => [25, 50, 'Великая Битва', 'Кровавая Битва'], + $hardcore => [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение'], + default => [0, 0, 'Поединок', 'Кровавый Поединок'], + }; + } + + public static function get(int $id): array + { + $result = Db::getRow('select * from battle where id = ?', [$id]); + return $result ?: []; + } + + } diff --git a/_incl_data/class/Battle/Fighter.php b/_incl_data/class/Battle/Fighter.php new file mode 100644 index 00000000..4955ad04 --- /dev/null +++ b/_incl_data/class/Battle/Fighter.php @@ -0,0 +1,8 @@ +battle = $battle; @@ -35,7 +37,6 @@ class Finish $injuryName = [1 => 'легкую', 2 => 'среднюю', 3 => 'тяжелую', 4 => 'неизлечимую',]; $dnr = 0; //??? $chat = new Chat(); - mysql_query('LOCK TABLES users,stats,battle,battle_last,battle_end,chat WRITE'); $test = Db::getRow('select id, team_win, testfinish from battle where id = ? and team_win != -1', [$this->battle->info['id']]); if ($test['testfinish'] == -1) { @@ -259,7 +260,7 @@ class Finish ); } unset($spik, $plik); - // + $usrreal = ''; $usr_real = mysql_fetch_array( mysql_query( @@ -270,13 +271,9 @@ class Finish $usr_real = $this->battle->users[$i]; } if (isset($usr_real['id'])) { - if ($usr_real['align'] > 0) { - $usrreal .= ''; - } - if ($usr_real['clan'] > 0) { - $usrreal .= ''; - } - $usrreal .= '' . $usr_real['login'] . '[' . $usr_real['level'] . ']'; + $login = new User\Login($usr_real['align'], $usr_real['clan'], $usr_real['level'], $usr_real['login']); + $usrreal .= $login->fullLogin; + unset($login); } $text = str_replace('{u1}', $usrreal, $text); @@ -357,14 +354,14 @@ class Finish $usrwin = ''; while ($j < count($this->battle->users)) { if ($this->battle->users[$j]['no_ip'] != 'trupojor' && $this->battle->users[$j]['bot'] == 0 && $this->battle->stats[$j]['hpNow'] > 0) { - $usrwin .= ', '; - if ($this->battle->users[$j]['align'] > 0) { - $usrwin .= 'battle->users[$j]['align'] . '.gif >'; - } - if ($this->battle->users[$j]['clan'] > 0) { - $usrwin .= 'battle->users[$j]['clan'] . '.gif >'; - } - $usrwin .= '' . $this->battle->users[$j]['login'] . ' [' . $this->battle->users[$j]['level'] . ']battle->users[$j]['id'] . ' >'; + $login = new User\Login( + $this->battle->users[$j]['align'], + $this->battle->users[$j]['clan'], + $this->battle->users[$j]['level'], + $this->battle->users[$j]['login'] + ); + $usrwin .= ', ' . $login->fullLogin; + unset($login); } $j++; } @@ -950,9 +947,11 @@ class Finish ) ); - $btlstatus = $this->typeBattle($prsusers[0]); + + $this->btlstatus = Battle::getType($prsusers[0]); + if ($this->battle->info['smert'] == 1) { - $btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; + $this->btlstatus = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; } // if ($this->battle->stats[$i]['clanpos'] > 0 && ($this->battle->stats[$i]['clanpos'] == 1 || $this->battle->stats[$i]['clanpos'] == 2 || $this->battle->stats[$i]['clanpos'] == 3)) { @@ -961,11 +960,11 @@ class Finish unset($r1); //Статусная битва - if ($btlstatus[0] > 0) { + if ($this->btlstatus[0] > 0) { if ($this->battle->info['type'] == 99) { - $this->battle->info['addExp'] += $btlstatus[1]; + $this->battle->info['addExp'] += $this->btlstatus[1]; } else { - $this->battle->info['addExp'] += $btlstatus[0]; + $this->battle->info['addExp'] += $this->btlstatus[0]; } } @@ -1126,11 +1125,11 @@ class Finish unset($lime); - if ($btlstatus[0] > 0) { + if ($this->btlstatus[0] > 0) { if ($this->battle->info['type'] == 99) { - $prc .= ' (' . $btlstatus[3] . ')'; + $prc .= ' (' . $this->btlstatus[3] . ')'; } else { - $prc .= ' (' . $btlstatus[2] . ')'; + $prc .= ' (' . $this->btlstatus[2] . ')'; } } @@ -1504,13 +1503,17 @@ class Finish mysql_query('UPDATE `battle_users` SET `finish` = 1 WHERE `uid` = "' . $this->battle->users[$i]['id'] . '"'); $this->saveLogs(); if ($u->info['battle'] != 0 && !isset($u->info['battle_lsto'])) { - echo ''; + echo << + document.getElementById('teams').style.display='none'; + var battleFinishData = {$u->info['battle_text']} + + HTML; } } - } mysql_query('UPDATE `battle` SET `testfinish` = "0" WHERE `id` = "' . $this->battle->info['id'] . '" LIMIT 1'); - mysql_query('UNLOCK TABLES'); + } private function addItemToItemsLocal(int $itemId, int $uid, string $data = ''): void @@ -1597,23 +1600,6 @@ class Finish Db::sql('delete from battle_actions where btl = ?', [$this->battle->info['id']]); } - private function typeBattle(int $x): array - { - $r = [0, 0, 'Обычный поединок', 'Кровавый Поединок']; - if ($x >= 50000 && $x < 100000) { - $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; - } elseif ($x < 500000) { - $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; - } elseif ($x < 1000000) { - $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; - } elseif ($x < 2500000) { - $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; - } elseif ($x >= 5000000) { - $r = [150, 150, 'Судный День', 'Судный День']; - } - return $r; - } - private function dieInDungeon(int $dnr, int $i, User $u, ChatMessage $cmsg, Chat $chat): void { if ($dnr != 1) { @@ -1913,4 +1899,9 @@ class Finish } + + public function getBtlstatus(): array + { + return $this->btlstatus; + } } \ No newline at end of file diff --git a/_incl_data/class/Battle/Log.php b/_incl_data/class/Battle/Log.php index dbc68074..e8e7a12f 100644 --- a/_incl_data/class/Battle/Log.php +++ b/_incl_data/class/Battle/Log.php @@ -169,7 +169,6 @@ class Log '<вырезано цензурой> каратисты фиговы', ]; $randomcomment = $comments[array_rand($comments)]; - $text = "{tm1} Комментатор: $randomcomment"; self::add( [ @@ -181,4 +180,497 @@ class Log ] ); } + + public static function getAttackTurnText(int $weaponType, int $attackZone): array + { + $w = [ + 0 => ['грудью', 'ребром руки', 'лбом', 'кулаком', 'ногой', 'левой ногой', 'правой ногой', 'коленом',], + 1 => ['ножом', 'тыльной стороной лезвия ножа', 'рукоятью ножа', 'лезвием ножа'], + 2 => ['сучковатой палкой', 'поленом', 'тяжелой дубиной', 'дубиной', 'рукоятью молота'], + 3 => ['секирой', 'топором', 'лезвием секиры', 'алебардой', 'тяжелым держаком', 'длинной секирой'], + 4 => ['ножнами', 'гардой', 'мечом', 'лезвием меча', 'рукоятью меча', 'тупым лезвием', 'острой стороной меча', 'огромным мечом',], + 5 => ['сучковатой палкой', 'посохом', 'тяжелой тростью', 'корявым посохом', 'основанием посоха'], + 22 => ['костылем'], + 100 => ['непонятной хреновиной'], + ]; + + $z = [ + 1 => ['в нос', 'в глаз', 'в челюсть', 'по переносице', 'в кадык', 'по затылку', 'в правый глаз', 'в левый глаз', 'в скулу',], + 2 => ['в грудь', 'в корпус', 'в солнечное сплетение', 'в сердце', 'в область лопаток'], + 3 => ['в бок', 'по желудку', 'по левой руке', 'по правой руке'], + 4 => ['по <вырезано цензурой>', 'в пах', 'в промежность', 'по левой ягодице', 'по правой ягодице'], + 5 => ['по ногам', 'в область правой пятки', 'в область левой пятки', 'по коленной чашечке', 'по икрам'], + 100 => ['по непонятному месту'], + ]; + + if (!in_array($weaponType, [0, 1, 2, 3, 4, 5, 22])) { + $weaponType = 100; + } + + if (!in_array($attackZone, [1, 2, 3, 4, 5])) { + $attackZone = 100; + } + + return [ + $w[$weaponType][array_rand($w[$weaponType])], + $z[$attackZone][array_rand($z[$attackZone])], + ]; + } + + public static function addLogLine(int $type, int $gender, bool $count = false): string|int + { + $logtext = [ + [ // муж. + [], + [ + 'вспомнил что-то важное', + 'высморкался', + 'задумался', + 'замешкался', + 'засмотрелся на <вырезано цензурой>', + 'кашлянул', + 'ковырялся в зубах', + 'обернулся', + 'осмотрелся', + 'почесался', + 'пошатнулся', + 'пришел в себя', + 'пытался сконцентрироваться', + 'пытался увернуться', + 'пытался что-то сказать', + 'расплылся в улыбке', + 'расстроился', + 'растерялся', + 'удивился', + 'чесал <вырезано цензурой>', + 'пытался отойти покурить', + 'чесал яйца', + ], + [ + ', и за это ', + ', а ', + ', но в это время ', + ', и тут ', + ', но вдруг неожиданно ', + ', и вдруг ', + ', но ', + ', и внезапно ', + ', но неожиданно ', + ', и в этот момент ', + ', и в ту же секунду ', + ', и в этот миг ', + ], + [ + 'обезумевший', + 'расстроенный', + 'неустрашимый', + 'продвинутый', + 'расстроенный', + 'страшный', + 'задумчивый', + 'небритый', + 'бесстрастный', + 'разъяренный', + 'смелый', + 'безумный', + 'восхитительный', + 'жестокий', + 'злобный', + 'мужественный', + 'непобедимый', + 'наглый', + 'хитрый', + 'храбрый', + 'отважный', + 'железный', + 'могучий', + 'сильнейший', + 'крепкий', + 'великий', + 'бесстрашный', + ], + [ + 'случайно ', + 'отчаянно ', + 'проснувшись ', + 'мимоходом ', + 'разбежавшись ', + 'сдуру ', + 'со скуки ', + 'не помня себя от испуга ', + 'улыбаясь ', + 'прослезившись ', + 'пошатнувшись ', + 'проснувшись ', + 'беспричинно ', + 'опрометчиво ', + 'разбежавшись ', + 'зевнув ', + 'сделав двойное сальто ', + 'не подумав ', + 'хихикая ', + 'ласково ', + 'с испугу ', + ], + [ + 'влепил ', + 'вломил ', + 'саданул ', + ], + [ + 'грубый', + 'наглый', + 'красивый', + ], + [ + 'неизвестный удар', + 'колющий удар', + 'рубящий удар', + 'дробящий удар', + 'режущий удар', + 'обжигающий удар', + 'удар электричеством', + 'обмораживающий удар', + 'удар магией земли', + 'удар светлой магией', + 'удар тёмной магией', + 'удар серой магией', + 'обычный удар', + 'удар', + ], + [ + 'не контролировал ситуацию', + 'обманулся', + 'старался провести удар', + 'думал о <вырезано цензурой>', + 'испугался', + 'потерял самоконтроль', + 'потерял момент', + 'был слишком самоуверен', + 'пытался провести удар', + 'поскользнулся', + 'не думал о бое', + 'не рассчитал свои силы', + 'промахнулся', + 'оступился', + 'думал не о том', + ], + [ + ', и потому ', + ' и ', + ', но ', + ', вследствие чего ', + ', потому ', + ], + [ + 'остановил', + 'поставил блок на', + 'блокировал', + 'отбил', + ], + [ + 'ушел вправо от удара', + 'ушел влево от удара', + 'увел удар', + 'уклонился от удара', + 'увернулся от удара', + ], + [ + 'приняв боевые 100 грамм', + 'сказав "БУ!"', + 'показав противнику кукиш', + 'в отчаянном рывке', + 'показав сразу два пальца', + ], + [ + 'о<вырезано цензурой>ный', + 'точнейший', + ], + [ + 'погиб!', + 'повержен!', + 'мертв!', + 'убит!', + 'проиграл бой!', + ], + [ + 'пропустил свой ход', + 'потратил свой ход на магию', + 'потратил свой ход на прием', + ], + [ + 'использовал', + ], + [ + '{u1}, вспомнив слова своего сэнсея, из последних сил применил прием "{pr}".', + 'Кроличья лапка, подкова в перчатке и прием "{pr}" помогли {u1} продержаться ещё немного.', + '{u1}, пораскинув мозгами по земле, сообразил, что его выручат или прием "{pr}" или вмешательство Мусорщика.', + '{u1} выкрикнув: "А ещё я вот так могу!", применил прием "{pr}".', + '{u1} понял, пропустив очередной удар в голову, что поможет ему только прием "{pr}".', + '{u1} сам не поняв зачем, применил прием "{pr}".', + '{u1} нетрезво оценив положение, решил, что его спасение это прием "{pr}".', + ], + [ + '{u1}, вспомнив слова своего сэнсея, из последних сил применил прием "{pr}" на {u2}.', + ], + [ + '{u1}, победив страх, решил поразить {u2} заклятьем "{pr}"', + '{u1} наконец сфокусировал свое внимание на поединке и наколдовал "{pr}" на {u2}', + '{u1} нарисовав вокруг себя несколько рун, призвал заклятье "{pr}" на {u2}', + '{u1} догадавшись, что пришло время показать себя, произнес заклятье "{pr}" на {u2}', + '{u1} с испугу произнес, первое пришедшее на ум, заклятье "{pr}" на {u2}', + '{u1} впал в транс и начал бормотать заклятие "{pr}" на {u2}', + '{u1} очнулся от медитации, и призвал заклятье "{pr}" на {u2}', + ], + [ + '{u1} пытался наколдовать ужасающее заклятие "{pr}" на {u2}, но ничего не вышло', + '{u1} не смог сфокусировать и наколдовать "{pr}" на {u2}, но ничего не вышло', + '{u1} с испугу произнес ошибочное заклятие "{pr}" на {u2} и ничего не вышло', + '{u1}, потеряв концентрацию, не смог наколдовать "{pr}" на {u2} и ничего не вышло', + '{u1} <вырезано цензурой> от перенапряжения, вследствие чего не смог наколдовать "{pr}" на {u2}', + '{u1} пытался превратить {u2} в табуретку при помощи заклинания "{pr}"... но ничего не вышло', + ], + [ + '{u1}, победив страх, решил поразить всех и наколдовал "{pr}"', + '{u1} наконец сфокусировал свое внимание на поединке и наколдовал "{pr}"', + '{u1} нарисовав вокруг себя несколько рун, призвал заклятье "{pr}"', + '{u1} догадавшись, что пришло время показать себя, произнес заклятье "{pr}"', + '{u1} с испугу произнес, первое пришедшее на ум, заклятье "{pr}"', + '{u1} впал в транс и начал бормотать заклятие "{pr}"', + '{u1} очнулся от медитации, и призвал заклятье "{pr}"', + ], + + ], + [ // жен. + [], + [ + 'вспомнила что-то важное', + 'высморкалась', + 'задумалась', + 'замешкалась', + 'засмотрелась на <вырезано цензурой>', + 'кашлянула', + 'ковырялась в зубах', + 'обернулась', + 'осмотрелась', + 'почесалась', + 'пошатнулась', + 'пришла в себя', + 'пыталась сконцентрироваться', + 'пыталась увернуться', + 'пыталась что-то сказать', + 'расплылалась в улыбке', + 'расстроилась', + 'растерялась', + 'удивилась', + 'чесала <вырезано цензурой>', + 'пыталась отойти покурить', + 'поправляла прическу', + ], + [ + ', и за это ', + ', а ', + ', но в это время ', + ', и тут ', + ', но вдруг неожиданно ', + ', и вдруг ', + ', но ', + ', и внезапно ', + ', но неожиданно ', + ', и в этот момент ', + ', и в ту же секунду ', + ', и в этот миг ', + ], + [ + 'обезумевшая', + 'расстроенная', + 'неустрашимая', + 'продвинутая', + 'расстроенная', + 'страшная', + 'задумчивая', + 'взъерошенная', + 'бесстрастная', + 'разъяренная', + 'смелая', + 'безумная', + 'восхитительная', + 'жестокая', + 'злобная', + 'мужественная', + 'непобедимая', + 'наглая', + 'хитрая', + 'храбрая', + 'отважная', + 'железная', + 'могучая', + 'сильнейшая', + 'крепкая', + 'великая', + 'бесстрашная', + ], + [ + 'случайно ', + 'отчаянно ', + 'проснувшись ', + 'мимоходом ', + 'разбежавшись ', + 'сдуру ', + 'со скуки ', + 'не помня себя от испуга ', + 'улыбаясь ', + 'прослезившись ', + 'пошатнувшись ', + 'проснувшись ', + 'беспричинно ', + 'опрометчиво ', + 'разбежавшись ', + 'зевнув ', + 'сделав двойное сальто ', + 'не подумав ', + 'хихикая ', + 'ласково ', + 'с испугу ', + ], + [ + 'влепила ', + 'вломила ', + 'саданула ', + ], + [ + 'грубый', + 'наглый', + 'красивый', + ], + [ + 'тычок', + 'тычок', + 'рубящий удар', + 'разбивающий удар', + 'рассекающий удар', + 'обжигающий удар', + 'удар электричеством', + 'обмораживающий удар', + 'удар магией земли', + 'удар светлой магией', + 'удар тёмной магией', + 'удар серой магией', + 'неизсветный удар', + 'удар', + ], + [ + 'не контролировала ситуацию', + 'обманулась', + 'старалась провести удар', + 'думала о <вырезано цензурой>', + 'испугалась', + 'потеряла самоконтроль', + 'потеряла момент', + 'была слишком самоуверенна', + 'пыталась провести удар', + 'поскользнулась', + 'не думала о бое', + 'не рассчитала свои силы', + 'промахнулась', + 'оступилась', + 'думала не о том', + ], + [ + ', и потому ', + ' и ', + ', но ', + ', вследствие чего ', + ', потому ', + ], + [ + 'остановила', + 'поставила блок на', + 'блокировала', + 'отбила', + ], + [ + 'ушла вправо от удара', + 'ушла влево от удара', + 'увела удар', + 'уклонилась от удара', + 'увернулась от удара', + ], + [ + 'приняв боевые 100 грамм', + 'сказав "БУ!"', + 'показав противнику кукиш', + 'в отчаянном рывке', + 'показав сразу два пальца', + ], + [ + 'о<вырезано цензурой>ный', + 'точнейший', + ], + [ + 'погибла!', + 'повержена!', + 'мертва!', + 'убита!', + 'проиграла бой!', + ], + [ + 'пропустила свой ход', + 'потратила свой ход на магию', + 'потратила свой ход на прием', + ], + [ + 'использовала', + ], + [ + '{u1}, вспомнив слова своего сэнсея, из последних сил применила прием "{pr}".', + 'Кроличья лапка, подкова в перчатке и прием "{pr}" помогли {u1} продержаться ещё немного.', + '{u1}, пораскинув мозгами по земле, сообразила, что её выручат или прием "{pr}" или вмешательство Мусорщика.', + '{u1} выкрикнув: "А ещё я вот так могу!", применила прием "{pr}".', + '{u1} поняла, пропустив очередной удар в голову, что поможет ей только прием "{pr}".', + '{u1} сама не поняв зачем, применила прием "{pr}".', + '{u1} нетрезво оценив положение, решила, что её спасение это прием "{pr}".', + ], + [ + '{u1}, вспомнив слова своего сэнсея, из последних сил применила прием "{pr}" на {u2}.', + ], + [ + '{u1}, победив страх, решила поразить {u2} заклятьем "{pr}"', + '{u1} наконец сфокусировала свое внимание на поединке и наколдовала "{pr}" на {u2}', + '{u1} нарисовав вокруг себя несколько рун, призвала заклятье "{pr}" на {u2}', + '{u1} догадавшись, что пришло время показать себя, произнесла заклятье "{pr}" на {u2}', + '{u1} с испугу произнесла, первое пришедшее на ум, заклятье "{pr}" на {u2}', + '{u1} впала в транс и начала бормотать заклятие "{pr}" на {u2}', + '{u1} очнулась от медитации, и призвала заклятье "{pr}" на {u2}', + ], + [ + '{u1} пыталась наколдовать ужасающее заклятие "{pr}" на {u2}, но ничего не вышло', + '{u1} не смогла сфокусировать и наколдовать "{pr}" на {u2}, но ничего не вышло', + '{u1} с испугу произнесла ошибочное заклятие "{pr}" на {u2} и ничего не вышло', + '{u1}, потеряв концентрацию, не смогла наколдовать "{pr}" на {u2} и ничего не вышло', + '{u1} <вырезано цензурой> от перенапряжения, вследствие чего не смогла наколдовать "{pr}" на {u2}', + '{u1} пыталась превратить {u2} в табуретку при помощи заклинания "{pr}"... но ничего не вышло', + ], + [ + '{u1}, победив страх, решила поразить всех и наколдовала "{pr}"', + '{u1} наконец сфокусировала свое внимание на поединке и наколдовала "{pr}"', + '{u1} нарисовав вокруг себя несколько рун, призвала заклятье "{pr}"', + '{u1} догадавшись, что пришло время показать себя, произнесла заклятье "{pr}"', + '{u1} с испугу произнесла, первое пришедшее на ум, заклятье "{pr}"', + '{u1} впала в транс и начала бормотать заклятие "{pr}"', + '{u1} очнулась от медитации, и призвала заклятье "{pr}"', + ], + ], + ]; + + if ($count) { + return count($logtext[$gender][$type]); + } + + if (!in_array($gender, [0, 1]) || !in_array($type, range(1, 21))) { + return 'произошло нечто непонятное'; + } + + return $logtext[$gender][$type][array_rand($logtext[$gender][$type])]; + } } \ No newline at end of file diff --git a/_incl_data/class/Battle/Priem/AbstractPriem.php b/_incl_data/class/Battle/Priem/AbstractPriem.php new file mode 100644 index 00000000..e974d8e2 --- /dev/null +++ b/_incl_data/class/Battle/Priem/AbstractPriem.php @@ -0,0 +1,114 @@ +caster = $caster; + $this->friendTeam = $friendTeam; + $this->enemyTeam = $enemyTeam; + $this->targetType = $targetType; + $this->icon = $icon; + $this->name = $name; + } + + protected function getTarget(): array + { + $targets = []; + $allExceptCaster = array_merge($this->friendTeam, $this->enemyTeam); + switch ($this->targetType) { + case self::TAGRET_SELF: + $targets[] = $this->caster; + break; + case self::TARGET_RANDOM_ENEMY: + shuffle($this->enemyTeam); + $targets[] = end($this->enemyTeam); + break; + case self::TARGET_RANDOM_FRIEND: + shuffle($this->friendTeam); + $targets[] = end($this->friendTeam); + break; + case self::TARGET_RANDOM: + shuffle($allExceptCaster); + $targets[] = end($allExceptCaster); + break; + case self::TARGET_RANDOM_ENEMIES: + for ($i = 1; $i <= count($this->enemyTeam); $i++) { + if ($i > 1 && mt_rand(1,2) === 1) { + continue; + } + shuffle($this->enemyTeam); + $targets[] = array_shift($this->enemyTeam); + } + break; + case self::TARGET_RANDOM_FRIENDS: + for ($i = 1; $i <= count($this->friendTeam); $i++) { + if ($i > 1 && mt_rand(1,2) === 1) { + continue; + } + shuffle($this->friendTeam); + $targets[] = array_shift($this->friendTeam); + } + break; + case self::TARGET_RANDOMS: + for ($i = 1; $i <= count($allExceptCaster); $i++) { + if ($i > 1 && mt_rand(1,2) === 1) { + continue; + } + shuffle($allExceptCaster); + $targets[] = array_shift($allExceptCaster); + } + break; + case self::TARGET_ALL_ENEMIES: + $targets = $this->enemyTeam; + break; + case self::TARGET_ALL_FRIENDS: + $targets = $this->friendTeam; + break; + case self::TARGET_ALL: + $targets = $allExceptCaster; + $targets[] = $this->caster; + break; + } + return $targets; + } + + /** + * Возвращает иконку приёма. В текущей реализации у каждого приёма должна быть иконка. + * @return string + */ + abstract public function getIcon(): string; +} diff --git a/_incl_data/class/Battle/Priem/Priem.php b/_incl_data/class/Battle/Priem/Priem.php new file mode 100644 index 00000000..a9a8c6f3 --- /dev/null +++ b/_incl_data/class/Battle/Priem/Priem.php @@ -0,0 +1,78 @@ +power = $power; + $this->targets = $this->getTarget(); + + } + + public function getIcon(): string + { + return $this->icon; + } + + public function getTargetType(): int + { + return $this->targetType; + } + + public function getTarget(): array + { + return $this->targets; + } + + public function getPower(): int + { + return $this->power; + } + +} + +//$pr = new Priem(45,[1,2,3],[4,5,6],5,44,'Kaboom!', 'kaboom.gif'); +//$pr-> diff --git a/_incl_data/class/Battle/Priem/PriemInterface.php b/_incl_data/class/Battle/Priem/PriemInterface.php new file mode 100644 index 00000000..4b956b2f --- /dev/null +++ b/_incl_data/class/Battle/Priem/PriemInterface.php @@ -0,0 +1,36 @@ +getPower(); + $targets = $priem->getTarget(); + + } +} \ No newline at end of file diff --git a/_incl_data/class/Battle/Razmen.php b/_incl_data/class/Battle/Razmen.php new file mode 100644 index 00000000..0c4d4dda --- /dev/null +++ b/_incl_data/class/Battle/Razmen.php @@ -0,0 +1,580 @@ +battle->atacks[$this->id]['uid1']; + $uid2 = $this->battle->atacks[$this->id]['uid2']; + $stats1 = $this->battle->stats[$this->battle->uids[$uid1]]; + $stats2 = $this->battle->stats[$this->battle->uids[$uid2]]; + if ($stats1['yhod'] > 0) { + $uid1 = $this->battle->yhod_user($uid2, $uid1, $stats1['yhod']); + } elseif ($stats2['yhod'] > 0) { + $uid2 = $this->battle->yhod_user($uid1, $uid2, $stats2['yhod']); + } + $this->uid1 = $uid1; + $this->uid2 = $uid2; + $this->attackerStats = $this->battle->stats[$this->battle->uids[$uid1]]; + $this->targetStats = $this->battle->stats[$this->battle->uids[$uid2]]; + + # Переменные - Моё почтение! + # $this->stats[$this->uids[$this->yhod_user($this->atacks[$this->id]['uid2'], $this->atacks[$this->id]['uid1'], $this->stats[$this->uids[$this->atacks[$this->id]['uid1']]]['yhod'])]]; + # $this->battle->stats[$this->battle->uids[$this->battle->yhod_user($this->battle->atacks[$this->id]['uid2'], $this->battle->atacks[$this->id]['uid1'], $this->battle->stats[$this->battle->uids[$this->battle->atacks[$this->id]['uid1']]]['yhod'])]]; + + } + + private function updateBattleStats(): void + { + $this->battle->stats[$this->battle->uids[$this->uid1]] = $this->attackerStats; + $this->battle->stats[$this->battle->uids[$this->uid2]] = $this->targetStats; + } + + /** + * Расчет парирования Цели (uid2) от Атакующего (uid1) + * @param int $counterstrikecheck + * @param bool $pat + * @param int $loopstart + * @return void + */ + public function parry(int $counterstrikecheck = 0, bool $pat = false, int $loopstart = 0): void + { + if ($pat) { + $tempAt = $this->at; + $this->at = $tempAt['p']; + } + + if ($loopstart > 0) { + $loopstart--; + } + + + if (is_array($this->at[1]['atack'])) { + for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) { + if ( + !empty($this->targetStats['no_pr1']) || + $this->at[1]['atack'][$j][2] != $counterstrikecheck || + $this->mfs(__FUNCTION__, [1 => $this->targetStats['m7'], 2 => $this->attackerStats['m7'],]) != 1 || + $this->battle->atacks[$this->id]['out2'] != 0 + ) { + continue; + } + if (!empty($this->attackerStats['nopryh']) || $this->attackerStats['nopryh_act'] > 0) { + continue; + } + // Парировал + $this->attackerStats['nopryh'] = (int)floor($this->attackerStats['nopryh']); + $this->at[1]['atack'][$j][1] = 6; + $this->attackerStats['nopryh']--; + $this->attackerStats['nopryh_act']++; + } + } + + if (is_array($this->at[2]['atack'])) { + for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) { + if ( + !empty($this->attackerStats['no_pr1']) || + $this->at[2]['atack'][$j][2] != $counterstrikecheck || + $this->mfs(__FUNCTION__, [1 => $this->attackerStats['m7'], 2 => $this->targetStats['m7'],]) != 1 || + $this->battle->atacks[$this->id]['out1'] != 0 + ) { + continue; + } + if (!empty($this->targetStats['nopryh']) || $this->targetStats['nopryh_act'] > 0) { + continue; + } + // Парировал + $this->targetStats['nopryh'] = (int)floor($this->targetStats['nopryh']); + $this->at[2]['atack'][$j][1] = 6; + $this->targetStats['nopryh']--; + $this->targetStats['nopryh_act']++; + } + } + + if (isset($tempAt)) { + $tempAt['p'] = $this->at; + $this->at = $tempAt; + } + + $this->updateBattleStats(); + } + + /** + * Расчет блока щитом Цели (uid2) от Атакующего (uid1) + * @param int $counterstrikecheck + * @param bool $pat + * @return void + */ + public function blockByShield(int $counterstrikecheck = 0, bool $pat = false): void + { + if ($pat) { + $tempAt = $this->at; + $this->at = $tempAt['p']; + } + + //m8 блок щитом, m18 абсолютный блок щитом + if ($this->targetStats['shield1'] > 0) { + for ($j = 0; $j < count($this->at[1]['atack']) && $j < 8; $j++) { + if ( + $this->at[1]['atack'][$j][2] != $counterstrikecheck || + $this->battle->atacks[$this->id]['out2'] != 0 || + $this->mfs(__FUNCTION__, $this->targetStats['m8'] / 2 + $this->targetStats['m18']) != 1 + ) { + continue; + } + $this->at[1]['atack'][$j][1] = 7; + } + } + + if ($this->attackerStats['shield1'] > 0) { + for ($j = 0; $j < count($this->at[2]['atack']) && $j < 8; $j++) { + if ( + $this->at[2]['atack'][$j][2] != $counterstrikecheck || + $this->battle->atacks[$this->id]['out1'] != 0 || + $this->mfs(__FUNCTION__, $this->attackerStats['m8'] / 2 + $this->attackerStats['m18']) != 1 + ) { + continue; + } + $this->at[2]['atack'][$j][1] = 7; + } + } + + if (isset($tempAt)) { + $tempAt['p'] = $this->at; + $this->at = $tempAt; + } + + $this->updateBattleStats(); + } + + /** + * Расчет крита Атакующего (uid1) по Цели (uid2) + * @param bool $pat + * @param int $loopstart + * @return void + */ + public function criticalDamage(bool $pat = false, int $loopstart = 0): void + { + if ($pat) { + $tempAt = $this->at; + $this->at = $tempAt['p']; + } + + if ($loopstart > 0) { + $loopstart--; + } + + $checkhand = false; + + if (is_array($this->at[1]['atack'])) { + for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) { + [$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->attackerStats); + + if ($this->mfs(__FUNCTION__, ['mf' => $this->attackerStats['m1'] + $data['sv_m1'], 'amf' => $this->attackerStats['m14'], 'smf' => $this->targetStats['m2']]) != 1) { + continue; + } + $this->at[1]['atack'][$j][1] = match (true) { + $this->at[1]['atack'][$j][1] == 3 => 4, //в блок + !in_array($this->at[1]['atack'][$j][1], [2, 6, 7, 8]) => 5, //обычный крит + default => 1 // а ты что такое? + }; + } + } + + if (is_array($this->at[2]['atack'])) { + for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) { + [$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->targetStats); + + if ($this->mfs(__FUNCTION__, ['mf' => $this->targetStats['m1'] + $data['sv_m1'], 'amf' => $this->targetStats['m14'], 'smf' => $this->attackerStats['m2']]) != 1) { + continue; + } + $this->at[2]['atack'][$j][1] = match (true) { + $this->at[2]['atack'][$j][1] == 3 => 4, //в блок + !in_array($this->at[2]['atack'][$j][1], [2, 6, 7, 8]) => 5, //обычный крит + default => 1 // а ты что такое? + }; + } + } + + if (isset($tempAt)) { + $tempAt['p'] = $this->at; + $this->at = $tempAt; + } + + $this->updateBattleStats(); + } + + /** + * Расчет уворота Цели (uid2) от Атакующего (uid1) + * @param int $counterstrikecheck + * @param bool $pat + * @param int $loopstart + * @return void + */ + public function evasion(int $counterstrikecheck = 0, bool $pat = false, int $loopstart = 0): void + { + if ($pat) { + $tempAt = $this->at; + $this->at = $tempAt['p']; + } + + if ($loopstart > 0) { + $loopstart--; + } + + $checkhand = false; + + if (is_array($this->at[1]['atack'])) { + for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) { + [$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->attackerStats); + + if ( + $this->at[1]['atack'][$j][2] != $counterstrikecheck || + $this->battle->atacks[$this->id]['out2'] != 0 || + $this->mfs( + __FUNCTION__, + [ + 'mf' => $this->targetStats['m4'], + 'amf' => $this->targetStats['m15'], + 'smf' => $this->attackerStats['m5'] + $data['sv_m5'], + 'asmf' => $this->attackerStats['m21'], + ] + ) != 1 + ) { + continue; + } + $this->attackerStats['nopryh'] = (int)floor($this->attackerStats['nopryh']); + if (!isset($this->attackerStats['nopryh']) || $this->attackerStats['nopryh'] < 1) { + $this->at[1]['atack'][$j][1] = 2; + } else { + $this->attackerStats['nopryh']--; + $this->attackerStats['nopryh_act']++; + } + } + } + + if (is_array($this->at[2]['atack'])) { + for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) { + [$data, $checkhand] = $this->getDataArrayByHand($checkhand, $this->targetStats); + + if ( + $this->at[2]['atack'][$j][2] != $counterstrikecheck || + $this->battle->atacks[$this->id]['out1'] != 0 || + $this->mfs( + __FUNCTION__, + [ + 'mf' => $this->attackerStats['m4'], + 'amf' => $this->attackerStats['m15'], + 'smf' => $this->targetStats['m5'] + $data['sv_m5'], + 'asmf' => $this->targetStats['m21'], + ] + ) != 1 + ) { + continue; + } + $this->targetStats['nopryh'] = (int)floor($this->targetStats['nopryh']); + if (!isset($this->targetStats['nopryh']) || $this->targetStats['nopryh'] < 1) { + $this->at[2]['atack'][$j][1] = 2; + } else { + $this->targetStats['nopryh']--; + $this->targetStats['nopryh_act']++; + } + } + } + + if (isset($tempAt)) { + $tempAt['p'] = $this->at; + $this->at = $tempAt; + } + + $this->updateBattleStats(); + } + + /** + * Расчет контрудара Цели (uid2) по Атакующему (uid1) + * @param int $counterstrikecheck + * @return void + */ + public function counterstrike(int $counterstrikecheck = 0): void //terrorists win! + { + if (is_array($this->at[1]['atack'])) { + for ($j = 0; $j < count($this->at[1]['atack']) && $j < 8; $j++) { + if ( + $this->at[1]['atack'][$j][1] != 2 || + $this->at[1]['atack'][$j][2] != $counterstrikecheck || + $this->mfs(__FUNCTION__, ['a' => $this->targetStats['m6'], 'b' => $this->attackerStats['m6']]) != 1 + ) { + continue; + } + $this->at[1]['atack'][$j][1] = 8; + $rand = mt_rand(1, 5); + if ($this->battle->testRazmenblock1($this->id, $this->uid2, $this->uid1)) { + $this->at[2]['atack'][] = [$rand, 3, 0, 1]; + } else { + $this->at[2]['atack'][] = [$rand, 1, 0, 1]; // 3 , 0 , 1 + } + + $this->counterstrikehit(count($this->at[2]['atack'])); + } + } + + if (is_array($this->at[2]['atack'])) { + for ($j = 0; $j < count($this->at[2]['atack']) && $j < 8; $j++) { + if ( + $this->at[2]['atack'][$j][1] != 2 || + $this->at[2]['atack'][$j][2] != $counterstrikecheck || + $this->mfs(__FUNCTION__, ['a' => $this->attackerStats['m6'], 'b' => $this->targetStats['m6']]) != 1 + ) { + continue; + } + $this->at[2]['atack'][$j][1] = 8; + $rand = mt_rand(1, 5); + if ($this->battle->testRazmenblock1($this->id, $this->uid1, $this->uid2)) { + $this->at[1]['atack'][] = [$rand, 3, 0, 1]; + } else { + $this->at[1]['atack'][] = [$rand, 1, 0, 1]; // 3 , 0 , 1 + } + + $this->counterstrikehit(count($this->at[1]['atack'])); + } + } + + $this->updateBattleStats(); + } + + /** + * Рассчёт урона. + * @param bool $pat + * @param int $loopstart + * @return void + */ + public function damage(bool $pat = false, int $loopstart = 0): void + { + $yhod = [1 => 0, 0]; + if ($this->battle->stats[$this->battle->uids[$this->uid1]]['yhod'] > 0) { + $yhod = [1 => 1, 0]; + } elseif ($this->battle->stats[$this->battle->uids[$this->uid2]]['yhod'] > 0) { + $yhod = [1 => 0, 1]; + } + + if ($pat) { + $tempAt = $this->at; + $this->at = $tempAt['p']; + } + + if ($loopstart > 0) { + $loopstart--; + } + + $checkhand = false; + + if (is_array($this->at[1]['atack'])) { + for ($j = $loopstart; $j < count($this->at[1]['atack']) && $j < 8; $j++) { + [$data, $checkhand, $wp, $witm] = $this->getDataArrayByHand($checkhand, $this->attackerStats); + $this->at[1]['atack'][$j]['wt'] = $witm['type']; + $this->at[1]['atack'][$j]['yhod'] = $yhod[1]; + + if ( + !isset($this->at[1]['atack'][$j]['yron']) && + in_array($this->at[1]['atack'][$j][1], [1, 4, 5]) + ) { + $type = 'yron'; + } else { + $type = 'block'; + } + + $this->at[1]['atack'][$j][$type] = $this->battle->yronGetrazmen($this->uid2, $this->uid1, $witm); + if ($this->at[1]['atack'][$j][1] == 4) { + $this->at[1]['atack'][$j][$type]['y_old'] = $this->at[1]['atack'][$j][$type]['y']; + $this->at[1]['atack'][$j][$type]['y'] = (int)round($this->at[1]['atack'][$j][$type]['k'] / 2); + } elseif ($this->at[1]['atack'][$j][1] == 5) { + $this->at[1]['atack'][$j][$type]['y_old'] = $this->at[1]['atack'][$j][$type]['y']; + $this->at[1]['atack'][$j][$type]['y'] = $this->at[1]['atack'][$j][$type]['k']; + } + $this->at[1]['atack'][$j][$type]['2h'] = $data['2h']; + $this->at[1]['atack'][$j][$type]['w'] = $wp; + if ($this->at[1]['atack'][$j][$type]['y'] > 0) { + $this->at[1]['atack'][$j][$type]['r'] = '-' . $this->at[1]['atack'][$j][$type]['y']; + } else { + $this->at[1]['atack'][$j][$type]['r'] = '--'; + } + } + } + + if (is_array($this->at[2]['atack'])) { + for ($j = $loopstart; $j < count($this->at[2]['atack']) && $j < 8; $j++) { + [$data, $checkhand, $wp, $witm] = $this->getDataArrayByHand($checkhand, $this->targetStats); + $this->at[2]['atack'][$j]['wt'] = $witm['type']; + $this->at[2]['atack'][$j]['yhod'] = $yhod[1]; + + if ( + !isset($this->at[2]['atack'][$j]['yron']) && + in_array($this->at[2]['atack'][$j][1], [1, 4, 5]) + ) { + $type = 'yron'; + } else { + $type = 'block'; + } + + $this->at[2]['atack'][$j][$type] = $this->battle->yronGetrazmen($this->uid1, $this->uid2, $witm); + if ($this->at[2]['atack'][$j][1] == 4) { + $this->at[2]['atack'][$j][$type]['y_old'] = $this->at[2]['atack'][$j][$type]['y']; + $this->at[2]['atack'][$j][$type]['y'] = (int)round($this->at[2]['atack'][$j][$type]['k'] / 2); + } elseif ($this->at[2]['atack'][$j][1] == 5) { + $this->at[2]['atack'][$j][$type]['y_old'] = $this->at[2]['atack'][$j][$type]['y']; + $this->at[2]['atack'][$j][$type]['y'] = $this->at[2]['atack'][$j][$type]['k']; + } + $this->at[2]['atack'][$j][$type]['2h'] = $data['2h']; + $this->at[2]['atack'][$j][$type]['w'] = $wp; + if ($this->at[2]['atack'][$j][$type]['y'] > 0) { + $this->at[2]['atack'][$j][$type]['r'] = '-' . $this->at[2]['atack'][$j][$type]['y']; + } else { + $this->at[2]['atack'][$j][$type]['r'] = '--'; + } + } + } + + if (isset($tempAt)) { + $tempAt['p'] = $this->at; + $this->at = $tempAt; + } + $this->updateBattleStats(); + } + + + /** + * Возвращает массив: + * + * 0 => data предмета в зависимости от руки в которой тот находится, + * + * 1 => флажок проверки руки, + * + * 2 => число слота руки(?!), + * + * 3 => массив параметров предмета для Battle::class->yronGetrazmen() + * @param bool $check + * @param array $stats + * @return array{array,bool,int,array} + */ + private function getDataArrayByHand(bool $check, array $stats): array + { + if (!$check && isset($stats['wp3id'])) { //Левая рука + $wp = 3; + $check = true; + } else { //Правая рука + if (isset($stats['wp14id']) && $stats['items'][$stats['wp14id']]['type'] != 13) { + $wp = 14; + } else { + $wp = 3; + } + $check = false; + } + $witm = $stats['items'][$stats["wp{$wp}id"]]; + return [Conversion::dataStringToArray($witm['data']), $check, $wp, $witm]; + } + + + private function mfs(int|string $type, array|int $mf): int + { + if (is_array($mf)) { + $mf = array_map(fn($a) => max($a, 0), $mf); + } + $rval = 0; + if ($type == 'criticalDamage') { + //Крит + if ($mf['mf'] > $mf['smf']) { + $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); + } + + $rval = Comparsion::minimax($rval, 0, 75); + + if ($mf['amf'] > 0) { + $mf['amf'] = min(100, $mf['amf']); + + if (($mf['amf'] * 100) >= mt_rand(1, 10000)) { + $rval = 100; + } + } + } elseif ($type == 'evasion') { + if ($mf['mf'] > $mf['smf']) { + $rval = 100 - floor(((($mf['smf']) / ($mf['mf'] + 1)) * 100)); //2.5 + } + + $rval = Comparsion::minimax($rval, 0, 75); + + if ($mf['asmf'] > 0) { + $mf['asmf'] = min(100, $mf['asmf']); + + if ($mf['asmf'] >= mt_rand(1, 100)) { + $rval = 0; + } + } + if ($mf['amf'] >= 0) { + $mf['amf'] = min(100, $mf['amf']); + + if ($mf['amf'] >= mt_rand(1, 100)) { + $rval = 100; + } + } + } elseif ($type == 'parry') { + $mf[1] = max($mf[1], 1); + $mf[2] = max($mf[2], 1); + $rval = $mf[1] - $mf[2] / 2; + $rval = Comparsion::minimax($rval, 1, 75); + + } elseif ($type == 4) { + $mf = round($mf * 0.6); + $mf = Comparsion::minimax($mf, 0, 100); + $rval = min($mf, 100); //пробой брони + } elseif ($type == 'blockByShield') { + $mf = max($mf, 0); + $rval = min($mf, 85); //блок щитом + } elseif ($type == 'counterstrike') { + //Контрудар + if ($mf['a'] > 0) { + if ($mf['b'] > 0) { + $rval = round($mf['a'] - ($mf['b'] / 2)); + } else { + $rval = $mf['a']; + } + } + $rval = Comparsion::minimax($rval, 0, 75); + } + return Helper::getChanse($rval) ? 1 : 0; + } + + /** + * Повторный просчёт всего для успешного контрудара. + * @param int $loopstart + * @return void + */ + private function counterstrikehit(int $loopstart): void + { + $this->evasion(1, true, $loopstart); + $this->parry(1, true, $loopstart); + $this->blockByShield(1, true); + $this->criticalDamage(true, $loopstart); + $this->damage(true, $loopstart); + } + + public function getAt(): array + { + return $this->at; + } +} diff --git a/_incl_data/class/ComissionShop.php b/_incl_data/class/ComissionShop.php index 6812b489..1499787c 100644 --- a/_incl_data/class/ComissionShop.php +++ b/_incl_data/class/ComissionShop.php @@ -512,9 +512,6 @@ ORDER BY `1price`ASC , inGroupCount DESC' if ($pl['dn_delete'] > 0) { $is2 .= '
Предмет будет удален при выходе из подземелья
'; } - if ($this->pokol > $pl['geni']) { - $is2 .= '
Предмет устарел
'; - } if (isset($po['zazuby']) && $po['zazuby'] > 0) { $is2 .= '
Предмет куплен за зубы
'; } diff --git a/_incl_data/class/Core/Config.php b/_incl_data/class/Core/Config.php index 1c95106f..056ab7b9 100644 --- a/_incl_data/class/Core/Config.php +++ b/_incl_data/class/Core/Config.php @@ -75,13 +75,11 @@ class Config $c['nosanich'] = true; //Странички Саныча не выпадают - true , выпадают - false $c['zuby'] = false; //зубы $c['limitedexp'] = false; //лимит опыта - $c['infinity5level'] = false; //вечные 5 уровни $c['expstop'] = 2999999; //9; //Опыт на котором останавливаемся 11 149999999 $c['expstopu'] = 2999999; //Опыт на котором останавливаемся $c['noobgade'] = false; //нуб квест (пещера) $c['level_ransfer'] = 8; //С какого уровня разрешены передачи - $c['nolevel'] = false; //лимитирование уровней $c['noitembuy'] = false; //Не требует ресурсы для покупки $c['effz'] = 0; //Скольким секундам равен заряд $c['money_haot'] = true; //кр за хаоты diff --git a/_incl_data/class/Core/Debug.php b/_incl_data/class/Core/Debug.php new file mode 100644 index 00000000..cb8911fa --- /dev/null +++ b/_incl_data/class/Core/Debug.php @@ -0,0 +1,13 @@ +setRoom($room); } - $cmsg->setCity($this->u->info['city']); $cmsg->setType(11); $cmsg->setSound(117); + $cmsg->setText('Ваш бой начался!'); (new Chat())->sendMsg($cmsg); } @@ -621,6 +623,7 @@ class FightRequest $nz['time_start'] = 600; } + if (isset($_POST['mut_hidden'])) { $nz['invise'] = 1; } @@ -817,19 +820,17 @@ class FightRequest return isset($symbols[1]) ? $symbols[0] . '.' . $symbols[1] : $symbols[0] . '.0'; } - public function getEndedBattlesList(string $slogin, int $dt) + public function getEndedBattlesList(string $slogin, int $dt): void { $code = PassGen::intCode(); $btl = ''; - $see = ''; - $usr = Db::getRow('select id, login, level, city from users where login = ? limit 1', [$slogin]); - if (isset($usr['id'])) { - $tms = $dt; - $tmf = $dt + 86400; + $uid = Db::getValue('select id from users where login = ? limit 1', [$slogin]); + + if ($uid) { $sp = Db::getRows( 'select * from battle_last where time >= ? and time < ? and uid = ? order by id desc ', - [$tms, $tmf, $usr['id']] + [$dt, $dt + 86400, $uid] ); $jk = 0; $btl_lst = []; @@ -840,11 +841,13 @@ class FightRequest $tms = []; $ts = []; $spi = Db::getRows('select * from battle_last where battle_id = ?', [$pl['battle_id']]); + foreach ($spi as $pli) { if (!isset($tms[$pli['team']])) { $ts[] = $pli['team']; } - $tms[$pli['team']][count($tms[$pli['team']])] = $pli; + + $tms[$pli['team']][] = $pli; } $k = 0; while ($k < count($ts)) { @@ -859,7 +862,7 @@ class FightRequest } $tm2 .= '' . $tms[$g][$h]['login'] . ' [' . $tms[$g][$h]['lvl'] . '] - , '; + , '; } $h++; } @@ -875,20 +878,24 @@ class FightRequest $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 . ' »»
'; + + if (isset($btl_lst[$b['id']])) { + continue; } + + $btl_lst[$b['id']] = true; + if ($tm == '') { + $tm = 'Данные поединка потеряны'; + } + $jk++; + $btl .= $jk . '. ' . date('d.m.y H:i', $pl['time']) . ' ' . + $tm . ' »»
'; } } - $see .= empty($btl) ? '
В этот день не было боев, или же, летописец опять потерял свитки...


' : $btl; - echo $see; + + echo empty($btl) ? + '
В этот день не было боев, или же, летописец опять потерял свитки...


' : + $btl; } public function getCurrentBattlesList(): void diff --git a/_incl_data/class/Magic/Elemental/Fire.php b/_incl_data/class/Magic/Elemental/Fire.php index 20a95c97..b10d8253 100644 --- a/_incl_data/class/Magic/Elemental/Fire.php +++ b/_incl_data/class/Magic/Elemental/Fire.php @@ -2,7 +2,6 @@ namespace Magic\Elemental; -use Battle; use DTO\BattleSpell; use Helper\Math; diff --git a/_incl_data/class/Model/ActionModel.php b/_incl_data/class/Model/ActionModel.php index 970079bb..e84a8fbc 100644 --- a/_incl_data/class/Model/ActionModel.php +++ b/_incl_data/class/Model/ActionModel.php @@ -14,7 +14,7 @@ class ActionModel $this->uid = $uid; } - public static function new(array $user, string $vals, string $vars, int $time = 0) + public static function new(array $user, string $vals, string $vars, int $time = 0): void { if (!$time) { $time = time(); @@ -60,7 +60,7 @@ class ActionModel ); } - public function deleteByVals(string $vals) + public function deleteByVals(string $vals): void { Db::sql('delete from actions where uid = ? and vals = ?', [$this->uid, $vals]); } @@ -83,4 +83,25 @@ class ActionModel return !empty($arr) ? $arr : []; }*/ + + public function getDailyQuest(): array|false + { + return Db::getRow("select * from actions where uid = ? and vars = 'day_quest' limit 1", [$this->uid]); + } + + public function getFinishedDailyQuestTasks(int $timeout): array + { + $arr = []; + $counter = Db::getRows( + "select count(*) as c, vars + from actions + where vars in ('end_trup', 'end_xaot', 'psh0', 'trup_sun', 'izlom', 'win') and time > ? and uid = ? + group by vars", + [$timeout, $this->uid] + ); + foreach ($counter as $c) { + $arr[$c['vars']] = $c['c']; + } + return $arr; + } } \ No newline at end of file diff --git a/_incl_data/class/Model/BattleModel.php b/_incl_data/class/Model/BattleModel.php new file mode 100644 index 00000000..8d339b04 --- /dev/null +++ b/_incl_data/class/Model/BattleModel.php @@ -0,0 +1,48 @@ +all = Db::getRows('select * from battle'); + if (empty($id)) { + $this->battle = new stdClass(); + $this->battleArray = []; + } else { + foreach ($this->all as $b) { + if ($b['id'] != $id) { + continue; + } + $this->battle = (object)$b; + $this->battleArray = get_object_vars($this->battle); + return; + } + } + + } + + public static function countClanWars(int $clanid): array + { + $today = (new \DateTimeImmutable('now 00:00:00'))->getTimestamp(); + $sql = "select count(id) from battle where + type = 250 and + time_over > ? and + (team_win = ? and clan1 = ?) or (team_win = ? and clan2 = ?)"; + $count1 = Db::getValue($sql, [$today, 1, $clanid, 2, $clanid]); + $count2 = Db::getValue($sql, [$today, 2, $clanid, 1, $clanid]); + return [ + $count1 ?? 0, + $count2 ?? 0, + ]; + } + + +} + diff --git a/_incl_data/class/Priems.php b/_incl_data/class/Priems.php index b017b4ce..dd2af900 100644 --- a/_incl_data/class/Priems.php +++ b/_incl_data/class/Priems.php @@ -84,7 +84,7 @@ class Priems $mpNow = $this->zeromax($btl->stats[$btl->uids[$uid]]['mpNow'], $btl->stats[$btl->uids[$uid]]['mpAll']); if ($mpNow > 0) { Db::sql( - 'update stats set mpNow = ? where id = ?', + 'update stats set mpnow = ? where id = ?', [$btl->stats[$btl->uids[$uid]]['mpNow'], $uid] ); } @@ -113,7 +113,7 @@ class Priems $u = $this->u; // Для присоедиянемых файлов. $return_main = true; $ue = Db::getRow( - 'select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpNow > 0', + 'select * from users left join stats on (users.id = stats.id) where users.id = ? and battle = ? and hpnow > 0', [$eff['uid'], $btl->info['id']] ); @@ -461,11 +461,11 @@ class Priems /** * Новая функция магического заклинания с приёма. * Работает с числовыми приёмами в папке [priem]. - * @param int $attackerId кто использует приём - * @param int $defenderId на кого использует приём - * @param float $damage базовый урон приёма - * @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией. - * @param bool $hasCritical флаг, что приём МОЖЕТ критовать + * @param int $attackerId кто использует приём + * @param int $defenderId на кого использует приём + * @param float $damage базовый урон приёма + * @param string $damageType тип урона (стихия?) приходит строкой, и конвертируется функцией. + * @param bool $hasCritical флаг, что приём МОЖЕТ критовать * @return array [0|damage] int урон, [1|crit] bool был ли крит, [2|miss] bool был ли промах, [3|miss_type] int тип промаха (всегда = 2). * @author Insallah */ @@ -781,8 +781,7 @@ class Priems $krituet = true, $heal = 0, $namenew = null - ) - { + ) { $trawm_off = false; global $btl; if ($namenew != null) { @@ -961,7 +960,8 @@ class Priems ); //заносим в лог боя - $vLog = 'time1=' . time() . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . ''; + $vLog = 'time1=' . time( + ) . '||s1=' . $btl->users[$btl->uids[$usu]]['sex'] . '||t1=' . $btl->users[$btl->uids[$usu]]['team'] . '||login1=' . $btl->users[$btl->uids[$usu]]['login'] . '||s2=' . $btl->users[$btl->uids[$uen]]['sex'] . '||t2=' . $btl->users[$btl->uids[$uen]]['team'] . '||login2=' . $btl->users[$btl->uids[$uen]]['login'] . ''; $mas1 = [ 'time' => time(), 'battle' => $btl->info['id'], @@ -1392,18 +1392,18 @@ class Priems } } - if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem']) && $btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem'] > 0 && $pl['nosh'] == 0) { - if ($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] > 0 && substr( - $pl['img'], 0, - 10 - ) == 'wis_water_') { - //вода - } else { - $notr++; - } + if ( + isset($btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem']) && + $btl->stats[$btl->uids[$this->u->info['id']]]['nousepriem'] > 0 && + $pl['nosh'] == 0 && + ($btl->stats[$btl->uids[$this->u->info['id']]]['noshock_voda'] <= 0 || !str_starts_with($pl['img'], 'wis_water_')) + ) { + $notr++; } - if ($pl['id'] == $btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) { + + if (isset($btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) && + $pl['id'] == $btl->stats[$btl->uids[$this->u->info['id']]]['notuse_last_pr']) { $notr++; } @@ -1423,7 +1423,7 @@ class Priems if ($pl['xuse'] > 0) { $xu = $this->u->testAction( - '`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '', + '`vars` = "use_priem_' . $btl->info['id'] . '_' . $this->u->info['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'], 2 ); if ($xu[0] >= $pl['xuse']) { @@ -1574,13 +1574,13 @@ class Priems } /** - * @param int $uid на кого кастуем - * @param int $pr id приема + * @param int $uid на кого кастуем + * @param int $pr id приема * @param int|string $data дата, если -1, то добавляем дату3 - * @param int $d2 + * @param int $d2 * @param $tm - * @param int $h ход - * @param int $uu id юзера который использовал + * @param int $h ход + * @param int $uu id юзера который использовал * @param $max * @param $bj * @param $tp @@ -1609,8 +1609,7 @@ class Priems $noupdatebtl = 0, $noplus = 0, $pname = null - ) - { + ) { global $btl; //$pl = mysql_fetch_assoc(mysql_query('SELECT * FROM `priems` WHERE `id` = ' . (int)$pr)); $pl = Db::getRow('select * from priems where id = ?', [$pr]); @@ -1664,7 +1663,7 @@ class Priems unset($num); } if (!isset($num['id'])) { - $q = 'insert into eff_users (tr_life_user, bj, user_use, hod, v2, img2, id_eff, uid, name, data, overType, timeUse, v1) values (?,?,?,?,?,?,?,?,?,?,?,?,?)'; + $q = 'insert into eff_users (tr_life_user, bj, user_use, hod, v2, img2, id_eff, uid, name, data, overtype, timeuse, v1) values (?,?,?,?,?,?,?,?,?,?,?,?,?)'; $image = !empty($pl['img']) ? $pl['img'] : $pl['id']; $name = !empty($pname) ? $pname : $pl['name']; $image .= '.gif'; @@ -1728,8 +1727,8 @@ class Priems /** Получает строку data c шаблонной записью типа add_m11=2*{lvl1} и конвертирует в реальную строку. *
Шаблон:
lvl1 = $uid[level]
ts5 = $uid[s5]
mpAll = $uid[mpAll] - * @param string $pl строка в формате data - * @param int $uid пользователь, параметры которого используются для подставки в шаблон. + * @param string $pl строка в формате data + * @param int $uid пользователь, параметры которого используются для подставки в шаблон. * @return string строка в формате data с развёрнутыми шаблонами. */ public function redate($pl, $uid) @@ -1740,13 +1739,13 @@ class Priems $e = explode('|', $pl); while ($i < count($e)) { $f = explode('=', $e[$i]); -// $f[1] = $this->getdr( -// $f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [ -// 0 => $btl->users[$btl->uids[$uid]]['level'], -// 1 => $btl->stats[$btl->uids[$uid]]['s5'], -// 2 => $btl->stats[$btl->uids[$uid]]['mpAll'], -// ] -// ); + // $f[1] = $this->getdr( + // $f[1], [0 => 'lvl1', 1 => 'ts5', 2 => 'mpAll'], [ + // 0 => $btl->users[$btl->uids[$uid]]['level'], + // 1 => $btl->stats[$btl->uids[$uid]]['s5'], + // 2 => $btl->stats[$btl->uids[$uid]]['mpAll'], + // ] + // ); $f[1] = $this->getDynamicInfo($f[1]); if ($f[0] != '' && $f[1] != '') { $e[$i] = implode('=', $f); @@ -1977,7 +1976,8 @@ class Priems } else { //бьем противника с пропуском хода mysql_query( - 'INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time() . '","1","1","2")' + 'INSERT INTO `battle_act` (`battle`,`uid1`,`uid2`,`time`,`out1`,`type`,`tpo1`) VALUES ("' . $btl->info['id'] . '","' . $this->u->info['id'] . '","' . $this->u->info['enemy'] . '","' . time( + ) . '","1","1","2")' ); } } @@ -2081,9 +2081,11 @@ class Priems ); if ($upd) { TrainingManager::getInstance() - ->addPoint('my_user_fourth_quest', function (TrainingManager $manager) { - $manager->store(); - }); + ->addPoint( + 'my_user_fourth_quest', function (TrainingManager $manager) { + $manager->store(); + } + ); $this->u->info['priems'] = $p; } } else { @@ -2097,12 +2099,16 @@ class Priems public function getTechniquesInfo(?int $id = null): array { if (isset($id)) { - return Db::getRow('SELECT * FROM techniques_categories LEFT JOIN priems ON techniques_categories.technique_id = priems.id - WHERE priems.level <= ? AND priems.activ > 0 AND priems.id = ? ORDER BY priems.img,priems.level', [User::start()->info['level'], $id]); + return Db::getRow( + 'select * from techniques_categories left join priems on techniques_categories.technique_id = priems.id + where priems.level <= ? and priems.activ > 0 and priems.id = ? order by priems.img,priems.level', [User::start()->info['level'], $id] + ); } - return Db::getRows('SELECT * FROM techniques_categories LEFT JOIN priems ON techniques_categories.technique_id = priems.id - WHERE priems.level <= ? AND priems.activ > 0 ORDER BY priems.img,priems.level', [User::start()->info['level']]); + return Db::getRows( + 'select * from techniques_categories left join priems on techniques_categories.technique_id = priems.id + where priems.level <= ? and priems.activ > 0 order by priems.img,priems.level', [User::start()->info['level']] + ); } public function seeMy($t) @@ -2294,7 +2300,9 @@ class Priems echo <<< HTML - + HTML; } @@ -2358,7 +2366,7 @@ class Priems $btl->stats[$btl->uids[$u1]]['hpNow'] = $pvr['hpNow']; - Db::sql('update stats set hpNow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $u1]); + Db::sql('update stats set hpnow = ? where id = ?', [$btl->stats[$btl->uids[$u1]]['hpNow'], $u1]); $color = $this->logColor[self::FIRE]; $prv['text'] = '{u2} утратил здоровье от "{pr}" '; @@ -2444,7 +2452,7 @@ class Priems $btl->stats[$btl->uids[$this->ue['id']]]['hpNow'] = $this->ue['hpNow']; - Db::sql('update stats set hpNow = ? where id = ?', [$this->ue['hpNow'], $this->ue['id']]); + Db::sql('update stats set hpnow = ? where id = ?', [$this->ue['hpNow'], $this->ue['id']]); if ($isMiss) { $color = $this->logColor['miss']; @@ -2623,7 +2631,7 @@ class Priems $uu = $pl['id'] === 260 ? '' : $this->u->info['id']; Db::sql( - 'insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overType, timeUse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', + 'insert into eff_users (hod, v1, v2, img2, id_eff, uid, name, data, overtype, timeuse, user_use) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [$hd1, 'priem', $pl['id'], $pl['img'] . '.gif', 22, $uid, $pl['name'], $data, 0, $tm, $uu] ); @@ -2724,7 +2732,7 @@ class Priems * Конечный damage после множителей делится на 5 и пишется в БД (atgm=). * Файлы: 33, 56, 57, 58, 59, 60. * @param $id - * @param array $pl массив значений из БД priems. + * @param array $pl массив значений из БД priems. * @param Battle $btl * @return void */ @@ -2756,7 +2764,7 @@ class Priems * Если есть одинаковые статы из них выбирается случайный. * Файл:267, приём 268. Понимай как хочешь. * @param $id - * @param array $pl + * @param array $pl * @param Battle $btl * @return void */ @@ -2765,7 +2773,7 @@ class Priems $q = 'select stats as data from stats where id = ? union all select stats as data from test_bot where id = ? union all select data from eff_users where `delete` = 0 and uid = ? - union all select data from items_users where inOdet > 0 and `delete` = 0 and uid = ?'; + union all select data from items_users where inodet > 0 and `delete` = 0 and uid = ?'; $datas = Db::getColumn($q, array_fill(0, 3, $this->ue['id'])); $stats = array_fill_keys(['s1', 's2', 's3', 's5', 's6'], 0); foreach ($datas as $data) { diff --git a/_incl_data/class/Quests.php b/_incl_data/class/Quests.php index 7c81bac7..c3246e42 100644 --- a/_incl_data/class/Quests.php +++ b/_incl_data/class/Quests.php @@ -433,7 +433,7 @@ class Quests } if (isset($d['add_rep'])) { - $t .= 'Репутация ' . $u->city_name[$pl['city']] . ': ' . $d['add_rep'] . '
'; + $t .= 'Репутация ' . $pl['city'] . ': ' . $d['add_rep'] . '
'; } if (isset($d['add_repizlom'])) { @@ -582,7 +582,7 @@ class Quests return $r; } - public function testquest() + public function testquest(): void { global $u; if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') { @@ -749,12 +749,9 @@ class Quests } unset($x, $i, $ii, $ex, $x2, $bot2, $ex2); if ($pl['city'] != '') { - $t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$pl['city']] . ', '; + $t .= '' . $d['add_rep'] . ' ед. репутации ' . $pl['city'] . ', '; $rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); - // Рыцарки - /*if($rep['rep'.$pl['city']] < 10000 && $rep['rep'.$pl['city']] + $d['add_rep'] >= 10000 && $pl['kin'] != 1) { - $rep['rep'.$pl['city']] = 9999; - } else*/ + if ($rep['rep' . $pl['city']] < 24999 && $rep['rep' . $pl['city']] + $d['add_rep'] >= 24999 && $pl['kin'] != 2) { $rep['rep' . $pl['city']] = 24999; } else { @@ -976,7 +973,7 @@ class Quests if ($this->stats['more_awards'] >= 0) { $d['add_rep'] += $d['add_rep'] / 100 * 50; } - $t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$quest['city']] . ', '; + $t .= '' . $d['add_rep'] . ' ед. репутации ' . $quest['city'] . ', '; if ( $rep['rep' . $quest['city']] < 24999 && $rep['rep' . $quest['city']] + $d['add_rep'] >= 24999 && diff --git a/_incl_data/class/User.php b/_incl_data/class/User.php index c01e8806..44db954d 100644 --- a/_incl_data/class/User.php +++ b/_incl_data/class/User.php @@ -9,6 +9,7 @@ use Model\ActionModel; use User\Effects; use User\InfoBox; use User\ItemsModel; +use User\Login; use User\Reputation; use User\Stats; use User\UserCalculatedStats; @@ -17,7 +18,6 @@ use User\UserStats; class User { private static ?self $flag_one = null; - public int $pokol = 2; //Акктуальное поколение предметов public array $aves = ['now' => 0, 'max' => 0]; public array $room = []; public array $align_nm = [ @@ -26,34 +26,6 @@ class User 3 => 'Тьма', 7 => 'Нейтралитет', ]; - public array $mod_nm = [ - 0 => [0 => ''], - 1 => [ - '1' => 'Свет', - '1.1' => 'Паладин Поднебесья', - '1.4' => 'Таможенный Паладин', - '1.5' => 'Паладин Солнечной Улыбки', - '1.6' => 'Инквизитор', - '1.7' => 'Паладин Огненной Зари', - '1.75' => 'Паладин-Хранитель', - '1.9' => 'Паладин Неба', - '1.91' => 'Старший Паладин Неба', - '1.92' => 'Ветеран Ордена', - '1.99' => 'Верховный Паладин', - ], - 3 => [ - '3' => 'Тьма', - '3.01' => 'Тарман-Служитель', - '3.05' => 'Тарман-Надсмотрщик', - '3.06' => 'Каратель', - '3.07' => 'Тарман-Убийца', - '3.075' => 'Тарман-Хранитель', - '3.09' => 'Тарман-Палач', - '3.091' => 'Тарман-Владыка', - '3.092' => 'Ветеран Армады', - '3.99' => 'Тарман Патриарх', - ], - ]; public array $rgd = [0 => 0, 1 => 0]; public array $city_name = [ 'emeraldscity' => 'Emeralds city', @@ -584,25 +556,35 @@ class User public string $error = ''; public array $info = []; public array $rep; - public $tfer; - public $stats; + /** Для переводов персонажа */ + public array|false $tfer; + public array $stats; private InfoBox $infoBox; private Reputation $reputation; private Stats $userStats; - private function __construct() + private function __construct(int $uid = 0) { - if (empty($_SESSION['uid']) && empty($_COOKIE['login'])) { + if (empty($_SESSION['uid']) && empty($_COOKIE['login']) && empty($uid)) { return; } - $user = !empty($_SESSION['uid']) ? $_SESSION['uid'] : $_COOKIE['login']; + $user = match (true) { + !empty($uid) => $uid, + !empty($_SESSION['uid']) => $_SESSION['uid'], + default => $_COOKIE['login'] + }; + $this->info = self::getInfo($user); unset($user); Database::init(); // для всяких mysql_* + $this->userStats = new Stats($this); + //$this->getStats($this->info); // Бля, а вдруг? + $this->stats = $this->userStats->getStats($this->info); + $this->infoTasks(); if (Core\Config::get('securetime') > 0) { @@ -813,11 +795,18 @@ class User } //Выделяем передачи - $this->tfer = mysql_fetch_array( - mysql_query( - 'SELECT `id`,`time`,`uid1`,`uid2`,`city`,`room`,`good1`,`good2`,`cancel1`,`cancel2`,`money1`,`money2`,`start1`,`start2`,`text`,`r0`,`r1`,`r2`,`finish1`,`finish2` FROM `transfers` WHERE (`uid1` = "' . $this->info['id'] . '" OR `uid2` = "' . $this->info['id'] . '") AND (`cancel1` = "0" OR (`finish1` > 0 AND `uid1` = "' . $this->info['id'] . '") OR (`finish2` > 0 AND `uid2` = "' . $this->info['id'] . '")) AND (`cancel2` = "0" OR (`finish2` > 0 AND `uid2` = "' . $this->info['id'] . '") OR (`finish1` > 0 AND `uid1` = "' . $this->info['id'] . '")) ORDER BY `id` DESC LIMIT 1' - ) + + $this->tfer = Db::getRow( + 'select * + from transfers + where (uid1 = ? or uid2 = ?) + and (cancel1 = 0 or (finish1 > 0 and uid1 = ?) or (finish2 > 0 and uid2 = ?)) + and (cancel2 = 0 or (finish2 > 0 and uid2 = ?) or (finish1 > 0 and uid1 = ?)) + order by id desc + limit 1', + [$this->info['id'], $this->info['id'], $this->info['id'], $this->info['id'], $this->info['id'], $this->info['id']] ); + if ($this->tfer) { if ($this->tfer['uid1'] == $this->tfer['uid2']) { $this->tfer = false; @@ -891,11 +880,11 @@ class User $cmp = Db::getValue('select val from save_com where uid = ? and id = ?', [$this->info['id'], (int)$_GET['usec1']]); if ($cmp) { //снимаем все вещи - Db::sql('update items_users set inOdet = 0 where uid = ?', [$this->info['id']]); + Db::sql('update items_users set inodet = 0 where uid = ?', [$this->info['id']]); //одеваем вещи, если они не удалены $cm = Conversion::dataStringToArray($cmp); foreach ($cm as $slot => $itemid) { - Db::sql('update items_users set inOdet = ? where id = ? and uid = ? and inShop = 0', [(int)$slot, (int)$itemid, $this->info['id']]); + Db::sql('update items_users set inodet = ? where id = ? and uid = ? and inshop = 0', [(int)$slot, (int)$itemid, $this->info['id']]); } } @@ -1013,7 +1002,7 @@ class User $j++; } if ($tritm != '' && !$tr) { - $this->error = 'Необходимы предметы: ' . $tritm . ''; + $this->error = 'Необходимы предметы: ' . $tritm; } } while ($x < count($t)) { @@ -1029,7 +1018,7 @@ class User mysql_query( 'UPDATE `users` SET `obraz` = "' . $o['img'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1' ); - $this->addAction(time(), 'sel_obraz', 'id=' . $o['id'] . ''); + $this->addAction(time(), 'sel_obraz', 'id=' . $o['id']); $this->info['obraz'] = $o['img']; } } else { @@ -1044,7 +1033,7 @@ class User } else { $this->error = 'Выбирать образ можно не чаще одного раза в сутки, следующая смена ' . date( 'd.m.Y H:i', $sm['time'] + 86400 - ) . ''; + ); unset($_GET['obr_sel']); $_GET['inv'] = 1; } @@ -1115,9 +1104,6 @@ class User return; } - $this->userStats = new Stats($this); - //$this->getStats($this->info); // Бля, а вдруг? - $this->stats = $this->userStats->getStats($this->info); $this->info['achiv'] = Db::getRow('select * from users_achiv where id = ?', [$this->info['id']]); if (!isset($this->info['achiv']['id'])) { @@ -1365,12 +1351,13 @@ class User //Расчет защиты (магия) /** Singletone. + * @param int $uid * @return User */ - public static function start(): User + public static function start(int $uid = 0): User { if (!isset(self::$flag_one)) { - self::$flag_one = new self(); + self::$flag_one = new self($uid); } return self::$flag_one; } @@ -1401,13 +1388,10 @@ class User where users.id = ?', [$uid] ); - $imgBase = Config::img() . DIRECTORY_SEPARATOR . 'i'; - - $alignStr = empty($align) ? '' : ""; - $clanStr = empty($clanName) ? '' : "$clanName"; - $spacedLogin = str_replace(' ', '%20', $login); - $loginLink = "Инф. о $login"; - return "$alignStr$clanStr$login [$level]$loginLink"; + if (!isset($login)) { + return "uid:$uid"; + } + return (new Login($align, $clanName, $level, $login))->fullLogin; } public function dayquest(int $id): string @@ -1465,11 +1449,11 @@ class User } $this->error = 'Вы успешно восстановили ' . round($this->stats['hpAll'] - $this->stats['hpNow']) . ' HP.'; Db::sql( - 'insert into vortex (uid, room, time, val, type) VALUES (?,?,unix_timestamp(),?,1)', + 'insert into vortex (uid, room, time, val, type) values (?,?,unix_timestamp(),?,1)', [$this->info['id'], $this->info['room'], round($this->stats['hpAll'] - $this->stats['hpNow'])] ); $this->stats['hpNow'] = $this->stats['hpAll']; - Db::sql('update stats set hpNow = ? where id = ?', [$this->stats['hpNow'], $this->info['id']]); + Db::sql('update stats set hpnow = ? where id = ?', [$this->stats['hpNow'], $this->info['id']]); } } elseif (isset($_GET['vmp'])) { $v = Db::getValue('select time from vortex where uid = ? and type = 2 order by time desc limit 1'); @@ -1482,11 +1466,11 @@ class User } $this->error = 'Вы успешно восстановили ' . round($this->stats['mpAll'] - $this->stats['mpNow']) . ' MP.'; Db::sql( - 'insert into vortex (uid, room, time, val, type) VALUES (?,?,unix_timestamp(),?,2)', + 'insert into vortex (uid, room, time, val, type) values (?,?,unix_timestamp(),?,2)', [$this->info['id'], $this->info['room'], round($this->stats['mpAll'] - $this->stats['mpNow'])] ); $this->stats['mpNow'] = $this->stats['mpAll']; - Db::sql('update stats set mpNow = ? where id = ?', [$this->stats['mpNow'], $this->info['id']]); + Db::sql('update stats set mpnow = ? where id = ?', [$this->stats['mpNow'], $this->info['id']]); } } @@ -1532,7 +1516,7 @@ class User if ($an <= 0) { return; } - Db::sql('replace into users_align (uid, time, align) VALUES (?,unix_timestamp(),?)', [$uid, floor($an)]); + Db::sql('replace into users_align (uid, time, align) values (?,unix_timestamp(),?)', [$uid, floor($an)]); } @@ -1987,7 +1971,7 @@ class User //копируем пользователя Db::sql( - "insert into users (align, login, level, pass, city, cityreg, name, sex, timereg, obraz, bot_id, inTurnir) values (?,?,?,uuid(),'Неведомые земли','Неведомые земли',?,?,?,?,?,?)", + "insert into users (align, login, level, pass, city, cityreg, name, sex, timereg, obraz, bot_id, inturnir) values (?,?,?,uuid(),'Неведомые земли','Неведомые земли',?,?,?,?,?,?)", [ $clon['align'] ?? 0, $clon['login'], @@ -2027,17 +2011,17 @@ class User $uid = (int)Db::lastInsertId(); //копируем статы - Db::sql('insert into stats (clone, id, stats, hpNow, upLevel, bot, priems) values (?,?,?,1000000,?,1,?)', [$clon['id'], $uid, $clon['stats'], $clon['upLevel'], $clon['priems']]); + Db::sql('insert into stats (clone, id, stats, hpnow, uplevel, bot, priems) values (?,?,?,1000000,?,1,?)', [$clon['id'], $uid, $clon['stats'], $clon['upLevel'], $clon['priems']]); //копируем предметы Db::sql( - "insert into items_users (uid, item_id, data, inOdet, iznosMAX, kolvo) select ?, item_id, replace(data, 'toclan', 'to_clan_'), inOdet, iznosMAX, kolvo from items_users where inOdet > 0 and uid = ?", + "insert into items_users (uid, item_id, data, inodet, iznosmax, kolvo) select ?, item_id, replace(data, 'toclan', 'to_clan_'), inodet, iznosmax, kolvo from items_users where inodet > 0 and uid = ?", [$uid, $clon['id']] ); //копируем эффекты Db::sql( - "insert into eff_users (uid, id_eff, data, name, overType, timeUse, x) select ?, id_eff, data, name, overType, timeUse, x from eff_users where uid = ? and deactiveTime < unix_timestamp() and v1 != 'priem'", + "insert into eff_users (uid, id_eff, data, name, overtype, timeuse, x) select ?, id_eff, data, name, overtype, timeuse, x from eff_users where uid = ? and deactivetime < unix_timestamp() and v1 != 'priem'", [$uid, $clon['id']] ); @@ -2047,7 +2031,7 @@ class User } else { - $bot = Db::getRow('select id, login, stats, upLevel, itemsUse from test_bot where id = ?', [$id]); + $bot = Db::getRow('select id, login, stats, uplevel, itemsuse from test_bot where id = ?', [$id]); if (!isset($bot['id'])) { return []; @@ -2088,7 +2072,7 @@ class User $bot['stats'] = Conversion::arrayToDataString($statss); unset($statss); } - Db::sql('insert into stats (id, stats, hpNow, upLevel, bot) values (?,?,1000000,?,1)', [$uid, $bot['stats'], $bot['upLevel']]); + Db::sql('insert into stats (id, stats, hpnow, uplevel, bot) values (?,?,1000000,?,1)', [$uid, $bot['stats'], $bot['upLevel']]); $bot['id'] = $uid; $bot['logins_bot'] = $logins_bot; @@ -2109,7 +2093,7 @@ class User $w3b = 1; } } - Db::sql('update items_users set inOdet = ? where id = ?', [$inslot, $iditem]); + Db::sql('update items_users set inodet = ? where id = ?', [$inslot, $iditem]); } return $bot; } @@ -2188,7 +2172,7 @@ class User public function freeStatsMod($id, $s, $uid): void { - $itm = Db::getValue('select data from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]); + $itm = Db::getValue('select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]); if (!isset($itm)) { return; @@ -2236,7 +2220,7 @@ class User public function freeStatsItem(int $id, int $s, int $uid): void { - $itm = Db::getValue('select data from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]); + $itm = Db::getValue('select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]); if (!$itm || $s != 1 && $s != 2 && $s != 3 && $s != 5) { return; } @@ -2253,7 +2237,7 @@ class User public function freeStats2Item(int $id, int $s, int $uid, int $tp): void { - $itm = Db::getRow('select id, data, so from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]); + $itm = Db::getRow('select id, data, so from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]); if (!isset($itm['id']) || $itm['so'] <= 0) { return; } @@ -2323,7 +2307,7 @@ class User public function obj_addItem(int $id): void { - $itm = Db::getRow('select id, inGroup, item_id, uid from items_users where uid = ? and inOdet = 0 and inShop = 0 and id = ?', [$this->info['id'], $id]); + $itm = Db::getRow('select id, ingroup, item_id, uid from items_users where uid = ? and inodet = 0 and inshop = 0 and id = ?', [$this->info['id'], $id]); if ($this->info['transfers'] < 1) { $this->error = 'На сегодня лимит передач исчерпан.'; return; @@ -2332,25 +2316,25 @@ class User return; } if ($itm['inGroup'] > 0 && $this->itemsX($id) > 1) { - Db::sql('update items_users set inshop = 1 where inShop != 30 and uid = ? and item_id = ? and inGroup = ?', [$this->info['id'], $itm['item_id'], $itm['inGroup']]); + Db::sql('update items_users set inshop = 1 where inshop != 30 and uid = ? and item_id = ? and ingroup = ?', [$this->info['id'], $itm['item_id'], $itm['inGroup']]); } else { - Db::sql('update items_users set inshop = 1 where inShop != 30 and uid = ? and id = ? and inOdet = 0', [$this->info['id'], $id]); + Db::sql('update items_users set inshop = 1 where inshop != 30 and uid = ? and id = ? and inodet = 0', [$this->info['id'], $id]); } } public function itemsX(int $id, $uid = null, $item_id = null): bool|int { //fixme какая-то дичь тут. - $item = Db::getRow('select uid, item_id, inGroup, inShop from items_users where id = ?', [$id]); + $item = Db::getRow('select uid, item_id, ingroup, inshop from items_users where id = ?', [$id]); return Db::getValue( - 'select count(id) from items_users where inShop = ? and item_id = ? and uid = ? and inGroup = ?', + 'select count(id) from items_users where inshop = ? and item_id = ? and uid = ? and ingroup = ?', [$item['inShop'], $item['item_id'], $item['uid'], $item['ingroup']] ); } public function obj_takeItem($id): void { - $itm = Db::getRow('select id, inGroup from items_users where id = ? and uid = ? and inOdet = 0 and inShop = 0'); + $itm = Db::getRow('select id, ingroup from items_users where id = ? and uid = ? and inodet = 0 and inshop = 0'); if ($this->info['transfers'] < 1) { $this->error = 'На сегодня лимит передач исчерпан.'; return; @@ -2359,15 +2343,15 @@ class User return; } if ($itm['inGroup'] > 0 && $this->itemsX($id) > 1) { - Db::sql('update items_users set inshop = 0 where inShop != 30 and uid = ? and (id = ? or inGroup = ?) and inOdet = 0', [$this->info['id'], $id, $itm['inGroup']]); + Db::sql('update items_users set inshop = 0 where inshop != 30 and uid = ? and (id = ? or ingroup = ?) and inodet = 0', [$this->info['id'], $id, $itm['inGroup']]); } else { - Db::sql('update items_users set inshop = 0 where inShop != 30 and uid = ? and id = ? and inOdet = 0', [$this->info['id'], $id]); + Db::sql('update items_users set inshop = 0 where inshop != 30 and uid = ? and id = ? and inodet = 0', [$this->info['id'], $id]); } } public function itemsSmSave(int $id, int $s, int $uid): void { - $itm = Db::getValue('select data from items_users where id = ? and uid = ? and inShop = 0 and inOdet = 0', [$id, $uid]); + $itm = Db::getValue('select data from items_users where id = ? and uid = ? and inshop = 0 and inodet = 0', [$id, $uid]); if (!$itm) { return; } @@ -2619,7 +2603,7 @@ class User //----------------------------------------------- $idt = mysql_fetch_array( mysql_query( - 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1' + 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1' ) ); @@ -2664,7 +2648,7 @@ class User } //Новая чарка - $srune = mysql_query('SELECT * FROM `new_charov` WHERE 1'); + $srune = mysql_query('select * from new_charov where 1'); $irun = 0; while ($nrune = mysql_fetch_array($srune)) { $irun++; @@ -2711,7 +2695,7 @@ class User } elseif ($rune['type'] == 62) { $idt = mysql_fetch_array( mysql_query( - 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1' + 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1' ) ); if ($idt['type'] == 7) { @@ -3011,7 +2995,7 @@ class User } elseif ($rune['type'] == 46) { $idt = mysql_fetch_array( mysql_query( - 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = ' . $id['item_id'] + 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = ' . $id['item_id'] ) ); if ($idt['type'] == 5) { @@ -3190,7 +3174,7 @@ class User } elseif ($rune['type'] == 68) { $idt = mysql_fetch_array( mysql_query( - 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1' + 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id` = "' . $id['item_id'] . '" LIMIT` 1' ) ); if ($idt['type'] == 5) { @@ -3310,7 +3294,6 @@ class User `im`.`overTypei`, `im`.`group`, `im`.`group_max`, -`im`.`geni`, `im`.`ts`, `im`.`srok`, `im`.`class`, @@ -3371,7 +3354,7 @@ class User `im`.`magic_inci`, `im`.`overTypei`, `im`.`group`, `im`.`group_max`, -`im`.`geni`, `im`.`ts`, +`im`.`ts`, `im`.`srok`, `im`.`class`, `im`.`class_point`, `im`.`anti_class`, `im`.`anti_class_point`, @@ -4241,10 +4224,6 @@ class User $is2 .= '
Предмет будет удален при выходе из подземелья
'; } - if ($this->pokol > $pl['geni']) { - $is2 .= '
Предмет устарел
'; - } - if (isset($po['zazuby']) && $po['zazuby'] > 0) { $is2 .= '
Предмет куплен за зубы
'; } @@ -4867,7 +4846,6 @@ class User `im`.`overTypei`, `im`.`group`, `im`.`group_max`, -`im`.`geni`, `im`.`ts`, `im`.`srok`, `im`.`class`, @@ -4983,7 +4961,6 @@ class User `im`.`overTypei`, `im`.`group`, `im`.`group_max`, -`im`.`geni`, `im`.`ts`, `im`.`srok`, `im`.`class`, @@ -5064,7 +5041,7 @@ class User $i = 0; do { //fixme ужасный цикл, ужасный запрос. $i++; - $gr = Db::getValue('select inGroup from items_users where uid = ? and inGroup = ? and item_id = ?', [$uid, $i, $item]); + $gr = Db::getValue('select ingroup from items_users where uid = ? and ingroup = ? and item_id = ?', [$uid, $i, $item]); if (empty($gr)) { $g = 1; @@ -5107,24 +5084,24 @@ class User item_id, time_create, time_sleep, - timeOver, + timeover, name, - overType, - inOdet, - iznosNOW, - iznosMAX, - iznosMAXi + overtype, + inodet, + iznosnow, + iznosmax, + iznosmaxi from items_users left join items_main on items_main.id = item_id where ( - inOdet != 0 or + inodet != 0 or data like '%srok%' or data like '%vip_sale%' or data like '%sudba=1%' or - iznosNOW > 0 or + iznosnow > 0 or srok > 0 or - (timeOver !=0 and timeOver < unix_timestamp()) + (timeover !=0 and timeover < unix_timestamp()) ) and uid = ?", [$u['id']] ); @@ -5141,7 +5118,9 @@ class User $notr++; } } - if ($itm['iznosNOW'] >= ceil($itm['iznosMAX']) && $itm['iznosMAXi'] != 999999999) { + if (isset($itm['iznosNOW'], $itm['iznosMAX'], $itm['iznosMAXi']) && + $itm['iznosNOW'] >= ceil($itm['iznosMAX']) && + $itm['iznosMAXi'] != 999999999) { $notr++; } if ($notr > 0 && $itm['inOdet'] != 0) { @@ -5240,7 +5219,7 @@ class User return 0; } - $sql = 'select count(*) from items_users where id = ? and inOdet != 0'; + $sql = 'select count(*) from items_users where id = ? and inodet != 0'; $args = [$id]; if ($uid > 0) { $sql .= ' and uid = ?'; @@ -5250,7 +5229,7 @@ class User if (empty(Db::getValue($sql, $args))) { return 0; } - Db::sql('update items_users set lastUPD = unix_timestamp(), inOdet = 0 where id = ?', [$id]); + Db::sql('update items_users set lastupd = unix_timestamp(), inodet = 0 where id = ?', [$id]); if (isset($_GET['remitem']) || isset($_GET['sid'])) { $this->info['autospell'] = 1; Db::sql('update users set autospell = 1 where id = ?', [$this->info['id']]); @@ -5282,7 +5261,7 @@ class User public function btlMagicList(): string { - $sv = array_fill(1, 10, ''); + $sv = array_fill(1, 12, ''); foreach ($this->stats['items'] as $stat) { if (!in_array($stat['inslot'], [40, 51])) { @@ -5335,7 +5314,7 @@ class User public function endEffect($id, $u): int { - $e = Db::getRow('select id, uid, id_eff, name, sleeptime, data, type1 from eff_users left join eff_main on id_eff = id2 where id = ? and deactiveTime < unix_timestamp()', [$id]); + $e = Db::getRow('select id, uid, id_eff, name, sleeptime, data, type1 from eff_users left join eff_main on id_eff = id2 where id = ? and deactivetime < unix_timestamp()', [$id]); if (!isset($e['id'])) { return 0; @@ -5391,11 +5370,15 @@ class User { $r = ''; $sp = Db::getRows( - 'select iznosNOW, iznosMAX, name from items_users left join items_main on item_id = items_main.id where uid = ? and inShop = 0 and inOdet between 1 and 18 limit 18', + 'select iznosnow, iznosmax, name from items_users left join items_main on item_id = items_main.id where uid = ? and inshop = 0 and inodet between 1 and 18 limit 18', [$this->info['id']] ); foreach ($sp as $pl) { - if ($pl['iznosNOW'] <= ceil($pl['iznosMAX'] * 0.80)) { + if ( + !isset($pl['iznosMAX']) || + !isset($pl['iznosNOW']) || + $pl['iznosNOW'] <= ceil($pl['iznosMAX'] * 0.80) + ) { continue; } $r .= '' . $pl['name'] . ' [' . floor($pl['iznosNOW']) . '/' . @@ -5409,16 +5392,16 @@ class User if ($uid < 1) { return 0; } - Db::sql('update items_users set lastUPD = unix_timestamp(), inOdet = 0 where inOdet != 0 and uid = ?', [$uid]); + Db::sql('update items_users set lastupd = unix_timestamp(), inodet = 0 where inodet != 0 and uid = ?', [$uid]); return 1; } public function odetItem(int $id, int $uid) { - $sql = "select items_users.id, data, 2price, inGroup, gift, gtxt1, `group`, price2, name, type, inslot, 2too, 2h + $sql = "select items_users.id, data, 2price, ingroup, gift, gtxt1, `group`, price2, name, type, inslot, 2too, 2h from items_users left join items_main on item_id = items_main.id - where items_users.id = ? and inOdet = 0 and inShop = 0"; + where items_users.id = ? and inodet = 0 and inshop = 0"; $args = [$id]; if ($uid) { @@ -5439,7 +5422,7 @@ class User if ( isset($tr['maks_itm_one']) && $tr['maks_itm_one'] > 0 && - Db::getValue('select true from items_users where uid = ? and inOdet > 0 and data like ? limit 1', [$this->info['id'], "%maks_itm_one={$tr['maks_itm_one']}%"]) + Db::getValue('select true from items_users where uid = ? and inodet > 0 and data like ? limit 1', [$this->info['id'], "%maks_itm_one={$tr['maks_itm_one']}%"]) ) { $this->error = 'Возможное использование максимум одного предмета!'; $notr++; @@ -5491,7 +5474,7 @@ class User } elseif (isset($tr['open']) && isset($_GET['open']) && isset($tr['items_in_file'])) { $io = ''; if ($itm['inGroup'] > 0) { - Db::sql('update items_users set lastUPD = unix_timestamp(), inGroup = 0 where id = ?', [$itm['id']]); + Db::sql('update items_users set lastupd = unix_timestamp(), ingroup = 0 where id = ?', [$itm['id']]); } if (file_exists('_incl_data/class/Magic/' . $tr['items_in_file'] . '.php')) { require_once '_incl_data/class/Magic/' . $tr['items_in_file'] . '.php'; @@ -5530,7 +5513,7 @@ class User $this->error = 'Не удалось открыть подарок. Содержимое испорчено.'; } elseif ($itmin['item_id'] == 4868) { //Летучая мышь - Db::sql('update stats set hpNow = 1, mpNow = 1 where id = ?', [$this->info['id']]); + Db::sql('update stats set hpnow = 1, mpnow = 1 where id = ?', [$this->info['id']]); $this->deleteItem($itm['id'], $this->info['id']); $this->deleteItem($itmin['id'], $this->info['id']); $this->error = 'Вы потеряли все HP...'; @@ -5660,7 +5643,7 @@ class User $itms[$i] = $itms[$i][0]; $s = mysql_fetch_array( mysql_query( - 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`geni`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id`="' . ((int)$itms[$i]) . '" LIMIT 1' + 'SELECT `id`,`name`,`img`,`type`,`inslot`,`2h`,`2too`,`iznosMAXi`,`inRazdel`,`price1`,`price2`,`price3`,`magic_chance`,`info`,`massa`,`level`,`magic_inci`,`overTypei`,`group`,`group_max`,`ts`,`srok`,`class`,`class_point`,`anti_class`,`anti_class_point`,`max_text`,`useInBattle`,`lbtl`,`lvl_itm`,`lvl_exp`,`lvl_aexp` FROM `items_main` WHERE `id`="' . ((int)$itms[$i]) . '" LIMIT 1' ) ); if (isset($s['id'])) { @@ -5809,10 +5792,8 @@ LIMIT 1' if ($x == 0 or $x == null) { $x = $this->itemsX($itm['id']); //кол-во распада $inGroup = 0; - } elseif ($x != 0) { - $inGroup = $this->stackGroupCheck($this->info['id'], $itm['inGroup'], $itm['item_id']); } else { - $inGroup = 0; + $inGroup = $this->stackGroupCheck($this->info['id'], $itm['inGroup'], $itm['item_id']); } $sp = mysql_query( 'SELECT `im`.`id`, @@ -5835,7 +5816,6 @@ LIMIT 1' `im`.`overTypei`, `im`.`group`, `im`.`group_max`, -`im`.`geni`, `im`.`ts`, `im`.`srok`, `im`.`class`, @@ -5906,25 +5886,21 @@ LIMIT 1' } } - private function trItem($po) + private function trItem($po): int { - $tr = ''; - $t = $this->items['tr']; - $x = 0; $notr = 0; - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['tr_' . $n])) { - if ($n == 'sex') { - if ($this->info['sex'] != $po['tr_' . $n]) { - $notr++; - } - } elseif ($po['tr_' . $n] > $this->stats[$n] && $n != 'align') { - $notr++; - } + foreach ($this->items['tr'] as $trn) { + if (!isset($po["tr_$trn"])) { + continue; + } + if ( + $trn === 'sex' && $this->info['sex'] != $po["tr_$trn"] || + $trn !== 'align' && $po["tr_$trn"] > $this->stats[$trn] + ) { + $notr++; } - $x++; } + return $notr; } @@ -6046,67 +6022,23 @@ LIMIT 1' if (isset($this->stats['levels']['upLevel'])) { $telvl = []; - $sp = mysql_query('SELECT `upLevel`,`exp` FROM `levels`'); - while ($pl = mysql_fetch_array($sp)) { - $telvl[$pl['upLevel']] = $pl['exp']; + + foreach (Db::getRows('select uplevel, exp from levels') as $row) { + $telvl[$row['uplevel']] = $row['exp']; } + if ($this->info['exp'] >= $telvl[$this->info['upLevel']]) { - $lvl = mysql_fetch_array( - mysql_query( - 'SELECT `duh`,`vinos`,`bprice`,`upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . $this->info['upLevel'] . '" LIMIT 1' - ) - ); - $lvln = mysql_fetch_array( - mysql_query( - 'SELECT `duh`,`vinos`,`bprice`,`upLevel`,`nextLevel`,`exp`,`money`,`money_bonus1`,`money_bonus2`,`ability`,`skills`,`nskills`,`sskills`,`expBtlMax`,`hpRegen`,`mpRegen`,`money2` FROM `levels` WHERE `upLevel`="' . ($lvl['upLevel'] + 1) . '" LIMIT 1' - ) - ); - //Кристал вечности - if ($this->info['exp'] > 12499 && $this->info['level'] <= 5 && Config::get('infinity5level')) { - $itm = mysql_fetch_array( - mysql_query( - 'SELECT `id`,`item_id`,`1price`,`2price`,`3price`,`uid`,`use_text`,`data`,`inOdet`,`inShop`,`delete`,`iznosNOW`,`iznosMAX`,`gift`,`gtxt1`,`gtxt2`,`kolvo`,`geniration`,`magic_inc`,`maidin`,`lastUPD`,`timeOver`,`overType`,`secret_id`,`time_create`,`inGroup`,`dn_delete`,`inTransfer`,`post_delivery`,`lbtl_`,`bexp`,`so`,`blvl` FROM `items_users` WHERE `item_id` = "1204" AND `delete` = "0" AND `uid` = "' . $this->info['id'] . '" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1' - ) - ); - if (!isset($itm['id']) && $this->info['host_reg'] != 'noinfinity5' && $this->info['twink'] == 0) { - $this->info['exp'] = 12499; - mysql_query( - 'UPDATE `stats` SET `exp` = "12499" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1' - ); - echo ''; - } else { - mysql_query( - 'UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $itm['id'] . '" LIMIT 1' - ); - $text = 'Предмет "Кристалл Вечности [6]" был успешно использован.'; - echo ''; - } - } + [$lvl, $lvln] = Db::getRows('select * from levels where uplevel >= ? order by uplevel limit 2', [$this->info['upLevel']]); + $i = 0; $ult = 0; - $sex1 = ''; + if ($this->info['sex'] == 1) { $sex1 = 'ла'; } while ($i != 1) { - if (Config::get('nolevel') && $this->info['exp'] >= $lvl['exp'] && isset($lvln['upLevel'])) { - $tlus = mysql_fetch_array( - mysql_query( - 'SELECT COUNT(*) FROM `users` WHERE `real` = 1 AND `level` = "' . $this->info['level'] . '" LIMIT 1' - ) - ); - //берем апп или уровень, $lvln - if ($tlus[0] < $this->info['level'] * 5) { - //Нельзя получать лвл/аппы пока не будет 100 персонажей текущего уровня - $this->info['exp'] = $lvl['exp'] - 1; - mysql_query( - 'UPDATE `stats` SET `exp` = "' . $this->info['exp'] . '" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1' - ); - } - } if ($this->info['exp'] < $lvl['exp'] || !isset($lvln['upLevel'])) { $i = 1; } else { @@ -6282,6 +6214,7 @@ LIMIT 1' $rt++; } } + if ($ult == 1) { $chat = new Chat(); $cmsg = new ChatMessage(); @@ -6476,10 +6409,10 @@ LIMIT 1' if ($u['hpNow'] < $st['hpAll'] || $u['mpNow'] < $st['mpAll']) { Db::sql( 'update stats set - regHP = unix_timestamp(), - regMP = unix_timestamp(), - hpNow = ?, - mpNow = ? + reghp = unix_timestamp(), + regmp = unix_timestamp(), + hpnow = ?, + mpnow = ? where id = ?', [$st['hpNow'], $st['mpNow'], $u['id']] ); } diff --git a/_incl_data/class/User/ItemsModel.php b/_incl_data/class/User/ItemsModel.php index 9950922f..b3969e96 100644 --- a/_incl_data/class/User/ItemsModel.php +++ b/_incl_data/class/User/ItemsModel.php @@ -73,7 +73,7 @@ class ItemsModel return [ 'now' => Db::getValue('select sum(massa) from items_users left join items_main on item_id = items_main.id where uid = ? and (`delete` = 0 or (`delete` = 1000 and inGroup > 0)) and inShop = 0 and inOdet = 0', [$uid]), - 'max' => 40 + ($stats['os7'] * 10) + $stats['s4'] + $stats['maxves'] + $stats['s1'] * 4, + 'max' => 40 + (($stats['os7'] ?? 0) * 10) + $stats['s4'] + $stats['maxves'] + $stats['s1'] * 4, 'items' => Db::getValue('select count(*) from items_users where uid = ? and `delete` = 0 and inShop = 0 and inOdet = 0', [$uid]), ]; } diff --git a/_incl_data/class/User/Login.php b/_incl_data/class/User/Login.php new file mode 100644 index 00000000..895ace7f --- /dev/null +++ b/_incl_data/class/User/Login.php @@ -0,0 +1,23 @@ +"; + $clanStr = empty($clanName) ? '' : "$clanName"; + $spacedLogin = str_replace(' ', '%20', $login); + $loginLink = "Инф. о $login"; + $this->fullLogin = "$alignStr$clanStr$login [$level]$loginLink"; + } +} diff --git a/_incl_data/class/User/Stats.php b/_incl_data/class/User/Stats.php index 561e8e8f..48f91c8e 100644 --- a/_incl_data/class/User/Stats.php +++ b/_incl_data/class/User/Stats.php @@ -126,17 +126,18 @@ class Stats public function getStats(int|array|null $uid = null, $i1 = 0, $reimg = false, $btl_cache = false): array { $u = match (true) { - empty($uid) => User::getInfo($this->u->info['id']), + empty($uid) => $this->u->info, is_array($uid) => $uid, default => User::getInfo($uid), }; + if (!isset($u['id'])) { return []; } // Как? Нахуя 4 переменные разные для одного и того же? - $st = array_fill_keys($this->sysNames, 0); + $st = array_fill_keys(array_keys($this->sysNames), 0); $sti = $st; $s_v = $st; $s_vi = $st; @@ -168,9 +169,12 @@ class Stats $st['items'] = []; $st['effects'] = []; + + $st['vip'] = $u['vip']; foreach (Conversion::dataStringToArray($u['stats']) as $stat => $value) { + //fixme несуществующие статы mg5 mg6 a6 s8-s15 $this->addKeyIfNotExist($stat, (int)$value, $st); } @@ -282,13 +286,13 @@ class Stats // мф.анти-уворот = 2.5 $st['m5'] += $st['s2'] * 5; - $st['za'] += $st['s4'] * 1.0; + $st['za'] += $st['s4']; + + $st['m19'] += (int)($st['s3'] * 0.03); + + - $st['m19'] += round($st['s3'] * 0.03); - //Мощности - //Мощность против "Мощность крит. урона". Гамс - $st['antm3'] += $st['s5'] * 0.5; //Бонусы комплектов if (is_iterable($coms['new'])) { @@ -321,33 +325,19 @@ class Stats //Бонусы статов $this->addStatBonuses($st); - //если второе оружие одето - if ($hnd2 == 1 && $hnd1 == 1) { - $st['zona']++; - } - if ($sht1 == 1) { - $st['zonb']++; - }/* Владения */ + /* Владения */ //mib1-mib4, mab1-mab4 armor?? - if (isset($st['s5'])) { - $st['pm1'] += $st['s5'] * 0.5; - $st['pm2'] += $st['s5'] * 0.5; - $st['pm3'] += $st['s5'] * 0.5; - $st['pm4'] += $st['s5'] * 0.5; - $st['pm7'] += $st['s5'] * 0.5; + if (!empty($st['s5'])) { + $st['pm1'] += (int)($st['s5'] * 0.5); + $st['pm2'] += (int)($st['s5'] * 0.5); + $st['pm3'] += (int)($st['s5'] * 0.5); + $st['pm4'] += (int)($st['s5'] * 0.5); + $st['pm7'] += (int)($st['s5'] * 0.5); } - if (isset($st['m11a'])) { - $st['pm1'] += $st['m11a'] * 0.5; - $st['pm2'] += $st['m11a'] * 0.5; - $st['pm3'] += $st['m11a'] * 0.5; - $st['pm4'] += $st['m11a'] * 0.5; - $st['pm7'] += $st['m11a'] * 0.5; - } - - if (isset($st['aall'])) { + if (!empty($st['aall'])) { $st['a1'] += $st['aall']; $st['a2'] += $st['aall']; $st['a3'] += $st['aall']; @@ -355,56 +345,35 @@ class Stats $st['a5'] += $st['aall']; } - if (isset($st['m2all'])) { - $st['mg1'] += $st['m2all']; - $st['mg2'] += $st['m2all']; - $st['mg3'] += $st['m2all']; - $st['mg4'] += $st['m2all']; - $st['mg7'] += $st['m2all']; - } - - if (isset($st['zm'])) { + if (!empty($st['zm'])) { $st['zm1'] += $st['zm']; $st['zm2'] += $st['zm']; $st['zm3'] += $st['zm']; $st['zm4'] += $st['zm']; - $st['zm5'] += $st['zm']; - $st['zm6'] += $st['zm']; - $st['zm7'] += $st['zm']; } - if (isset($st['zma'])) { - $st['zm1'] += $st['zma']; - $st['zm2'] += $st['zma']; - $st['zm3'] += $st['zma']; - $st['zm4'] += $st['zma']; - $st['zm5'] += $st['zma']; - $st['zm6'] += $st['zma']; - $st['zm7'] += $st['zma']; - } - - if (isset($st['mall'])) { + if (!empty($st['mall'])) { $st['mg1'] += $st['mall']; $st['mg2'] += $st['mall']; $st['mg3'] += $st['mall']; $st['mg4'] += $st['mall']; } - if (isset($st['m11'])) { + if (!empty($st['m11'])) { $st['pm1'] += $st['m11']; $st['pm2'] += $st['m11']; $st['pm3'] += $st['m11']; $st['pm4'] += $st['m11']; } - if (isset($st['m10'])) { + if (!empty($st['m10'])) { $st['pa1'] += $st['m10']; $st['pa2'] += $st['m10']; $st['pa3'] += $st['m10']; $st['pa4'] += $st['m10']; } - if (isset($st['za'])) { + if (!empty($st['za'])) { $st['za1'] += $st['za']; $st['za2'] += $st['za']; $st['za3'] += $st['za']; @@ -412,16 +381,16 @@ class Stats } if (!empty($st['hpVinos'])) { - $st['hpall'] += round($st['hpVinos'] * $st['s4']); + $st['hpall'] += (int)($st['hpVinos'] * $st['s4']); } if (!empty($st['mpVinos'])) { - $st['mpall'] += round($st['mpVinos'] * $st['s6']); + $st['mpall'] += (int)($st['mpVinos'] * $st['s6']); } if (!empty($st['hpProc'])) { - $st['hpall'] += round($st['hpall'] / 100 * $st['hpProc']); + $st['hpall'] += (int)($st['hpall'] / 100 * $st['hpProc']); } if (!empty($st['mpProc'])) { - $st['mpall'] += round($st['mpall'] / 100 * $st['mpProc']); + $st['mpall'] += (int)($st['mpall'] / 100 * $st['mpProc']); } //Реген. - 250 ед. @@ -430,6 +399,15 @@ class Stats $st['mpNow'] = Comparsion::minimax($st['mpNow'], 0, $st['mpall']); //зоны блока и удара + + //если второе оружие одето + if ($hnd2 == 1 && $hnd1 == 1) { + $st['zona']++; + } + if ($sht1 == 1) { + $st['zonb']++; + } + if ($st['zona'] < 1) { $st['zona'] = 1; } @@ -473,12 +451,9 @@ class Stats $st['btl_cof'] = $st['prckr']; Db::sql('update stats set btl_cof = ? where id = ?', [$st['prckr'], $st['id']]); } - if ($st['hpall'] < 1) { - $st['hpall'] = 1; - } - if ($st['mpall'] < 0) { - $st['mpall'] = 0; - } + + $st['hpall'] = max($st['hpall'], 1); + $st['mpall'] = max($st['mpall'], 0); if (stristr($u['login'], '(зверь ') || (stristr($u['login'], 'Каменный страж') && $u['ip'] == '0')) { $st['this_animal'] = 1; @@ -495,8 +470,8 @@ class Stats } else { $rt = $st; } - if ($u['hpAll'] != $st['hpall'] || $u['mpAll'] != $st['mpall']) { - Db::sql('update stats set hpAll = ?, mpAll = ? where id = ?', [$st['hpall'], $st['mpall'], $u['id']]); + if ($u['hpAll'] != $st['hpAll'] || $u['mpAll'] != $st['mpAll']) { + Db::sql('update stats set hpAll = ?, mpAll = ? where id = ?', [$st['hpAll'], $st['mpAll'], $u['id']]); } if ($btl_cache) { $dataca = [ @@ -564,6 +539,7 @@ class Stats 5 => [70, 89,],//Великолепная ]; + foreach ($wearedItems as $wearedItem) { $this->addKeyIfNotExist('wp' . $wearedItem['inOdet'] . 'id', $h, $st); @@ -591,48 +567,37 @@ class Stats $this->addKeyIfNotExist('reting', 1, $st); } - if (isset($data['add_oza'])) { - $oza = array_fill_keys($oza, $ozaozmtypes[$data['add_oza']]); - } + # Пришлось зацикливать, уж больно однотипное. + # oza[X][0,1] = add_ozaX[0,1] + add_oza[0,1] + # ozm[X][0,1] = add_ozmX[0,1] + add_ozm[0,1] + for ($i = 1; $i <= 4; $i++) { + if (!isset($data["add_oza$i"])) { + continue; + } - if (isset($data['add_ozm'])) { - $ozm = array_fill_keys($ozm, $ozaozmtypes[$data['add_ozm']]); - } else { - $ozm = array_fill_keys($ozm, $ozaozmtypes[1]); - } + if (isset($data['add_oza']) && in_array($data['add_oza'], range(1, 5))) { + $oza[$i][0] += $ozaozmtypes[$data['add_oza']][0]; + $oza[$i][1] += $ozaozmtypes[$data['add_oza']][1]; + } + if (isset($data['add_ozm']) && in_array($data['add_ozm'], range(1, 5))) { + $ozm[$i][0] += $ozaozmtypes[$data['add_ozm']][0]; + $ozm[$i][1] += $ozaozmtypes[$data['add_ozm']][1]; + } else { + $ozm[$i][0] += $ozaozmtypes[1][0]; + $ozm[$i][1] += $ozaozmtypes[1][1]; + } - if (in_array($data['add_oza1'], range(1, 5))) { - $oza[1] = $ozaozmtypes[$data['add_oza1']]; - } - if (in_array($data['add_oza2'], range(1, 5))) { - $oza[2] = $ozaozmtypes[$data['add_oza2']]; - } - if (in_array($data['add_oza3'], range(1, 5))) { - $oza[3] = $ozaozmtypes[$data['add_oza3']]; - } - if (in_array($data['add_oza4'], range(1, 5))) { - $oza[4] = $ozaozmtypes[$data['add_oza4']]; - } - - if (in_array($data['add_ozm1'], range(1, 5))) { - $ozm[1] = $ozaozmtypes[$data['add_ozm1']]; - } else { - $ozm[1] = $ozaozmtypes[1]; - } - if (in_array($data['add_ozm2'], range(1, 5))) { - $ozm[2] = $ozaozmtypes[$data['add_ozm2']]; - } else { - $ozm[2] = $ozaozmtypes[1]; - } - if (in_array($data['add_ozm3'], range(1, 5))) { - $ozm[3] = $ozaozmtypes[$data['add_ozm3']]; - } else { - $ozm[3] = $ozaozmtypes[1]; - } - if (in_array($data['add_ozm4'], range(1, 5))) { - $ozm[4] = $ozaozmtypes[$data['add_ozm4']]; - } else { - $ozm[4] = $ozaozmtypes[1]; + if (in_array($data["add_oza$i"], range(1, 5))) { + $oza[$i][0] += $ozaozmtypes[$data["add_oza$i"]][0]; + $oza[$i][1] += $ozaozmtypes[$data["add_oza$i"]][1]; + } + if (isset($data["add_ozm$i"]) && in_array($data["add_ozm$i"], range(1, 5))) { + $ozm[$i][0] += $ozaozmtypes[$data["add_ozm$i"]][0]; + $ozm[$i][1] += $ozaozmtypes[$data["add_ozm$i"]][1]; + } else { + $ozm[$i][0] += $ozaozmtypes[1][0]; + $ozm[$i][1] += $ozaozmtypes[1][1]; + } } if (isset($data['art'])) { @@ -1167,7 +1132,11 @@ class Stats ); //Бонус за количество полностью вырытых пещер. - $st['m10'] += 10 * $finishedDungeons; + if (isset($st['m10'])) { + $st['m10'] += 10 * $finishedDungeons; + } else { + $st['m10'] = 10 * $finishedDungeons; + } } private function addAdminBonuses(array $u, array &$st): void @@ -1197,11 +1166,22 @@ class Stats */ private function renameArrayKeys(array &$st): void { - $st['lvl'] = $st['level']; - $st['hpNow'] = $st['hpnow']; - $st['mpNow'] = $st['mpnow']; - - unset($st['level'], $st['hpnow'], $st['mpnow']); + if (isset($st['level'])) { + $st['lvl'] = $st['level']; + } + if (isset($st['hpall'])) { + $st['hpAll'] = $st['hpall']; + } + if (isset($st['mpall'])) { + $st['mpAll'] = $st['mpall']; + } + if (isset($st['hpnow'])) { + $st['hpNow'] = $st['hpnow']; + } + if (isset($st['mpnow'])) { + $st['mpNow'] = $st['mpnow']; + } + unset($st['level'], $st['hpnow'], $st['mpnow'], $st['hpall'], $st['mpall']); } public static function saveBattleStats(array $stats, int $id): void diff --git a/_incl_data/class/priem/161.php b/_incl_data/class/priem/161.php index 61f07db3..40abc046 100644 --- a/_incl_data/class/priem/161.php +++ b/_incl_data/class/priem/161.php @@ -107,7 +107,7 @@ $pvr = array(); } // $pvr['x5']['priem']['id'] = $pvr['x5']['v2']; - $btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2); + $btl->delPriem($pvr['x5'], $btl->users[$btl->uids[$this->ue['id']]], 2); // //Добавляем прием diff --git a/_incl_data/class/priem/162.php b/_incl_data/class/priem/162.php index 84fe2298..96d0cb22 100644 --- a/_incl_data/class/priem/162.php +++ b/_incl_data/class/priem/162.php @@ -107,7 +107,7 @@ $pvr = array(); } // $pvr['x5']['priem']['id'] = $pvr['x5']['v2']; - $btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2); + $btl->delPriem($pvr['x5'], $btl->users[$btl->uids[$this->ue['id']]], 2); // //Добавляем прием diff --git a/_incl_data/class/priem/163.php b/_incl_data/class/priem/163.php index c15cc957..bb6ce947 100644 --- a/_incl_data/class/priem/163.php +++ b/_incl_data/class/priem/163.php @@ -107,7 +107,7 @@ $pvr = array(); } // $pvr['x5']['priem']['id'] = $pvr['x5']['v2']; - $btl->delPriem($pvr['x5'],$btl->users[$btl->uids[$this->ue['id']]],2); + $btl->delPriem($pvr['x5'], $btl->users[$btl->uids[$this->ue['id']]], 2); // //Добавляем прием diff --git a/_incl_data/class/priem/210.php b/_incl_data/class/priem/210.php index 2555a039..f6de5eb7 100644 --- a/_incl_data/class/priem/210.php +++ b/_incl_data/class/priem/210.php @@ -1,6 +1,6 @@ stats[$btl->uids[$uid]]['um_priem'][$j_id])) { - global $u, $btl; - $prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']; - $yron = $btl->testPogB($uid,$yron,$btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']); - $btl->testPogB($uid,1,$btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'],1); - //$btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] - /*$btl->priemAddLogFast( $uid, 0, "Призрачная защита", - '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', - 0, time() );*/ - if( $yron < 0 ) { - $yron = 0; - } - $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; - } - return round($yron); - }; -}elseif( isset($pr_tested_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - //mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - //unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - $checktuman=mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid` = "'.$uid.'" +if (isset($pr_momental_this)) { + $fx_moment = function ($uid, $enemy, $j_id, $yron, $profil) { + if (!isset($btl->stats[$btl->uids[$uid]]['um_priem'][$j_id])) { + global $u, $btl; + $prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]; + $prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']; + $yron = $btl->testPogB($uid, $yron, $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']); + $btl->testPogB($uid, 1, $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'], 1); + //$btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] + /*$btl->priemAddLogFast( $uid, 0, "Призрачная защита", + '{tm1} '.$btl->addlt(1 , 17 , $btl->users[$btl->uids[$uid]]['sex'] , NULL).'', + 0, time() );*/ + if ($yron < 0) { + $yron = 0; + } + $btl->stats[$btl->uids[$uid]]['um_priem'][$j_id] = true; + } + return round($yron); + }; +} elseif (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + if ($a > 0) { + $j = 0; + $k = 0; + $wp = 3; + $checktuman = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `eff_users` WHERE `uid` = "' . $uid . '" AND (`v2` = 273 OR `v2` = 286 OR `v2` = 287 OR `v2` = 288) - AND `delete` =0 LIMIT 1')); //проверка на туманный образ - if(!isset($checktuman['id'])) - { - while($j < count($at['p'][$a]['atack'])) { - if( isset($at['p'][$a]['atack'][$j]['yron']) && ( - $at['p'][$a]['atack'][$j][1] == 1 || - $at['p'][$a]['atack'][$j][1] == 4 || - $at['p'][$a]['atack'][$j][1] == 5 )) { - //if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - $prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]; - $prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']; - // - $attest = round($btl->testPogB($uid,$at['p'][$a]['atack'][$j]['yron']['y'],$btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'])); - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 0; } - - $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y']/2); - $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r']/2); - $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k']/2); - $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k']1.2); - $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y']/2); - - - if( $at['p'][$a]['atack'][$j]['yron']['y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['y'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['r'] >= 0 ) { $at['p'][$a]['atack'][$j]['yron']['r'] = -1; } - if( $at['p'][$a]['atack'][$j]['yron']['k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_k'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; } - if( $at['p'][$a]['atack'][$j]['yron']['m_y'] < 1 ) { $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; } - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - //} - } - $j++; - } - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $btl->priemAddLog( $id, 1, 2, $u->info['id'], $u->info['enemy'], - 'Магический Барьер [4]', - '{tm1} '.$btl->addlt(1 , 21 , $btl->users[$btl->uids[$u->info['id']]]['sex'] , NULL).'', - ($btl->hodID+1) - ); - echo 'Вы успешно использовали прием "Магический Барьер [4]"'; - $this->addEffPr($pl,$id); + AND `delete` =0 LIMIT 1' + ) + ); //проверка на туманный образ + if (!isset($checktuman['id'])) { + while ($j < count($at['p'][$a]['atack'])) { + if (isset($at['p'][$a]['atack'][$j]['yron']) && ( + $at['p'][$a]['atack'][$j][1] == 1 || + $at['p'][$a]['atack'][$j][1] == 4 || + $at['p'][$a]['atack'][$j][1] == 5)) { + //if( !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { + // + $prv['j_priem'] = $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][0]; + $prv['priem_th'] = $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id']; + // + $attest = round($btl->testPogB($uid, $at['p'][$a]['atack'][$j]['yron']['y'], $btl->stats[$btl->uids[$uid]]['effects'][$prv['j_priem']]['id'])); + if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) { + $at['p'][$a]['atack'][$j]['yron']['y'] = 0; + } + + $at['p'][$a]['atack'][$j]['yron']['y'] = round($at['p'][$a]['atack'][$j]['yron']['y'] / 2); + $at['p'][$a]['atack'][$j]['yron']['r'] = round($at['p'][$a]['atack'][$j]['yron']['r'] / 2); + $at['p'][$a]['atack'][$j]['yron']['k'] = round($at['p'][$a]['atack'][$j]['yron']['k'] / 2); + $at['p'][$a]['atack'][$j]['yron']['m_k'] = round($at['p'][$a]['atack'][$j]['yron']['m_k'] / 1.2); + $at['p'][$a]['atack'][$j]['yron']['m_y'] = round($at['p'][$a]['atack'][$j]['yron']['m_y'] / 2); + + + if ($at['p'][$a]['atack'][$j]['yron']['y'] < 1) { + $at['p'][$a]['atack'][$j]['yron']['y'] = 1; + } + if ($at['p'][$a]['atack'][$j]['yron']['r'] >= 0) { + $at['p'][$a]['atack'][$j]['yron']['r'] = -1; + } + if ($at['p'][$a]['atack'][$j]['yron']['k'] < 1) { + $at['p'][$a]['atack'][$j]['yron']['k'] = 1; + } + if ($at['p'][$a]['atack'][$j]['yron']['m_k'] < 1) { + $at['p'][$a]['atack'][$j]['yron']['m_k'] = 1; + } + if ($at['p'][$a]['atack'][$j]['yron']['m_y'] < 1) { + $at['p'][$a]['atack'][$j]['yron']['m_y'] = 1; + } + // + $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; + $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; + // + $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; + //} + } + $j++; + } + } + } + // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $btl->priemAddLog( + $id, 1, 2, $u->info['id'], $u->info['enemy'], + 'Магический Барьер [4]', + '{tm1} ' . $btl->addlt(1, 21, $btl->users[$btl->uids[$u->info['id']]]['sex'], null) . '', + ($btl->hodID + 1) + ); + echo 'Вы успешно использовали прием "Магический Барьер [4]"'; + $this->addEffPr($pl, $id); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/215.php b/_incl_data/class/priem/215.php index ef5c8cba..d4db6c3e 100644 --- a/_incl_data/class/priem/215.php +++ b/_incl_data/class/priem/215.php @@ -1,115 +1,104 @@ atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( - !isset($at['p'][$a]['atack'][$j]['priem_used']) && - ( $at['p'][$a]['atack'][$j][1] > 0 ) - ){ - if(/* $btl->stats[$btl->uids[$u1]]['nopryh_act'] < 1 хуй знает для чего &&*/ $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - //Уворот от удара выставляем - unset($at['p'][$a]['atack'][$j]['yron']); - $at['p'][$a]['atack'][$j][1] = 8; - $pvr['rnd_a'] = rand(1,5); - if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) { - //Попал - $at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 1 , 0 , 1 ); // 1 1 1 - }else{ - //В блок - $at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 3 , 0 , 1 ); // 2 1 1 - } - //$at = $btl->contrRestart($id,$at,true); - //$at = $btl->priemsTestRazmen($id,$at); - // - /*$at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(215,'.(0+$uid).','.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'); - $this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', - "Скрытая ловкость", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );';*/ - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - $at['p'][$a]['atack'][$j]['priem_used'] = $id; - // - if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) { - $at = $this->yronRazmen($id,$at,true); - } - // - } - // - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); +$pvr = []; +if (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + if (isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '" AND `uid` = "' . $uid . '" LIMIT 1'); + unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); + } + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + if ($a > 0) { + $j = 0; + $k = 0; + $wp = 3; + while ($j < count($at['p'][$a]['atack'])) { + if ( + !isset($at['p'][$a]['atack'][$j]['priem_used']) && + ($at['p'][$a]['atack'][$j][1] > 0) + ) { + if (/* $btl->stats[$btl->uids[$u1]]['nopryh_act'] < 1 хуй знает для чего &&*/ $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + // + //Уворот от удара выставляем + unset($at['p'][$a]['atack'][$j]['yron']); + $at['p'][$a]['atack'][$j][1] = 8; + $pvr['rnd_a'] = rand(1, 5); + if (!$btl->testRazmenblock1($id, $u2, $u1)) { + //Попал + $at['p'][$b]['atack'][] = [$pvr['rnd_a'], 1, 0, 1]; // 1 1 1 + } else { + //В блок + $at['p'][$b]['atack'][] = [$pvr['rnd_a'], 3, 0, 1]; // 2 1 1 + } + $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; + $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; + $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; + $at['p'][$a]['atack'][$j]['priem_used'] = $id; + if (!$btl->testRazmenblock1($id, $u2, $u1)) { + $at = $this->yronRazmen($id, $at, true); + } + } + + } + $j++; + } + } + // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priem/220.php b/_incl_data/class/priem/220.php index 7dcd4177..3d7da2d4 100644 --- a/_incl_data/class/priem/220.php +++ b/_incl_data/class/priem/220.php @@ -114,7 +114,7 @@ if( isset($pr_tested_this) ) { }else{mysql_query('UPDATE `eff_users` SET `uid` = "'.$u1.'" WHERE `id` = "'.$pvr['pl']['id'].'" LIMIT 1');}*/ - $btl->delPriem($pvr['pl'],$btl->users[$btl->uids[$u2]],100,0,$pvr['pl']['name']); + $btl->delPriem($pvr['pl'], $btl->users[$btl->uids[$u2]], 100, 0, $pvr['pl']['name']); //$this->addPriem($u1,$pvr['pl']['priem']['id'],''.$pvr['pl']['priem']['data2'].'',''.$pvr['pl']['priem']['data3'].'',77,5,$u1,1,''.$pvr['pl']['priem']['name'].'',0,0,1); diff --git a/_incl_data/class/priem/299.php b/_incl_data/class/priem/299.php index bac0f749..50f149d6 100644 --- a/_incl_data/class/priem/299.php +++ b/_incl_data/class/priem/299.php @@ -119,7 +119,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { ($btl->hodID) ); // спасение - $btl->spaCheck($u1]); + $btl->spaCheck($u1); // спасение } // -- конец приема diff --git a/_incl_data/class/priem/300.php b/_incl_data/class/priem/300.php index 6fa2ddd9..e1f2c2d0 100644 --- a/_incl_data/class/priem/300.php +++ b/_incl_data/class/priem/300.php @@ -158,7 +158,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { ($btl->hodID) ); // спасение - $btl->spaCheck($u1]); + $btl->spaCheck($u1); // спасение $pvr['ijk']++; } diff --git a/_incl_data/class/priem/301.php b/_incl_data/class/priem/301.php index 960acadb..734bd9fa 100644 --- a/_incl_data/class/priem/301.php +++ b/_incl_data/class/priem/301.php @@ -161,7 +161,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { ($btl->hodID) ); // спасение - $btl->spaCheck($u1]); + $btl->spaCheck($u1); // спасение // diff --git a/_incl_data/class/priem/302.php b/_incl_data/class/priem/302.php index d346614e..04fa8cc4 100644 --- a/_incl_data/class/priem/302.php +++ b/_incl_data/class/priem/302.php @@ -35,7 +35,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { $prv['priem_th'] = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['id']; //действия - $pvr['hp'] = 20); + $pvr['hp'] = 20; $pvr['hp'] = $priem->magatack( $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['user_use'], $u1, $pvr['hp'], 'тьма', 1 ); $pvr['promah_type'] = $pvr['hp'][3]; $pvr['promah'] = $pvr['hp'][2]; @@ -57,7 +57,7 @@ if( isset($pr_used_this) && isset($pr_moment) ) { } // $pvr['hp'] = 20; - $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$rand_user]]['effects'][$prv['j_priem']]['user_use'], $rand_user, 12, $pvr['hp'], -1, true , false , 0); + $pvr['hp'] = $btl->testYronPriem( $btl->stats[$btl->uids[$rand_user[array_rand($rand_user)]]]['effects'][$prv['j_priem']]['user_use'], $rand_user, 12, $pvr['hp'], -1, true , false , 0); // $pvr['rndu']['id'] = $rand_user; $pvr['color'] = '006699'; diff --git a/_incl_data/class/priem/48.php b/_incl_data/class/priem/48.php index 9e690ba1..b647f435 100644 --- a/_incl_data/class/priem/48.php +++ b/_incl_data/class/priem/48.php @@ -1,115 +1,112 @@ atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if( isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'" AND `uid` = "'.$uid.'" LIMIT 1'); - unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); - } - // - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}elseif( isset($pr_used_this) ) { - $fx_priem = function( $id , $at , $uid, $j_id ) { - // -- начало приема - global $u, $btl; - // - //Параметры приема - $pvr['used'] = 0; - // - $uid1 = $btl->atacks[$id]['uid1']; - $uid2 = $btl->atacks[$id]['uid2']; - if( $uid == $uid2 ) { - $a = 1; - $b = 2; - $u1 = $uid1; - $u2 = $uid2; - }elseif( $uid == $uid1 ) { - $a = 2; - $b = 1; - $u1 = $uid2; - $u2 = $uid1; - } - if( $a > 0 ) { - $j = 0; $k = 0; $wp = 3; - while($j < count($at['p'][$a]['atack'])) { - if( - !isset($at['p'][$a]['atack'][$j]['priem_used']) && - ( $at['p'][$a]['atack'][$j][1] > 0 ) - ) { - if(/* $btl->stats[$btl->uids[$u1]]['nopryh_act'] < 1 хуй знает для чего &&*/ $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id]) ) { - // - //Уворот от удара выставляем - unset($at['p'][$a]['atack'][$j]['yron']); - $at['p'][$a]['atack'][$j][1] = 8; - $pvr['rnd_a'] = rand(1,5); - if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) { - //Попал - $at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 1 , 0 , 1 ); - }else{ - //В блок - $at['p'][$b]['atack'][] = array( $pvr['rnd_a'] , 3 , 0 , 1 ); - } - //$at = $btl->contrRestart($id,$at,true); - //$at = $btl->priemsTestRazmen($id,$at); - // - $at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(48,'.(0+$uid).','.$btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3].'); - $this->priemAddLog( '.$id.', '.$b.', '.$a.', '.$u2.', '.$u1.', +$pvr = []; +if (isset($pr_tested_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + if (isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `id` = "' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '" AND `uid` = "' . $uid . '" LIMIT 1'); + unset($btl->stats[$btl->uids[$uid]]['u_priem'][$j_id]); + } + // + // -- конец приема + return $at; + }; + unset($pr_used_this); +} elseif (isset($pr_used_this)) { + $fx_priem = function ($id, $at, $uid, $j_id) { + // -- начало приема + global $u, $btl; + // + //Параметры приема + $pvr['used'] = 0; + // + $uid1 = $btl->atacks[$id]['uid1']; + $uid2 = $btl->atacks[$id]['uid2']; + if ($uid == $uid2) { + $a = 1; + $b = 2; + $u1 = $uid1; + $u2 = $uid2; + } elseif ($uid == $uid1) { + $a = 2; + $b = 1; + $u1 = $uid2; + $u2 = $uid1; + } + if ($a > 0) { + $j = 0; + $k = 0; + $wp = 3; + while ($j < count($at['p'][$a]['atack'])) { + if ( + !isset($at['p'][$a]['atack'][$j]['priem_used']) && + ($at['p'][$a]['atack'][$j][1] > 0) + ) { + if ($btl->stats[$btl->uids[$u1]]['nopryh_act'] < 1 && $pvr['used'] == 0 && !isset($at['p'][$a]['priems']['kill'][$uid][$j_id])) { + // + //Уворот от удара выставляем + unset($at['p'][$a]['atack'][$j]['yron']); + $at['p'][$a]['atack'][$j][1] = 8; + $pvr['rnd_a'] = rand(1, 5); + if (!$btl->testRazmenblock1($id, $u2, $u1)) { + //Попал + $at['p'][$b]['atack'][] = [$pvr['rnd_a'], 1, 0, 1]; + } else { + //В блок + $at['p'][$b]['atack'][] = [$pvr['rnd_a'], 3, 0, 1]; + } + $at['p'][$a]['atack'][$j]['yron']['plog'][] = '$this->deleffm(48,' . (0 + $uid) . ',' . $btl->stats[$btl->uids[$uid]]['u_priem'][$j_id][3] . '); + $this->priemAddLog( ' . $id . ', ' . $b . ', ' . $a . ', ' . $u2 . ', ' . $u1 . ', "Танец лезвий", - "{tm1} '.$btl->addlt($b , 17 , $btl->users[$btl->uids[$u2]]['sex'] , NULL).'", - '.($btl->hodID + 1).' );'; - // - $at['p'][$a]['atack'][$j]['yron']['used'][] = array($j_id,$uid,$pvr['used']); - $at['p'][$a]['atack'][$j]['yron']['kill'][] = array($j_id,$uid,$pvr['kill']); - // - $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; - $at['p'][$a]['atack'][$j]['priem_used'] = $id; - // - if( $btl->testRazmenblock1($id,$u2,$u1,$pvr['rnd_a']) == false ) { - $at = $this->yronRazmen($id,$at,true); - } - // - } - // - } - $j++; - } - } - // -- конец приема - return $at; - }; - unset( $pr_used_this ); -}else{ - //Действие при клике - $this->addEffPr($pl,$id); + "{tm1} ' . $btl->addlt($b, 17, $btl->users[$btl->uids[$u2]]['sex'], null) . '", + ' . ($btl->hodID + 1) . ' );'; + $at['p'][$a]['atack'][$j]['yron']['used'][] = [$j_id, $uid, $pvr['used']]; + $at['p'][$a]['atack'][$j]['yron']['kill'][] = [$j_id, $uid, $pvr['kill']]; + // + $at['p'][$a]['priems']['kill'][$uid][$j_id] = true; + $at['p'][$a]['atack'][$j]['priem_used'] = $id; + // + if (!$btl->testRazmenblock1($id, $u2, $u1)) { + $at = $this->yronRazmen($id, $at, true); + } + // + } + // + } + $j++; + } + } + // -- конец приема + return $at; + }; + unset($pr_used_this); +} else { + //Действие при клике + $this->addEffPr($pl, $id); } unset($pvr); -?> \ No newline at end of file diff --git a/_incl_data/class/priems/eath.php b/_incl_data/class/priems/eath.php index 3ddd0836..cf0acbb4 100644 --- a/_incl_data/class/priems/eath.php +++ b/_incl_data/class/priems/eath.php @@ -95,7 +95,7 @@ if(isset($hod)) if($this->minMana($eff['user_use'],$minmp,4)==false) { //снимаем эффект, мана закончилась - $btl->delPriem($eff,$btl->users[$btl->uids[$eff['uid']]],2); + $btl->delPriem($eff, $btl->users[$btl->uids[$eff['uid']]], 2); } } }else{ @@ -236,7 +236,7 @@ if(isset($hod)) if($dell) { $dell['priem']['id']=$dell['id']; //if($dell['x']==1){ - $btl->delPriem($dell,$u->info,99); + $btl->delPriem($dell, $u->info, 99); /*}else{ $i=0; $e = explode('|',$dell['data']); diff --git a/_incl_data/class/priems/fire.php b/_incl_data/class/priems/fire.php index e583270b..2be7bbc8 100644 --- a/_incl_data/class/priems/fire.php +++ b/_incl_data/class/priems/fire.php @@ -53,7 +53,7 @@ if(isset($hod)) if($this->minMana($eff['user_use'],$minmp,1)==false) { //снимаем эффект, мана закончилась - $btl->delPriem($eff,$btl->users[$btl->uids[$eff['uid']]],2); + $btl->delPriem($eff, $btl->users[$btl->uids[$eff['uid']]], 2); } } }else{ @@ -479,7 +479,7 @@ if(isset($hod)) $pwi['priem'] = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "26" LIMIT 1')); if(isset($pwi['id'])) { - $btl->delPriem($pwi,$btl->users[$btl->uids[$ue['id']]],2); + $btl->delPriem($pwi, $btl->users[$btl->uids[$ue['id']]], 2); } $this->magicAtack($ue,$hpmin,1,$pl,$eff,2,$hpmxx[$pl['id']]); unset($pwx,$pwi,$hpmin,$hpmxx); diff --git a/_incl_data/class/priems/moment.php b/_incl_data/class/priems/moment.php index 41f7f955..d3d9aef7 100644 --- a/_incl_data/class/priems/moment.php +++ b/_incl_data/class/priems/moment.php @@ -307,7 +307,7 @@ if ($pl['id'] == 189) { $hpmin = $u->info['level'] * 5; } elseif ($pl['id'] == 271) { //прием Прорыв 1\3 урона оружием - $tp_atk = $btl->weaponTx($btl->stats[$btl->uids[$u->info['id']]]['items'][$btl->stats[$btl->uids[$u->info['id']]]['wp3id']]); + $tp_atk = $btl->weaponTx($btl->stats[$btl->uids[$u->info['id']]]['items'][$btl->stats[$btl->uids[$u->info['id']]]['wp3id']]['data']); $yi_atk = $btl->weaponAt22($btl->stats[$btl->uids[$u->info['id']]]['items'][$btl->stats[$btl->uids[$u->info['id']]]['wp3id']], $btl->stats[$btl->uids[$u->info['id']]], $tp_atk); diff --git a/_incl_data/class/priems/water.php b/_incl_data/class/priems/water.php index c03f0449..10c265ab 100644 --- a/_incl_data/class/priems/water.php +++ b/_incl_data/class/priems/water.php @@ -217,7 +217,7 @@ if(isset($hod)) if($this->minMana($eff['user_use'],$minmp,3)==false) { //снимаем эффект, мана закончилась - $btl->delPriem($eff,$btl->users[$btl->uids[$eff['uid']]],2); + $btl->delPriem($eff, $btl->users[$btl->uids[$eff['uid']]], 2); } } }else{ @@ -458,7 +458,7 @@ if(isset($hod)) if($dell){ $dell['priem']['id']=$dell['id']; - $btl->delPriem($dell,$u->info,99,false,$pl['name']); + $btl->delPriem($dell, $u->info, 99, 0, $pl['name']); } } diff --git a/answer.txt b/answer.txt deleted file mode 100644 index d9f5f2a3..00000000 --- a/answer.txt +++ /dev/null @@ -1,3 +0,0 @@ -Sign successfully -IK sing :RpNOBfN+zusMfjQHDqp6UQ== -locally formed :RpNOBfN+zusMfjQHDqp6UQ== diff --git a/buttons.php b/buttons.php index ea2e35c5..c7ed14a3 100644 --- a/buttons.php +++ b/buttons.php @@ -67,6 +67,7 @@ if (!isset($_COOKIE['d1c'])) { } ?> + diff --git a/clans_inf.php b/clans_inf.php index cc98e6f5..8af14e26 100644 --- a/clans_inf.php +++ b/clans_inf.php @@ -116,24 +116,11 @@ if (isset($r2['pos'])) { } } -$timday = strtotime('now 00:00:00'); -$clanw = mysql_fetch_array( - mysql_query( - 'SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "' . $timday . '" AND ((`team_win`=1 AND `clan1` = "' . $clan['id'] . '") OR (`team_win`=2 AND `clan2` = "' . $clan['id'] . '")) LIMIT 1' - ) -); -$clanw = $clanw[0]; +[$clanw, $clanl] = \Model\BattleModel::countClanWars($clan['id']); -$clanl = mysql_fetch_array( - mysql_query( - 'SELECT COUNT(`id`) FROM `battle` WHERE `type` = 250 AND `time_over` > "' . $timday . '" AND ((`team_win`=2 AND `clan1` = "' . $clan['id'] . '") OR (`team_win`=1 AND `clan2` = "' . $clan['id'] . '")) LIMIT 1' - ) -); -$clanl = $clanl[0]; $clanwar = mysql_query( - 'SELECT * FROM `clan_wars` WHERE (`clan1`="' . $clan['id'] . '" OR `clan2`="' . $clan['id'] . '") AND `time_finish` > "' . time( - ) . '"' + 'SELECT * FROM `clan_wars` WHERE (`clan1`="' . $clan['id'] . '" OR `clan2`="' . $clan['id'] . '") AND `time_finish` > "' . time() . '"' ); $clwe = ""; while ($clanwa = mysql_fetch_array($clanwar)) { @@ -154,7 +141,7 @@ while ($clanwa = mysql_fetch_array($clanwar)) { Информация о клане <?= $clan['name'] ?> - + @@ -304,8 +291,7 @@ while ($clanwa = mysql_fetch_array($clanwar)) { $html .= '
'; $sp = mysql_query( - 'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` > "' . (time( - ) - 520) . '" ORDER BY `login` ASC' + 'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` > "' . (time() - 520) . '" ORDER BY `login` ASC' ); while ($pl = mysql_fetch_array($sp)) { $html .= '
'; @@ -320,8 +306,7 @@ while ($clanwa = mysql_fetch_array($clanwar)) { $html .= '
'; } $sp = mysql_query( - 'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` <= "' . (time( - ) - 520) . '" ORDER BY `login` ASC' + 'SELECT * FROM `users` WHERE `clan` = "' . $clan['id'] . '" AND `clan_prava` != "glava" AND `online` <= "' . (time() - 520) . '" ORDER BY `login` ASC' ); while ($pl = mysql_fetch_array($sp)) { $html .= '
'; diff --git a/exp.php b/exp.php deleted file mode 100644 index 823b28ef..00000000 --- a/exp.php +++ /dev/null @@ -1,1941 +0,0 @@ - - - - - - - - - -Таблица Опыта - Бойцовский Клуб - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
 
- - - - - - - - - - -
- - - - - - - -
- - -
- - - - - - - -
- - - - - -

Таблица опыта


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
УровеньАпУвеличениеСуммарно
СтатовМастерствоВыносливостьДуховностьЕвроКредитыСтатыОпыта
Уровень: 0
Базовый опыт: 70
Базовая стоимость вещей: 0
03   0150
11   01625
21   01745
31   01875
Уровень: 1
Базовый опыт: 200
Базовая стоимость вещей: 50
0321 022110
11   023160
21   024215
31   025280
41   026350
Уровень: 2
Базовый опыт: 250
Базовая стоимость вещей: 250
Описание: Групповые и Хаотические бои. Доступ на форум.
0311 030410
11   031530
21   032670
31   033830
41   034950
51   0351 100
Уровень: 3
Базовый опыт: 300
Базовая стоимость вещей: 500
0311 0391 300
11   0401 450
21   0411 650
31   0421 850
41   0432 050
51   0442 200
Уровень: 4
Базовый опыт: 350
Базовая стоимость вещей: 750
Описание: Развитие интеллекта. Доступ в Торговый Зал и Комнату Знахаря. Создание и вступление в клан.
0511 0502 500
11   0512 900
21   0523 350
31   0533 800
41   0544 200
51   0554 600
Уровень: 5
Базовый опыт: 700
Базовая стоимость вещей: 950
0311 0595 000
11   0606 000
21   0617 000
31   0628 000
41   0639 000
51   06410 000
61   06511 000
71   06612 000
Уровень: 6
Базовый опыт: 1500
Базовая стоимость вещей: 1250
0311 07012 500
11   07114 000
21   07215 500
31   07317 000
41   07419 000
51   07521 000
61   07623 000
71   07727 000
Уровень: 7
Базовый опыт: 3000
Базовая стоимость вещей: 1750
Описание: Развитие мудрости.
0511 08330 000
11   08435 000
21   08540 000
3    08545 000
4    08550 000
51   08655 000
61   08760 000
71   08865 000
81   08970 000
91   09075 000
101   09180 000
111   09290 000
Уровень: 8
Базовый опыт: 5000
Базовая стоимость вещей: 2300
Описание: Доступ в Рыцарский Зал, Подземелья. Возможность передачи предметов/кредитов.
0511 098100 000
1    0.5098200 000
2    0.5098300 000
3    0.5098400 000
4    0.5098500 000
5    0.5098700 000
6    0.5098900 000
7    2.50981 000 000
8    0.50981 200 000
91   0.50991 500 000
101   0.501001 750 000
111   2.501012 000 000
121   0.501022 175 000
131   0.501032 300 000
141   0.501042 400 000
151   0.501052 500 000
161   0.501062 600 000
171   0.501072 800 000
Уровень: 9
Базовый опыт: 8000
Базовая стоимость вещей: 2800
0712 91163 000 000
1    11163 250 000
2    11163 500 000
3    11163 750 000
4    51164 000 000
5    11164 250 000
6    11164 500 000
7    11164 750 000
81   51175 000 000
9    11175 250 000
10    11175 500 000
11    11175 750 000
121   51186 000 000
13    11186 250 000
141   11196 500 000
15    11196 750 000
16    51197 000 000
17    11197 250 000
181   11207 500 000
19    51208 000 000
20    11208 250 000
211   11218 500 000
22    11218 750 000
231   51229 000 000
241   11239 250 000
251   11249 500 000
261   11259 750 000
Уровень: 10
Базовый опыт: 12000
Базовая стоимость вещей: 3100
Описание: Развитие духовности.
01613 7514410 000 000
11   114511 000 000
21   114612 000 000
31   114713 000 000
41   114814 000 000
51   114915 000 000
61   115016 000 000
71   115117 000 000
81   115218 000 000
91   115319 000 000
101  11015520 000 000
111   115621 000 000
121   115722 000 000
131   115823 000 000
141   115924 000 000
151  1116125 000 000
161   116226 000 000
171   116327 000 000
181   116428 000 000
191   116529 000 000
201  11016730 000 000
211   116831 000 000
221   116932 000 000
231   117033 000 000
241   117134 000 000
251  1117335 000 000
261   117436 000 000
271   117537 000 000
281   117638 000 000
291   117739 000 000
301  11017940 000 000
311   118041 000 000
321   118142 000 000
331   118243 000 000
341   118344 000 000
351   118445 000 000
361   118546 000 000
371   118647 000 000
381   118748 000 000
391   118849 000 000
Уровень: 11
Базовый опыт: 20000
Базовая стоимость вещей: 3500
01015115020450 000 000
1  1 120552 000 000
21   120654 000 000
3   1120756 000 000
4  1 120858 000 000
51   120960 000 000
6   1121062 000 000
7  1 121164 000 000
81   121266 000 000
9   1121368 000 000
10  1 121470 000 000
111   121572 000 000
12   1121674 000 000
13  1 121776 000 000
141   121878 000 000
15   1121980 000 000
16  1 122082 000 000
171   122184 000 000
18   1122286 000 000
19  1 122388 000 000
201   122490 000 000
21   1122592 000 000
22  1 122694 000 000
231   122796 000 000
24   1122898 000 000
25  1 50229100 000 000
261   1230102 000 000
27   11231104 000 000
28  1 1232106 000 000
291   1233108 000 000
30   11234110 000 000
31  1 1235112 000 000
321   1236114 000 000
33   11237116 000 000
34  1 1238118 000 000
351   1239120 000 000
36   11240122 000 000
37  1 1241124 000 000
381   1242126 000 000
39   11243128 000 000
40  1 1244130 000 000
411   1245132 000 000
42   11246134 000 000
43  1 1247136 000 000
441   1248138 000 000
45   11249140 000 000
46  1 1250142 000 000
471   1251144 000 000
48   11252146 000 000
49  1 1253148 000 000
Уровень: 12
Базовый опыт: 30000
Базовая стоимость вещей: 4000
05155500268150 000 000
11 113271170 000 000
21 113274190 000 000
31 113277210 000 000
41 113280230 000 000
51 11100283250 000 000
61 113286270 000 000
71 113289290 000 000
81 113292310 000 000
91 113295330 000 000
101 11100298350 000 000
111 113301370 000 000
121 113304390 000 000
131 113307410 000 000
141 113310430 000 000
151 11100313450 000 000
161 113316470 000 000
171 11300319490 000 000
-
-

Базовый опыт - Базовый опыт равен 100% опыта, вне зависимости от стоимости вашего комплекта или комплекта противника.

-

Начисление опыта

-

Физический бой - 100%.

-

Хаотический бой - 100%.

-

Кнопки нападения - 100% (для всех участвующих в этом бою, для союзников и противников).

-

Выходные дни с Пятницы до Понедельника - +50% дополнительно ко всем условиям.

-

Клановая война - 100% .

-
- - - - - - -
- -

-
- - - -
 
  
  - - - - - -
  - -
Бойцовский Клуб © 2018 -

-   -
-
 
-
- - - -
- - \ No newline at end of file diff --git a/getbattle.php b/getbattle.php index 10ec841e..8c62b340 100644 --- a/getbattle.php +++ b/getbattle.php @@ -7,233 +7,251 @@ require_once('_incl_data/__config.php'); require_once('_incl_data/class/__db_connect.php'); define('IP', UserIp::get()); -class battleNew { - - - -} -$user = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `login` = "'.mysql_real_escape_string($_COOKIE['login']).'"')); -if(isset($user['id']) && $user['battle'] > 0) { - $stats = mysql_fetch_array(mysql_query('SELECT +$user = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `login` = "' . mysql_real_escape_string($_COOKIE['login']) . '"')); +if (isset($user['id']) && $user['battle'] > 0) { + $stats = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`team`,`enemy`, `tactic1`,`tactic2`,`tactic3`,`tactic4`,`tactic5`,`tactic6`,`tactic7`, `battle_yron`,`priems`,`priems_z`,`priemslot` - FROM `stats` WHERE `id` = "'.$user['id'].'" LIMIT 1')); - - if( $stats['hpNow'] > $stats['hpAll'] ) { - $stats['hpNow'] = $stats['hpAll']; - } - if( $stats['mpNow'] > $stats['mpAll'] ) { - $stats['mpNow'] = $stats['mpAll']; - } - - //Получаем данные о поединке - $r = ''; - - //Проверяем размен с текущим противником - $bot_go = false; - $rd = ''; - $sp = mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE ( `uid1` = "'.$user['id'].'" OR `uid2` = "'.$user['id'].'" ) AND `battle` = "'.$user['battle'].'" ORDER BY `time` ASC'); - while( $pl = mysql_fetch_array($sp) ) { - $rd .= ',['.$pl['id'].','.$pl['uid1'].','.$pl['uid2'].','.($pl['time']-time()+$bt['timeout']).']'; - // - if( $pl['uid1'] == $user['id'] && $bot_go == false ) { - $bot_test = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `id` = "'.$pl['uid2'].'" LIMIT 1')); - if(isset($bot_test['id'])) { - $bot_go = true; - } - } - // - } - $rd = ltrim($rd,','); - $r .= ',"act":['.$rd.']'; - unset($sp,$pl,$rd); - - //Удары ботов - if( $bot_go == true ) { - $error = 'Обычное обновление!'; - } - - if(isset($_GET['global'])) { - - $bt = mysql_fetch_array(mysql_query('SELECT `id`,`timeout`,`hod` FROM `battle` WHERE `id` = "'.$user['battle'].'" LIMIT 1')); - if(isset($bt['id'])) { - - //Получение инф. о пользователях в бою - $rd = ''; - $sp = mysql_query('SELECT `id`,`login`,`level`,`align`,`clan` FROM `users` WHERE `battle` = "'.$bt['id'].'"'); - while( $pl = mysql_fetch_array($sp) ) { - $st = mysql_fetch_array(mysql_query('SELECT `hpNow`,`mpNow`,`hpAll`,`mpAll`,`team` FROM `stats` WHERE `id` = "'.$pl['id'].'" LIMIT 1')); - $rd .= '['.(0+$pl['id']).','.(0+$st['hpNow']).','.(0+$st['mpNow']).','.(0+$st['hpAll']).','.(0+$st['mpAll']).'],'; - } - $rd = rtrim($rd,','); - $r .= ',"u":['.$rd.']'; - - }else{ - $error = 'Поединок не найден...'; - } - - //Эффекты текущего персонажа и противника - $r .= ',"eff_me":['; - $i = 0; - $sp = mysql_query('SELECT * FROM `eff_users` WHERE ( `uid` = "'.$user['id'].'" OR `uid` = "'.$stats['enemy'].'" ) AND `delete` = "0" ORDER BY `id` DESC'); - while( $pl = mysql_fetch_array($sp) ) { - if( $pl['v1'] == 'priem' ) { - $prm = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "'.$pl['v2'].'" LIMIT 1')); - if( $user['id'] == $pl['uid'] || $prm['neg'] > 0 ) { - if( $i == 0 ) { - $i++; - }else{ - $r .= ','; - } - $r .= '['.$pl['uid'].','.$pl['id'].','.$pl['id_eff'].',"'.$pl['name'].'","'.$prm['img'].'.gif","14"]'; - } - }else{ - if( $user['id'] == $pl['uid'] ) { - if( $i == 0 ) { - $i++; - }else{ - $r .= ','; - } - $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$pl['id_eff'].'" LIMIT 1')); - - $r .= '['.$pl['uid'].','.$pl['id'].','.$pl['id_eff'].',"'.$pl['name'].'","'.$eff['img'].'","'.$eff['type1'].'"]'; - } - } - } - $r .= ']'; - // - - }elseif(isset($_GET['loading'])) { - //Загрузда дополнительных данных - if(isset($_GET['uload']) && $_GET['uload'] != '0') { - //Загрузка пользователей - $ex = explode(',',$_GET['uload']); - $i = 1; - $rd = ''; - while( $i < count($ex) ) { - if( $ex[$i] > 0 ) { - // - $us = mysql_fetch_array(mysql_query('SELECT + FROM `stats` WHERE `id` = "' . $user['id'] . '" LIMIT 1' + ) + ); + + if ($stats['hpNow'] > $stats['hpAll']) { + $stats['hpNow'] = $stats['hpAll']; + } + if ($stats['mpNow'] > $stats['mpAll']) { + $stats['mpNow'] = $stats['mpAll']; + } + + //Получаем данные о поединке + $r = ''; + + //Проверяем размен с текущим противником + $bot_go = false; + $rd = ''; + $sp = mysql_query( + 'SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE ( `uid1` = "' . $user['id'] . '" OR `uid2` = "' . $user['id'] . '" ) AND `battle` = "' . $user['battle'] . '" ORDER BY `time` ASC' + ); + while ($pl = mysql_fetch_array($sp)) { + $rd .= ',[' . $pl['id'] . ',' . $pl['uid1'] . ',' . $pl['uid2'] . ',' . ($pl['time'] - time() + $bt['timeout']) . ']'; + // + if ($pl['uid1'] == $user['id'] && $bot_go == false) { + $bot_test = mysql_fetch_array(mysql_query('SELECT `id` FROM `stats` WHERE `id` = "' . $pl['uid2'] . '" LIMIT 1')); + if (isset($bot_test['id'])) { + $bot_go = true; + } + } + // + } + $rd = ltrim($rd, ','); + $r .= ',"act":[' . $rd . ']'; + unset($sp, $pl, $rd); + + //Удары ботов + if ($bot_go == true) { + $error = 'Обычное обновление!'; + } + + if (isset($_GET['global'])) { + $btl = new \Model\BattleModel($user['battle']); + $bt = $btl->battleArray; + + if (isset($bt['id'])) { + + //Получение инф. о пользователях в бою + $rd = ''; + $sp = mysql_query('SELECT `id`,`login`,`level`,`align`,`clan` FROM `users` WHERE `battle` = "' . $bt['id'] . '"'); + while ($pl = mysql_fetch_array($sp)) { + $st = mysql_fetch_array(mysql_query('SELECT `hpNow`,`mpNow`,`hpAll`,`mpAll`,`team` FROM `stats` WHERE `id` = "' . $pl['id'] . '" LIMIT 1')); + $rd .= '[' . (0 + $pl['id']) . ',' . (0 + $st['hpNow']) . ',' . (0 + $st['mpNow']) . ',' . (0 + $st['hpAll']) . ',' . (0 + $st['mpAll']) . '],'; + } + $rd = rtrim($rd, ','); + $r .= ',"u":[' . $rd . ']'; + + } else { + $error = 'Поединок не найден...'; + } + + //Эффекты текущего персонажа и противника + $r .= ',"eff_me":['; + $i = 0; + $sp = mysql_query('SELECT * FROM `eff_users` WHERE ( `uid` = "' . $user['id'] . '" OR `uid` = "' . $stats['enemy'] . '" ) AND `delete` = "0" ORDER BY `id` DESC'); + while ($pl = mysql_fetch_array($sp)) { + if ($pl['v1'] == 'priem') { + $prm = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl['v2'] . '" LIMIT 1')); + if ($user['id'] == $pl['uid'] || $prm['neg'] > 0) { + if ($i == 0) { + $i++; + } else { + $r .= ','; + } + $r .= '[' . $pl['uid'] . ',' . $pl['id'] . ',' . $pl['id_eff'] . ',"' . $pl['name'] . '","' . $prm['img'] . '.gif","14"]'; + } + } else { + if ($user['id'] == $pl['uid']) { + if ($i == 0) { + $i++; + } else { + $r .= ','; + } + $eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $pl['id_eff'] . '" LIMIT 1')); + + $r .= '[' . $pl['uid'] . ',' . $pl['id'] . ',' . $pl['id_eff'] . ',"' . $pl['name'] . '","' . $eff['img'] . '","' . $eff['type1'] . '"]'; + } + } + } + $r .= ']'; + // + + } elseif (isset($_GET['loading'])) { + //Загрузда дополнительных данных + if (isset($_GET['uload']) && $_GET['uload'] != '0') { + //Загрузка пользователей + $ex = explode(',', $_GET['uload']); + $i = 1; + $rd = ''; + while ($i < count($ex)) { + if ($ex[$i] > 0) { + // + $us = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`login`,`level`,`clan`,`align`,`obraz` - FROM `users` WHERE `battle` = "'.$user['battle'].'" AND `id` = "'.mysql_real_escape_string($ex[$i]).'" LIMIT 1')); - if(isset($us['id'])) { - $ss = mysql_fetch_array(mysql_query('SELECT + FROM `users` WHERE `battle` = "' . $user['battle'] . '" AND `id` = "' . mysql_real_escape_string($ex[$i]) . '" LIMIT 1' + ) + ); + if (isset($us['id'])) { + $ss = mysql_fetch_array( + mysql_query( + 'SELECT `hpNow`,`mpNow`,`hpAll`,`mpAll`,`team` - FROM `stats` WHERE `id` = "'.$us['id'].'" LIMIT 1')); - - if( $ss['hpNow'] > $ss['hpAll'] ) { - $ss['hpNow'] = $ss['hpAll']; - } - - if( $ss['mpNow'] > $ss['mpAll'] ) { - $ss['mpNow'] = $ss['mpAll']; - } - - $rd .= ',{'; - // - $rd .= ' "id":'.( 0 + (int)$ex[$i] ); - $rd .= ',"login":"'.$us['login'].'"'; - $rd .= ',"level":"'.$us['level'].'"'; - $rd .= ',"align":"'.$us['align'].'"'; - $rd .= ',"clan":"'.$us['clan'].'"'; - $rd .= ',"team":"'.$ss['team'].'"'; - $rd .= ',"hp":'.( 0 + $ss['hpNow'] ).''; - $rd .= ',"mp":'.( 0 + $ss['mpNow'] ).''; - $rd .= ',"hpAll":'.( 0 + $ss['hpAll'] ).''; - $rd .= ',"mpAll":'.( 0 + $ss['mpAll'] ).''; - $rd .= ',"sex":'.( 0 + $us['sex'] ).''; - $rd .= ',"obraz":"'.$us['obraz'].'"'; - // - //Предметы - $ri = ''; - $sp = mysql_query('SELECT `id`,`item_id`,`inOdet`,`magic_inc` FROM `items_users` WHERE `uid` = "'.$us['id'].'" AND `delete` = 0 AND `inOdet` > 0'); - while( $pl = mysql_fetch_array($sp) ) { - // - $im = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img`,`magic_inci` FROM `items_main` WHERE `id` = "'.$pl['item_id'].'" LIMIT 1')); - // - $ccv = ''; - if( $pl['magic_inc'] == '' ) { - $pl['magic_inc'] = $im['magic_inci']; - } - if( $pl['magic_inc'] != '' ) { - $mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "'.$pl['magic_inc'].'" AND `type1` = "12345" LIMIT 1')); - if(isset($mgi['id2'])) { - $ccv .= 'top.useMagicBattle(\''.$mgi['mname'].'\','.$pl['id'].',\''.$mgi['img'].'\',1,2);'; - } - } - // - $ri .= ',['.$pl['id'].','.$pl['item_id'].','.$pl['inOdet'].',"'.$im['name'].'","'.$im['img'].'","'.$ccv.'"]'; - } - $ri = ltrim($ri,','); - $rd .= ',"itm":['.$ri.']'; - // - //Эффекты (не требуется кэширование) - $ri = ''; + FROM `stats` WHERE `id` = "' . $us['id'] . '" LIMIT 1' + ) + ); - $ri = ltrim($ri,','); - $rd .= ',"eff":['.$ri.']'; - // - // - $rd .= ' }'; - } - } - $i++; - } - $rd = ltrim($rd,','); - $r .= ',"ul":['.$rd.']'; - unset($rd,$ri); - // - } - // - if(isset($_GET['pload']) && $_GET['pload'] != '0') { - //Загрузка приемов - $ex = explode(',',$_GET['pload']); - $i = 1; - $rd = ''; - while( $i < count($ex) ) { - if( $ex[$i] > 0 ) { - // - $pl = mysql_fetch_array(mysql_query('SELECT + if ($ss['hpNow'] > $ss['hpAll']) { + $ss['hpNow'] = $ss['hpAll']; + } + + if ($ss['mpNow'] > $ss['mpAll']) { + $ss['mpNow'] = $ss['mpAll']; + } + + $rd .= ',{'; + // + $rd .= ' "id":' . (0 + (int)$ex[$i]); + $rd .= ',"login":"' . $us['login'] . '"'; + $rd .= ',"level":"' . $us['level'] . '"'; + $rd .= ',"align":"' . $us['align'] . '"'; + $rd .= ',"clan":"' . $us['clan'] . '"'; + $rd .= ',"team":"' . $ss['team'] . '"'; + $rd .= ',"hp":' . (0 + $ss['hpNow']); + $rd .= ',"mp":' . (0 + $ss['mpNow']); + $rd .= ',"hpAll":' . (0 + $ss['hpAll']); + $rd .= ',"mpAll":' . (0 + $ss['mpAll']); + $rd .= ',"sex":' . (0 + $us['sex']); + $rd .= ',"obraz":"' . $us['obraz'] . '"'; + // + //Предметы + $ri = ''; + $sp = mysql_query('SELECT `id`,`item_id`,`inOdet`,`magic_inc` FROM `items_users` WHERE `uid` = "' . $us['id'] . '" AND `delete` = 0 AND `inOdet` > 0'); + while ($pl = mysql_fetch_array($sp)) { + // + $im = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img`,`magic_inci` FROM `items_main` WHERE `id` = "' . $pl['item_id'] . '" LIMIT 1')); + // + $ccv = ''; + if ($pl['magic_inc'] == '') { + $pl['magic_inc'] = $im['magic_inci']; + } + if ($pl['magic_inc'] != '') { + $mgi = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $pl['magic_inc'] . '" AND `type1` = "12345" LIMIT 1')); + if (isset($mgi['id2'])) { + $ccv .= 'top.useMagicBattle(\'' . $mgi['mname'] . '\',' . $pl['id'] . ',\'' . $mgi['img'] . '\',1,2);'; + } + } + // + $ri .= ',[' . $pl['id'] . ',' . $pl['item_id'] . ',' . $pl['inOdet'] . ',"' . $im['name'] . '","' . $im['img'] . '","' . $ccv . '"]'; + } + $ri = ltrim($ri, ','); + $rd .= ',"itm":[' . $ri . ']'; + // + //Эффекты (не требуется кэширование) + $ri = ''; + + $ri = ltrim($ri, ','); + $rd .= ',"eff":[' . $ri . ']'; + // + // + $rd .= ' }'; + } + } + $i++; + } + $rd = ltrim($rd, ','); + $r .= ',"ul":[' . $rd . ']'; + unset($rd, $ri); + // + } + // + if (isset($_GET['pload']) && $_GET['pload'] != '0') { + //Загрузка приемов + $ex = explode(',', $_GET['pload']); + $i = 1; + $rd = ''; + while ($i < count($ex)) { + if ($ex[$i] > 0) { + // + $pl = mysql_fetch_array( + mysql_query( + 'SELECT `id`,`name`,`img`,`type`,`onUser`,`team` - FROM `priems` WHERE `id` = "'.mysql_real_escape_string($ex[$i]).'" LIMIT 1')); - if(isset($pl['id'])) { - // - $rd .= ',{'; - // - $rd .= ' "id":'.( 0 + (int)$ex[$i] ); - $rd .= ',"name":"'.$pl['name'].'"'; - $rd .= ',"img":"'.$pl['img'].'"'; - $rd .= ',"type":"'.$pl['type'].'"'; - $rd .= ',"onUser":"'.$pl['onUser'].'"'; - $rd .= ',"team":"'.$pl['team'].'"'; - // - $rd .= ' }'; - // - } - } - $i++; - } - $rd = ltrim($rd,','); - $r .= ',"pl":['.$rd.']'; - unset($sp,$pl,$rd); - // - } - // - } - -}else{ - $error = 'Пользователь в бою не найден...'; + FROM `priems` WHERE `id` = "' . mysql_real_escape_string($ex[$i]) . '" LIMIT 1' + ) + ); + if (isset($pl['id'])) { + // + $rd .= ',{'; + // + $rd .= ' "id":' . (0 + (int)$ex[$i]); + $rd .= ',"name":"' . $pl['name'] . '"'; + $rd .= ',"img":"' . $pl['img'] . '"'; + $rd .= ',"type":"' . $pl['type'] . '"'; + $rd .= ',"onUser":"' . $pl['onUser'] . '"'; + $rd .= ',"team":"' . $pl['team'] . '"'; + // + $rd .= ' }'; + // + } + } + $i++; + } + $rd = ltrim($rd, ','); + $r .= ',"pl":[' . $rd . ']'; + unset($sp, $pl, $rd); + // + } + // + } + +} else { + $error = 'Пользователь в бою не найден...'; } -echo '{ "btl":"'.(0+$bt['id']).'" , "hod":"'.(0+$bt['hod']).'" , "you":"'.(0+$user['id']).'" , "enemy":"'.(0+$stats['enemy']).'" , "pr": [ "'.$stats['priems'].'" , "'.$stats['priems_z'].'" , '.(0+$stats['priemslot']).' ] , "dm":"'.floor($stats['battle_yron']).'" , "to":"'.round($bt['timeout']/60,2).'" , "r":{ '.ltrim($r,',').' } , "e":"'.$error.'" , "t1":"'.$stats['tactic1'].'" , "t2":"'.$stats['tactic2'].'" , "t3":"'.$stats['tactic3'].'" , "t4":"'.$stats['tactic4'].'" , "t5":"'.$stats['tactic5'].'" , "t6":"'.$stats['tactic6'].'" , "t7":"'.$stats['tactic7'].'" }'; +echo '{ "btl":"' . (0 + $bt['id']) . '" , "hod":"' . (0 + $bt['hod']) . '" , "you":"' . (0 + $user['id']) . '" , "enemy":"' . (0 + $stats['enemy']) . '" , "pr": [ "' . $stats['priems'] . '" , "' . $stats['priems_z'] . '" , ' . (0 + $stats['priemslot']) . ' ] , "dm":"' . floor( + $stats['battle_yron'] + ) . '" , "to":"' . round($bt['timeout'] / 60, 2) . '" , "r":{ ' . ltrim( + $r, ',' + ) . ' } , "e":"' . $error . '" , "t1":"' . $stats['tactic1'] . '" , "t2":"' . $stats['tactic2'] . '" , "t3":"' . $stats['tactic3'] . '" , "t4":"' . $stats['tactic4'] . '" , "t5":"' . $stats['tactic5'] . '" , "t6":"' . $stats['tactic6'] . '" , "t7":"' . $stats['tactic7'] . '" }'; diff --git a/hmonitor.php b/hmonitor.php index 049a50e1..0c22ccb3 100644 --- a/hmonitor.php +++ b/hmonitor.php @@ -53,7 +53,6 @@ while ($pl = mysql_fetch_array($sp)) { } // $html .= $i . '. ' . date('H:i', $pl['time']) . ' '; - $html .= ' '; $html .= ' (' . $users . ') (' . $pl['min_lvl_1'] . '-' . $pl['max_lvl_1'] . ') Тип боя: '; if ($pl['noinc'] > 0) { $html .= ''; @@ -113,7 +112,6 @@ while ($pl = mysql_fetch_array($sp)) { // $html .= $i . '. ' . date('d.m.Y H:i', $pl['time_start']) . ' '; - $html .= ' '; $html .= ' (' . $users . ') Тип боя: '; if ($pl['noinc'] > 0) { $html .= ''; @@ -145,9 +143,6 @@ $sp = mysql_query('SELECT * FROM `bs_turnirs`'); $i = 0; while ($pl = mysql_fetch_array($sp)) { $i++; - // - $html .= $i . '. '; - // $html .= ' [' . $pl['level'] . ']'; if ($pl['status'] == 0) { //Ожидаем начала нового турнира diff --git a/inf.php b/inf.php index 9a2170e4..7558d224 100644 --- a/inf.php +++ b/inf.php @@ -266,7 +266,11 @@ if (isset($uer)) { battle->time_over == 0 ? $b->battle->id : false; + unset($b); + } if ($inf['room'] != 303) { if ($inf['online'] > time() - 520 && $inf['banned'] == 0 && $inf['invis'] != 1 && $inf['invis'] < time()) { diff --git a/items_info.php b/items_info.php index 2274a4e3..9d0292f4 100644 --- a/items_info.php +++ b/items_info.php @@ -596,7 +596,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; ?>
- + - + @@ -621,7 +621,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; - @@ -643,7 +643,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 26'); } elseif ($rv == 3) { //Свитки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE "%Кристаллизатор%"'); + $sp = mysql_query("SELECT * FROM `items_main` WHERE `type` = 29 AND `name` NOT LIKE '%Кристаллизатор%'"); } elseif ($rv == 2) { //Эликсиры $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 30'); @@ -682,7 +682,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 1'); } elseif ($rv == 16) { //Елки - $sp = mysql_query('SELECT * FROM `items_main` WHERE `name` LIKE "%Елка%"'); + $sp = mysql_query("SELECT * FROM `items_main` WHERE `name` LIKE '%Елка%'"); } elseif ($rv == 17) { //Дубины $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 20'); @@ -700,7 +700,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 22'); } elseif ($rv == 22) { //Цветы - $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE "f_%"'); + $sp = mysql_query("SELECT * FROM `items_main` WHERE `type` = 32 AND `img` LIKE 'f_%'"); } elseif ($rv == 25) { //Подарки $sp = mysql_query('SELECT * FROM `items_main` WHERE `type` = 38 OR `type` = 63'); @@ -1074,7 +1074,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; ?>
- +

- +

+ +      @@ -1158,7 +1160,7 @@ $rz[$rt[$itm['type']]][1] ??= 'Прочие предметы'; - +   diff --git a/js/btl_info.js b/js/btl_info.js index 533e0018..31011378 100644 --- a/js/btl_info.js +++ b/js/btl_info.js @@ -5,7 +5,7 @@ function info_reflesh(id_info,uid,up_info,obraz,hp,hpAll,mp,mpAll,invis,sex,eff, { stl4[id_info] = { 4:'',5:'',6:'' }; img4 = ''; lst4 = 0; var d = document.getElementById(`player${id_info}`); - if(d!=undefined) + if(d) { var mbmp = ''; var nomp = 0; @@ -30,7 +30,7 @@ function info_reflesh(id_info,uid,up_info,obraz,hp,hpAll,mp,mpAll,invis,sex,eff, hpAll = '100%'; } var zaggg = '',zggg1 = '',zggg2 = '',zggg3,zggg4 = ''; - if( zag != undefined && zag != 0 && zag != '' ) { + if(zag) { zggg1 = 'class="inf2s"'; zggg2 = 'position:relative;height:280px;'; zggg3 = 'position:absolute;top:3px;left:3px;z-index:102;'; diff --git a/js/onlineList.js b/js/onlineList.js index c63fd945..c1e0c5e0 100644 --- a/js/onlineList.js +++ b/js/onlineList.js @@ -42,6 +42,7 @@ const chat = { efftxt: function (id, txt) { return txt; }, + ignore: function (login) { if (this.ignoreList[login] !== undefined) { if ($('#ignr_alu').attr('id') !== undefined) { @@ -63,10 +64,13 @@ const chat = { ingr_alu.html(`${ingr_alu.html()}
`); } }, + getRandom: function (a, b) { return a + ((b - a) * Math.random()); }, + feerverk_id: 0, + feerverk: function (name) { const frc = { 'name': 'fw04', @@ -82,7 +86,7 @@ const chat = { frc.left -= 35; } - if (frc.name !== undefined) { + if (frc.name) { this.sendSound(frc.sound); const obj = top.frames.main.document.getElementById('frvrks'); if (obj !== undefined) { @@ -103,6 +107,7 @@ const chat = { if (zad > 0) { setTimeout(`chat.feerverk_go(${id}, ${time_back}, "${img}", ${x}, 0);`, 500 * zad); } else { + time_back--; top.frames.main.document.getElementById(`frvanim_${id}`); if (time_back > 0) { @@ -258,10 +263,12 @@ const chat = { clearText: function () { $('#textmsg').val(''); }, + reflesh: function () { this.time = 0; this.testTimer(true); }, + reMoney: function () { $('#moneyGM').html(`${c.money} кр.`); }, diff --git a/jx/battle/log_text.php b/jx/battle/log_text.php index 66e4bea5..7b14ea96 100644 --- a/jx/battle/log_text.php +++ b/jx/battle/log_text.php @@ -1,4 +1,9 @@ info['online'] < time() - 30) { $error = fn(string $str): string => '
' . $str . '
'; +require_once 'log_text.php'; $btl = new Battle(); -require_once('log_text.php'); -$btl->is = $u->is; -$btl->items = $u->items; -$btl->info = $btl->battleInfo($u->info['battle']); +$isBattle = $btl->initRefresh($u); -if (!isset($btl->info['id'])) { +if (!$isBattle) { if ($u->info['battle'] == -1) { //завершаем поединок Db::sql('update users set battle = 0, online = unix_timestamp() where id = ?', [$u->info['id']]); diff --git a/jx/battle/refresh_bot.php b/jx/battle/refresh_bot.php index fa385cb1..0ea72db9 100644 --- a/jx/battle/refresh_bot.php +++ b/jx/battle/refresh_bot.php @@ -86,12 +86,11 @@ if (isset($CRON_CORE) && (isset($_POST['atack'], $_POST['block']) || (isset($_PO ) . "' WHERE `id`='" . $u->info['id'] . "' LIMIT 1" ); } - $btl = new Battle(); require_once('log_text.php'); - $btl->is = $u->is; - $btl->items = $u->items; - $btl->info = $btl->battleInfo($u->info['battle']); - if (!isset($btl->info['id'])) { + $btl = new Battle(); + $isBattle = $btl->initRefresh($u); + + if (!$isBattle) { if ($u->info['battle'] == -1) { //завершаем поединок $upd = mysql_query( diff --git a/logs.php b/logs.php index c9fa442a..7fb9a2ae 100644 --- a/logs.php +++ b/logs.php @@ -1,41 +1,22 @@ = 50000 && $x < 100000) { - $r = [25, 50, 'Великая Битва', 'Кровавая Битва']; - } elseif ($x < 500000) { - $r = [50, 75, 'Величайшая Битва', 'Кровавая Резня']; - } elseif ($x < 1000000) { - $r = [75, 100, 'Историческая Битва', 'Кровавая Сеча']; - } elseif ($x < 2500000) { - $r = [100, 125, 'Эпохальная Битва', 'Кровавое Побоище']; - } elseif ($x >= 5000000) { - $r = [150, 150, 'Судный День', 'Судный День']; - } - return $r; - } + $allprice = (int)Db::getValue('select sum(price1) from battle_users where battle = ? group by uid', [$btl['id']]); + $allprice = Battle::getType($allprice, $btl['smert'] == 1); - $allprice = typeBattle($allprice); - if ($btl['smert'] == 1) { - $allprice = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; - } if ($btl['type'] == 99) { $allprice = '' . str_replace(' ', ' ', $allprice[3]) . ''; } else { @@ -43,52 +24,226 @@ if (isset($btl['id'])) { } } -$fil = 'Поиск :
'; +function replaceLogText(array $d, string $text): string +{ + $d = [ + 'login1' => $d['login1'] ?? '', + 'login2' => $d['login2'] ?? '', + 'prm' => $d['prm'] ?? '', + 'time1' => $d['time1'] ?? 0, + 'time2' => $d['time2'] ?? 0, + 't1' => $d['t1'] ?? 0, + 't2' => $d['t2'] ?? 0, + ]; + + $rep1 = <<{$d['login1']} +HTML; + $rep2 = <<{$d['login2']} +HTML; + + $search = [ + '{u1}', + '{u2}', + '{pr}', + '^^^^', + '{tm1}', + '{tm2}', + '{tm3}', + '{tm4}', + ]; + + $replace = [ + $rep1, + $rep2, + "{$d['prm']}", + '=', + '' . date('H:i', (int)$d['time1']) . '', + '' . date('H:i', (int)$d['time2']) . '', + '' . date('d.m.y H:i', (int)$d['time1']) . '', + '' . date('d.m.y H:i', (int)$d['time2']) . '', + ]; + + return str_replace($search, $replace, $text); +} + +function testlog($pl) +{ + global $log_text; + if ($pl['type'] != 1 && $pl['type'] != 6) { + return $pl['text']; + } + + $d = []; + + foreach (explode('||', $pl['vars']) as $value) { + $r = explode('=', $value); + if (empty($r[0])) { + continue; + } + $d[$r[0]] = $r[1]; + } + + # По неведомой причине команды в базу падают с id 0 и 1, а не 1 и 2. Что ломает все логи. + if (isset($d['t1'], $d['t2'])) { + $d['t1']++; + $d['t2']++; + } + + //обычный удар + $rt = replaceLogText($d, $pl['text']); + + $k01 = 1; + $zb1 = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]; + $zb2 = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]; + + if (isset($d['bl1']) && $d['bl1'] > 0) { + $b11 = 1; + $b12 = $d['bl1']; + while ($b11 <= $d['zb1']) { + $zb1[$b12] = 1; + if ($b12 >= 5 || $b12 < 0) { + $b12 = 0; + } + $b12++; + $b11++; + } + } + + if (isset($d['bl2']) && $d['bl2'] > 0) { + $b11 = 1; + $b12 = $d['bl2']; + while ($b11 <= $d['zb2']) { + $zb2[$b12] = 1; + if ($b12 >= 5 || $b12 < 0) { + $b12 = 0; + } + $b12++; + $b11++; + } + } + + if (isset($d['t1'], $d['t2'])) { + while ($k01 <= 5) { + $zns01 = ''; + $zns02 = ''; + $j01 = 1; + while ($j01 <= 5) { + $zab1 = '0'; + $zab2 = '0'; + if ($j01 == $k01) { + $zab1 = '1'; + $zab2 = '1'; + } + + $zab1 .= $zb1[$j01]; + $zab2 .= $zb2[$j01]; + + $zns01 .= ''; + $zns02 .= ''; + + $j01++; + } + $rt = str_replace('{zn1_' . $k01 . '}', $zns01, $rt); + $rt = str_replace('{zn2_' . $k01 . '}', $zns02, $rt); + $k01++; + } + } + $j = 1; + while ($j <= 21) { + //замена R - игрок 1 + if (isset($d['s2'])) { + $r = $log_text[$d['s1']][$j]; + $k = 0; + if (is_array($r)) { + while ($k <= count($r)) { + if (isset($log_text[$d['s1']][$j][$k])) { + $rt = str_replace('{1x' . $j . 'x' . $k . '}', $log_text[$d['s1']][$j][$k], $rt); + } + $k++; + } + } + } + + //замена R - игрок 2 + if (isset($d['s2'])) { + $r = $log_text[$d['s2']][$j]; + $k = 0; + if (is_array($r)) { + while ($k <= count($r)) { + if (isset($log_text[$d['s2']][$j][$k])) { + $rt = str_replace('{2x' . $j . 'x' . $k . '}', $log_text[$d['s2']][$j][$k], $rt); + } + $k++; + } + } + } + + $j++; + } + //заменяем данные повторно + $rt = replaceLogText($d, $rt); + + //закончили заменять + $pl['text'] = $rt; + + return $pl['text']; +} + +function getTeamColoredLogin(array $us): string +{ + $login = new Login($us['align'], $us['clan'], $us['level'], $us['login']); + $us['team']++; + return "$login->fullLogin"; +} + $r = ''; $p = ''; -$b = ' - - - + + - - -
- '; //nowrap="" + +$b = << +
+ +HTML; if ($btl['team_win'] != -1) { if (!isset($_GET['analiz'])) { - $b .= ' '; - $b .= $fil; + $b .= << + Поиск :
+ + +
+
+ HTML; } else { - $b .= ' '; + $b .= << + HTML; } } -$b .= '
'; -if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { +$b .= ""; + +if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { function rzv($v): string { $v = explode('.', $v); - if (!isset($v[1])) { - $v = $v[0] . '.0'; - } else { - $v = $v[0] . '.' . $v[1]; - } - return $v; + return isset($v[1]) ? "$v[0].$v[1]" : "$v[0].0"; } $tmStart = floor(($btl['time_over'] - $btl['time_start']) / 6) / 10; $tmStart = rzv($tmStart); - $tbtl = ''; + $tbtl = ''; if ($btl['invis'] > 0) { - $tbtl .= ''; - } - if ($btl['type'] == 1) { - $tbtl = 'Тип боя: ' . $tbtl . ' (кулачный поединок)     '; - } else { - $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; + $tbtl .= ''; } + $tbtl = "Тип боя: $tbtl (" . ($btl['type'] == 1 ? 'кулачный' : 'физический') . " поединок) "; + if ($btl['izlom'] > 0) { $tbtl .= 'Волна: ' . $btl['izlomRoundSee'] . '     '; } @@ -98,20 +253,6 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $users = []; $uids = []; - function con_login($us): string - { - $r = ''; - if ($us['align'] > 0) { - $r .= ''; - } - if ($us['clan'] > 0) { - $r .= ''; - } - $r .= '' . $us['login'] . ' [' . $us['level'] . ']'; - $r .= ''; - return $r; - } - //Поулчаем инфо $tpas = [ 1 => 'X', @@ -134,146 +275,187 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { 7 => '', 8 => '', ]; - $sp = mysql_query('SELECT * FROM `battle_users` WHERE `battle` = "' . $btl['id'] . '"'); - while ($pl = mysql_fetch_array($sp)) { - if (!isset($uids[$pl['id']])) { - $i = count($users); - $users[$i] = $pl; - $uids[$pl['uid']] = $i; - // - $users[$i]['value'] = [ - 'y' => 0, //уворотов+парирований+блоков щитом - 'b' => 0, //успешных блоков - 'p' => 0, //не успешных блоков, по персонажу попали - 'zb' => [ //Список зон блока - ], - 'sa' => [ //Статистика ударов - 0 => '', - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '', - ], - 'sb' => [ //Статистика блоков - 0 => '', - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '', - ], - ]; - $sp2 = mysql_query( - 'SELECT * FROM `battle_stat` WHERE `battle` = "' . $btl['id'] . '" AND `uid1` = "' . $pl['uid'] . '" ORDER BY `id` ASC' - ); - while ($pl2 = mysql_fetch_array($sp2)) { - //Обновляем данные - $users[$i]['yrn'] += $pl2['yrn']; - $users[$i]['yrn_krit'] += $pl2['yrn_krit']; - //Статистика далее - $users[$i]['gaa']++; - if ($users[$i]['yrn'] > 0) { - $users[$i]['ga']++; - } - if ($users[$i]['yrn_krit'] > 0) { - $users[$i]['gak']++; - } - //Получаем куда бил игрок - $j = 0; - while ($j < $pl2['ma']) { - $users[$i]['zona'][$pl2['a'][$j]]++; - // - $za = $pl2['a'][$j]; - $k = 1; - while ($k <= 5) { - if ($za == $k) { - $tpa = $pl2['type_a'][$j]; - $zag[$k] = true; - $users[$i]['value']['sa'][$k] .= $tpas[$tpa]; - } else { - $zag[$k] = false; - } - $k++; - } - // + $battleUsers = Db::getRows('select * from battle_users where battle = ?', [$btl['id']]); + foreach ($battleUsers as $pl) { + if (isset($uids[$pl['id']])) { + continue; + } + $i = count($users); + $users[$i] = $pl; + $uids[$pl['uid']] = $i; + + $users[$i]['value'] = [ + 'y' => 0, //уворотов+парирований+блоков щитом + 'b' => 0, //успешных блоков + 'p' => 0, //не успешных блоков, по персонажу попали + 'zb' => [ //Список зон блока + + ], + 'sa' => [ //Статистика ударов + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + ], + 'sb' => [ //Статистика блоков + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + ], + ]; + + $battleStatUser1 = Db::getRows('select * from battle_stat where battle = ? and uid1 = ? order by id', [$btl['id'], $pl['uid']]); + foreach ($battleStatUser1 as $pl2) { + if (!isset($users[$i]['yrn'])) { + $users[$i]['yrn'] = 0; + } + if (!isset($users[$i]['yrn_krit'])) { + $users[$i]['yrn_krit'] = 0; + } + if (!isset($users[$i]['ga'])) { + $users[$i]['ga'] = 0; + } + if (!isset($users[$i]['gaa'])) { + $users[$i]['gaa'] = 0; + } + if (!isset($users[$i]['gak'])) { + $users[$i]['gak'] = 0; + } + if (!isset($users[$i]['zona'])) { + $users[$i]['zona'] = []; + } + if (!isset($users[$i]['zonb'])) { + $users[$i]['zonb'] = []; + } + + //Обновляем данные + $users[$i]['yrn'] += $pl2['yrn']; + $users[$i]['yrn_krit'] += $pl2['yrn_krit']; + //Статистика далее + $users[$i]['gaa']++; + if ($users[$i]['yrn'] > 0) { + $users[$i]['ga']++; + } + if ($users[$i]['yrn_krit'] > 0) { + $users[$i]['gak']++; + } + //Получаем куда бил игрок + $j = 0; + while ($j < $pl2['ma']) { + if (!isset($pl2['a'][$j])) { $j++; + continue; } - $j = $pl2['b']; - $k = 0; - while ($k < $pl2['mb']) { - if ($j > 5) { - $j = 1; - } - $users[$i]['value']['zb'][] = [0 => $j, 1 => 0]; - $users[$i]['zonb'][$j]++; - $j++; - $k++; + + if (!isset($users[$i]['zona'][$pl2['a'][$j]])) { + $users[$i]['zona'][$pl2['a'][$j]] = 0; } - // + + $users[$i]['zona'][$pl2['a'][$j]]++; + $za = $pl2['a'][$j]; $k = 1; while ($k <= 5) { - if (!$zag[$k]) { - $users[$i]['value']['sa'][$k] .= ' '; + if ($za == $k) { + $tpa = $pl2['type_a'][$j]; + $zag[$k] = true; + $users[$i]['value']['sa'][$k] .= $tpas[$tpa]; + } else { + $zag[$k] = false; } $k++; } - // + $j++; + } + $j = $pl2['b']; + $k = 0; + while ($k < $pl2['mb']) { + if ($j > 5) { + $j = 1; + } + $users[$i]['value']['zb'][] = [0 => $j, 1 => 0]; + if (!isset($users[$i]['zonb'][$j])) { + $users[$i]['zonb'][$j] = 0; + } + $users[$i]['zonb'][$j]++; + $j++; + $k++; } // - $sp2 = mysql_query( - 'SELECT * FROM `battle_stat` WHERE `battle` = "' . $btl['id'] . '" AND `uid2` = "' . $pl['uid'] . '" ORDER BY `id` ASC' - ); - $k = 0; - while ($pl2 = mysql_fetch_array($sp2)) { - //Обновляем данные - $users[$i]['_yrn'] -= $pl2['yrn']; - $users[$i]['_yrn_krit'] -= $pl2['yrn_krit']; - //Получаем куда били игрока - $j = 0; - $zag = []; - while ($j < $pl2['ma']) { - $users[$i]['value']['zb'][$k][1] = $pl2['type_a'][$j]; - if ($pl2['type_a'][$j] == 2 || $pl2['type_a'][$j] == 6 || $pl2['type_a'][$j] == 7 || $pl2['type_a'][$j] == 8) { - $users[$i]['value']['y']++; - } elseif ($pl2['type_a'][$j] == 3) { - $users[$i]['value']['b']++; - } else { - $users[$i]['value']['p']++; - } - // - $j++; + $k = 1; + while ($k <= 5) { + if (empty($zag[$k])) { + $users[$i]['value']['sa'][$k] .= ' '; } - // $k++; - // } - //Статистика блоков - $k = 0; - $h = 0; - $bjj = []; - while ($k < count($users[$i]['value']['zb'])) { - $zb = 0 + $users[$i]['value']['zb'][$k][0]; - $zt = 0 + $users[$i]['value']['zb'][$k][1]; - $bjj[$zb] = true; - $users[$i]['value']['sb'][$zb] .= '' . $tpbs[$zt] . ''; - if ($h < 1) { - $h++; + // + } + // + + $battleStatUser2 = Db::getRows('select * from battle_stat where battle = ? and uid2 = ? order by id', [$btl['id'], $pl['uid']]); + $k = 0; + foreach ($battleStatUser2 as $pl2) { + if (!isset($users[$i]['_yrn'])) { + $users[$i]['_yrn'] = 0; + } + if (!isset($users[$i]['_yrn_krit'])) { + $users[$i]['_yrn_krit'] = 0; + } + //Обновляем данные + $users[$i]['_yrn'] -= $pl2['yrn']; + $users[$i]['_yrn_krit'] -= $pl2['yrn_krit']; + //Получаем куда били игрока + $j = 0; + $zag = []; + while ($j < $pl2['ma']) { + if (!isset($pl2['type_a'][$j])) { + $pl2['type_a'][$j] = 0; + } + $users[$i]['value']['zb'][$k][1] = $pl2['type_a'][$j]; + if ($pl2['type_a'][$j] == 2 || $pl2['type_a'][$j] == 6 || $pl2['type_a'][$j] == 7 || $pl2['type_a'][$j] == 8) { + $users[$i]['value']['y']++; + } elseif ($pl2['type_a'][$j] == 3) { + $users[$i]['value']['b']++; } else { - $d = 1; - while ($d <= 5) { - if (!$bjj[$d]) { - $users[$i]['value']['sb'][$d] .= ' '; - } - $d++; - } - $bjj = []; - $h = 0; + $users[$i]['value']['p']++; } - $k++; + + $j++; } - // + + $k++; + + } + //Статистика блоков + $k = 0; + $h = 0; + $bjj = []; + + while ($k < count($users[$i]['value']['zb'])) { + $zb = (int)$users[$i]['value']['zb'][$k][0]; + $zt = (int)$users[$i]['value']['zb'][$k][1]; + $bjj[$zb] = true; + $users[$i]['value']['sb'][$zb] .= $tpbs[$zt]; + if ($h < 1) { + $h++; + } else { + $d = 1; + while ($d <= 5) { + if (empty($bjj[$d])) { + $users[$i]['value']['sb'][$d] .= ' '; + } + $d++; + } + $bjj = []; + $h = 0; + } + $k++; } } @@ -288,10 +470,10 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $us = $users[$i]; if (!isset($tm[$us['team']])) { $tm[$us['team']] = ''; - $tm_v[] = $us['team']; + $tm_v[] = (int)$us['team']; } $tm_u[$us['team']][] = $i; - $tm[$us['team']] .= con_login($us); + $tm[$us['team']] .= getTeamColoredLogin($us); $tm[$us['team']] .= ', '; unset($us); } @@ -305,393 +487,304 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { } $i++; } - // + + $strroll = ''; + foreach ($tm_v as $team) { + $team_data = ['g' => false]; + foreach ($tm_u[$team] as $teamuser) { + if ($users[$teamuser]['id'] < 1) { + continue; + } + $rh = "{$users[$teamuser]['value']['sa'][1]}
{$users[$teamuser]['value']['sa'][2]}
+ {$users[$teamuser]['value']['sa'][3]}
{$users[$teamuser]['value']['sa'][4]}
+ {$users[$teamuser]['value']['sa'][5]}"; + $strroll .= ''; + $strroll .= " " . getTeamColoredLogin($users[$teamuser]) . ""; + $strroll .= "
голову
грудь
живот
пояс
ноги
"; + $strroll .= "
$rh
"; + $strroll .= ''; + } + } + $usr = '

Участники поединка

' . $usr . '

'; - // - $r = ''; - // - $r .= '

Последовательность ударов

'; - $r .= ' -'; - $i = 0; - while ($i <= count($tm_v)) { - $j = 0; - $team_data = ['g' => false]; - while ($j < count($tm_u[$tm_v[$i]])) { - $us = $users[$tm_u[$tm_v[$i]][$j]]; - if ($us['id'] > 0) { - $rh = ''; - $rh .= '' . $us['value']['sa'][1] . ''; - $rh .= '
' . $us['value']['sa'][2] . ''; - $rh .= '
' . $us['value']['sa'][3] . ''; - $rh .= '
' . $us['value']['sa'][4] . ''; - $rh .= '
' . $us['value']['sa'][5] . ''; - $r .= ''; - } - unset($us); - $j++; - } - $i++; - } - $r .= '
ЛогинУдар вПоследовательность ударов
' . con_login( - $us - ) . '
голову
грудь
живот
пояс
ноги
' . $rh . '
'; - $r .= '(X - удачный удар, ¤ - критический удар пробив блок , X - критический удар, Ξ - крит + инвалидность, X - доп. магический удар,
 - противник блокировал удар,  - увернулся,  - парировал,  - отбил удар щитом)'; - // - $r .= '

Последовательность блоков

'; - $r .= ' -'; - $i = 0; - while ($i <= count($tm_v)) { - $j = 0; - $team_data = ['g' => false]; - while ($j < count($tm_u[$tm_v[$i]])) { - $us = $users[$tm_u[$tm_v[$i]][$j]]; - if ($us['id'] > 0) { - $rh = ''; - $rh .= '' . $us['value']['sb'][1] . ''; - $rh .= '
' . $us['value']['sb'][2] . ''; - $rh .= '
' . $us['value']['sb'][3] . ''; - $rh .= '
' . $us['value']['sb'][4] . ''; - $rh .= '
' . $us['value']['sb'][5] . ''; - $r .= ''; - } - unset($us); - $j++; - } + $r = <<$b +
+ $tbtl $p + Статус битвы: $allprice +
+

$usr +
$p
+ +

Последовательность ударов

+
ЛогинБлокПоследовательность блоков
' . con_login( - $us - ) . '
голова
грудь
живот
пояс
ноги
' . $rh . '
+ + $strroll +
ЛогинУдар вПоследовательность ударов
+ + (X - удачный удар, + ¤ - критический удар пробив блок , + X - критический удар, + Ξ - крит + инвалидность, + X - доп. магический удар,
+   - противник блокировал удар, + - увернулся, + - парировал, + - отбил щитом) + +

Последовательность блоков

+ + + $strroll +
ЛогинБлокПоследовательность блоков
- $i++; - } - $r .= ''; - $r .= '(X - удачный блок, X - пробили блок критом,  - пропустил удар, - - увернулся, - - парировал, - - отбил щитом)'; - // - $r .= '

Суммарно

'; - $r .= ' -'; - // - $i = 0; - while ($i <= count($tm_v)) { - $j = 0; - $team_data = ['g' => false]; - while ($j < count($tm_u[$tm_v[$i]])) { - $us = $users[$tm_u[$tm_v[$i]][$j]]; - if ($us['id'] > 0) { - $team_data['g'] = true; - $us['heal'] = ($us['hp'] - $us['hpAll']) - $us['_yrn']; - if ($us['heal'] < 0) { - $us['heal'] = 0; - } - if ($us['hp'] < 0) { - $us['hp'] = 0; - } - if ($us['yrn'] < 0) { - $us['yrn'] = 0; - } - if ($us['yrn_krit'] < 0) { - $us['yrn_krit'] = 0; - } - if ($us['_yrn'] > 0) { - $us['_yrn'] = 0; - } - if ($us['_yrn_krit'] > 0) { - $us['_yrn_krit'] = 0; - } - $team_data['ga'] += $us['ga']; - $team_data['gaa'] += $us['gaa']; - $team_data['gak'] += $us['gak']; - $team_data['hp'] += $us['hp']; - $team_data['hpAll'] += $us['hpAll']; - $team_data['yrn'] += $us['yrn']; - $team_data['yrn_krit'] += $us['yrn_krit']; - $team_data['_yrn'] += $us['_yrn']; - $team_data['_yrn_krit'] += $us['_yrn_krit']; - $team_data['val_b'] += $us['value']['b']; - $team_data['val_y'] += $us['value']['y']; - $team_data['val_p'] += $us['value']['p']; - $team_data['heal'] += $us['heal']; - $winw = ''; - if ($us['hp'] < 1) { - $us['hp'] = '0'; - $winw = ''; - } else { - $winw = ''; - } - $r .= ''; + (X - удачный блок, + X - пробили блок критом, + - пропустил удар, + - увернулся, + - парировал, + - отбил щитом) + +

Суммарно

+
 ЛогинУдарыБлокиПопаданияЗащитаУронПотериВылечено
        
' . $winw . '' . con_login( - $us - ) . ' [' . $us['hp'] . '/' . $us['hpAll'] . ']' . (0 + $us['zona'][1]) . '/' . (0 + $us['zona'][2]) . '/' . (0 + $us['zona'][3]) . '/' . (0 + $us['zona'][4]) . '/' . (0 + $us['zona'][5]) . '' . (0 + $us['zonb'][1]) . '/' . (0 + $us['zonb'][2]) . '/' . (0 + $us['zonb'][3]) . '/' . (0 + $us['zonb'][4]) . '/' . (0 + $us['zonb'][5]) . '' . (0 + $us['ga']) . '(' . (0 + $us['gak']) . ')/' . ($us['gaa']) . '' . $us['value']['b'] . '/' . $us['value']['y'] . '/' . $us['value']['p'] . '' . $us['yrn'] . '/' . $us['yrn_krit'] . '' . (-$us['_yrn']) . '' . $us['heal'] . '
+ + + + + + + + + + + + HTML; + + foreach ($tm_v as $team) { + $team_data = [ + 'g' => false, + 'ga' => 0, + 'gaa' => 0, + 'gak' => 0, + 'hp' => 0, + 'hpAll' => 0, + 'yrn' => 0, + 'yrn_krit' => 0, + '_yrn' => 0, + '_yrn_krit' => 0, + 'val_b' => 0, + 'val_y' => 0, + 'val_p' => 0, + 'heal' => 0, + ]; + + foreach ($tm_u[$team] as $teamuser) { + if ($users[$teamuser]['id'] < 1) { + continue; } - unset($us); - $j++; - } - if ($team_data['g'] == true) { - $winw = '--'; - if ($team_data['hp'] < 1) { - $team_data['hp'] = '0'; + + foreach ($team_data as $k => $v) { + if ($k == 'g') { + continue; + } + if (!isset($users[$teamuser][$k])) { + $users[$teamuser][$k] = $v; + } + } + + $team_data['g'] = true; + $users[$teamuser]['heal'] = $users[$teamuser]['hp'] - $users[$teamuser]['hpAll'] - $users[$teamuser]['_yrn']; + $users[$teamuser]['heal'] = max($users[$teamuser]['heal'], 0); + $users[$teamuser]['hp'] = max($users[$teamuser]['hp'], 0); + $users[$teamuser]['yrn'] = max($users[$teamuser]['yrn'], 0); + $users[$teamuser]['yrn_krit'] = max($users[$teamuser]['yrn_krit'], 0); + $users[$teamuser]['_yrn'] = min($users[$teamuser]['_yrn'], 0); + $users[$teamuser]['_yrn_krit'] = min($users[$teamuser]['_yrn_krit'], 0); + $team_data['ga'] += $users[$teamuser]['ga']; + $team_data['gaa'] += $users[$teamuser]['gaa']; + $team_data['gak'] += $users[$teamuser]['gak']; + $team_data['hp'] += $users[$teamuser]['hp']; + $team_data['hpAll'] += $users[$teamuser]['hpAll']; + $team_data['yrn'] += $users[$teamuser]['yrn']; + $team_data['yrn_krit'] += $users[$teamuser]['yrn_krit']; + $team_data['_yrn'] += $users[$teamuser]['_yrn']; + $team_data['_yrn_krit'] += $users[$teamuser]['_yrn_krit']; + $team_data['val_b'] += $users[$teamuser]['val_b']; + $team_data['val_y'] += $users[$teamuser]['val_y']; + $team_data['val_p'] += $users[$teamuser]['val_p']; + $team_data['heal'] += $users[$teamuser]['heal']; + $winw = ''; + if ($users[$teamuser]['hp'] === 0) { + $users[$teamuser]['hp'] = '0'; + $winw = 'Погиб'; } else { - $winw = ''; + $winw = 'Выжил'; } - $r .= ''; + $coloredLogin = getTeamColoredLogin($users[$teamuser]); + + if (!isset($users[$teamuser]['zona'][1])) { + $users[$teamuser]['zona'][1] = 0; + } + if (!isset($users[$teamuser]['zona'][2])) { + $users[$teamuser]['zona'][2] = 0; + } + if (!isset($users[$teamuser]['zona'][3])) { + $users[$teamuser]['zona'][3] = 0; + } + if (!isset($users[$teamuser]['zona'][4])) { + $users[$teamuser]['zona'][4] = 0; + } + if (!isset($users[$teamuser]['zona'][5])) { + $users[$teamuser]['zona'][5] = 0; + } + + if (!isset($users[$teamuser]['zonb'][1])) { + $users[$teamuser]['zonb'][1] = 0; + } + if (!isset($users[$teamuser]['zonb'][2])) { + $users[$teamuser]['zonb'][2] = 0; + } + if (!isset($users[$teamuser]['zonb'][3])) { + $users[$teamuser]['zonb'][3] = 0; + } + if (!isset($users[$teamuser]['zonb'][4])) { + $users[$teamuser]['zonb'][4] = 0; + } + if (!isset($users[$teamuser]['zonb'][5])) { + $users[$teamuser]['zonb'][5] = 0; + } + + + $r .= << + + + + + + + + + + + HTML; } - $i++; - } - $r .= '
ЛогинУдарыБлокиПопаданияЗащитаУронПотериВылечено
' . $winw . 'Всего [' . $team_data['hp'] . '/' . $team_data['hpAll'] . ']  ' . (0 + $team_data['ga']) . '(' . (0 + $team_data['gak']) . ')/' . ($team_data['gaa']) . '' . $team_data['val_b'] . '/' . $team_data['val_y'] . '/' . $team_data['val_p'] . '' . $team_data['yrn'] . '/' . $team_data['yrn_krit'] . '' . (-$team_data['_yrn']) . '' . $team_data['heal'] . '
$winw$coloredLogin [{$users[$teamuser]['hp']}/{$users[$teamuser]['hpAll']}]{$users[$teamuser]['zona'][1]}/{$users[$teamuser]['zona'][2]}/{$users[$teamuser]['zona'][3]}/{$users[$teamuser]['zona'][4]}/{$users[$teamuser]['zona'][5]}{$users[$teamuser]['zonb'][1]}/{$users[$teamuser]['zonb'][2]}/{$users[$teamuser]['zonb'][3]}/{$users[$teamuser]['zonb'][4]}/{$users[$teamuser]['zonb'][5]}{$users[$teamuser]['ga']}({$users[$teamuser]['gak']})/{$users[$teamuser]['gaa']}{$users[$teamuser]['value']['b']}/{$users[$teamuser]['value']['y']}/{$users[$teamuser]['value']['p']}{$users[$teamuser]['yrn']}/{$users[$teamuser]['yrn_krit']}{$users[$teamuser]['_yrn']}{$users[$teamuser]['heal']}
'; - // - $r .= ' -Логин - имя персонажа и уровень жизни: [сейчас/всего]
-Удары - статистика ударов по областям: голова/грудь/живот/пояс/ноги
-Блоки - статистика блоков по областям: голова/грудь/живот/пояс/ноги
-Попадания - удачных попаданий (из них критов) / всего ударов
-Защита - ударов заблокировано / уворотов / пропущено ударов
-Урон - выбито HP из противников / из них критами
-Потери - получено повреждений
-Вылечено - восстановлено HP
'; + if (!$team_data['g']) { + continue; + } + + $winw = '--'; + if ($team_data['hp'] < 1) { + $team_data['hp'] = 0; + } else { + $winw = 'Победитель'; + } + + $r .= << + $winw + Всего [{$team_data['hp']}/{$team_data['hpAll']}] + + + {$team_data['ga']}({$team_data['gak']})/{$team_data['gaa']} + {$team_data['val_b']}/{$team_data['val_y']}/{$team_data['val_p']} + {$team_data['yrn']}/{$team_data['yrn_krit']} + {$team_data['_yrn']} + {$team_data['heal']} + + HTML; + } + + $r .= << + Логин - имя персонажа и уровень жизни: [сейчас/всего]
+ Удары - статистика ударов по областям: голова/грудь/живот/пояс/ноги
+ Блоки - статистика блоков по областям: голова/грудь/живот/пояс/ноги
+ Попадания - удачных попаданий (из них критов) / всего ударов
+ Защита - ударов заблокировано / уворотов / пропущено ударов
+ Урон - выбито HP из противников / из них критами
+ Потери - получено повреждений
+ Вылечено - восстановлено HP
+ HTML; - $r = '
' . $b . '
' . $tbtl . $p . 'Статус битвы: ' . $allprice . '


' . $usr . $r . '
' . $p . '
'; - //header('location: main.php'); } elseif (!isset($btl['id'])) { - $r = '

Скорее всего Архивариус снова потерял пергамент с хрониками боев ...
'; + $r = '
Скорее всего Архивариус снова потерял пергамент с хрониками боев...
'; } else { include('jx/battle/log_text.php'); - function testlog($pl) - { - global $log_text; - if ($pl['type'] == 1 || $pl['type'] == 6) { - $dt = explode('||', $pl['vars']); - $i = 0; - $d = []; - while ($i < count($dt)) { - $r = explode('=', $dt[$i]); - if ($r[0] != '') { - $d[$r[0]] = $r[1]; - } - $i++; - } - //обычный удар - $rt = $pl['text']; - //заменяем данные - $rt = str_replace( - '{u1}', - '' . $d['login1'] . '', - $rt - ); - $rt = str_replace( - '{u2}', - '' . $d['login2'] . '', - $rt - ); - $d['time1'] = intval($d['time1']); - $d['time2'] = intval($d['time2']); - $rt = str_replace('{pr}', '' . $d['prm'] . '', $rt); - $rt = str_replace('^^^^', '=', $rt); - $rt = str_replace('{tm1}', '' . date('H:i', $d['time1']) . '', $rt); - $rt = str_replace('{tm2}', '' . date('H:i', $d['time2']) . '', $rt); - $rt = str_replace('{tm3}', '' . date('d.m.y H:i', $d['time1']) . '', $rt); - $rt = str_replace('{tm4}', '' . date('d.m.y H:i', $d['time2']) . '', $rt); - $k01 = 1; - $zb1 = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]; - $zb2 = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]; - - if ($d['bl2'] > 0) { - $b11 = 1; - $b12 = $d['bl1']; - while ($b11 <= $d['zb1']) { - $zb1[$b12] = 1; - if ($b12 >= 5 || $b12 < 0) { - $b12 = 0; - } - $b12++; - $b11++; - } - } - - if ($d['bl2'] > 0) { - $b11 = 1; - $b12 = $d['bl2']; - while ($b11 <= $d['zb2']) { - $zb2[$b12] = 1; - if ($b12 >= 5 || $b12 < 0) { - $b12 = 0; - } - $b12++; - $b11++; - } - } - - - while ($k01 <= 5) { - $zns01 = ''; - $zns02 = ''; - $j01 = 1; - while ($j01 <= 5) { - $zab1 = '0'; - $zab2 = '0'; - if ($j01 == $k01) { - $zab1 = '1'; - $zab2 = '1'; - } - - $zab1 .= $zb1[$j01]; - $zab2 .= $zb2[$j01]; - - $zns01 .= ''; - $zns02 .= ''; - $j01++; - } - $rt = str_replace('{zn1_' . $k01 . '}', $zns01, $rt); - $rt = str_replace('{zn2_' . $k01 . '}', $zns02, $rt); - $k01++; - } - - $j = 1; - while ($j <= 21) { - //замена R - игрок 1 - $r = $log_text[$d['s1']][$j]; - $k = 0; - if (is_array($r)) { - while ($k <= count($r)) { - if (isset($log_text[$d['s1']][$j][$k])) { - $rt = str_replace('{1x' . $j . 'x' . $k . '}', $log_text[$d['s1']][$j][$k], $rt); - } - $k++; - } - } - //замена R - игрок 2 - $r = $log_text[$d['s2']][$j]; - $k = 0; - if (is_array($r)) { - while ($k <= count($r)) { - if (isset($log_text[$d['s2']][$j][$k])) { - $rt = str_replace('{2x' . $j . 'x' . $k . '}', $log_text[$d['s2']][$j][$k], $rt); - } - $k++; - } - } - $j++; - } - - //заменяем данные повторно - $rt = str_replace( - '{u1}', - '' . $d['login1'] . '', - $rt - ); - $rt = str_replace( - '{u2}', - '' . $d['login2'] . '', - $rt - ); - $rt = str_replace('{pr}', '' . $d['prm'] . '', $rt); - $rt = str_replace('^^^^', '=', $rt); - $rt = str_replace('{tm1}', '' . date('H:i', $d['time1']) . '', $rt); - $rt = str_replace('{tm2}', '' . date('H:i', $d['time2']) . '', $rt); - $rt = str_replace('{tm3}', '' . date('d.m.y H:i', $d['time1']) . '', $rt); - $rt = str_replace('{tm4}', '' . date('d.m.y H:i', $d['time2']) . '', $rt); - - //закончили заменять - $pl['text'] = $rt; - } - return $pl['text']; - } + $getp = $_GET['p'] ?? 0; + $getp = (int)$getp; //Получаем логи - $min = round(12 * ((int)$_GET['p'] - 1)); - if ($min < 1) { - $min = 0; - } + $min = max((int)round(12 * ($getp - 1)), 0); $max = $min + 11; $based = 'battle_logs_save'; - $sp_cnt = mysql_fetch_array( - mysql_query( - 'SELECT COUNT(*) FROM `battle_logs_save` WHERE `battle` = "' . $btl['id'] . '" AND `id_hod` > ' . $min . ' AND `id_hod` <= ' . $max . ' ORDER BY `id_hod`, `time` ASC LIMIT 1' - ) - ); - if ($sp_cnt[0] < 1) { + + $check = Db::getValue('select count(*) from battle_logs_save where battle = ? and id_hod between ? and ? order by id_hod, time', [$btl['id'], $min, $max]) < 1; + + if ($check) { $based = 'battle_logs'; } //генерируем страницы - $pmax = mysql_fetch_array( - mysql_query( - 'SELECT `id_hod`,`id` FROM `' . $based . '` WHERE `battle` = "' . $btl['id'] . '" ORDER BY `id_hod` DESC LIMIT 1' - ) - ); - $pmax = $pmax['id_hod']; + $pmax = Db::getValue("select id_hod from $based where battle = ? order by id_hod desc limit 1", [$btl['id']]); + $pmax = ceil($pmax / 12); if ($min > round(12 * ($pmax - 1))) { $min = round(12 * ($pmax - 1)); $max = $min + 11; } + $i = 1; + $code = PassGen::intCode(); while ($i <= $pmax) { - if ((int)$_GET['p'] == $i || ((int)$_GET['p'] > $pmax && $i == $pmax) || ((int)$_GET['p'] < 1 && $i == 1)) { + if ($getp == $i || $getp > $pmax && $i == $pmax || $getp < 1 && $i == 1) { $p .= ' ' . $i . ' '; } else { $p .= ' ' . $i . ' '; } $i++; } + $h = 0; - $clr = 'f2e5e0'; + $clr = '#f2e5e0'; $cclr = ''; - $sp = mysql_query( - 'SELECT * FROM `' . $based . '` WHERE `battle` = "' . $btl['id'] . '" AND `id_hod` > ' . $min . ' AND `id_hod` <= ' . ($max + 1) . ' ORDER BY `id_hod`, `id` ASC LIMIT 200' - ); - while ($pl = mysql_fetch_array($sp)) { + + $savedbattlelogs = Db::getRows("select * from $based where battle = ? and id_hod between ? and ? order by id_hod, id limit 200", [$btl['id'], $min, $max + 1]); + foreach ($savedbattlelogs as $pl) { $pl['text'] = testlog($pl); $pl['text'] = str_replace('\"', '"', $pl['text']); if ($h != $pl['id_hod']) { if ($h > 0) { - if ($clr == 'f2e5e0') { - $clr = 'f2e5E5'; - } else { - $clr = 'f2e5e0'; - } + $clr = $clr == '#f2e5e0' ? '#f2e5e5' : '#f2e5e0'; $cclr = 'border-top:1px solid #b1b1b1;'; } $h = $pl['id_hod']; } - $r .= '
' . $pl['text'] . '
'; + $r .= '
' . $pl['text'] . '
'; $cclr = ''; } + //собираем страницу $p = 'Страницы: ' . $p; $usr = ''; - if ($btl['team_win'] == -1) { - $sp = mysql_query( - 'SELECT - `u`.`id`,`u`.`login`,`u`.`level`,`u`.`sex`,`u`.`align`,`u`.`online`,`u`.`battle`,`u`.`clan`, - `s`.`hpNow`,`s`.`bot`,`s`.`team`,`u`.`city` - FROM `users` AS `u` LEFT JOIN `stats` AS `s` ON `s`.`id` = `u`.`id` WHERE `u`.`battle` = "' . $btl['id'] . '" AND `s`.`hpNow` >= 1' - ); + if ($btl['team_win'] == -1) { + $aliveusers = Db::getRows('select login, level, align, clan, team, hpNow, hpAll from users left join stats on users.id = stats.id where battle = ? and hpNow > 0', [$btl['id']]); $usrs = [-1 => []]; - while ($pl = mysql_fetch_array($sp)) { + foreach ($aliveusers as $pl) { if (!isset($usrs[$pl['team']])) { $usrs[$pl['team']] = ''; $usrs[-1][count($usrs[-1])] = $pl['team']; } - if ($pl['align'] > 0) { - $usrs[$pl['team']] .= ''; - } - if ($pl['clan'] > 0) { - $usrs[$pl['team']] .= ''; - } - $pl['stats_r'] = $u->getStats($pl['id']); - $usrs[$pl['team']] .= '' . $pl['login'] . ' [' . ceil( - $pl['stats_r']['hpNow'] - ) . '/' . $pl['stats_r']['hpAll'] . '],'; + $hpnow = (int)ceil($pl['hpNow']); + $hpall = (int)$pl['hpAll']; + $usrs[$pl['team']] = getTeamColoredLogin($pl) . "[$hpnow/$hpall]"; } if (count($usrs[-1]) > 0) { @@ -699,29 +792,30 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { while ($i < count($usrs[-1])) { $usr .= rtrim($usrs[$usrs[-1][$i]], ','); if (count($usrs[-1]) > $i + 1) { - $usr .= '   против   '; + $usr .= '   против   '; } $i++; } } if ($usr != '') { - $usr = '
' . $usr . '

'; + $usr = '
' . $usr . '

'; } } + $tbtl = ''; if ($btl['invis'] > 0) { - $tbtl .= ''; + $tbtl .= ''; } if ($btl['type'] == 0) { $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; } elseif ($btl['type'] == 1) { $tbtl = 'Тип боя: ' . $tbtl . ' (кулачный поединок)     '; } elseif ($btl['type'] == 250) { - $tbtl = ''; + $tbtl = ''; $tbtl = 'Тип боя: ' . $tbtl . ' (Война Кланов)     '; } elseif ($btl['smert'] == 1) { - $tbtl = ''; + $tbtl = ''; $tbtl = 'Тип боя: ' . $tbtl . ' (Жесточайшее Сражение)     '; } else { $tbtl = 'Тип боя: ' . $tbtl . ' (физический поединок)     '; @@ -731,21 +825,32 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { $tbtl .= 'Волна: ' . $btl['izlomRoundSee'] . '     '; } - $r = '
' . $b . '
' . $tbtl . $p . 'Статус битвы: ' . $allprice . '


' . $r . '
' . $usr . '
' . $p . '
'; - + $r = <<$b
+
+ $tbtl $p + Статус битвы: $allprice +
+

$r + +
$usr +
$p
+ HTML; } ?> + - Архив: Поединки - - - - - - + + + + + + - - @@ -857,36 +966,39 @@ if (isset($btl['id']) && $btl['team_win'] != -1 && isset($_GET['analiz'])) { -

Бойцовский - Клуб  

- -


+
+

+ + Бойцовский Клуб   + +

+
+


+ '; - } - } elseif (isset($_GET['unstack']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) { - $u->unstack(intval($_GET['unstack']), intval($_GET['unstackCount'])); - } elseif (isset($_GET['stack']) && isset($_GET['inv'])) { - $u->stack($_GET['stack']); - } elseif (isset($_GET['end_qst_now'])) { - $q->endq((int)$_GET['end_qst_now'], 'end'); - } - //Использовать эффект - if (isset($_GET['use_pid'])) { - $magic->useItems((int)$_GET['use_pid']); - } - } else { - if ($u->room['block_all'] > 0) { - $u->error = 'В данной локации запрещено пользоваться чем-либо...'; - } - } -} if ($magic->youuse > 0) { $act = 1; @@ -372,90 +263,6 @@ if ($act != -2) { } } -/*-----------------------*/ -if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { - require_once('modules_data/_changepass.php'); -} elseif (isset($_GET['friends']) && !isset($u->tfer['id'])) { - require_once('modules_data/_friends.php'); -} elseif (($u->info['admin'] > 0 || $u->info['level'] > 7 || $u->info['align'] == 50) && isset($_GET['notepad']) && !isset($u->tfer['id'])) { - require_once('modules_data/notepad.php'); -} elseif (isset($_GET['moderation'])) { - require_once('modules_data/_mod.php'); -} elseif (isset($_GET['vip']) && !isset($u->tfer['id'])) { - require_once('modules_data/vip.php'); -} elseif ( - ( - isset($_GET['zayvka']) && - $u->info['battle'] == 0 - ) || - ( - isset($_GET['zayvka']) && - ( - $_GET['r'] == 6 || - $_GET['r'] == 7 || - !isset($_GET['r']) - ) && - $u->info['battle'] > 0 - ) && - !isset($u->tfer['id']) -) { - require_once('modules_data/_zv.php'); -} elseif (isset($_GET['alh']) && !isset($u->tfer['id'])) { - require_once('modules_data/_alh.php'); -} elseif (isset($_GET['clan']) && !isset($u->tfer['id'])) { - require_once('modules_data/_clan.php'); //Панель кланов -} elseif (isset($_GET['alhp']) && ($u->info['admin'] == 1 || $u->info['align'] == 50) && !isset($u->tfer['id'])) { - require_once('modules_data/_alhp.php'); //Панель алхимиков -} elseif ($u->info['align'] > 0 && !isset($u->tfer['id']) && !empty($_GET['ap'])) { - require_once('modules_data/alignPanel.php'); //Панель склонностей, GET чтобы вызывать по ссылке. -} elseif ($u->info['battle'] != 0) { - //поединок - if ((!isset($btl_last['id']) || $u->info['battle'] > 0) && !isset($u->info['battle_lsto'])) { - require_once('modules_data/btl_.php'); - echo ''; - } - -} else { - if (isset($_GET['talk']) && !isset($u->tfer['id'])) { - echo ""; - if ($u->info['dnow'] > 0) { - $d = new Dungeon; - } - require_once('modules_data/_dialog.php'); - } elseif (isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo == 1) { - require_once('modules_data/_inv.php'); - } elseif (isset($_GET['add_eff']) && !isset($u->tfer['id']) && $trololo == 1) { - require_once('modules_data/add_eff.php'); - } elseif (isset($_GET['referals']) && $trololo == 1 && !isset($u->tfer['id'])) { - require_once('modules_data/_ref.php'); - } elseif (isset($_GET['obraz']) && !isset($u->tfer['id']) && $trololo == 1) { - require_once('modules_data/_obraz.php'); - } elseif (isset($_GET['skills']) && !isset($u->tfer['id']) && $trololo == 1) { - require_once('modules_data/_umenie.php'); - } elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= Config::get( - 'level_ransfer' - ) && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) { - if ($u->info['allLock'] > time()) { - require_once('modules_data/_locations.php'); - echo ''; - } else { - require_once('modules_data/_transfers.php'); - } - } elseif (isset($_GET['anketa']) && !isset($u->tfer['id']) && $trololo == 1) { - require_once('settings.php'); - } elseif (isset($_GET['newanimal']) && $trololo == 1) { - require_once('modules_data/_newanimal.php'); - } elseif (isset($_GET['act_trf']) && $u->room['block_all'] == 0) { - require_once('modules_data/act_trf.php'); - } elseif (isset($_GET['titul']) && $u->room['block_all'] == 0) { - require_once('modules_data/titul.php'); - } elseif (!isset($u->tfer['id'])) { - require_once('modules_data/_locations.php'); - } -} - //Проверяем квесты на готовность if (in_array( $u->room['file'], @@ -547,12 +354,209 @@ foreach ($sp as $pl) { HTML; } - } else { - echo '[!]'; } unset($tk, $itmo); } +$spl = Db::getValue('select exp from levels where nextlevel = ? order by exp limit 1', [$u->info['level'] + 1]); +?> + + + + +
+ + +
'; +} +if (isset($btl_last['id']) && $u->info['battle'] == 0) { + require_once('modules_data/btl_.php'); + + $u->info['battle_lsto'] = true; +} elseif ($u->info['battle'] == 0) { + //Проверка/Снятие предметов + if (!isset($sleep['id'])) { + $act2 = $u->testItems($u->info['id'], $u->stats, 0); + } + if ($act2 != -2 && $act == -2) { + $act = $act2; + } + + if ($u->room['block_all'] != 0) { + unset($_GET['inv'], $_GET['skills'], $_GET['anketa']); + } + + if (!isset($u->tfer['id']) && $u->room['block_all'] == 0) { + //Одеть/снять предмет + if (isset($_GET['rstv']) && isset($_GET['inv'])) { + $u->freeStatsMod($_GET['rstv'], $_GET['mf'], $u->info['id']); + } elseif (isset($_GET['ufs2']) && isset($_GET['inv'])) { + $u->freeStats2Item($_GET['itmid'], $_GET['ufs2'], $u->info['id'], 1); + } elseif (isset($_GET['ufs2mf']) && isset($_GET['inv'])) { + $u->freeStats2Item($_GET['itmid'], $_GET['ufs2mf'], $u->info['id'], 2); + } elseif (isset($_GET['ufsmst']) && isset($_GET['inv'])) { + $u->itemsSmSave($_GET['itmid'], $_GET['ufsmst'], $u->info['id']); + } elseif (isset($_GET['ufsms']) && isset($_GET['inv'])) { + $u->itemsSmSave($_GET['itmid'], $_GET['ufsms'] + 100, $u->info['id']); + } elseif (isset($_GET['ufs']) && isset($_GET['inv'])) { + $u->freeStatsItem($_GET['itmid'], $_GET['ufs'], $u->info['id']); + } elseif (isset($_GET['sid']) && isset($_GET['inv'])) { + $act = $u->snatItem($_GET['sid'], $u->info['id']); + } elseif (isset($_GET['oid']) && isset($_GET['inv'])) { + $act = $u->odetItem($_GET['oid'], $u->info['id']); + } elseif (isset($_GET['item_rune']) && isset($_GET['inv'])) { + $u->runeItem(null); + } elseif (isset($_GET['remitem'], $_GET['inv'])) { + $act = $u->snatItemAll($u->info['id']); + } elseif (isset($_GET['delete']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) { + if ($u->info['allLock'] < time()) { + $u->deleteItem(intval($_GET['delete']), $u->info['id']); + } else { + echo ''; + } + } elseif (isset($_GET['unstack']) && isset($_GET['inv']) && $u->newAct($_GET['sd4'])) { + $u->unstack(intval($_GET['unstack']), intval($_GET['unstackCount'])); + } elseif (isset($_GET['stack']) && isset($_GET['inv'])) { + $u->stack($_GET['stack']); + } elseif (isset($_GET['end_qst_now'])) { + $q->endq((int)$_GET['end_qst_now'], 'end'); + } + //Использовать эффект + if (isset($_GET['use_pid'])) { + $magic->useItems((int)$_GET['use_pid']); + } + } else { + if ($u->room['block_all'] > 0) { + $u->error = 'В данной локации запрещено пользоваться чем-либо...'; + } + } +} + + +/*-----------------------*/ +if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { + require_once('modules_data/_changepass.php'); +} elseif (isset($_GET['friends']) && !isset($u->tfer['id'])) { + require_once('modules_data/_friends.php'); +} elseif (($u->info['admin'] > 0 || $u->info['level'] > 7 || $u->info['align'] == 50) && isset($_GET['notepad']) && !isset($u->tfer['id'])) { + require_once('modules_data/notepad.php'); +} elseif (isset($_GET['moderation'])) { + require_once('modules_data/_mod.php'); +} elseif (isset($_GET['vip']) && !isset($u->tfer['id'])) { + require_once('modules_data/vip.php'); +} elseif ( + ( + isset($_GET['zayvka']) && + $u->info['battle'] == 0 + ) || + ( + isset($_GET['zayvka']) && + ( + $_GET['r'] == 6 || + $_GET['r'] == 7 || + !isset($_GET['r']) + ) && + $u->info['battle'] > 0 + ) && + !isset($u->tfer['id']) +) { + require_once('modules_data/_zv.php'); +} elseif (isset($_GET['alh']) && !isset($u->tfer['id'])) { + require_once('modules_data/_alh.php'); +} elseif (isset($_GET['clan']) && !isset($u->tfer['id'])) { + require_once('modules_data/_clan.php'); //Панель кланов +} elseif (isset($_GET['alhp']) && ($u->info['admin'] == 1 || $u->info['align'] == 50) && !isset($u->tfer['id'])) { + require_once('modules_data/_alhp.php'); //Панель алхимиков +} elseif ($u->info['align'] > 0 && !isset($u->tfer['id']) && !empty($_GET['ap'])) { + require_once('modules_data/alignPanel.php'); //Панель склонностей, GET чтобы вызывать по ссылке. +} elseif ($u->info['battle'] != 0) { + //поединок + if ((!isset($btl_last['id']) || $u->info['battle'] > 0) && !isset($u->info['battle_lsto'])) { + require_once('modules_data/btl_.php'); + echo ''; + } + +} else { + if (isset($_GET['talk']) && !isset($u->tfer['id'])) { + echo ""; + if ($u->info['dnow'] > 0) { + $d = new Dungeon; + } + require_once('modules_data/_dialog.php'); + } elseif (isset($_GET['inv']) && !isset($u->tfer['id']) && $trololo == 1) { + require_once('modules_data/_inv.php'); + } elseif (isset($_GET['add_eff']) && !isset($u->tfer['id']) && $trololo == 1) { + require_once('modules_data/add_eff.php'); + } elseif (isset($_GET['referals']) && $trololo == 1 && !isset($u->tfer['id'])) { + require_once('modules_data/_ref.php'); + } elseif (isset($_GET['obraz']) && !isset($u->tfer['id']) && $trololo == 1) { + require_once('modules_data/_obraz.php'); + } elseif (isset($_GET['skills']) && !isset($u->tfer['id']) && $trololo == 1) { + require_once('modules_data/_umenie.php'); + } elseif ((isset($_GET['transfer']) || isset($u->tfer['id'])) && $u->info['level'] >= Config::get( + 'level_ransfer' + ) && $trololo == 1 && $u->info['inTurnir'] == 0 && $u->info['inTurnirnew'] == 0) { + if ($u->info['allLock'] > time()) { + require_once('modules_data/_locations.php'); + echo ''; + } else { + require_once('modules_data/_transfers.php'); + } + } elseif (isset($_GET['anketa']) && !isset($u->tfer['id']) && $trololo == 1) { + require_once('settings.php'); + } elseif (isset($_GET['newanimal']) && $trololo == 1) { + require_once('modules_data/_newanimal.php'); + } elseif (isset($_GET['act_trf']) && $u->room['block_all'] == 0) { + require_once('modules_data/act_trf.php'); + } elseif (isset($_GET['titul']) && $u->room['block_all'] == 0) { + require_once('modules_data/titul.php'); + } elseif (!isset($u->tfer['id'])) { + require_once('modules_data/_locations.php'); + } +} + + if ($iloc != '') { if ($iloce != '') { $iloc = '
' . $iloce . '
' . $iloc; @@ -617,10 +621,8 @@ if ($iloc != '') { } unset($iloc, $iloce); + /*-----------------------*/ -$spl = Db::getValue('select exp from levels where nextLevel = ? order by exp limit 1', [$u->info['level'] + 1]); - - //Сломаное обучение. Как оно достало! Ins. 🤬 //$training_manager->render(); ?> diff --git a/modules_data/_zv.php b/modules_data/_zv.php index 0491c6e7..78ce18a7 100644 --- a/modules_data/_zv.php +++ b/modules_data/_zv.php @@ -52,7 +52,7 @@ if ($r === FightRequest::BATTLE_RAZDEL_ENDED) { IntlDateFormatter::LONG, IntlDateFormatter::NONE ); - $dt = $_GET['logs2'] ??= time(); + $dt = $_GET['logs2'] ??= (new DateTime('now midnight'))->gettimestamp(); $slogin = $_GET['filter'] ?? $_POST['filter'] ?? $u->info['login']; $slogin = str_replace('"', '', $slogin); $slogin = str_replace("'", '', $slogin); @@ -190,10 +190,10 @@ if ($r === FightRequest::BATTLE_RAZDEL_ENDED) { Турниры - Групповые + Групповые - Хаотичные + Хаотичные Текущие diff --git a/modules_data/btl_.php b/modules_data/btl_.php index 4c8e9f9b..4afcd16b 100644 --- a/modules_data/btl_.php +++ b/modules_data/btl_.php @@ -19,21 +19,9 @@ if ($u->info['battle'] == 0 || isset($_GET['bend'])) { die(''); } -$thisBattle = Db::getRow('select * from battle where id = ?', [$u->info['battle']]); +$thisBattle = Battle::get($u->info['battle']); $allprice = Db::getValue('select sum(price1) from battle_users where battle = ?', [$u->info['battle']]); -function typeBattle($x): array -{ - return match (true) { - $x >= 5000000 => [150, 150, 'Судный День', 'Судный День'], - $x >= 2500000 => [100, 125, 'Эпохальная Битва', 'Кровавое Побоище'], - $x >= 1000000 => [75, 100, 'Историческая Битва', 'Кровавая Сеча'], - $x >= 500000 => [50, 75, 'Величайшая Битва', 'Кровавая Резня'], - $x >= 100000 => [25, 50, 'Великая Битва', 'Кровавая Битва'], - default => [0, 0, 'Поединок', 'Кровавый Поединок'], - }; -} - function finish(User $u): void { if (!isset($_GET['finish'])) { @@ -72,11 +60,9 @@ function normJsonStr($str) ); } -$allprice = typeBattle($allprice); +$allprice = Battle::getType($allprice, $thisBattle['smert'] == 1); + -if ($thisBattle['smert'] == 1) { - $allprice = [150, 150, 'Жесточайшее Сражение', 'Жесточайшее Сражение']; -} ?> diff --git a/modules_data/location/bsenter.php b/modules_data/location/bsenter.php index 579cda5a..000a018e 100644 --- a/modules_data/location/bsenter.php +++ b/modules_data/location/bsenter.php @@ -263,7 +263,7 @@ if ($u->room['file'] == 'bsenter') {
-

Топ 10 игроков (новая статистиика) турнир 5 уровней

+

Топ 10 игроков (новая статистиика) турнир 5 уровней

0 ORDER BY `win_bs` DESC LIMIT 10'); $i = 1; @@ -279,7 +279,7 @@ if ($u->room['file'] == 'bsenter') { $i++; } ?> -

Победители 10-ти предыдущих турниров для 5 уровней

+

Победители 10-ти предыдущих турниров для 5 уровней

0 ORDER BY `id` DESC LIMIT 10'); $i = 1; @@ -317,7 +317,7 @@ if ($u->room['file'] == 'bsenter') { $i++; } ?> -

Самый продолжительный турнир для 5 уровней

+

Самый продолжительный турнир для 5 уровней

0 ORDER BY `time_sf` DESC LIMIT 1'); $i = 1; diff --git a/modules_data/location/elka.php b/modules_data/location/elka.php index 93baa061..eaa868db 100644 --- a/modules_data/location/elka.php +++ b/modules_data/location/elka.php @@ -1,416 +1,429 @@ room['file']=='elka') -{ - - if(isset($_GET['elka_shar'])&& isset($_GET['shar_name'])) //Украшение Ёлки - { - $itd = mysql_fetch_array(mysql_query(' SELECT * FROM `items_users` WHERE `item_id` > 2723 AND `item_id` < 2741 AND `uid`= "'.$u->info['id'].'" AND `delete` = 0 AND `id`= "'.$_GET['elka_shar'].'" LIMIT 1 ')); - if (isset($itd['id'])){ - $itdu=mysql_query('UPDATE `items_users` SET `delete` ="'.time().'" WHERE `id` ="'.$_GET['elka_shar'].'" LIMIT 1 '); - if (isset($itdu)) - { - //eff Благословение Ёлки X - $effe = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`= "'.$u->info['id'].'" AND `delete` = 0 AND `id_eff`= 477 LIMIT 1')); - if (isset($effe['id'])) - { - $tdata=str_replace("add_hpAll=", "", $effe['data']); - $tdata=$tdata+5; - if ($tdata>500){$tdata=500;} - $newdata='add_hpAll='.$tdata; - $newname='Благословение Ёлки x'.($tdata/5); - - - - $effeadd=mysql_query('UPDATE `eff_users` SET `name` = "'.$newname.'",`data`="'.$newdata.'", `timeUse` = "'.time().'"WHERE `id` ="'.$effe['id'].'" '); - - if (isset($effeadd)) - { - echo "Вы получили Благословение Ёлки x".round($tdata/5)." " ; - } - - } - else - { - $effeadd=mysql_query('INSERT INTO `eff_users` - (`id`,`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) - VALUES - (NULL, "477", "'.$u->info['id'].'", "Благословение Ёлки x1", "add_hpAll=5", "110", "'.time().'", "0", "", "0", "0", "0", "", "1", "-1", "0", "0", "0", "", "0", "0", "0", "0", "0")'); - - if (isset($effeadd)) - { - echo "Вы получили Благословение Ёлки x1 " ; - } - } - - echo "Использовал: ".$_GET['shar_name']."" ; - - } - else - { - echo "Ошибка" ; - } - } - - } - - if(isset($_GET['take_gift']) && (date('m') == 12 || (date('m') == 1 && date('d') <= 8))) - { - //получаем свой новогодний подарок за текущий год addItem($id,$uid) - $smt = $u->testAction('`uid` = "'.$u->info['id'].'" AND `vars` = "take_gift_'.$dt.'" LIMIT 1',1); - if(!isset($smt['id'])) - { - $pid = \User\ItemsModel::addItem($pidid,$u->info['id']); - if($pid>0) - { - mysql_query('UPDATE `items_users` SET `gift` = "Администрация",`gtxt1` = "Поздравляем Вас с Новым Годом!" WHERE `id` = "'.$pid.'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'); - $u->addAction(time(),'take_gift_'.$dt.'',$u->info['city']); - echo 'Предмет находится у Вас в инвентаре, в разделе "прочее"'; - }else{ - echo 'Не удалось получить подарок...'; - } - }else{ - echo 'Вы уже получили свой подарок ;)'; - } - }elseif(isset($_GET['del'])) - { - if($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) - { - if($u->info['admin']==0) - { - $pInfo = ''.$u->info['align'].'|'.$u->info['clan'].'|'.$u->info['login'].'|'.$u->info['level'].'|'.$u->info['cityreg'].''; - }else{ - $pInfo = '1'; - } - mysql_query("UPDATE `elka` SET `delete`='".$pInfo."' WHERE `id`='".mysql_real_escape_string($_GET['del'])."'"); - } - }elseif(isset($_GET['use_cup'])) - { - $smt = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "use_cupNewYear" LIMIT 1',1); - if(!isset($smt['id'])) - { - $u->addAction(time(),'use_cupNewYear',''); - mysql_query('UPDATE `stats` SET `hpNow` = "'.$u->stats['hpAll'].'",`mpNow` = "'.$u->stats['mpAll'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'); - echo 'Успешно использован эликсир "Полное восстановление"'; - } - }elseif(isset($_POST['message'])) - { - $_POST['message'] = htmlspecialchars($_POST['message'],NULL); - if($_POST['message']!='') - { - $dy = 1; - if((date('n',time())==1 && date('j',time())<=15)) - { - $dy = 0; - } - $u->info['ET'] = $u->testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "send_elka" LIMIT 1',1); - if(isset($u->info['ET']['id'])) - { - echo 'Оставлять надписи на стволе ёлки можно не чаще одного раза в 10 минут'; - }else{ - $pInfo = ''.$u->info['align'].'|'.$u->info['clan'].'|'.$u->info['login'].'|'.$u->info['level'].'|'.$u->info['cityreg'].'|'.$u->info['id'].''; - mysql_query("INSERT INTO `elka` (`year`,`time`,`pers`,`text`,`city`) VALUES (".(date('Y',time())+$dy).",".time().",'".$pInfo."','".mysql_real_escape_string($_POST['message'])."','".$u->info['city']."'); "); - $u->addAction(time(),'send_elka',''); - } - } - } - - ?> - -
'.$re.''; } ?>
- - - -
Новогодняя елка !
-
- - -
- Подарки: -
- testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "use_cupNewYear" LIMIT 1',1); - ?> - /> - testAction('`uid` = "'.$u->info['id'].'" AND `time` > '.(time()-600).' AND `vars` = "take_gift'.$dt.'" LIMIT 1',1); - ?> - /> - -
-
-
- info['admin']>0) - // { - ?> -
- Наряжаем Ёлку: -
- 2723 AND `item_id` < 2741 AND `uid`= "'.$u->info['id'].'" AND `delete` = 0 LIMIT 1 ')); - if (isset($it['item_id'])) - { - $itt = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$it['item_id'].'" LIMIT 1')); - ?> - /> - -
-
-
- info['admin'].' > 0) ORDER BY `id` DESC')); - $i = $i[0]; - $d = ceil($i/21); - if($i>0) - { - if($d<13) - { - $j=0; - $pagesN = ''; - while($i>=0) - { - $i -= 21; - if($i!=0) - { - $j++; - $r2 = ''; - if($j<=$d) - { - if(isset($r)) - { - $r2 = '&r='.$r; - } - $jt = $j; - if($fpage==$j) - { - $jt = ''.$j.''; - } - $pagesN .= ' '.$jt.' '; - } - } - } - $pages .= ' '.$pagesN.' '; - }else{ - $j = $fpage-6; - $i = 0; - $pagesN = ''; - while($k<13) - { - if($j>0) - { - if($j<=$d) - { - $jt = $j; - if($fpage==$j) - { - $jt = ''.$j.''; - } - $pagesN .= ' '.$jt.' '; - } - $k++; - } - $j++; - } - $prpage = $fpage-12; - $nxpage = $fpage+12; - if($prpage<=0) - { - $prpage = 1; - } - if($nxpage>$d) - { - $nxpage = $d; - } - $_GET['d'] = (int)$_GET['d']; - if($fpage-7>0) - { - $pages .= '« ... '; - } - $pages .= ' '.$pagesN.' '; - if($fpage<$d-5) - { - $pages .= '... »'; - } - } - }else{ - $pages = ''; - } - ?> - Посетители оставили надписи на стволе елки:
-
- info['city'].'" AND (`delete` = "0" OR '.$u->info['admin'].' > 0) ORDER BY `time` DESC LIMIT '.$limit1.','.$limit2.''); - $page = floor((int)$_POST['page']); - if($page<1){ $page = 1; }elseif($page>300){ $page==300; } - while($pl = mysql_fetch_array($sp)) - { - $prs = explode('|',$pl['pers']); $pers = ''; - if($prs[0]!=0) - { - $pers .= ''; - } - if($prs[1]!=0) - { - $clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$prs[1].'" LIMIT 1')); - $pers .= ''; - } - $pers .= ''.$prs[2].'['.$prs[3].']'; - if($pl['delete']!='0') - { - if($pl['delete']=='1') - { - if($u->info['admin']>0) - { - $pl['text'] = 'Сообщение стерто ('.$pl['text'].')'; - }else{ - $pl['text'] = 'Сообщение стерто'; - } - }else{ - $prs = explode('|',$pl['delete']); $pers2 = ''; - if($prs[0]!=0) - { - $pers2 .= ''; - } - if($prs[1]!=0) - { - $clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="'.$prs[1].'" LIMIT 1')); - $pers2 .= ''; - } - $pers2 .= ''.$prs[2].'['.$prs[3].']'; - - if($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) - { - $pl['text'] = 'Сообщение стерто персонажем '.$pers2.' ('.$pl['text'].')'; - }else{ - $pl['text'] = 'Сообщение стерто персонажем '.$pers2.''; - } - } - } - if(($u->info['admin']>0 || ($u->info['align']>1 && $u->info['align']<2) || ($u->info['align']>3 && $u->info['align']<4)) && $pl['delete']=='0') - { - $dl = ' Стереть'; - }else{ - $dl = ''; - } - echo ''.date('d.m.Y H:i',$pl['time']).' '.$pers.' - '.$pl['text'].''.$dl.'
'; - } - ?> -
- Страницы:
-
- Оставить сообщение:   -
-
- - - - -
  - - - -
- - - - - - - - -
- - - - -
Центральная Площадь
- - - - -
-
-
- -room['file'] != 'elka') { + return; } -?> \ No newline at end of file +if (isset($_GET['elka_shar']) && isset($_GET['shar_name'])) //Украшение Ёлки +{ + $itd = mysql_fetch_array( + mysql_query(' SELECT * FROM `items_users` WHERE `item_id` > 2723 AND `item_id` < 2741 AND `uid`= "' . $u->info['id'] . '" AND `delete` = 0 AND `id`= "' . $_GET['elka_shar'] . '" LIMIT 1 ') + ); + if (isset($itd['id'])) { + $itdu = mysql_query('UPDATE `items_users` SET `delete` ="' . time() . '" WHERE `id` ="' . $_GET['elka_shar'] . '" LIMIT 1 '); + if (isset($itdu)) { + //eff Благословение Ёлки X + $effe = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE `uid`= "' . $u->info['id'] . '" AND `delete` = 0 AND `id_eff`= 477 LIMIT 1')); + if (isset($effe['id'])) { + $tdata = str_replace("add_hpAll=", "", $effe['data']); + $tdata = $tdata + 5; + if ($tdata > 500) { + $tdata = 500; + } + $newdata = 'add_hpAll=' . $tdata; + $newname = 'Благословение Ёлки x' . ($tdata / 5); + + $effeadd = mysql_query('UPDATE `eff_users` SET `name` = "' . $newname . '",`data`="' . $newdata . '", `timeUse` = "' . time() . '"WHERE `id` ="' . $effe['id'] . '" '); + + if (isset($effeadd)) { + echo "Вы получили Благословение Ёлки x" . round($tdata / 5) . " "; + } + + } else { + $effeadd = mysql_query( + 'INSERT INTO `eff_users` + (`id`,`id_eff`, `uid`, `name`, `data`, `overType`, `timeUse`, `timeAce`, `user_use`, `delete`, `v1`, `v2`, `img2`, `x`, `hod`, `bj`, `sleeptime`, `no_Ace`, `file_finish`, `tr_life_user`, `deactiveTime`, `deactiveLast`, `mark`, `bs`) + VALUES + (NULL, "477", "' . $u->info['id'] . '", "Благословение Ёлки x1", "add_hpAll=5", "110", "' . time( + ) . '", "0", "", "0", "0", "0", "", "1", "-1", "0", "0", "0", "", "0", "0", "0", "0", "0")' + ); + + if (isset($effeadd)) { + echo "Вы получили Благословение Ёлки x1 "; + } + } + + echo "Использовал: " . $_GET['shar_name'] . ""; + + } else { + echo "Ошибка"; + } + } + +} + +if (isset($_GET['take_gift']) && (date('m') == 12 || (date('m') == 1 && date('d') <= 8))) { + //получаем свой новогодний подарок за текущий год addItem($id,$uid) + $smt = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `vars` = "take_gift_' . $dt . '" LIMIT 1', 1); + if (!isset($smt['id'])) { + $pid = \User\ItemsModel::addItem($pidid, $u->info['id']); + if ($pid > 0) { + mysql_query('UPDATE `items_users` SET `gift` = "Администрация",`gtxt1` = "Поздравляем Вас с Новым Годом!" WHERE `id` = "' . $pid . '" AND `uid` = "' . $u->info['id'] . '" LIMIT 1'); + $u->addAction(time(), 'take_gift_' . $dt . '', $u->info['city']); + echo 'Предмет находится у Вас в инвентаре, в разделе "прочее"'; + } else { + echo 'Не удалось получить подарок...'; + } + } else { + echo 'Вы уже получили свой подарок ;)'; + } +} elseif (isset($_GET['del'])) { + if ($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) { + if ($u->info['admin'] == 0) { + $pInfo = '' . $u->info['align'] . '|' . $u->info['clan'] . '|' . $u->info['login'] . '|' . $u->info['level'] . '|' . $u->info['cityreg'] . ''; + } else { + $pInfo = '1'; + } + mysql_query("UPDATE `elka` SET `delete`='" . $pInfo . "' WHERE `id`='" . mysql_real_escape_string($_GET['del']) . "'"); + } +} elseif (isset($_GET['use_cup'])) { + $smt = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "use_cupNewYear" LIMIT 1', 1); + if (!isset($smt['id'])) { + $u->addAction(time(), 'use_cupNewYear', ''); + mysql_query('UPDATE `stats` SET `hpNow` = "' . $u->stats['hpAll'] . '",`mpNow` = "' . $u->stats['mpAll'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + echo 'Успешно использован эликсир "Полное восстановление"'; + } +} elseif (isset($_POST['message'])) { + $_POST['message'] = htmlspecialchars($_POST['message'], null); + if ($_POST['message'] != '') { + $dy = 1; + if ((date('n', time()) == 1 && date('j', time()) <= 15)) { + $dy = 0; + } + $u->info['ET'] = $u->testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "send_elka" LIMIT 1', 1); + if (isset($u->info['ET']['id'])) { + echo 'Оставлять надписи на стволе ёлки можно не чаще одного раза в 10 минут'; + } else { + $pInfo = '' . $u->info['align'] . '|' . $u->info['clan'] . '|' . $u->info['login'] . '|' . $u->info['level'] . '|' . $u->info['cityreg'] . '|' . $u->info['id'] . ''; + mysql_query( + "INSERT INTO `elka` (`year`,`time`,`pers`,`text`,`city`) VALUES (" . (date('Y', time()) + $dy) . "," . time() . ",'" . $pInfo . "','" . mysql_real_escape_string( + $_POST['message'] + ) . "','" . $u->info['city'] . "'); " + ); + $u->addAction(time(), 'send_elka', ''); + } + } +} + +?> + +
' . $re . ''; + } ?>
+ + + + +
+
Новогодняя елка ! +
+
+ + +
+ Подарки: +
+ testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "use_cupNewYear" LIMIT 1', 1); + ?> + /> + testAction('`uid` = "' . $u->info['id'] . '" AND `time` > ' . (time() - 600) . ' AND `vars` = "take_gift' . $dt . '" LIMIT 1', 1); + ?> + /> + +
+
+
+ info['admin']>0) + // { + ?> +
+ Наряжаем Ёлку: +
+ 2723 AND `item_id` < 2741 AND `uid`= "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 1 ')); + if (isset($it['item_id'])) { + $itt = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . $it['item_id'] . '" LIMIT 1')); + ?> + /> + +
+
+
+ info['admin'] . ' > 0) ORDER BY `id` DESC')); + $i = $i[0]; + $d = ceil($i / 21); + if ($i > 0) { + if ($d < 13) { + $j = 0; + $pagesN = ''; + while ($i >= 0) { + $i -= 21; + if ($i != 0) { + $j++; + $r2 = ''; + if ($j <= $d) { + if (isset($r)) { + $r2 = '&r=' . $r; + } + $jt = $j; + if ($fpage == $j) { + $jt = '' . $j . ''; + } + $pagesN .= ' ' . $jt . ' '; + } + } + } + $pages .= ' ' . $pagesN . ' '; + } else { + $j = $fpage - 6; + $i = 0; + $pagesN = ''; + while ($k < 13) { + if ($j > 0) { + if ($j <= $d) { + $jt = $j; + if ($fpage == $j) { + $jt = '' . $j . ''; + } + $pagesN .= ' ' . $jt . ' '; + } + $k++; + } + $j++; + } + $prpage = $fpage - 12; + $nxpage = $fpage + 12; + if ($prpage <= 0) { + $prpage = 1; + } + if ($nxpage > $d) { + $nxpage = $d; + } + $_GET['d'] = (int)$_GET['d']; + if ($fpage - 7 > 0) { + $pages .= '« ... '; + } + $pages .= ' ' . $pagesN . ' '; + if ($fpage < $d - 5) { + $pages .= '... »'; + } + } + } else { + $pages = ''; + } + ?> + Посетители оставили надписи на стволе елки:
+
+ info['city'] . '" AND (`delete` = "0" OR ' . $u->info['admin'] . ' > 0) ORDER BY `time` DESC LIMIT ' . $limit1 . ',' . $limit2 . '' + ); + $page = floor((int)$_POST['page']); + if ($page < 1) { + $page = 1; + } elseif ($page > 300) { + $page == 300; + } + while ($pl = mysql_fetch_array($sp)) { + $prs = explode('|', $pl['pers']); + $pers = ''; + if ($prs[0] != 0) { + $pers .= ''; + } + if ($prs[1] != 0) { + $clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="' . $prs[1] . '" LIMIT 1')); + $pers .= ''; + } + $pers .= '' . $prs[2] . '[' . $prs[3] . ']'; + if ($pl['delete'] != '0') { + if ($pl['delete'] == '1') { + if ($u->info['admin'] > 0) { + $pl['text'] = 'Сообщение стерто (' . $pl['text'] . ')'; + } else { + $pl['text'] = 'Сообщение стерто'; + } + } else { + $prs = explode('|', $pl['delete']); + $pers2 = ''; + if ($prs[0] != 0) { + $pers2 .= ''; + } + if ($prs[1] != 0) { + $clanPrs = mysql_fetch_array(mysql_query('SELECT * FROM `clan` WHERE `id`="' . $prs[1] . '" LIMIT 1')); + $pers2 .= ''; + } + $pers2 .= '' . $prs[2] . '[' . $prs[3] . ']'; + + if ($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) { + $pl['text'] = 'Сообщение стерто персонажем ' . $pers2 . ' (' . $pl['text'] . ')'; + } else { + $pl['text'] = 'Сообщение стерто персонажем ' . $pers2 . ''; + } + } + } + if (($u->info['admin'] > 0 || ($u->info['align'] > 1 && $u->info['align'] < 2) || ($u->info['align'] > 3 && $u->info['align'] < 4)) && $pl['delete'] == '0') { + $dl = ' Стереть'; + } else { + $dl = ''; + } + echo '' . date('d.m.Y H:i', $pl['time']) . ' ' . $pers . ' - ' . $pl['text'] . '' . $dl . '
'; + } + ?> +
+ Страницы:
+
+ Оставить сообщение:   +
+
+ + + + + +
  + + + + +
+ + + + + + + + + +
+ + + + + +
+ Центральная Площадь
+
+ + + + + +
+ +
+
+
+
+
+
+
+ + + diff --git a/modules_data/location/novich.php b/modules_data/location/novich.php index 4652c86f..8e01dac2 100644 --- a/modules_data/location/novich.php +++ b/modules_data/location/novich.php @@ -22,7 +22,7 @@ if($u->room['file']=='novich') $ids = ''; $map_locs = array(); - $spm2 = mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id_dng` = "106"'); + $spm2 = mysql_query('SELECT `id`,`x`,`y` FROM `dungeon_map` WHERE `id_dng` = 106'); while( $plm2 = mysql_fetch_array( $spm2 ) ) { $map_locs[] = array($plm2['x'],$plm2['y']); } @@ -41,7 +41,7 @@ if($u->room['file']=='novich') //Добавляем ботов и обьекты в пещеру $zid с for_dn = $dungeon['id'] //Добавляем ботов $vls = ''; - $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "106"'); + $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = 106'); while( $pl = mysql_fetch_array( $sp ) ) { if( $pl['id_bot'] == 0 && $pl['bot_group'] !=''){ $bots = explode( ',', $pl['bot_group'] ); @@ -54,7 +54,7 @@ if($u->room['file']=='novich') $ins1 = mysql_query('INSERT INTO `dungeon_bots` (`dn`,`id_bot`,`colvo`,`items`,`x`,`y`,`dialog`,`atack`,`go_bot`,`noatack`) VALUES '.$vls.''); //Добавляем обьекты $vls = ''; - $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = "106"'); + $sp = mysql_query('SELECT * FROM `dungeon_obj` WHERE `for_dn` = 106'); while($pl = mysql_fetch_array($sp)) { $vls .= '("'.$zid.'","'.$pl['name'].'","'.$pl['img'].'","'.$pl['x'].'","'.$pl['y'].'","'.$pl['action'].'","'.$pl['type'].'","'.$pl['w'].'","'.$pl['h'].'","'.$pl['s'].'","'.$pl['s2'].'","'.$pl['os1'].'","'.$pl['os2'].'","'.$pl['os3'].'","'.$pl['os4'].'","'.$pl['type2'].'","'.$pl['top'].'","'.$pl['left'].'","'.$pl['date'].'"),'; diff --git a/modules_data/location/objaga.php b/modules_data/location/objaga.php index ba456c17..79ad30ba 100644 --- a/modules_data/location/objaga.php +++ b/modules_data/location/objaga.php @@ -417,7 +417,7 @@ if ($u->info['admin'] > 0) { - @@ -458,7 +458,7 @@ if ($u->info['admin'] > 0) { Арендовать
- @@ -479,7 +479,7 @@ if ($u->info['admin'] > 0) {  • Размер сундука: вещей
 • Сувениры: шт.
- '; } ?>  • Койка
@@ -498,7 +498,7 @@ if ($u->info['admin'] > 0) { Смена аренды, оплаченной зубами на кредитную аренду запрещена.
Количество вещей, сувениров и животных на вашем складе не должно превышать допустимое значение для выбранного арендуемого помещения.
- info['admin'] > 0) {
- info['admin'] > 0) {
- @@ -832,7 +832,7 @@ if ($u->info['admin'] > 0) { echo $r; ?> - @@ -851,7 +851,7 @@ if ($u->info['admin'] > 0) { } ?> - ' . $cage2['name'] . ' [' . $cage2['level'] . '] '; } else { @@ -875,7 +875,7 @@ if ($u->info['admin'] > 0) { - @@ -892,7 +892,7 @@ if ($u->info['admin'] > 0) {
- info['admin'] > 0) { • Койка
Сменить помещение - @@ -929,7 +929,7 @@ if ($u->info['admin'] > 0) { Сменить помещение - @@ -944,7 +944,7 @@ if ($u->info['admin'] > 0) { Сменить помещение - '; } @@ -998,8 +998,8 @@ if ($u->info['admin'] > 0) { Общ. Этаж 2 - - info['room'] == '218' and $ar_lvl >= 2 and $sleep_mod == 0) { ?> + + info['room'] == '218' and $ar_lvl >= 2 and $sleep_mod == 0) { ?> room['file'] == 'znahar') { - ?> - - - - - - - - - -
-
Комната Знахаря
-
-
- Запахи трав наполняют помещение, непонятные и пугающие предметы скрываются в пляшущих тенях...
- Говорят, здесь можно изменить свою судьбу. - Стать кем-то иным... кем раньше был лишь в мечтах...


- Деньги: info['money']; ?> кр.
- Бесплатных перераспределений: Сегодня - неограничено!
-
- info['stats']); - $vinos = [ - /* level,summvinos*/ - "0" => 3, - "1" => 4, - "2" => 5, - "3" => 6, - "4" => 7, - "5" => 8, - "6" => 9, - "7" => 10, - "8" => 11, - "9" => 13, - "10" => 16, - "11" => 21, - "12" => 41, - "21" => 41, - ]; - #------------------Запросы и прочее - ?> - - - + +
- - - - - -
- + function ghideshow() { + top.fullhideshow(mmoves3); + } + + + + + +
+ + + - -
+
Комната Знахаря
+
+
+ Запахи трав наполняют помещение, непонятные и пугающие предметы скрываются в пляшущих тенях...
+ Говорят, здесь можно изменить свою судьбу. + Стать кем-то иным... кем раньше был лишь в мечтах...


+ Деньги: info['money']; ?> кр.
+ Бесплатных перераспределений: Сегодня - неограничено!
+
+ info['stats']); + $vinos = [ + /* level,summvinos*/ + "0" => 3, + "1" => 4, + "2" => 5, + "3" => 6, + "4" => 7, + "5" => 8, + "6" => 9, + "7" => 10, + "8" => 11, + "9" => 13, + "10" => 16, + "11" => 21, + "12" => 41, + "21" => 41, + ]; + #------------------Запросы и прочее + ?> + + + - -
+ + + + + + - -
+ - - - + - + - - - - -
Этаж 2
Торговый Зал
-
- -
- - -
- - - - - - - - -
Характеристики Пристрастия Прочее
- - - -


- -
У вас нет пристрастий
-
-

- Навыки владения оружием и магией
+ movedonebutton.disabled = (!!(freepr || moves == 0)); + document.all["prmoves"].innerHTML = moves + ((freemoves < moves) ? " за " + (movecost * (moves - freemoves)) + " кр." : (moves ? " / бесплатно" : "")); + } -
' name='dropmastery'>' - onclick="return confirm('Вы действительно хотите сбросить умения?')"> -
-
- Особенности персонажа
-
' name='dropperks'> ' - onclick="return confirm('Вы действительно хотите сбросить особенности?')"> -
-
- Характеристики
-
' name='dropstats'>' - onclick="return confirm('Вы действительно хотите сбросить все характеристики до минимального уровня?')"> -
-
- Каждые 7 дней после последнего использования комнаты знахаря вы получаете 1 бесплатное перераспределение, но не более 15
- Исцеление пристрастия, cброс умений или особенностей стоят 5 перераспределений
- Изменение Характеристик досрочно завершает некоторые эффекты, например эффект свитка Жажда Жизни -
-
-
-
- -
- - - \ No newline at end of file + function movedone() { + if (freepr) { + return; + } + let s = ""; + for (let j = 0; j < pr.length; j += 6) { + if (pr[j + 5]) { + s += "&" + pr[j + 1] + "=" + pr[j + 5]; + } + } + if (!s) { + return + } + location = "?movestat=0.&sd4=info['id']?>" + s; + } + + let s = ""; + for (let i = 0; i < pr.length; i += 6) { + if (pr[i + 2] != -1) { + s += ""; + s += ''; + } + } + s += "
" + getprstr(i) + " ' + s += '
"; + s += "(осталось: 0, распределений: 0)
"; + document.write(s); + + +
+


+ +
У вас нет пристрастий
+
+

+ Навыки владения оружием и магией
+
+ ' name='dropmastery'> + ' + onclick="return confirm('Вы действительно хотите сбросить умения?')"> +
+
+ Особенности персонажа
+
+ ' name='dropperks'> + ' + onclick="return confirm('Вы действительно хотите сбросить особенности?')"> +
+
+ Характеристики
+
+ ' name='dropstats'> + ' + onclick="return confirm('Вы действительно хотите сбросить все характеристики до минимального уровня?')"> +
+
+Каждые 7 дней после последнего использования комнаты знахаря вы получаете 1 бесплатное перераспределение, но не более 15
+ Исцеление пристрастия, cброс умений или особенностей стоят 5 перераспределений
+ Изменение Характеристик досрочно завершает некоторые эффекты, например эффект свитка Жажда Жизни +
+
+
+
+ + diff --git a/modules_data/stats_inv.php b/modules_data/stats_inv.php index 2ed11842..cc717b40 100644 --- a/modules_data/stats_inv.php +++ b/modules_data/stats_inv.php @@ -19,8 +19,20 @@ if (isset($_GET['showmenu'])) { mysql_query('UPDATE `stats` SET `showmenu`="' . $u->info['showmenu'] . '" WHERE `id`="' . $u->info['id'] . '"'); } } + +$rz0 = ''; +$rz1 = ''; +$rz2 = ''; +$rz3 = ''; +$rz4 = ''; +$rz5 = ''; +$expbase = number_format($u->stats['levels']['exp'], 0, ",", " "); +$expbase = '(
' . $expbase . ')'; + +$repovo = $u->rep['rep3'] - $u->rep['rep3_buy']; + ?> - - - + + - + +   + + + + +
+ Опыт:  + + + info['exp'], 0, ",", " ") ?> + +
-$rz0 = ''; -$rz1 = ''; -$rz2 = ''; -$rz3 = ''; -$rz4 = ''; -$rz5 = ''; -$expbase = number_format($u->stats['levels']['exp'], 0, ",", " "); -if ($expbase - 1 == $u->info['exp'] && $c['nolevel']) { - //Проверяем блок опыта - $tlus = mysql_fetch_array( - mysql_query('SELECT COUNT(*) FROM `users` WHERE `real` = 1 AND `level` = "' . $u->info['level'] . '" LIMIT 1') - ); - if ($tlus[0] < $u->info['level'] * 10) { - $expbase = '' . $expbase . ''; - } - $expbase = '(' . $expbase . ')'; - if (((1 + $u->info['level'] * 10) - $tlus[0]) > 0) { - $expbase .= ' [?]'; - } -} else { - $expbase = '(' . $expbase . ')'; -} -if ($u->info['exp'] == 12499 && $c['infinity5level']) { - $trks5 = '

Для получения следующего уровня вам необходим Кристалл Вечности
'; -} -$repovo = $u->rep['rep3'] - $u->rep['rep3_buy']; -echo ' - - - - - + // + ?> + + +
 
- -
- Опыт: ' . number_format( - $u->info['exp'], 0, ",", " " - ) . '
' . $trks5 . ' - '; -if ($u->info['expstopu'] < 3 && $u->info['exp'] == $c['expstop']) { - echo ' + info['expstopu'] < 3 && $u->info['exp'] == $c['expstop']) { + echo ' Квест 12й:  ' . ($u->info['expstopu'] + 1) . '/3 статия'; - echo '
'; - - /* - takelevelplease - */ -} -echo ' + } + echo ' Бои: ' . number_format( - $u->info['win'], 0, ",", " " - ) . ' info['win'], 0, ",", " " + ) . '">' . number_format( + $u->info['win'], 0, ",", " " + ) . '   ' . number_format( - $u->info['lose'], 0, ",", " " - ) . ' Поражений: ' . number_format($u->info['lose'], 0, info['lose'], 0, ",", " " + ) . '">' . number_format( + $u->info['lose'], 0, ",", " " + ) . ' Поражений: ' . number_format($u->info['lose'], 0,   ' . number_format( - $u->info['nich'], 0, ",", " " - ) . ' Ничьих: ' . number_format($u->info['nich'], 0, info['nich'], 0, ",", " " + ) . '">' . number_format( + $u->info['nich'], 0, ",", " " + ) . ' Ничьих: ' . number_format($u->info['nich'], 0,
Деньги: ' . $u->info['money'] . ' кр.
@@ -194,589 +180,585 @@ echo ' '; -if ($u->stats['pbe'] > 0) { - echo 'Бонус покупателя: ' . $u->stats['pbe'] . ' уровень'; - $nowby = mysql_fetch_array( - mysql_query( - 'SELECT `good` FROM `pay_operation` WHERE `uid` = "' . $u->info['id'] . '" AND `good` > 0 ORDER BY `good` DESC LIMIT 1' - ) - ); - if ($u->stats['pbe'] > 0 && date('d.m.Y') != date('d.m.Y', $nowby['good'])) { - echo '
(Совершите покупку ЕКР чтобы сохранить и увеличить бонус покупателя)
'; - } - echo '
'; -} - -if ($u->info['ability'] > 0 || ($u->info['skills'] > 0 && $u->info['level'] > 0)) { - echo ' + Способности
'; -} - -if ($_GET['propusk'] == 1) { - $usrdata = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); - if ($usrdata['money2'] >= 600 && $u->info['level'] == 11) { - mysql_query('UPDATE `users` SET `money2` = `money2` - 600 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - mysql_query( - 'UPDATE `stats` SET `exp`= 150000000, `expstopu` = 3 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' - ); - $er8 = 'Все прошло успешно!!!'; - die(''); - } else { - $er8 = 'Недостаточно средств!!!'; - } -} - -//Получение уровня задания -if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] && !isset($u->info['noreal']) && $c['bonussocial']) { - /* -[1] Нужно докачаться на клоне до 1 уровня. -[2]-[3]-[4] Нужно подтвердить e-mail чтобы получить со 2 по 4 уровень на выбор. -[5]-[6] Нужно подтвердить страницу ВКонтакте чтобы получить 5 или 6 уровень на выбор. -[7] Нужно привести 1 друга. -[8] Нужно привести 3 друзей и провести 3 хаота. -[9] Нужно привести 5 друзей и провести 50 хаотов. -[10] Нужно привести 7 друзей и провести 100 хаотов. - */ - $mxlvl = mysql_fetch_array( - mysql_query( - 'SELECT `id`,`level` FROM `users` WHERE `real` = 1 AND `admin` = 0 AND `banned` = 0 ORDER BY `level` DESC LIMIT 1' - ) - ); - if (isset($mxlvl['id']) && $mxlvl['level'] > $u->info['level'] + 1) { - $gd = 1; - $gb = 1; - $sl = $u->info['level']; - $ml = $u->info['level'] + 1; - // - if (isset($_GET['takelevelplease'])) { - $er8 = ''; - // - if ($ml <= 1) { - $er8 = 'Качайтесь на клоне до 1 уровня.'; - } elseif ($ml <= 4) { - $mcf = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mailconfirm" AND `ok` > 0 LIMIT 1' - ) - ); - if (!isset($mcf['id'])) { - $er8 = 'Вы не подтвердили E-mail.'; - } else { - if ($ml == 2) { - mysql_query('UPDATE `stats` SET `exp` = 420 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - } elseif ($ml == 3) { - mysql_query('UPDATE `stats` SET `exp` = 1300 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - } elseif ($ml == 4) { - mysql_query('UPDATE `stats` SET `exp` = 2500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - } - $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; - $u->info['level']++; - $ml++; - } - } elseif ($ml <= 6) { - $mcf = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND (`val` = "vkauth" OR `val` = "fbauth" OR `val` = "okauth") LIMIT 1' - ) - ); - if (!isset($mcf['id'])) { - $er8 = 'Вы не подтвердили страницу в социальной сети.'; - } else { - $itmsv = mysql_fetch_array( - mysql_query( - 'SELECT `id` FROM `items_users` WHERE `item_id` = 1204 AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 AND `uid` = "' . $u->info['id'] . '" LIMIT 1' - ) - ); - if ($ml == 5) { - mysql_query('UPDATE `stats` SET `exp` = 5000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - } elseif ($ml == 6) { - mysql_query('UPDATE `stats` SET `exp` = 12500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - } - if ($ml == 6 && !isset($itmsv['id']) && $c['infinity5level'] == true) { - $er8 = 'Требуется Кристалл Вечности!'; - } else { - if ($ml == 6) { + if ($u->stats['pbe'] > 0) { + echo 'Бонус покупателя: ' . $u->stats['pbe'] . ' уровень'; + $nowby = mysql_fetch_array( mysql_query( - 'INSERT INTO `mini_actions` ( - `uid`,`time`,`val`,`var` - ) VALUES ( - "' . $u->info['id'] . '","' . time() . '","mbtnlvl6","0" - )' - ); + 'SELECT `good` FROM `pay_operation` WHERE `uid` = "' . $u->info['id'] . '" AND `good` > 0 ORDER BY `good` DESC LIMIT 1' + ) + ); + if ($u->stats['pbe'] > 0 && date('d.m.Y') != date('d.m.Y', $nowby['good'])) { + echo '
(Совершите покупку ЕКР чтобы сохранить и увеличить бонус покупателя)
'; } - $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; - $u->info['level']++; - $ml++; + echo '
'; } - } - } elseif ($ml <= 7) { - $tstlvl = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mbtnlvl6" LIMIT 1' - ) - ); - $btls[0] = $u->info['win']; - if ($btls[0] >= 50) { - // - mysql_query('UPDATE `stats` SET `exp` = 30000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - // - mysql_query( - 'INSERT INTO `mini_actions` ( + + if ($u->info['ability'] > 0 || ($u->info['skills'] > 0 && $u->info['level'] > 0)) { + echo ' + Способности
'; + } + + if ($_GET['propusk'] == 1) { + $usrdata = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1')); + if ($usrdata['money2'] >= 600 && $u->info['level'] == 11) { + mysql_query('UPDATE `users` SET `money2` = `money2` - 600 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + mysql_query( + 'UPDATE `stats` SET `exp`= 150000000, `expstopu` = 3 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1' + ); + $er8 = 'Все прошло успешно!!!'; + die(''); + } else { + $er8 = 'Недостаточно средств!!!'; + } + } + + //Получение уровня задания + if ($u->info['level'] >= 0 && $u->info['inTurnir'] == 0 && $c['bonuslevel'] && !isset($u->info['noreal']) && $c['bonussocial']) { + /* + [1] Нужно докачаться на клоне до 1 уровня. + [2]-[3]-[4] Нужно подтвердить e-mail чтобы получить со 2 по 4 уровень на выбор. + [5]-[6] Нужно подтвердить страницу ВКонтакте чтобы получить 5 или 6 уровень на выбор. + [7] Нужно привести 1 друга. + [8] Нужно привести 3 друзей и провести 3 хаота. + [9] Нужно привести 5 друзей и провести 50 хаотов. + [10] Нужно привести 7 друзей и провести 100 хаотов. + */ + $mxlvl = mysql_fetch_array( + mysql_query( + 'select id,level from users where `real` = 1 and admin = 0 and banned = 0 order by level desc limit 1' + ) + ); + if (isset($mxlvl['id']) && $mxlvl['level'] > $u->info['level'] + 1) { + $gd = 1; + $gb = 1; + $sl = $u->info['level']; + $ml = $u->info['level'] + 1; + // + if (isset($_GET['takelevelplease'])) { + $er8 = ''; + // + if ($ml <= 1) { + $er8 = 'Качайтесь на клоне до 1 уровня.'; + } elseif ($ml <= 4) { + $mcf = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mailconfirm" AND `ok` > 0 LIMIT 1' + ) + ); + if (!isset($mcf['id'])) { + $er8 = 'Вы не подтвердили E-mail.'; + } else { + if ($ml == 2) { + mysql_query('UPDATE `stats` SET `exp` = 420 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } elseif ($ml == 3) { + mysql_query('UPDATE `stats` SET `exp` = 1300 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } elseif ($ml == 4) { + mysql_query('UPDATE `stats` SET `exp` = 2500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; + $u->info['level']++; + $ml++; + } + } elseif ($ml <= 6) { + $mcf = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND (`val` = "vkauth" OR `val` = "fbauth" OR `val` = "okauth") LIMIT 1' + ) + ); + if (!isset($mcf['id'])) { + $er8 = 'Вы не подтвердили страницу в социальной сети.'; + } else { + $itmsv = mysql_fetch_array( + mysql_query( + 'SELECT `id` FROM `items_users` WHERE `item_id` = 1204 AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 AND `uid` = "' . $u->info['id'] . '" LIMIT 1' + ) + ); + if ($ml == 5) { + mysql_query('UPDATE `stats` SET `exp` = 5000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } elseif ($ml == 6) { + mysql_query('UPDATE `stats` SET `exp` = 12500 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + } + + if ($ml == 6) { + mysql_query( + 'INSERT INTO `mini_actions` (`uid`,`time`,`val`,`var`) VALUES ("' . $u->info['id'] . '","' . time() . '","mbtnlvl6","0")' + ); + } + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; + $u->info['level']++; + $ml++; + + } + } elseif ($ml <= 7) { + $tstlvl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mbtnlvl6" LIMIT 1' + ) + ); + $btls[0] = $u->info['win']; + if ($btls[0] >= 50) { + // + mysql_query('UPDATE `stats` SET `exp` = 30000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + // + mysql_query( + 'INSERT INTO `mini_actions` ( `uid`,`time`,`val`,`var` ) VALUES ( "' . $u->info['id'] . '","' . time() . '","mbtnlvl7","0" )' - ); - $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; - $u->info['level']++; - $ml++; - } else { - $er8 = 'Вы не провели несколько боев (Осталось ' . (50 - $btls[0]) . ' побед).'; - } - } elseif ($ml <= 8) { - $tstlvl = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mbtnlvl7" LIMIT 1' - ) - ); - $refs = mysql_fetch_array( - mysql_query( - 'SELECT COUNT(*) FROM `users` WHERE `level` >= 5 AND `timereg` > "' . (0 + $tstlvl['time']) . '" AND `real` = 1 AND `host_reg` = "' . $u->info['id'] . '" LIMIT 1' - ) - ); - $btls = mysql_fetch_array( - mysql_query( - 'SELECT COUNT(*) FROM `battle` WHERE `time_start` > "' . (0 + $tstlvl['time']) . '" AND `razdel` = 5 AND `id` IN (SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" AND `time` > "' . (0 + $tstlvl['time']) . '") LIMIT 1' - ) - ); - // - if ($refs[0] < 3 || $btls[0] < 3) { - $er8 = 'Вы не пригласили ' . (0 + $refs[0]) . '/3 друзей или не провели ' . (0 + $btls[0]) . '/3 хаота.'; - } else { - // - mysql_query('UPDATE `stats` SET `exp` = 300000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); - // - mysql_query( - 'INSERT INTO `mini_actions` ( + ); + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; + $u->info['level']++; + $ml++; + } else { + $er8 = 'Вы не провели несколько боев (Осталось ' . (50 - $btls[0]) . ' побед).'; + } + } elseif ($ml <= 8) { + $tstlvl = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mbtnlvl7" LIMIT 1' + ) + ); + $refs = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `users` WHERE `level` >= 5 AND `timereg` > "' . (0 + $tstlvl['time']) . '" AND `real` = 1 AND `host_reg` = "' . $u->info['id'] . '" LIMIT 1' + ) + ); + $btls = mysql_fetch_array( + mysql_query( + 'SELECT COUNT(*) FROM `battle` WHERE `time_start` > "' . (0 + $tstlvl['time']) . '" AND `razdel` = 5 AND `id` IN (SELECT `battle_id` FROM `battle_last` WHERE `uid` = "' . $u->info['id'] . '" AND `time` > "' . (0 + $tstlvl['time']) . '") LIMIT 1' + ) + ); + // + if ($refs[0] < 3 || $btls[0] < 3) { + $er8 = 'Вы не пригласили ' . (0 + $refs[0]) . '/3 друзей или не провели ' . (0 + $btls[0]) . '/3 хаота.'; + } else { + // + mysql_query('UPDATE `stats` SET `exp` = 300000 WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); + // + mysql_query( + 'INSERT INTO `mini_actions` ( `uid`,`time`,`val`,`var` ) VALUES ( "' . $u->info['id'] . '","' . time() . '","mbtnlvl8","0" )' - ); - $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; - $u->info['level']++; - $ml++; - } - } elseif ($ml <= 9) { - $er8 = 'Вы не пригласили 5 друзей или не провели 50 хаотов.'; - $er8 = 'Доступ закрыт!'; - } elseif ($ml <= 10) { - $er8 = 'Вы не пригласили 7 друзей или не провели 100 хаотов.'; - $er8 = 'Доступ закрыт!'; - } else { - $er8 = 'Что-то тут не так...'; - $er8 = 'Доступ закрыт!'; - } - // - if ($sl != $u->info['level']) { + ); + $er8 = 'Вы успешно получили ' . $ml . ' уровень!'; + $u->info['level']++; + $ml++; + } + } elseif ($ml <= 9) { + $er8 = 'Вы не пригласили 5 друзей или не провели 50 хаотов.'; + $er8 = 'Доступ закрыт!'; + } elseif ($ml <= 10) { + $er8 = 'Вы не пригласили 7 друзей или не провели 100 хаотов.'; + $er8 = 'Доступ закрыт!'; + } else { + $er8 = 'Что-то тут не так...'; + $er8 = 'Доступ закрыт!'; + } + // + if ($sl != $u->info['level']) { - die(''); - } - if (isset($mxlvl['id']) && ($mxlvl['level'] > $ml + 1 || $u->info['admin'] > 0)) { - // - } else { - if ($sl != $u->info['level']) { - $gd = 0; - } - } - } - // - if ($ml <= 1) { - $zd = 'Нужно докачаться на клоне до 1 уровня.'; - $gb = 1; - } elseif ($ml <= 4) { - $zd = 'Нужно подтвердить E-mail, чтобы получить 2-4 уровень.'; - $gb = 1; - } elseif ($ml <= 6) { - $zd = 'Нужно подтвердить страницу в социальной сети, чтобы получить 5-6 уровень.'; - $gb = 1; - } elseif ($ml <= 7) { - $zd = 'Нужно выиграть 50 боев, чтобы получить 7 уровень.'; - $gb = 1; - } elseif ($ml <= 8) { - $zd = 'Нужно привести 3 друзей по реферальной ссылке и провести 3 хаотичных поединка, чтобы получить 8 уровень.'; - $gb = 1; - } elseif ($ml <= 9) { - $zd = 'Нужно привести 5 друзей по реферальной ссылке и провести 50 хаотичных поединков, чтобы получить 9 уровень.'; - $gb = 1; - } elseif ($ml <= 10) { - $zd = 'Нужно привести 7 друзей по реферальной ссылке и провести 100 хаотичных поединков, чтобы получить 10 уровень.'; - $gb = 1; - } else { - $zd = ''; - $gb = 0; - } - // - if ($gd == 1) { - // - if ($zd != '') { - echo '
Необходимо выполнить задание:
' . $zd . '
'; - } else { - echo '
'; - } - if ($er8 != '') { - echo '
' . $er8 . '
'; - } - // - if ($gb == 1 && $ml > 1) { - //Получаем - echo '
'; - } - // - } - } -} - -//Бонус за мыло, контакт -if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { - $mcf = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mailconfirm" LIMIT 1' - ) - ); - if ((isset($mcf['id']) && $mcf['ok'] == 0) || !isset($mcf['id'])) { - if (isset($_GET['confmail'])) { - // - $gd = 0; - $zdml = 3600; //час - if (isset($mcf['id']) && $mcf['time'] > time() - $zdml) { - echo '
Нельзя подтверждать эл.почту так часто. Осталось ' . Conversion::secondsToTimeout( - $mcf['time'] + $zdml - time() - ) . '
'; - $gd = 1; - } elseif (!preg_match( - '#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $_GET['confmail'] - )) { - echo '
Вы указали явно ошибочный E-mail.
'; - $gd = 1; - } - - if ($gd == 0) { - if (isset($mcf['id'])) { - mysql_query( - 'UPDATE `mini_actions` SET `time` = "' . time() . '",`var` = "' . mysql_real_escape_string( - $_GET['confmail'] - ) . '" WHERE `id` = "' . $mcf['id'] . '" LIMIT 1' - ); - } else { - mysql_query( - 'INSERT INTO `mini_actions` (`uid`,`time`,`val`,`var`,`ok`) VALUES ( - "' . $u->info['id'] . '","' . time() . '","mailconfirm","' . mysql_real_escape_string( - $_GET['confmail'] - ) . '","0" - )' - ); - } - function sendmail($message, $keymd5, $mail) - { - global $u; - // - $md5mail = md5($keymd5 . '+' . $mail); - // - $msgtxt = 'Для подтверждения вашего E-mail у персонажа ' . $u->info['login'] . ' перейдите по ссылке:'; - $msgtxt .= ' Нажмите тут (/mail/key=' . $md5mail . '&mail=' . $mail . ')'; - $msgtxt .= '
Переходя по ссылке, вы подтверждаете свое желание получать игровые новости.'; - $msgtxt .= '
Если вы не имеете отношения к нашей игре и не хотите получать письма, тогда перейдите по этой ссылке: Нажмите тут (/mail/key=' . $md5mail . '&mail=' . $mail . '&cancel)

- - - - - - -

С уважением,
Администрация Легендарного Бойцовского Клуба'; - // - $headers = "MIME-Version: 1.0\r\n"; - $headers .= "Content-type: text/html; charset=utf-8\r\n"; - $headers .= "From: Старый Бойцовский Клуб \r\n"; - $to = $mail; - // - $subject = 'Бойцовский Клуб: ' . $u->info['login'] . ' - Подтверждение вашей эл.почты'; - // - if (mail($to, $subject, $msgtxt, $headers) == true) { - return true; - } else { - return false; + die(''); + } + if (isset($mxlvl['id']) && ($mxlvl['level'] > $ml + 1 || $u->info['admin'] > 0)) { + // + } else { + if ($sl != $u->info['level']) { + $gd = 0; + } + } + } + // + if ($ml <= 1) { + $zd = 'Нужно докачаться на клоне до 1 уровня.'; + $gb = 1; + } elseif ($ml <= 4) { + $zd = 'Нужно подтвердить E-mail, чтобы получить 2-4 уровень.'; + $gb = 1; + } elseif ($ml <= 6) { + $zd = 'Нужно подтвердить страницу в социальной сети, чтобы получить 5-6 уровень.'; + $gb = 1; + } elseif ($ml <= 7) { + $zd = 'Нужно выиграть 50 боев, чтобы получить 7 уровень.'; + $gb = 1; + } elseif ($ml <= 8) { + $zd = 'Нужно привести 3 друзей по реферальной ссылке и провести 3 хаотичных поединка, чтобы получить 8 уровень.'; + $gb = 1; + } elseif ($ml <= 9) { + $zd = 'Нужно привести 5 друзей по реферальной ссылке и провести 50 хаотичных поединков, чтобы получить 9 уровень.'; + $gb = 1; + } elseif ($ml <= 10) { + $zd = 'Нужно привести 7 друзей по реферальной ссылке и провести 100 хаотичных поединков, чтобы получить 10 уровень.'; + $gb = 1; + } else { + $zd = ''; + $gb = 0; + } + // + if ($gd == 1) { + // + if ($zd != '') { + echo '
Необходимо выполнить задание:
' . $zd . '
'; + } else { + echo '
'; + } + if ($er8 != '') { + echo '
' . $er8 . '
'; + } + // + if ($gb == 1 && $ml > 1) { + //Получаем + echo ''; + } + // + } + } } - } - // - $mcf = mysql_fetch_array( - mysql_query( - 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mailconfirm" LIMIT 1' - ) - ); - // - sendmail('', 'mailconf*15', $mcf['var']); - // - echo '
На ваш E-mail отправлено письмо.
'; - // - } - } - $mcff = 'Подтвердить E-mail за 1 екр.'; - if (isset($mcf['id'])) { - $mcff = '' . $mcf['var'] . '
(На этот адрес отправлено письмо)'; - } - echo '
'; - } -} -echo ''; -$prt = explode('|', $u->info['prmenu']); -if (isset($_GET['up'])) { - $i = 0; - if (isset($prt[$_GET['up']], $prt[$_GET['up'] - 1])) { - $prt1 = $prt[intval($_GET['up'])]; - $prt[$_GET['up']] = $prt[$_GET['up'] - 1]; - $prt[$_GET['up'] - 1] = $prt1; - $prtNew = implode('|', $prt); - $u->info['prmenu'] = $prtNew; - mysql_query( - 'UPDATE `stats` SET `prmenu`="' . mysql_real_escape_string( - $u->info['prmenu'] - ) . '" WHERE `id`="' . $u->info['id'] . '" LIMIT 1' - ); - $prt = explode('|', $u->info['prmenu']); - } -} elseif (isset($_GET['down'])) { - $i = 0; - if (isset($prt[$_GET['down']], $prt[$_GET['down'] + 1])) { - $prt1 = $prt[intval($_GET['down'])]; - $prt[$_GET['down']] = $prt[$_GET['down'] + 1]; - $prt[$_GET['down'] + 1] = $prt1; - $prtNew = implode('|', $prt); - $u->info['prmenu'] = $prtNew; - mysql_query( - 'UPDATE `stats` SET `prmenu`="' . mysql_real_escape_string( - $u->info['prmenu'] - ) . '" WHERE `id`="' . $u->info['id'] . '" LIMIT 1' - ); - $prt = explode('|', $u->info['prmenu']); - } -} + //Бонус за мыло, контакт + if (!isset($u->info['noreal']) && $c['bonussocial'] == true) { + $mcf = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mailconfirm" LIMIT 1' + ) + ); + if ((isset($mcf['id']) && $mcf['ok'] == 0) || !isset($mcf['id'])) { + if (isset($_GET['confmail'])) { + // + $gd = 0; + $zdml = 3600; //час + if (isset($mcf['id']) && $mcf['time'] > time() - $zdml) { + echo '
Нельзя подтверждать эл.почту так часто. Осталось ' . Conversion::secondsToTimeout( + $mcf['time'] + $zdml - time() + ) . '
'; + $gd = 1; + } elseif (!preg_match( + '#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $_GET['confmail'] + )) { + echo '
Вы указали явно ошибочный E-mail.
'; + $gd = 1; + } -$i = 0; -while ($i < count($prt)) { - $prtpos[$prt[$i]] = $i; - $i++; -} + if ($gd == 0) { + if (isset($mcf['id'])) { + mysql_query( + 'UPDATE `mini_actions` SET `time` = "' . time() . '",`var` = "' . mysql_real_escape_string( + $_GET['confmail'] + ) . '" WHERE `id` = "' . $mcf['id'] . '" LIMIT 1' + ); + } else { + mysql_query( + 'INSERT INTO `mini_actions` (`uid`,`time`,`val`,`var`,`ok`) VALUES ( + "' . $u->info['id'] . '","' . time() . '","mailconfirm","' . mysql_real_escape_string( + $_GET['confmail'] + ) . '","0" + )' + ); + } + function sendmail($message, $keymd5, $mail) + { + global $u; + // + $md5mail = md5($keymd5 . '+' . $mail); + // + $msgtxt = 'Для подтверждения вашего E-mail у персонажа ' . $u->info['login'] . ' перейдите по ссылке:'; + $msgtxt .= ' Нажмите тут (/mail/key=' . $md5mail . '&mail=' . $mail . ')'; + $msgtxt .= '
Переходя по ссылке, вы подтверждаете свое желание получать игровые новости.'; + $msgtxt .= '
Если вы не имеете отношения к нашей игре и не хотите получать письма, тогда перейдите по этой ссылке: Нажмите тут (/mail/key=' . $md5mail . '&mail=' . $mail . '&cancel)

- - - - - - -

С уважением,
Администрация Легендарного Бойцовского Клуба'; + // + $headers = "MIME-Version: 1.0\r\n"; + $headers .= "Content-type: text/html; charset=utf-8\r\n"; + $headers .= "From: Старый Бойцовский Клуб \r\n"; + $to = $mail; + // + $subject = 'Бойцовский Клуб: ' . $u->info['login'] . ' - Подтверждение вашей эл.почты'; + // + if (mail($to, $subject, $msgtxt, $headers) == true) { + return true; + } else { + return false; + } + } -function intSpan($val) -{ - $val = explode('>', $val); - $val = explode('<', $val[1]); - $val = $val[0]; - return $val; -} + // + $mcf = mysql_fetch_array( + mysql_query( + 'SELECT * FROM `mini_actions` WHERE `uid` = "' . $u->info['id'] . '" AND `val` = "mailconfirm" LIMIT 1' + ) + ); + // + sendmail('', 'mailconf*15', $mcf['var']); + // + echo '
На ваш E-mail отправлено письмо.
'; + // + } + } + $mcff = 'Подтвердить E-mail за 1 екр.'; + if (isset($mcf['id'])) { + $mcff = '' . $mcf['var'] . '
(На этот адрес отправлено письмо)'; + } + echo '
'; + } + } + echo ''; + $prt = explode('|', $u->info['prmenu']); + if (isset($_GET['up'])) { + $i = 0; + if (isset($prt[$_GET['up']], $prt[$_GET['up'] - 1])) { + $prt1 = $prt[intval($_GET['up'])]; + $prt[$_GET['up']] = $prt[$_GET['up'] - 1]; + $prt[$_GET['up'] - 1] = $prt1; + $prtNew = implode('|', $prt); + $u->info['prmenu'] = $prtNew; + mysql_query( + 'UPDATE `stats` SET `prmenu`="' . mysql_real_escape_string( + $u->info['prmenu'] + ) . '" WHERE `id`="' . $u->info['id'] . '" LIMIT 1' + ); + $prt = explode('|', $u->info['prmenu']); + } + } elseif (isset($_GET['down'])) { + $i = 0; + if (isset($prt[$_GET['down']], $prt[$_GET['down'] + 1])) { + $prt1 = $prt[intval($_GET['down'])]; + $prt[$_GET['down']] = $prt[$_GET['down'] + 1]; + $prt[$_GET['down'] + 1] = $prt1; + $prtNew = implode('|', $prt); + $u->info['prmenu'] = $prtNew; + mysql_query( + 'UPDATE `stats` SET `prmenu`="' . mysql_real_escape_string( + $u->info['prmenu'] + ) . '" WHERE `id`="' . $u->info['id'] . '" LIMIT 1' + ); + $prt = explode('|', $u->info['prmenu']); + } + } -$rz0 = ''; -$rz0 .= ''; -if ($uShow[0] == 1) { - $i = 1; - while ($i <= 10) { - $u->stats['s' . $i] = 0 + $u->stats['s' . $i]; - $i++; - } - $rz0 .= '
diff --git a/modules_data/stats_loc.php b/modules_data/stats_loc.php index 069d25e4..1a3dc14d 100644 --- a/modules_data/stats_loc.php +++ b/modules_data/stats_loc.php @@ -1,6 +1,7 @@ info['id']); + $txt ??= ''; if (isset($_GET['getq'])) { - $test = mysql_fetch_array( - mysql_query('SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'day_quest\'') - ); - if (!isset($test['id'])) { - $zadID = rand(1, 7); - if ($u->info['level'] == 8 && $zadID == 6) { - $zadID = 2; - } - if ($u->info['level'] > 11 && $zadID == 4) { - $zadID = 2; - } - if ($u->info['level'] > 11 && $zadID == 1) { - $zadID = 2; - } - } else { - $zadID = 0; - } - if ($zadID == 1) { - $txt .= 'Говорят в Capital City завелись всякие Трупожоры. Пойди да убей их дважды, порадуй бабушку'; - } elseif ($zadID == 2) { - $txt .= 'Покажи на что способен! Поучаствуй в 10 хаотических поединках!'; - } elseif ($zadID == 3) { - $txt .= 'Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!'; - } elseif ($zadID == 4) { - $txt .= 'Сразись в хаотических поединках и получи 100 000 опыта!'; - } elseif ($zadID == 5) { - $txt .= 'Открой сундук Трупожора, порадуй бабушку!'; - } elseif ($zadID == 6) { - $txt .= 'Посети Излом Хаоса!'; - } elseif ($zadID == 7) { - $txt .= 'Выполни 3 любых задания в подземелиях!Бабушка будет очень довольна!'; - } elseif ($zadID == 8) { - $txt .= 'Сходи ка милок в Башню Смерти! Да попробуй как там свои силенки.'; - } else { - $txt .= 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!'; - } + $zadID = !$am->getDailyQuest() ? mt_rand(1, 7) : 0; + $txt .= match ($zadID) { + 1 => 'Говорят в городе завелись всякие Трупожоры. Пойди да убей двоих, порадуй бабушку.', + 2 => 'Покажи на что способен! Поучаствуй в 10 хаотических поединках!', + 3 => 'Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!', + 4 => 'Сразись в хаотических поединках и получи 100 000 опыта!', + 5 => 'Открой сундук Трупожора, порадуй бабушку!', + 6 => 'Посети Излом Хаоса!', + 7 => 'Выполни 3 любых задания в подземелиях! Бабушка будет очень довольна!', + 8 => 'Сходи-ка милок в Башню Смерти! Да попробуй там свои силенки.', + default => 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!' + }; + $txt = "$txt"; if ($zadID > 0) { - mysql_query( - 'INSERT INTO `actions`(`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES (' . $u->info['id'] . ',unix_timestamp(),\'capitalcity\',421,\'day_quest\',\'\',' . $zadID . ',' . $u->info['exp'] . ')' - ); + ActionModel::new($u->info, $zadID, 'day_quest'); sendSysChat($txt); } } -function sendSysChat($message) +function sendSysChat($message): void { global $u; $cmsg = new ChatMessage(); - $cmsg->setCity($u->info['city']); $cmsg->setRoom($u->info['room']); $cmsg->setTo($u->info['login']); $cmsg->setType(6); @@ -69,132 +46,76 @@ function sendSysChat($message) (new Chat())->sendMsg($cmsg); } -function giveDailyQuestPrize() +function giveDailyQuestPrize(): void { global $u; Db::sql('update actions set vals = 0 where vars = ? and uid = ?', ['day_quest', $u->info['id']]); Db::sql('update users_achiv set zb = zb + 1 where id = ?', [$u->info['id']]); - if ($u->info['level'] < 12) { - ItemsModel::addItem(10020, $u->info['id'], '|sudba=' . $u->info['login']); - } else { - ItemsModel::addItem(6470, $u->info['id'], '|sudba=' . $u->info['login']); - } + ItemsModel::addItem(10020, $u->info['id'], '|sudba=' . $u->info['login']); StatsModel::addRepexpById($u->info['id'], 50); //Репутация +20 } if (isset($_GET['putq'])) { - $test = mysql_fetch_array( - mysql_query('SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'day_quest\'') - ); - if (!isset($test['id'])) { - $txt .= 'У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.'; + $test = $am->getDailyQuest(); + if (!$test) { + $txt .= 'У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.'; } else { $zadID = $test['vals']; + $finishedTasks = $am->getFinishedDailyQuestTasks($test['time']); + if ($zadID == 1) { - $check = mysql_query( - 'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'end_trup\' AND `time` > ' . $test['time'] - ); - $i = 0; - while ($pl = mysql_fetch_array($check)) { - $i++; - } - if ($i > 1) { - $txt .= 'Порадовал бабушку! Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!'; + if ($finishedTasks['end_trup'] > 1) { + $txt .= 'Порадовал бабушку! Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Победи в боях с Трупожором ' . $i . '/2'; + $txt .= 'Победи в боях с Трупожором ' . $finishedTasks['end_trup'] . '/2.'; } - } elseif ($zadID == 2) { - $check = mysql_query( - 'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'end_xaot\' AND `time` > ' . $test['time'] - ); - $i = 0; - while ($pl = mysql_fetch_array($check)) { - $i++; - } - - if ($i > 9) { - $txt .= 'Порадовал бабушку! Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!'; + if ($finishedTasks['end_xaot'] > 9) { + $txt .= 'Порадовал бабушку! Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Участия в хаотах ' . $i . '/10'; + $txt .= 'Участия в хаотах ' . $finishedTasks['end_xaot'] . '/10.'; } } elseif ($zadID == 3) { - $check = mysql_query( - 'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'psh0\' AND `time` > ' . $test['time'] - ); - $i = 0; - while ($pl = mysql_fetch_array($check)) { - $i++; - } - if ($i > 1) { - $txt .= 'Порадовал бабушку! Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!'; + if ($finishedTasks['psh0'] > 1) { + $txt .= 'Порадовал бабушку! Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Посещение Подземелий ' . $i . '/2'; + $txt .= 'Посещение Подземелий ' . $finishedTasks['psh0'] . '/2.'; } - } elseif ($zadID == 4) { - if (($u->info['exp'] - $test['val']) > 100000) { - $txt .= 'Порадовал бабушку! Подрос,Подрос! держи жетончик!'; + $txt .= 'Порадовал бабушку! Подрос, подрос! держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Получение ' . ($u->info['exp'] - $test['val']) . '/100 000 опыта'; + $txt .= 'Получение ' . ($u->info['exp'] - $test['val']) . '/100 000 опыта.'; } - } elseif ($zadID == 5) { - $check = mysql_query( - 'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'trup_sun\' AND `time` > ' . $test['time'] - ); - $i = 0; - while ($pl = mysql_fetch_array($check)) { - $i++; - } - if ($i > 0) { - $txt .= 'Порадовал бабушку! Сундучек удачу принес? Нет? Ну держи жетончик!'; + if ($finishedTasks['trup_sun'] > 0) { + $txt .= 'Порадовал бабушку! Сундучек удачу принес? Нет? Ну держи жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Открытие сундуков Трупожора 0/1'; + $txt .= 'Открытие сундуков Трупожора 0/1'; } - } elseif ($zadID == 6) { - $check = mysql_query( - 'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vars`= \'izlom\' AND `time` > ' . $test['time'] - ); - $i = 0; - while ($pl = mysql_fetch_array($check)) { - $i++; - } - if ($i > 0) { - $txt .= 'Порадовал бабушку! Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!'; + if ($finishedTasks['izlom'] > 0) { + $txt .= 'Порадовал бабушку! Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Посещение Излома Хаоса 0/1'; + $txt .= 'Посещение Излома Хаоса 0/1'; } - } elseif ($zadID == 7) { - $check = mysql_query( - 'SELECT * FROM `actions` WHERE `uid` = ' . $u->info['id'] . ' AND `vals`= \'win\' AND `time` > ' . $test['time'] - ); - $i = 0; - while ($pl = mysql_fetch_array($check)) { - $i++; - } - if ($i > 2) { - $txt .= 'Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась...
Чуть не забыла жетончик!
'; + if ($finishedTasks['win'] > 2) { + $txt .= 'Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась...
Чуть не забыла жетончик!'; giveDailyQuestPrize(); } else { - $txt .= 'Выполни 3 задания в подземелиях. ' . $i . '/3 '; + $txt .= 'Выполни 3 задания в подземелиях. ' . $finishedTasks['win'] . '/3.'; } - } elseif ($zadID == 8) { - $txt .= 'Участие в башне смерти 0.1'; - } else { - $txt .= 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи накормлю чем нибудь вкусным ну и задание дам!'; } - sendSysChat($txt); + + sendSysChat("$txt"); } } @@ -213,7 +134,7 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy']; Духовность: stats['s7']; ?>
info['ability'] > 0 || $u->info['skills'] > 0): ?> - + Способности
+ + Способности
 
@@ -225,7 +146,7 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy']; Деньги: info['money'] ?> кр. 
Деньги: info['money2'] ?> екр.
-stats['pbe'] > 0): ?> +stats['pbe']) && $u->stats['pbe'] > 0): ?> Бонус покупателя: stats['pbe'] ?> уровень
(Совершите покупку ЕКР чтобы сохранить и увеличить бонус покупателя)
diff --git a/modules_data/vip.php b/modules_data/vip.php index 26a32eed..66d3a4a4 100644 --- a/modules_data/vip.php +++ b/modules_data/vip.php @@ -110,7 +110,7 @@ $vi = [ Вечно 1 Выносливость = 1 ХП - + @@ -141,7 +141,7 @@ $vi = [ - +
• Восстановление жизни и манны +10%Вечно 1 Выносливость = 2 ХП
@@ -173,7 +173,7 @@ $vi = [ - +
• Восстановление жизни и манны +50%На время действия Благодати Увеличивает защиту от урона и магии на 50 едениц.

Доступные предметы:
(Чтобы забрать предмет просто кликните на его изображение)

diff --git a/rating_ref.php b/rating_ref.php index 3265022d..eb918c6c 100644 --- a/rating_ref.php +++ b/rating_ref.php @@ -1,5 +1,5 @@ - + пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ diff --git a/robots.txt b/robots.txt deleted file mode 100644 index 7b0274bb..00000000 --- a/robots.txt +++ /dev/null @@ -1,12 +0,0 @@ -User-agent: DuplexWeb-Google -User-agent: AdsBot-Google-Mobile-Apps -User-agent: AdsBot-Google -User-agent: AdsBot-Google-Mobile -User-agent: * -Disallow: / - -User-agent: * -Allow: /*.html$ - -Sitemap: /sitemap.xml -Host: https://new-combats.com \ No newline at end of file