From bd8761f2406e7b109bcf2ad55e584cfe29833749 Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Mon, 8 Jan 2024 03:33:20 +0200 Subject: [PATCH] WIP: removing User::class public array $items for Stat()::class. --- AI.php | 327 +---------------------- _incl_data/class/Battle.php | 209 ++++++--------- _incl_data/class/Battle/Fighter.php | 107 ++++++-- _incl_data/class/Battle/Info.php | 14 +- _incl_data/class/BotPriemLogic.php | 12 +- _incl_data/class/Model/Constant/Stat.php | 35 ++- _incl_data/class/Priems.php | 25 +- _incl_data/class/User.php | 215 ++++++--------- _incl_data/class/User/InfoBox.php | 109 +++----- _incl_data/class/User/Item.php | 58 ++++ _incl_data/class/User/Stats.php | 97 ++----- _incl_data/class/User/WearedItem.php | 34 +++ _incl_data/class/User/WearedScrolls.php | 14 +- adminion/testing.php | 63 ++--- inf.php | 21 +- items_info.php | 126 ++++++++- js/btl_mini.js | 1 + main.php | 6 +- modules_data/_animal.php | 39 ++- modules_data/_obraz.php | 173 ++++++------ modules_data/_zv.php | 3 +- modules_data/btl_.php | 95 ++++--- 22 files changed, 812 insertions(+), 971 deletions(-) create mode 100644 _incl_data/class/User/Item.php create mode 100644 _incl_data/class/User/WearedItem.php diff --git a/AI.php b/AI.php index 23aae1ea..3662764d 100644 --- a/AI.php +++ b/AI.php @@ -101,26 +101,7 @@ var_dump((new ShopOtdel())->getGroups()); ?> -
- Совпадения по параметрам $user->info и $user->stats. Возможно, это ничего не значит, а может и дублирование.

-info as $a => $b) { - if (isset($user->stats[$a])) { - echo "$i. info = stats: $a = $b
"; - $i++; - } -} -echo '
'; -foreach ($user->stats as $a2 => $b2) { - if (isset($user->info[$a2])) { - echo "$i2. stats = info: $a2 = $b2
"; - $i2++; - } -} -?>
Поля в базе users @@ -161,315 +142,9 @@ foreach ($user->stats as $a2 => $b2) {
-
Все возможные поля в $user->stats. Некоторые имена полей генерируются динамически на лету, поэтому соответствия имени нет. А каких-то, возможно просто не существует.

+ $v) { - if (isset($user->is[$k])) { - $v = $user->is[$k]; - } - $stnames[$k] = $v; -} -var_dump($stnames); - echo "
Текущая таблица параметров
"; foreach ($p as $prow) { echo "{$prow['sys_name']} → {$prow['name']}"; diff --git a/_incl_data/class/Battle.php b/_incl_data/class/Battle.php index 50f45b42..e8860f71 100644 --- a/_incl_data/class/Battle.php +++ b/_incl_data/class/Battle.php @@ -11,6 +11,7 @@ use Core\Config; use Core\Db; use DTO\BattlePriem; use Helper\Conversion; +use Model\Constant\Stat; use User\Effects; use User\ItemsModel; use User\Login; @@ -58,62 +59,7 @@ class Battle /**Отображаем главное окно (1 - можно бить, 2 - ожидаем ход противника, 3 - Проиграли. Ожидаем завершения поединка)*/ public int $mainStatus = 1; - /**Информация о поединке - * array (size=51) - * 'id' => int 466012 - * 'city' => string 'capitalcity' (length=11) - * 'time_start' => int 1704495486 - * 'testfinish' => int 0 - * 'players' => string '' (length=0) - * 'timeout' => int 60 - * 'type' => int 0 - * 'status' => int 0 - * 'kulak' => int 0 - * 'invis' => int 0 - * 'noinc' => int 0 - * 'travmChance' => int 0 - * 'typeBattle' => int 0 - * 'addExp' => float 0 - * 'money' => float 0 - * 'money3' => float 0 - * 'time_over' => int 0 - * 'team_win' => int -1 - * 'dungeon' => string '0' (length=1) - * 'razdel' => int 5 - * 'dn_id' => int 0 - * 'x' => int 0 - * 'y' => int 0 - * 'fDate' => string '' (length=0) - * 'izlom' => int 0 - * 'izlomLvl' => int 0 - * 'izlomRound' => int 0 - * 'start1' => int 1704495496 - * 'start2' => int 1704495496 - * 'izlomRoundSee' => int 0 - * 'izlomObr' => int 0 - * 'izlomObrNow' => int 0 - * 'turnir' => int 0 - * 'inTurnir' => int 0 - * 'clone' => int 0 - * 'players_c' => int 0 - * 'fastfight' => int 0 - * 'nobot' => null - * 'kingfight' => null - * 'arand' => null - * 'noatack' => null - * 'noeff' => null - * 'smert' => null - * 'noart' => null - * 'zarad' => int 0 - * 'priz' => int 0 - * 'otmorozok' => int 0 - * 'otmorozok_use' => int 0 - * 'hod' => int 0 - * 'clan1' => int 0 - * 'clan2' => int 0 - * */ - public array $info = []; - + /** Информация о поединке.*/ public Info $i; /**Информация о пользователях в этом бою*/ @@ -172,7 +118,7 @@ class Battle private Finish $finish; - public function __construct() + public function __construct(private Stat $statnames = new Stat()) { ignore_user_abort(true); $this->finish = new Finish($this); @@ -316,6 +262,13 @@ class Battle public function initRefresh(User $user): bool { $this->i = new Info($user->info['battle']); + + $this->hodID = Db::getValue('select id_hod from battle_logs where battle = ? order by id desc limit 1', [$this->i->id]); + + if (!$this->hodID) { + $this->hodID = 0; + } + return !empty($this->i->id); } @@ -528,7 +481,7 @@ class Battle $ur['id'] != 0 && $this->stats[$this->uids[$ur['id']]]['seeAllEff'] != 1 ) { $nseef = 1; - if ($eff[$i]['v1'] == 'priem') { + if (isset($eff[$i]['v1']) && $eff[$i]['v1'] == 'priem') { $eff[$i]['priem'] = Db::getRow('select * from priems where id = ?', [$eff[$i]['v2']]); } @@ -587,22 +540,24 @@ class Battle //Действие эффекта $tr = ''; - $ti = $u->items['add']; + $statBonusNames = $this->statnames->getBonusNames(); + $statSysBonusNames = array_keys($statBonusNames); + $x = 0; $ed = Conversion::dataStringToArray($eff[$i]['data']); - while ($x < count($ti)) { - $n = $ti[$x]; - if (isset($ed['add_' . $n], $u->is[$n]) && $n != 'pog') { + while ($x < count($statSysBonusNames)) { + $n = $statSysBonusNames[$x]; + if (isset($ed['add_' . $n]) && $n != 'pog') { $z = ''; if ($ed['add_' . $n] > 0) { $z = '+'; } - $tr .= '
' . $u->is[$n] . ': ' . $z . $ed['add_' . $n]; + $tr .= '
' . $statBonusNames[$n] . ': ' . $z . $ed['add_' . $n]; } $x++; } - if ($ed['add_mib1'] != 0) { + if (isset($ed['add_mib1']) && $ed['add_mib1'] != 0) { if ($ed['add_mab1'] != 0) { $tr .= $armor1 . $ed['add_mib1'] . '-' . $ed['add_mab1']; } else { @@ -613,7 +568,7 @@ class Battle $tr .= $armor1 . $m1l; } } - if ($ed['add_mib2'] != 0) { + if (isset($ed['add_mib2']) && $ed['add_mib2'] != 0) { if ($ed['add_mab2'] != 0) { $tr .= $armor2 . $ed['add_mib2'] . '-' . $ed['add_mab2']; } else { @@ -624,7 +579,7 @@ class Battle $tr .= $armor2 . $m1l; } } - if ($ed['add_mib3'] != 0) { + if (isset($ed['add_mib3']) && $ed['add_mib3'] != 0) { if ($ed['add_mab3'] != 0) { $tr .= $armor3 . $ed['add_mib3'] . '-' . $ed['add_mab3']; } else { @@ -635,7 +590,7 @@ class Battle $tr .= $armor3 . $m1l; } } - if ($ed['add_mib4'] != 0) { + if (isset($ed['add_mib4']) && $ed['add_mib4'] != 0) { if ($ed['add_mab4'] != 0) { $tr .= $armor4 . $ed['add_mib4'] . '-' . $ed['add_mab4']; } else { @@ -768,14 +723,14 @@ JS; $td = Conversion::dataStringToArray($itm[$i]['data']); $lvar = ''; - if ($td['add_hpAll'] > 0) { + if (isset($td['add_hpAll']) && $td['add_hpAll'] > 0) { $td['add_hpAll'] = '+' . $td['add_hpAll']; $lvar .= '
Уровень жизни: ' . $td['add_hpAll']; } - if ($td['sv_yron_max'] > 0 || $td['sv_yron_min'] > 0) { + if (isset($td['sv_yron_max']) && $td['sv_yron_max'] > 0 || isset($td['sv_yron_min']) && $td['sv_yron_min'] > 0) { $lvar .= '
Урон: ' . (0 + $td['sv_yron_min']) . '-' . (0 + $td['sv_yron_max']); } - if ($td['add_mab1'] > 0) { + if (isset($td['add_mab1']) && $td['add_mab1'] > 0) { if ($td['add_mib1'] == $td['add_mab1']) { $m1l = '+'; $lvar .= $armor1 . $m1l . (0 + $td['add_mab1']); @@ -783,7 +738,7 @@ JS; $lvar .= $armor1 . (0 + $td['add_mib1']) . '-' . (0 + $td['add_mab1']); } } - if ($td['add_mab2'] > 0) { + if (isset($td['add_mab2']) && $td['add_mab2'] > 0) { if ($td['add_mib2'] == $td['add_mab2']) { $m1l = '+'; $lvar .= $armor2 . $m1l . (0 + $td['add_mab2']); @@ -791,7 +746,7 @@ JS; $lvar .= $armor2 . (0 + $td['add_mib2']) . '-' . (0 + $td['add_mab2']); } } - if ($td['add_mab3'] > 0) { + if (isset($td['add_mab3']) && $td['add_mab3'] > 0) { if ($td['add_mib3'] == $td['add_mab3']) { $m1l = '+'; $lvar .= $armor3 . $m1l . (0 + $td['add_mab3']); @@ -799,7 +754,7 @@ JS; $lvar .= $armor3 . (0 + $td['add_mib3']) . '-' . (0 + $td['add_mab3']); } } - if ($td['add_mab4'] > 0) { + if (isset($td['add_mab4']) && $td['add_mab4'] > 0) { if ($td['add_mib4'] == $td['add_mab4']) { $m1l = '+'; $lvar .= $armor4 . $m1l . (0 + $td['add_mab4']); @@ -807,8 +762,8 @@ JS; $lvar .= $armor4 . (0 + $td['add_mib4']) . '-' . (0 + $td['add_mab4']); } } - if ($itm[$i]['iznosMAX'] > 0) { - if ($itm[$i]['iznosMAXi'] == 999999999) { + if (isset($itm[$i]['iznosMAX']) && $itm[$i]['iznosMAX'] > 0) { + if (isset($itm[$i]['iznosMAXi']) && $itm[$i]['iznosMAXi'] == 999999999) { $lvar .= '
Долговечность: неразрушимо'; } else { $lvar .= '
Долговечность: ' . floor($itm[$i]['iznosNOW']) . '/' . floor($itm[$i]['iznosMAX']); @@ -817,7 +772,7 @@ JS; $ttl .= $lvar; $ccv = ''; - if ($itm[$i]['magic_inci'] != '' || $itm[$i]['magic_inc'] != '') { + if (isset($itm[$i]['magic_inci']) && $itm[$i]['magic_inci'] != '' || isset($itm[$i]['magic_inc']) && $itm[$i]['magic_inc'] != '') { if ($itm[$i]['magic_inc'] == '') { $itm[$i]['magic_inc'] = $itm[$i]['magic_inci']; } @@ -1945,6 +1900,7 @@ JS; $this->stats[$this->uids[$bot]]['pass'] != 'saintlucia' ) { //Тут проверка на бота saintlucia $j = 0; + while ($j < count($this->users)) { if ($this->i->razdel == 0) { $tnbot = time() + rand(1, 1); @@ -1952,24 +1908,24 @@ JS; $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[$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 && + $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->users[$j]['timego'] < time() && + $this->users[$this->uids[$bot]]['timego'] < time() ) { $this->botAtack($this->users[$j]['id'], $bot, 1); mysql_query( @@ -1979,19 +1935,19 @@ JS; } elseif ( isset($this->users[$i]) && $this->users[$i]['bot'] > 0 && - $this->stats[$i]['hpNow'] >= 1 && - $this->stats[$this->uids[$bot]]['hpNow'] >= 1 && + $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->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() && + $this->users[$this->uids[$bot]]['timego'] < time() && !isset($this->ag[$bot][$this->users[$i]['id']]) ) { $this->botAtack($this->users[$i]['id'], $bot, 1); @@ -2001,7 +1957,7 @@ JS; } 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->users[$this->uids[$bot]]['timego'] < time() ) { $this->botAtack($bot, $this->users[$i]['id'], 1); mysql_query( @@ -2012,10 +1968,10 @@ JS; } 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->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); @@ -2042,15 +1998,15 @@ JS; $this->users[$j]['bot'] > 0 ) { if ( - $this->users[$j]['timeGo'] < time() && - $this->users[$this->uids[$bot]]['timeGo'] < time() + $this->users[$j]['timego'] < time() && + $this->users[$this->uids[$bot]]['timego'] < time() ) { $tnbot = time() + rand(3, 7); if ($this->i->type == 329) { // тестовый бой $tnbot = time() - 1; } $this->startAtack($this->ga[$bot][$this->users[$j]['id']]); - $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; + $this->users[$this->uids[$bot]]['timego'] = $tnbot; mysql_query( 'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1' ); @@ -2060,15 +2016,15 @@ JS; $this->users[$j]['bot'] > 0 ) { if ( - $this->users[$this->uids[$bot]]['timeGo'] < time() && - $this->users[$j]['timeGo'] < time() + $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->i->type == 329) { // тестовый бой $tnbot = time() - 1; } - $this->users[$this->uids[$bot]]['timeGo'] = $tnbot; + $this->users[$this->uids[$bot]]['timego'] = $tnbot; mysql_query( 'UPDATE `stats` SET `timeGo` = "' . $tnbot . '" WHERE `id` = "' . $this->users[$this->uids[$bot]]['id'] . '" LIMIT 1' ); @@ -2277,7 +2233,7 @@ JS; // Заносим в логи + записываем статистику боя $this->addlogRazmen($id, $at); - + var_dump($at); //Запускаем магию предметов $this->magicItems($this->atacks[$id]['uid1'], $this->atacks[$id]['uid2'], $id); $this->magicItems($this->atacks[$id]['uid2'], $this->atacks[$id]['uid1'], $id); @@ -4447,6 +4403,7 @@ JS; $this->add_log($mas); $j++; } + var_dump($at); } //Добавляем статистику + записываем в баттл_юзерс НР игроков @@ -4910,42 +4867,33 @@ JS; } //проверка блока (Визуальная) - - public function battleInfo($id): array - { - $b = self::get($id); - if (!isset($b['id'])) { - return []; - } - - $this->hodID = Db::getValue('select id_hod from battle_logs where battle = ? order by id desc limit 1', [$b['id']]); - $this->hodID = $this->hodID['id_hod'] ?? 0; - return $b; - } - - //проверка блока public function addAtack(): void { global $js; - - if (!isset($_POST['atack'], $_POST['block'])) { + if ($_POST['atack'] === '0_0_0_0_0' || $_POST['block'] === '0') { $this->e = 'Выберите зоны удара и блока'; return; } + //atack: '3_2_0_0_0' (length=9) + //block: '5' (length=1) + $na = ['a' => [1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0]]; $a = explode('_', $_POST['atack']); $na['id'] = time(); + array_unshift($a, 0); + + for ($i = 1; $i <= 5; $i++) { - if (!isset($a[$i - 1])) { + if (!isset($a[$i])) { continue; } - $a[$i - 1] = intval(round($a[$i - 1])); - if ($a[$i - 1] >= 1 && $a[$i - 1] <= 5) { - $na['a'][$i] = $a[$i - 1]; + $a[$i] = intval(round($a[$i])); + if ($a[$i] >= 1 && $a[$i] <= 5) { + $na['a'][$i] = $a[$i]; } else { $na['a'][$i] = 0; } @@ -4995,7 +4943,7 @@ JS; foreach ($usersInBattle as $user) { //записываем данные - $this->fighters[] = new Fighter(); + //$this->fighters[] = new Fighter(); $this->users[$i] = $user; $this->uids[$user['id']] = $i; @@ -5007,7 +4955,7 @@ JS; //записываем статы $stats = new Stats($u); - $this->stats[$i] = $stats->getStats(btl_cache: $this->cached); + $this->stats[$i] = $stats->getStats(uid: $user['id'], btl_cache: $this->cached); //Заносим старт if ($this->i->getStart2() == 0) { @@ -5036,7 +4984,7 @@ JS; } // Бафф Зверя animal_bonus - $this->addAnimalBuff($i, $u); + $this->addAnimalBuff($i); Db::sql( 'update stats set last_hp = 0, tactic1 = 0, tactic2 = 0, tactic3 = 0, tactic4 = 0, tactic5 = 0, tactic6 = 0, tactic7 = ? where id = ?', @@ -5220,7 +5168,7 @@ JS; if ($this->users[$i]['lider'] == $this->i->id) { $ldr = 'users[$i]['team'] . '.gif \>'; } - $teams[$this->users[$i]['team']] .= ', ' . $ldr . 'users[$i]['team'] . '\" onClick=\"top.chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . ' [' . floor( + $teams[$this->users[$i]['team']] .= ', ' . $ldr . 'users[$i]['team'] . '\" onClick=\"chat.addto(\'' . $this->users[$i]['login2'] . '\',\'to\'); return false;\" oncontextmenu=\"top.infoMenu(\'' . $this->users[$i]['login2'] . '\',event,\'main\'); return false;\">' . $this->users[$i]['login2'] . ' [' . floor( $this->stats[$i]['hpNow'] ) . '/' . $this->stats[$i]['hpAll'] . ']'; } @@ -5232,7 +5180,7 @@ JS; while ($i < count($tms)) { $teams[$tms[$i]] = ltrim($teams[$tms[$i]], ', '); if ($teams[$tms[$i]] != '') { - $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; + $teams[$tms[$i]] = ' ' . $teams[$tms[$i]]; $ret .= $teams[$tms[$i]]; if (count($tms) > $i + 1) { $ret .= '   против   '; @@ -5250,10 +5198,9 @@ JS; /** * @param int $i - * @param User $u * @return void */ - private function addAnimalBuff(int $i, User $u): void + private function addAnimalBuff(int $i): void { if ($this->users[$i]['animal'] <= 0) { return; @@ -5319,8 +5266,10 @@ JS; $animalBonusData = Conversion::dataStringToArray($animalBonusDataString); $bonusString = ''; + $statBonusNames = $this->statnames->getBonusNames(); + $statBonusSysNames = array_keys($statBonusNames); - foreach ($u->items['add'] as $itemBonusSysName) { + foreach ($statBonusSysNames as $itemBonusSysName) { if ( !isset($animalBonusData['add_' . $itemBonusSysName]) || $animalBonusData['add_' . $itemBonusSysName] <= 0 @@ -5333,7 +5282,7 @@ JS; 'mib2' => 'Броня корпуса: +' . $animalBonusData['add_' . $itemBonusSysName] . ', ', 'mib3' => 'Броня пояса: +' . $animalBonusData['add_' . $itemBonusSysName] . ', ', 'mib4' => 'Броня ног: +' . $animalBonusData['add_' . $itemBonusSysName] . ', ', - default => $u->is[$itemBonusSysName] . ': +' . $animalBonusData['add_' . $itemBonusSysName] . ', ', + default => $statBonusNames[$itemBonusSysName] . ': +' . $animalBonusData['add_' . $itemBonusSysName] . ', ', }; } diff --git a/_incl_data/class/Battle/Fighter.php b/_incl_data/class/Battle/Fighter.php index 40be3849..f1dbe9e9 100644 --- a/_incl_data/class/Battle/Fighter.php +++ b/_incl_data/class/Battle/Fighter.php @@ -2,20 +2,98 @@ namespace Battle; +use Helper\Math; +use User; + class Fighter { - private int $id; + private string $obraz; private string $login; - private string $login2; - private int $online; - private int $admin; - private string $align; - private int $clan; private int $level; + private int $life; + private int $mana; + private int $maxlife; + private int $maxmana; - public function __construct() {} + private int $damage; + private int $damageMultiplier; + private int $critChance; + private int $critMultiplier; + private int $evadeChance; + private int $counterstrikeChance; + private int $parryChance; + private int $shieldblockChance; + private int $ignoreArmorChance; + private int $anticritChance; + private int $antievadeChance; + private int $defence; + private int $airdefence; + private int $waterdefence; + private int $firedefence; + private int $earthdefence; + private int $armor; + public function __construct(private readonly int $id, private readonly int $team) { + $u = User::start($id); + $this->obraz = $u->info['sex'] . DIRECTORY_SEPARATOR . $u->info['obraz']; + $this->login = $u->info['login']; + $this->level = $u->info['level']; + $this->life = $u->stats['hpNow']; + $this->mana = $u->stats['mpNow']; + $this->maxlife = $u->stats['hpAll']; + $this->maxmana = $u->stats['mpAll']; + $this->damage = 100500; + $this->armor = 35; + $this->damageMultiplier = $u->stats['m10']; + $this->critChance = $u->stats['m1']; + $this->critMultiplier = $u->stats['m3']; + $this->evadeChance = $u->stats['m4']; + $this->counterstrikeChance = $u->stats['m6']; + $this->parryChance = $u->stats['m7']; + $this->shieldblockChance = $u->stats['m8']; + $this->ignoreArmorChance = $u->stats['m9']; + $this->anticritChance = $u->stats['m2']; + $this->antievadeChance = $u->stats['m5']; + $this->defence = $u->stats['za']; // ой не та это защита, ой не та. ещё ж броня должна быть. + $this->airdefence = $u->stats['zm2']; + $this->waterdefence = $u->stats['zm3']; + $this->firedefence = $u->stats['zm1']; + $this->earthdefence = $u->stats['zm4']; + unset($u); + } + + public function __toString(): string + { + + $dmg = Math::addPercent($this->damage, $this->damageMultiplier); + return <<login [$this->level] id:$this->id
+Здоровье: $this->life / $this->maxlife
+Мана: $this->mana / $this->maxmana
+
+Урон: $this->damage + $this->damageMultiplier% = $dmg
+Броня: $this->armor
+Крит: $this->critChance%
+Антикрит $this->anticritChance%
+Мощность крита $this->critMultiplier%
+Уровот $this->evadeChance%
+Антиуворот $this->antievadeChance%
+Контрудар $this->counterstrikeChance%
+Парирование $this->parryChance%
+Блок щитом $this->shieldblockChance%
+Игнор брони $this->ignoreArmorChance%
+Защита от урона $this->defence
+Зашита от огня $this->firedefence
+Защита от воды $this->waterdefence
+Защита от воздуха $this->airdefence
+Защита от земли $this->earthdefence

+Сражается за команду: $this->team +RETURN; + + } } + + /* /app/_incl_data/class/Battle.php:471: @@ -58,21 +136,6 @@ array (size=126) 'stopexp' => int 0 'real' => int 1 'stats' => string 's1=3|s2=3|s3=3|s4=250|rinv=40|m9=5|m6=10|s7="0"|a1=0|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0' (length=175) - 's1' => int 0 - 's2' => int 0 - 's3' => int 0 - 's4' => int 0 - 's5' => int 0 - 's6' => int 0 - 's7' => int 0 - 'a1' => int 0 - 'a2' => int 0 - 'a3' => int 0 - 'a4' => int 0 - 'mg1' => int 0 - 'mg2' => int 0 - 'mg3' => int 0 - 'mg4' => int 0 'hpNow' => int 1132 'mpNow' => int 0 'enNow' => int 0 diff --git a/_incl_data/class/Battle/Info.php b/_incl_data/class/Battle/Info.php index 9351b42d..b784381e 100644 --- a/_incl_data/class/Battle/Info.php +++ b/_incl_data/class/Battle/Info.php @@ -45,13 +45,13 @@ class Info private int $playersCC; private int $playersCC2; public readonly int $fastfight; - public readonly int $nobot; - public readonly int $kingfight; - public readonly int $arand; - public readonly int $noatack; - public readonly int $noeff; - public readonly int $smert; - public readonly int $noart; + public readonly ?int $nobot; + public readonly ?int $kingfight; + public readonly ?int $arand; + public readonly ?int $noatack; + public readonly ?int $noeff; + public readonly ?int $smert; + public readonly ?int $noart; public readonly int $zarad; public readonly int $priz; public readonly int $otmorozok; diff --git a/_incl_data/class/BotPriemLogic.php b/_incl_data/class/BotPriemLogic.php index 2abd08df..1add1841 100644 --- a/_incl_data/class/BotPriemLogic.php +++ b/_incl_data/class/BotPriemLogic.php @@ -1,6 +1,7 @@ getRequirementNames(); + $statSysRequirementNames = array_keys($statRequirementNames); + $x = 0; - $t = $u->items['tr']; - while ($x < count($t)) { - $n = $t[$x]; + + while ($x < count($statSysRequirementNames)) { + $n = $statSysRequirementNames[$x]; if (isset($tr['tr_' . $n])) { if ($n == 'lvl') { if ($tr['tr_' . $n] > BotLogic::$bot['level']) { diff --git a/_incl_data/class/Model/Constant/Stat.php b/_incl_data/class/Model/Constant/Stat.php index 232717af..d2827aeb 100644 --- a/_incl_data/class/Model/Constant/Stat.php +++ b/_incl_data/class/Model/Constant/Stat.php @@ -7,6 +7,10 @@ use Enum\StatFilterCellName; class Stat extends Constant { + public readonly array $sysBonusNames; + public readonly array $sysRequirementNames; + public readonly array $bonusNames; + public readonly array $requirementNames; public function __construct() { self::$tableName = 'const_stats'; @@ -15,7 +19,9 @@ class Stat extends Constant public function getBonusNames(): array { - return $this->filterByCell(StatFilterCellName::Bonus); + $filtered = $this->filterByCell(StatFilterCellName::Bonus); + $this->sysBonusNames = array_keys($filtered); + return $filtered; } private function filterByCell(StatFilterCellName $cellName): array @@ -32,6 +38,29 @@ class Stat extends Constant public function getRequirementNames(): array { - return $this->filterByCell(StatFilterCellName::Requirement); + $filtered = $this->filterByCell(StatFilterCellName::Requirement); + $this->sysRequirementNames = array_keys($filtered); + return $filtered; } -} \ No newline at end of file + + /** + * Создаёт и заполняет массивы bonusNames и sysBonusNames. + * @return void + */ + public function getBonus(): void + { + $this->bonusNames = $this->filterByCell(StatFilterCellName::Bonus); + $this->sysBonusNames = array_keys($this->bonusNames); + } + + + /** + * Создаёт и заполняет массивы requirementNames и sysRequirementNames. + * @return void + */ + public function getRequirement(): void + { + $this->requirementNames = $this->filterByCell(StatFilterCellName::Requirement); + $this->sysRequirementNames = array_keys($this->requirementNames); + } +} diff --git a/_incl_data/class/Priems.php b/_incl_data/class/Priems.php index 7ca72786..9c7e3352 100644 --- a/_incl_data/class/Priems.php +++ b/_incl_data/class/Priems.php @@ -4,6 +4,7 @@ use Core\Db; use DarksLight2\Training\TrainingManager; use Helper\Conversion; use Helper\Math; +use Model\Constant\Stat; use User\Effects; /* @@ -37,11 +38,12 @@ class Priems self::AIR => '#0af', ]; - public function __construct() + public function __construct(private readonly Stat $statnames = new Stat()) { global $btl; $this->btl = $btl; $this->u = User::start(); + $this->statnames->getRequirement(); } /** Набив Статики @@ -1433,9 +1435,8 @@ class Priems } $x = 0; - $t = $this->u->items['tr']; - while ($x < count($t)) { - $n = $t[$x]; + while ($x < count($this->statnames->sysRequirementNames)) { + $n = $this->statnames->sysRequirementNames[$x]; if (isset($tr['tr_' . $n])) { if ($n == 'lvl') { if ($tr['tr_' . $n] > $this->u->info['level']) { @@ -2212,24 +2213,22 @@ class Priems public function priemInfo($pl, $t, $id = false) { - global $u, $c, $code, $btl; + global $btl; $pz = explode('|', $this->u->info['priems_z']); $tr = Conversion::dataStringToArray($pl['tr']); $trs = ''; $x = 0; - $notr = 0; - $t = $this->u->items['tr']; - while ($x < count($t)) { - $n = $t[$x]; + + while ($x < count($this->statnames->sysRequirementNames)) { + $n = $this->statnames->sysRequirementNames[$x]; if (isset($tr['tr_' . $n])) { if ($tr['tr_' . $n] > $this->u->stats[$n]) { - $trs .= ''; - $notr++; + $trs .= ''; } $trs .= '
• '; - $trs .= $this->u->is[$n] . ': ' . $tr['tr_' . $n]; + $trs .= $this->statnames->requirementNames[$n] . ': ' . $tr['tr_' . $n]; if ($tr['tr_' . $n] > $this->u->stats[$n]) { - $trs .= '
'; + $trs .= ''; } } $x++; diff --git a/_incl_data/class/User.php b/_incl_data/class/User.php index 44db954d..0b46c1d4 100644 --- a/_incl_data/class/User.php +++ b/_incl_data/class/User.php @@ -6,6 +6,7 @@ use Core\Db; use Helper\Conversion; use JetBrains\PhpStorm\NoReturn; use Model\ActionModel; +use Model\Constant\Stat; use User\Effects; use User\InfoBox; use User\ItemsModel; @@ -562,6 +563,7 @@ class User private InfoBox $infoBox; private Reputation $reputation; private Stats $userStats; + private Stat $statnames; private function __construct(int $uid = 0) { @@ -586,6 +588,9 @@ class User $this->stats = $this->userStats->getStats($this->info); $this->infoTasks(); + $this->statnames = new Stat(); + $this->statnames->getBonus(); + $this->statnames->getRequirement(); if (Core\Config::get('securetime') > 0) { if (!defined('IP')) { @@ -910,7 +915,7 @@ class User ) . '" AND `sex` = "' . $this->info['sex'] . '" AND (`login` = "" OR `login` = "' . $this->info['login'] . '") LIMIT 1' ) ); - $t = $this->items['tr']; + $x = 0; $po = Conversion::dataStringToArray($o['tr']); if ($o['itm'] > 0) { @@ -938,8 +943,8 @@ class User $j++; } } - while ($x < count($t)) { - $n = $t[$x]; + while ($x < count($this->statnames->sysRequirementNames)) { + $n = $this->statnames->sysRequirementNames[$x]; if (isset($po['tr_' . $n]) && $po['tr_' . $n] > $this->stats[$n]) { $tr = false; } @@ -969,7 +974,7 @@ class User 'SELECT `id`,`sex`,`tr`,`img`,`login`,`level`,`admin`,`align`,`clan`,`itm` FROM `obraz` WHERE `id` = "' . ((int)$_GET['obr_sel']) . '" AND `sex` = "' . $this->info['sex'] . '" AND (`login` = "" OR `login` = "' . $this->info['login'] . '") LIMIT 1' ) ); - $t = $this->items['tr']; + $x = 0; $po = Conversion::dataStringToArray($o['tr']); if ($o['itm'] > 0) { @@ -1005,8 +1010,8 @@ class User $this->error = 'Необходимы предметы: ' . $tritm; } } - while ($x < count($t)) { - $n = $t[$x]; + while ($x < count($this->statnames->sysRequirementNames)) { + $n = $this->statnames->sysRequirementNames[$x]; if (isset($po['tr_' . $n]) && $po['tr_' . $n] > $this->stats[$n]) { $tr = false; $this->error = 'Недостаточно характеристик или параметров персонажа'; @@ -2555,9 +2560,9 @@ class User ); $j = 0; $data_r = Conversion::dataStringToArray($ritm['data']); - while ($j < count($this->items['add'])) { - if (isset($data_r['add_' . $this->items['add'][$j]])) { - $data['add_' . $this->items['add'][$j]] -= $data_r['add_' . $this->items['add'][$j]]; + while ($j < count($this->statnames->sysBonusNames)) { + if (isset($data_r['add_' . $this->statnames->sysBonusNames[$j]])) { + $data['add_' . $this->statnames->sysBonusNames[$j]] -= $data_r['add_' . $this->statnames->sysBonusNames[$j]]; } $j++; } @@ -2569,9 +2574,9 @@ class User //Добавляем характеристики руны $add = Conversion::dataStringToArray($rune['data']); $i = 0; - while ($i < count($this->items['add'])) { - if (isset($add['add_' . $this->items['add'][$i]])) { - $data['add_' . $this->items['add'][$i]] += $add['add_' . $this->items['add'][$i]]; + while ($i < count($this->statnames->sysBonusNames)) { + if (isset($add['add_' . $this->statnames->sysBonusNames[$i]])) { + $data['add_' . $this->statnames->sysBonusNames[$i]] += $add['add_' . $this->statnames->sysBonusNames[$i]]; } $i++; } @@ -2796,9 +2801,9 @@ class User ); $j = 0; $data_r = Conversion::dataStringToArray($ritm['data']); - while ($j < count($this->items['add'])) { - if (isset($data_r['add_' . $this->items['add'][$j]])) { - $pvr['rune'][$this->items['add'][$j]] = $data_r['add_' . $this->items['add'][$j]]; + while ($j < count($this->statnames->sysBonusNames)) { + if (isset($data_r['add_' . $this->statnames->sysBonusNames[$j]])) { + $pvr['rune'][$this->statnames->sysBonusNames[$j]] = $data_r['add_' . $this->statnames->sysBonusNames[$j]]; } $j++; } @@ -2808,39 +2813,24 @@ class User $data['add_hpAll'] -= $data['spell_st_val_hp']; } - //$i = 0; - //while( $i < count($data)) { if (!isset($data['spell_st_name'])) { - $delk = count($this->items['add']); - $this->items['add'][] = 'mib1'; - $this->items['add'][] = 'mib2'; - $this->items['add'][] = 'mib3'; - $this->items['add'][] = 'mib4'; - $this->items['add'][] = 'mab1'; - $this->items['add'][] = 'mab2'; - $this->items['add'][] = 'mab3'; - $this->items['add'][] = 'mab4'; $j = 0; - while ($j < count($this->items['add'])) { - if (isset($data['add_' . $this->items['add'][$j]])) { - if ($data_l['add_' . $this->items['add'][$j]] != $data['add_' . $this->items['add'][$j]] - $pvr['rune'][$this->items['add'][$j]] - $pvr['podgon'][$this->items['add'][$j]]) { - //echo ''.$this->items['add'][$j].' -> '.$data_l['add_'.$this->items['add'][$j]].' / '.$data['add_'.$this->items['add'][$j]].'
'; - if (!isset($data_l['add_' . $this->items['add'][$j]])) { - unset($data['add_' . $this->items['add'][$j]]); - } else { - $data['add_' . $this->items['add'][$j]] = $data_l['add_' . $this->items['add'][$j]]; - } + while ($j < count($this->statnames->sysBonusNames)) { + if ( + isset($data['add_' . $this->statnames->sysBonusNames[$j]]) && + $data_l['add_' . $this->statnames->sysBonusNames[$j]] != $data['add_' . $this->statnames->sysBonusNames[$j]] - $pvr['rune'][$this->statnames->sysBonusNames[$j]] - $pvr['podgon'][$this->statnames->sysBonusNames[$j]] + ) { + if (!isset($data_l['add_' . $this->statnames->sysBonusNames[$j]])) { + unset($data['add_' . $this->statnames->sysBonusNames[$j]]); + } else { + $data['add_' . $this->statnames->sysBonusNames[$j]] = $data_l['add_' . $this->statnames->sysBonusNames[$j]]; } } $j++; } - $i = 0; - while ($i < 8) { - unset($this->items['add'][$delk + $i]); - $i++; - } } } + //Новая чарка $i = 0; $utp = explode(',', $add['onItemType']); @@ -2858,9 +2848,9 @@ class User $tw = ''; } $j = 0; - while ($j < count($this->items['add'])) { - if (isset($add[$tw . 'add' . $utp[$i] . '_' . $this->items['add'][$j]])) { - $rnda[count($rnda)] = $this->items['add'][$j]; + while ($j < count($this->statnames->sysBonusNames)) { + if (isset($add[$tw . 'add' . $utp[$i] . '_' . $this->statnames->sysBonusNames[$j]])) { + $rnda[] = $this->statnames->sysBonusNames[$j]; } $j++; } @@ -3068,13 +3058,12 @@ class User $data['upatack_id'] = $rune['item_id']; $data['upatack_name'] = $rune['name']; $data['upatack_lvl'] = $add['upatack']; - $data['upatack_lvl'] = $add['upatack']; //Добавляем характеристики руны $i = 0; - while ($i < count($this->items['add'])) { - if (isset($add['add_' . $this->items['add'][$i]])) { - $data['add_' . $this->items['add'][$i]] += $add['add_' . $this->items['add'][$i]]; + while ($i < count($this->statnames->sysBonusNames)) { + if (isset($add['add_' . $this->statnames->sysBonusNames[$i]])) { + $data['add_' . $this->statnames->sysBonusNames[$i]] += $add['add_' . $this->statnames->sysBonusNames[$i]]; } $i++; } @@ -3653,72 +3642,66 @@ class User $notr++; } $tr = ''; - $t = $this->items['tr']; + $x = 0; - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['tr_' . $n]) && $po['tr_' . $n] != 0) { + while ($x < count($this->statnames->sysRequirementNames)) { + $n = $this->statnames->sysRequirementNames[$x]; + if (!empty($po['tr_' . $n])) { if ($n == 'sex') { if ($this->info['sex'] != $po['tr_' . $n]) { - $tr .= ''; + $tr .= ''; $notr++; } } elseif ($po['tr_' . $n] > $this->stats[$n]) { - if ($n == 'align_bs' && $this->info['inTurnir'] > 0) { - if ($po['tr_align_bs'] == '1') { - $pal = !($this->info['align_real'] <= 1 || $this->info['align_real'] >= 2); - } elseif ($po['tr_align_bs'] == '3') { - $tar = !($this->info['align_real'] <= 3 || $this->info['align_real'] >= 4); - } - } + if ($n == 'rep') { $temp = explode('::', $po['tr_' . $n]); if ($this->rep['rep' . $temp[1]] < $temp[0]) { - $tr .= ''; + $tr .= ''; $notr++; } unset($temp); - } elseif ($n == 'align_bs' && $this->info['inTurnir'] > 0 && ($pal = false || $tar = false)) { - $tr .= ''; + } elseif ($n == 'align_bs' && $this->info['inTurnir'] > 0) { + $tr .= ''; $notr++; } elseif ($n != 'align' && $n != 'align_bs' || floor( $this->info['align'] ) != $po['tr_' . $n]) { - $tr .= ''; + $tr .= ''; $notr++; } } $tr .= '
• '; if ($n == 'rep') { $temp = explode('::', $po['tr_' . $n]); - $tr .= $this->is[$n] . ' ' . ucfirst( + $tr .= $this->statnames->requirementNames[$n] . ' ' . ucfirst( str_replace('city', ' city', $temp[1]) ) . ': ' . $temp[0]; unset($temp); } elseif ($n != 'align' && $n != 'align_bs') { if ($n == 'sex') { if ($po['tr_' . $n] == 1) { - $tr .= $this->is[$n] . ': Женский'; + $tr .= $this->statnames->requirementNames[$n] . ': Женский'; } else { - $tr .= $this->is[$n] . ': Мужской'; + $tr .= $this->statnames->requirementNames[$n] . ': Мужской'; } } else { - $tr .= $this->is[$n] . ': ' . $po['tr_' . $n]; + $tr .= $this->statnames->requirementNames[$n] . ': ' . $po['tr_' . $n]; } } else { - $tr .= $this->is[$n] . ': ' . $this->align_nm[$po['tr_' . $n]]; + $tr .= $this->statnames->requirementNames[$n] . ': ' . $this->align_nm[$po['tr_' . $n]]; } if ($n == 'sex') { if ($this->info['sex'] != $po['tr_' . $n]) { - $tr .= '
'; + $tr .= '
'; } } elseif ($po['tr_' . $n] > $this->stats[$n]) { - if ($n == 'align_bs' && $this->info['inTurnir'] > 0 && ($pal = false || $tar = false)) { - $tr .= '
'; + if ($n == 'align_bs' && $this->info['inTurnir'] > 0) { + $tr .= '
'; } elseif ($n != 'align' && $n != 'align_bs' || floor( $this->info['align'] ) != $po['tr_' . $n]) { - $tr .= '
'; + $tr .= '
'; } } } @@ -3729,7 +3712,7 @@ class User } //Действует на: $tr = ''; - $t = $this->items['add']; + if (isset($po['mf_stats']) && $po['mf_stats'] > 0) { $tr .= '
Свободные характеристики: ' . $po['mf_stats']; } @@ -3741,19 +3724,19 @@ class User } $x = 0; - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['add_' . $n], $this->is[$n])) { + while ($x < count($this->statnames->sysBonusNames)) { + $n = $this->statnames->sysBonusNames[$x]; + if (isset($po['add_' . $n])) { $z = '+'; if ($po['add_' . $n] < 0) { $z = ''; } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n]; + $tr .= '
• ' . $this->statnames->bonusNames[$n] . ': ' . $z . $po['add_' . $n]; if (isset($po['mf_stats']) && $po['mf_stats'] > 0 && ($n == 's1' || $n == 's2' || $n == 's3' || $n == 's5')) { - $tr .= ' '; + $tr .= ' '; } if (isset($po['mf_mod']) && $po['mf_mod'] > 0 && ($n == 'm1' || $n == 'm2' || $n == 'm4' || $n == 'm5')) { - $tr .= ' '; + $tr .= ' '; } } $x++; @@ -3763,17 +3746,10 @@ class User $bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног']; while ($i <= 4) { if (isset($po['add_mab' . $i])) { - if ($po['add_mab' . $i] == $po['add_mib' . $i] && $pl['geniration'] == 1) { - $z = '+'; - if ($po['add_mab' . $i] < 0) { - $z = ''; - } - $tr .= '
• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i]; - } else { - $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i]; - } + $tr .= '
• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i]; + if (isset($po['mf_mib']) && $po['mf_mib'] > 0) { - $tr .= ' '; } } @@ -3785,22 +3761,11 @@ class User } //Свойства предмета: $tr = ''; - $t = $this->items['sv']; + if (isset($po['sv_yron_min'], $po['sv_yron_max'])) { $tr .= '
• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max']; } - $x = 0; - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['sv_' . $n])) { - $z = '+'; - if ($po['sv_' . $n] < 0) { - $z = ''; - } - $tr .= '
• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n]; - } - $x++; - } + if ($pl['2too'] == 1) { $tr .= '
• Второе оружие'; } @@ -3810,20 +3775,16 @@ class User if (isset($po['zonb'])) { $tr .= '
• Зоны блокирования: '; if ($po['zonb'] > 0) { - $x = 1; - while ($x <= $po['zonb']) { - $tr .= '+'; - $x++; - } + $tr .= str_repeat('+', $po['zonb']); } else { $tr .= '—'; } } + if ($tr != '') { $is2 .= '
Свойства предмета:' . $tr; } - if ($notr == 0) { $d[0] = 1; if ($pl['magic_inci'] != '' || $pl['magic_inc'] != '') { @@ -4019,16 +3980,18 @@ class User $i1c = 0; $i2c = 0; $i1e = Conversion::dataStringToArray($plc['data']); - while ($i1c < count($this->items['add'])) { - if (isset($i1e[$this->items['add'][$i1c]])) { - $i3c = $i1e[$this->items['add'][$i1c]]; + + + while ($i1c < count($this->statnames->sysBonusNames)) { + if (isset($i1e[$this->statnames->sysBonusNames[$i1c]])) { + $i3c = $i1e[$this->statnames->sysBonusNames[$i1c]]; if ($i3c > 0) { $i3c = '+' . $i3c; } if ($i2c > 0) { - $com1['text'] .= '    ' . $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + $com1['text'] .= '    ' . $this->statnames->bonusNames[$this->statnames->sysBonusNames[$i1c]] . ': ' . $i3c; } else { - $com1['text'] .= $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + $com1['text'] .= $this->statnames->bonusNames[$this->statnames->sysBonusNames[$i1c]] . ': ' . $i3c; } $com1['text'] .= '
'; $i2c++; @@ -4055,16 +4018,16 @@ class User $i1c = 0; $i2c = 0; $i1e = Conversion::dataStringToArray($plc['data']); - while ($i1c < count($this->items['add'])) { - if (isset($i1e[$this->items['add'][$i1c]])) { - $i3c = $i1e[$this->items['add'][$i1c]]; + while ($i1c < count($this->statnames->sysBonusNames)) { + if (isset($i1e[$this->statnames->sysBonusNames[$i1c]])) { + $i3c = $i1e[$this->statnames->sysBonusNames[$i1c]]; if ($i3c > 0) { $i3c = '+' . $i3c; } if ($i2c > 0) { - $com1['text'] .= '    ' . $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + $com1['text'] .= '    ' . $this->statnames->bonusNames[$this->statnames->sysBonusNames[$i1c]] . ': ' . $i3c; } else { - $com1['text'] .= $this->is[$this->items['add'][$i1c]] . ': ' . $i3c; + $com1['text'] .= $this->statnames->bonusNames[$this->statnames->sysBonusNames[$i1c]] . ': ' . $i3c; } $com1['text'] .= '
'; $i2c++; @@ -4089,9 +4052,9 @@ class User $ixi = 0; while ($sm_pl = mysql_fetch_array($sm_sp)) { if ($sm_pl['type'] == 0) { - $smt .= '' . date( + $smt .= '' . date( 'd.m.Y H:i', $sm_pl['time'] - ) . ' ' . $sm_pl['login'] . '. ' . $sm_pl['text'] . '
'; + ) . ' ' . $sm_pl['login'] . '. ' . $sm_pl['text'] . '
'; } else { $smt .= $sm_pl['text'] . '
'; } @@ -4154,8 +4117,8 @@ class User ) ); if (isset($plpo['id'])) { - $is2 .= ' (Дар игрока ' . $plpo['login'] . ')'; + $is2 .= ' (Дар игрока ' . $plpo['login'] . ')'; if ($plpo['login'] == $this->info['login']) { if (isset($_GET['backmyitm'])) { $pl['inOdet'] = 0; @@ -5106,8 +5069,6 @@ class User [$u['id']] ); - - $t = $this->items['tr']; $x = 0; $notr = 0; @@ -5140,8 +5101,8 @@ class User } $j++; } - while ($x < count($t)) { - $n = $t[$x]; + while ($x < count($this->statnames->sysRequirementNames)) { + $n = $this->statnames->sysRequirementNames[$x]; if (isset($po['tr_' . $n]) && $n == 'sex') { if ($po['tr_' . $n] != $this->info['sex']) { $notr++; @@ -5889,7 +5850,7 @@ LIMIT 1' private function trItem($po): int { $notr = 0; - foreach ($this->items['tr'] as $trn) { + foreach ($this->statnames->sysRequirementNames as $trn) { if (!isset($po["tr_$trn"])) { continue; } diff --git a/_incl_data/class/User/InfoBox.php b/_incl_data/class/User/InfoBox.php index 5fb9d90d..758f9be6 100644 --- a/_incl_data/class/User/InfoBox.php +++ b/_incl_data/class/User/InfoBox.php @@ -5,6 +5,7 @@ namespace User; use Core\Config; use Core\Db; use Helper\Conversion; +use Model\Constant\Stat; use User; /** @@ -12,16 +13,11 @@ use User; */ class InfoBox { - - private User $user; private array $info; - private array $is; - public function __construct(User $user) + public function __construct(private readonly User $user, private readonly Stat $statname = new Stat()) { - $this->user = $user; $this->info = $user->info; - $this->is = $user->is; } public function getInfoPers($uid, $i1, $sn = 0, $ivv = 0): array @@ -116,7 +112,7 @@ class InfoBox $lvar = $this->getInfoItemInfo($pl, $td); - if (@isset($sn['items_img'][$tp_img[$pl['inOdet']]])) { + if (isset($sn['items_img'][$tp_img[$pl['inOdet']]])) { $uimg = 'rimg/r' . $sn['items_img'][$tp_img[$pl['inOdet']]]; } else { $uimg = 'i/items/' . $pl['img']; @@ -160,6 +156,7 @@ class InfoBox } } } + //Шлем,Венок $wj1i = ''; $br = '
'; @@ -387,17 +384,17 @@ class InfoBox //Действие эффекта $tr = ''; - $t = $this->user->items['add']; + $t = array_keys($this->statname->getBonusNames()); $x = 0; $ed = Conversion::dataStringToArray($e['data']); while ($x < count($t)) { $n = $t[$x]; - if (isset($ed['add_' . $n], $this->is[$n])) { + if (isset($ed['add_' . $n])) { $z = ''; if ($ed['add_' . $n] > 0) { $z = '+'; } - $tr .= '
' . $this->is[$n] . ': ' . $z . $ed['add_' . $n]; + $tr .= '
' . $this->statname->getBonusNames()[$n] . ': ' . $z . $ed['add_' . $n]; } $x++; } @@ -426,7 +423,7 @@ class InfoBox //здоровье $hptop = 0; - $lh = [0 => 'hp_none', 1 => 1]; + $lh = [0 => 'hp_none']; if ($sn['hpNow'] == 0 || $sn['hpAll'] == 0) { $lh[1] = 0; @@ -444,8 +441,7 @@ class InfoBox } if ($sn['mpAll'] > 0) { //мана - $lm = [0 => 'hp_none', 1 => 1]; - $lm[1] = floor($sn['mpNow'] / $sn['mpAll'] * 120); + $lm = ['hp_none', floor($sn['mpNow'] / $sn['mpAll'] * 120)]; if ($lm[1] > 0) { $lm[0] = 'hp_mp'; } @@ -471,10 +467,10 @@ class InfoBox $pb = ''; if ($u['banned'] > 0) { - $pb .= '
Персонаж заблокирован
'; + $pb .= '
Персонаж заблокирован
'; } if ($u['allLock'] > time()) { - $pb .= '
Временный запрет передач!
'; + $pb .= '
Временный запрет передач!
'; } $swm = 0; //свитки магии @@ -503,39 +499,39 @@ class InfoBox if ($ssm > 0 && $i1 == 0) { $witmg .= ' - - - - - - -
' . $witm[59] . '' . $witm[60] . '' . $witm[61] . '' . $witm[62] . '
'; + + ' . $witm[59] . ' + ' . $witm[60] . ' + ' . $witm[61] . ' + ' . $witm[62] . ' + + '; } if ($swm > 0 && $i1 == 0) { $witmg .= ' - - - - - - - - - - - - - - - - - -
' . $witm[40] . '' . $witm[41] . '' . $witm[42] . '' . $witm[43] . '' . $witm[44] . '' . $witm[50] . '
' . $witm[45] . '' . $witm[46] . '' . $witm[47] . '' . $witm[48] . '' . $witm[49] . '' . $witm[51] . '
'; + + ' . $witm[40] . ' + ' . $witm[41] . ' + ' . $witm[42] . ' + ' . $witm[43] . ' + ' . $witm[44] . ' + ' . $witm[50] . ' + + + ' . $witm[45] . ' + ' . $witm[46] . ' + ' . $witm[47] . ' + ' . $witm[48] . ' + ' . $witm[49] . ' + ' . $witm[51] . ' + + + '; } $zag = ''; if ($u['zag'] != '' && $i1 == 1) { - $rt[0] .= ''; + $rt[0] .= ''; $zag = ''; @@ -712,45 +708,28 @@ class InfoBox $lvar .= '
Урон: ' . $po['sv_yron_min'] . '-' . $po['sv_yron_max']; } - $t = $this->user->items['add']; + $t = array_keys($this->statname->getBonusNames()); $x = 0; while ($x < count($t)) { $n = $t[$x]; - if (isset($po['add_' . $n], $this->is[$n])) { + if (isset($po['add_' . $n])) { $z = '+'; if ($po['add_' . $n] < 0) { $z = ''; } - $lvar .= '
' . $this->is[$n] . ': ' . $z . $po['add_' . $n]; - } - $x++; - } - // - $x = 0; - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['sv_' . $n])) { - $z = '+'; - if ($po['sv_' . $n] < 0) { - $z = ''; - } - if ($n != 'yron_min' && $n != 'yron_max') { - $lvar .= '
' . $this->is[$n] . ': ' . $z . $po['sv_' . $n]; - } + $lvar .= '
' . $this->statname->getBonusNames()[$n] . ': ' . $z . $po['add_' . $n]; } $x++; } + + if (isset($pl['2h']) && $pl['2h'] == 1) { $lvar .= '
• Двуручное оружие'; } if (isset($po['zonb'])) { $lvar .= '
Зоны блокирования: '; if ($po['zonb'] > 0) { - $x = 1; - while ($x <= $po['zonb']) { - $lvar .= '+'; - $x++; - } + $lvar .= str_repeat('+', $po['zonb']); } else { $lvar .= '—'; } @@ -772,7 +751,7 @@ class InfoBox if (isset($pl['iznosMAX']) && $pl['iznosMAX'] > 0) { - $lvar .= '
Долговечность: ' . floor($pl['iznosNOW']) . DIRECTORY_SEPARATOR . ceil($pl['iznosMAX']); + $lvar .= '
Долговечность: ' . (int)($pl['iznosMAX'] - $pl['iznosNOW']); } if (!empty($po['battleUseZd']) && $po['battleUseZd'] > 0) { diff --git a/_incl_data/class/User/Item.php b/_incl_data/class/User/Item.php new file mode 100644 index 00000000..55c6fed2 --- /dev/null +++ b/_incl_data/class/User/Item.php @@ -0,0 +1,58 @@ + $this->id, + 'type' => $this->type, + 'name' => $this->name, + 'img' => $this->img, + 'inslot' => $this->inslot, + 'inOdet' => $this->inodet, + 'data' => $this->data, + 'iznosNOW' => $iNow, + 'iznosMAX' => $iMax, + ] = $item; + $this->durability = $iMax - $iNow; + $stat = new Stat(); + $dataArr = Conversion::dataStringToArray(strtolower($this->data)); + foreach (array_keys($stat->getBonusNames()) as $bonusName) { + if (!isset($dataArr["add_$bonusName"])) { + continue; + } + + $this->{"add_$bonusName"} = $dataArr["add_$bonusName"]; + } + + } + +} + +// type, data, inOdet, +// item_id, inslot, useInBattle, btl_zd, iznosNOW, iznosMAX, magic_inci, name, items_users.id, img, `2h` + +/* +'data' => string 'add_za1=5|add_m4=40|add_s2=1|add_s3=2|sv_yron_min=5|sv_yron_max=15|add_m5=30|add_m1=30|add_m9=15|complect=106|tya1=75|tya3=25|fromshop=1' (length=136) +'item_id' => int 6473 + +'useInBattle' => int 0 +'btl_zd' => int 0 +'magic_inci' => string '' (length=0) +'2h' => int 0 +*/ diff --git a/_incl_data/class/User/Stats.php b/_incl_data/class/User/Stats.php index 48f91c8e..7f2c8680 100644 --- a/_incl_data/class/User/Stats.php +++ b/_incl_data/class/User/Stats.php @@ -195,7 +195,7 @@ class Stats } - [$hnd1, $hnd2, $sht1, $oza, $ozm, $dom, $coms] = $this->addWearedItemsBonuses($u['id'], $st, $s_v, $baseStats); + [$hnd1, $hnd2, $sht1, $dom, $coms] = $this->addWearedItemsBonuses($u['id'], $st, $s_v, $baseStats); $this->addMedalsBonuses($u['id'], $st); @@ -408,21 +408,9 @@ class Stats $st['zonb']++; } - if ($st['zona'] < 1) { - $st['zona'] = 1; - } - if ($st['zona'] > 5) { - $st['zona'] = 5; - } - if ($st['zonb'] < 1) { - $st['zonb'] = 1; - } - if ($st['zonb'] > 3) { - $st['zonb'] = 3; - } + $st['zona'] = Comparsion::minimax($st['zona'], 1, 5); + $st['zonb'] = Comparsion::minimax($st['zonb'], 1, 3); - $st['ozash'] = $oza; - $st['ozmsh'] = $ozm; $st['weapon1'] = $hnd1; $st['weapon2'] = $hnd2; $st['sheld1'] = $sht1; @@ -500,6 +488,15 @@ class Stats $st[$key] += $value; } + /** + * Добавляет бонусы к статам игрока. + * Генерирует переменную User:class->stats['items'], где лежат одетые предметы. + * @param int $uid + * @param array $st + * @param array $s_v + * @param array $baseStats + * @return array + */ private function addWearedItemsBonuses(int $uid, array &$st, array &$s_v, array $baseStats): array { //Характеристики от предметов //ТУТ tr_lvl @@ -518,33 +515,20 @@ class Stats $coms = []; // комплекты $dom = []; - $oza = [ - 1 => [0, 0], - 2 => [0, 0], - 3 => [0, 0], - 4 => [0, 0], - ]; //особенности защиты - $ozm = [ - 1 => [0, 0], - 2 => [0, 0], - 3 => [0, 0], - 4 => [0, 0], - ]; //особенности магии - - $ozaozmtypes = [ - 1 => [1, 9,],//Слабая - 2 => [20, 39,],//Нормальная - 3 => [40, 69,],//Хорошая - 4 => [10, 19,],//Посредственная - 5 => [70, 89,],//Великолепная - ]; - + $wi = new WearedItem(); // на замену User:class->stats['items'] + $st['items_o'] = $wi; foreach ($wearedItems as $wearedItem) { + // Генерируем всратую пепяку User:class->stats['wpXid'] > 0, которая показывает, что определённый слот + // чем-то занят. Странное решение. $this->addKeyIfNotExist('wp' . $wearedItem['inOdet'] . 'id', $h, $st); $st['items'][$h] = $wearedItem; $h++; + + $wi->add(new Item($wearedItem)); + + // Если в левой руке (3) предметы определённого типа, то рука занята оружием. if ($wearedItem['inOdet'] == 3 && (($wearedItem['type'] >= 18 && $wearedItem['type'] <= 24) || $wearedItem['type'] == 26 || @@ -552,6 +536,8 @@ class Stats $wearedItem['type'] == 28)) { $hnd1 = 1; } + + // Если в правой руке (14) предметы определённого типа, то рука занята оружием или щитом. if ($wearedItem['inOdet'] == 14 && (($wearedItem['type'] >= 18 && $wearedItem['type'] <= 24) || $wearedItem['type'] == 26 || @@ -562,44 +548,13 @@ class Stats $sht1 = 1; } - $data = Conversion::dataStringToArray($wearedItem['data']); + // Если в любом слоте что-то есть, повышается User:class->stats['reting'] за каждый слот + // Используется каким-то непонятным образом в хаотах. if ($wearedItem['inOdet'] <= 18 && $wearedItem['inOdet'] > 0) { $this->addKeyIfNotExist('reting', 1, $st); } - # Пришлось зацикливать, уж больно однотипное. - # 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_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_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]; - } - } - + $data = Conversion::dataStringToArray($wearedItem['data']); if (isset($data['art'])) { $this->addKeyIfNotExist('art', $data['art'], $st); } @@ -696,7 +651,7 @@ class Stats } } } - return [$hnd1, $hnd2, $sht1, $oza, $ozm, $dom, $coms]; + return [$hnd1, $hnd2, $sht1, $dom, $coms]; } private function addMedalsBonuses(int $uid, array &$st): void diff --git a/_incl_data/class/User/WearedItem.php b/_incl_data/class/User/WearedItem.php new file mode 100644 index 00000000..cfcb35d4 --- /dev/null +++ b/_incl_data/class/User/WearedItem.php @@ -0,0 +1,34 @@ +slot[$item->inslot] = $item; + } + + public function exist(int $slot): bool + { + return array_key_exists($slot, $this->slot); + } + + public function get(int $slot): Item + { + return $this->slot[$slot]; + } + + public function count(): int + { + return count($this->slot); + } + + public function remove(int $slot): void + { + array_splice($this->slot, $slot, 1); + } +} \ No newline at end of file diff --git a/_incl_data/class/User/WearedScrolls.php b/_incl_data/class/User/WearedScrolls.php index bf1974af..e7d09315 100644 --- a/_incl_data/class/User/WearedScrolls.php +++ b/_incl_data/class/User/WearedScrolls.php @@ -5,33 +5,33 @@ namespace User; use Core\Db; /** - * , , - * . - * User\Stats. + * Непонятный кусок функции, который лежал внутри системы подсчёта бонусов к параметрам, + * при этом никак на это не влияя и ни с чем не взаимодействуя. Надо понять что его + * вызывает и выгнать его из User\Stats. */ class WearedScrolls { public static function ScrollsChange(array &$u): void { - // + //Замена свитков if ($u['autospell'] == 0 || $u['battle'] != 0) { return; } - // + //проверяем свитки $sparr = []; foreach (Db::getRows('select item_id, inOdet from items_users where inOdet between 40 and 50 and uid = ? order by item_id desc', [$u['id']]) as $scroll) { $sparr[] = "{$scroll['item_id']} - {$scroll['inOdet']}"; } $splink = implode(',', $sparr); - // + //Запоминаем новый комплект свитков if ($u['autospell'] == 1) { $u['autospell'] = $splink; Db::sql('update users set autospell = ? where id = ?', [$splink, $u['id']]); } - // , + //Выдаем нужный свиток, если он есть в инвентаре if ($u['autospell'] != $splink) { $spe1 = explode(',', $splink); $spe2 = explode(',', $u['autospell']); diff --git a/adminion/testing.php b/adminion/testing.php index 11241789..13156758 100644 --- a/adminion/testing.php +++ b/adminion/testing.php @@ -3,6 +3,7 @@ const GAME = true; include('_incl_data/__config.php'); include('_incl_data/class/__db_connect.php'); +require_once $_SERVER['DOCUMENT_ROOT'] . '/_incl_data/autoload.php'; $u = User::start(); if (!$u->info['admin']) { @@ -20,18 +21,18 @@ while ($i < 100) { ?> - + Тестирование ботов - - - + + + - - - + + + - + - +

Создать тестовый бой


@@ -207,55 +207,41 @@ while ($i < 100) { ); // mysql_query( - 'INSERT INTO `battle_logs` ( - `time`,`battle`,`id_hod`,`type`,`text` - ) VALUES ( - "' . time() . '","' . $logid . '","1","1","Часы показывали ' . date( - 'd.m.Y H:i:s' - ) . ', когда ' . $user1['login'] . ' и ' . $user2['login'] . ' бросили вызов друг другу." - )' + 'INSERT INTO `battle_logs` (`time`,`battle`,`id_hod`,`type`,`text`) VALUES ("' . time() . '","' . $logid . '","1","1","Часы показывали ' . date('d.m.Y H:i:s') . ', когда ' . $user1['login'] . ' и ' . $user2['login'] . ' бросили вызов друг другу.")' ); // //Эффекты $i = 0; while ($i < 1000) { // - $efs = mysql_fetch_array( - mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $i . '" LIMIT 1') - ); + $efs = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $i . '" LIMIT 1')); if ($_POST['eu1_' . $efs['id2']] == 1) { mysql_query( - 'INSERT INTO `eff_users` - ( `id_eff` , `uid` , `name` , `data` , `timeUse` ) VALUES ( - "' . $efs['id2'] . '" , "' . $bot1 . '" , "' . $efs['mname'] . '" , "' . $efs['mdata'] . '" , "' . time() . '" - )' + 'INSERT INTO `eff_users` ( `id_eff` , `uid` , `name` , `data` , `timeUse` ) +VALUES ("' . $efs['id2'] . '" , "' . $bot1 . '" , "' . $efs['mname'] . '" , "' . $efs['mdata'] . '" , "' . time() . '")' ); } if ($_POST['eu2_' . $efs['id2']] == 1) { mysql_query( - 'INSERT INTO `eff_users` - ( `id_eff` , `uid` , `name` , `data` , `timeUse` ) VALUES ( - "' . $efs['id2'] . '" , "' . $bot2 . '" , "' . $efs['mname'] . '" , "' . $efs['mdata'] . '" , "' . time() . '" - )' + 'INSERT INTO `eff_users` ( `id_eff` , `uid` , `name` , `data` , `timeUse` ) +VALUES ("' . $efs['id2'] . '" , "' . $bot2 . '" , "' . $efs['mname'] . '" , "' . $efs['mdata'] . '" , "' . time() . '")' ); } - // + $i++; } - // + function inuser_go_btl($id) { if (isset($id['id'])) { file_get_contents( - '/jx/battle/refresh1.php?uid=' . $id['id'] . '&cron_core=' . md5( - $id['id'] . '_brfCOreW@!_' . $id['pass'] - ) . '&pass=' . $id['pass'] + '/jx/battle/refresh1.php?uid=' . $id['id'] . '&cron_core=' . md5($id['id'] . '_brfCOreW@!_' . $id['pass']) . '&pass=' . $id['pass'] ); } } $sp = mysql_query( - 'SELECT `id`,`time_start` FROM `battle` WHERE `team_win` = "-1" AND `time_over` = "0" AND `type` = 329 LIMIT 100' + 'SELECT `id`,`time_start` FROM `battle` WHERE `team_win` = -1 AND `time_over` = 0 AND `type` = 329 LIMIT 100' ); while ($pl = mysql_fetch_array($sp)) { $user1 = mysql_fetch_array( @@ -275,7 +261,7 @@ while ($i < 100) { // $ef1 = ''; $ef2 = ''; - $sp = mysql_query('SELECT * FROM `eff_main` WHERE `mdata` != "" AND `actionTime` > 0 ORDER BY `mname` ASC'); + $sp = mysql_query('SELECT * FROM `eff_main` WHERE `mdata` != \'\' AND `actionTime` > 0 ORDER BY `mname` '); $i = 0; while ($pl = mysql_fetch_array($sp)) { $i++; @@ -283,17 +269,16 @@ while ($i < 100) { //Действие эффекта $ei = ''; $tr = ''; - $t = $u->items['add']; $x = 0; $ed = Helper\Conversion::dataStringToArray($pl['mdata']); - while ($x < count($t)) { - $n = $t[$x]; + while ($x < count($this->statnames->sysBonusNames)) { + $n = $this->statnames->sysBonusNames[$x]; if (isset($ed['add_' . $n], $u->is[$n])) { $z = ''; if ($ed['add_' . $n] > 0) { $z = '+'; } - $tr .= '
' . $u->is[$n] . ': ' . $z . '' . $ed['add_' . $n]; + $tr .= '
' . $this->statnames->bonusNames[$n] . ': ' . $z . $ed['add_' . $n]; } $x++; } diff --git a/inf.php b/inf.php index 7558d224..fd899981 100644 --- a/inf.php +++ b/inf.php @@ -10,6 +10,7 @@ use Inf\Awards; use Inf\LastNames; use Inf\Twinks; use Inf\Zodiac; +use Model\Constant\Stat; use User\Effects; if (!defined('GAME_VERSION')) { @@ -26,6 +27,7 @@ $c['inf'] = true; include_once('_incl_data/class/__db_connect.php'); $u = User::start(); +$bonusstatnames = (new Stat())->getBonusNames(); const LOWERCASE = 3; const UPPERCASE = 1; @@ -346,27 +348,16 @@ if (isset($uer)) {
items['add'] as $stat) { + + foreach (array_keys($bonusstatnames) as $stat) { if (empty($st[$stat]) || empty($u->is[$stat])) { continue; } if ($st[$stat] > 0) { $st[$stat] = '+' . $st[$stat]; } - if (in_array($u->is[$stat], [ - 'Защита от урона', - 'Сила', - 'Мастерство владения оружием', - 'Мастерство владения магией огня', - 'Уровень жизни (HP)', - 'Мф. критического удара (%)', - 'Мф. мощности магии огня', - 'Регенерация здоровья (%)', - 'Мф. мощности урона', - ])) { - echo '
'; - } - echo '• ' . $u->is[$stat] . ': ' . $st[$stat] . '
'; + + echo '• ' . $bonusstatnames[$stat] . ': ' . $st[$stat] . '
'; } ?>
diff --git a/items_info.php b/items_info.php index 9d0292f4..3ebc3f8c 100644 --- a/items_info.php +++ b/items_info.php @@ -122,7 +122,131 @@ $items = [ 'sv' => ['pza', 'pza1', 'pza2', 'pza3', 'pza4', 'notravma', 'min_zonb', 'min_zona', 'nokrit', 'pog', 'min_use_mp', 'za1proc', 'za2proc', 'za3proc', 'za4proc', 'zaproc', 'zmproc', 'zm1proc', 'zm2proc', 'zm3proc', 'zm4proc', 'shopSale', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 'aall', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'm2all', 'mall', 'mg1', 'mg2', 'mg3', 'mg4', 'mg5', 'mg6', 'mg7', 'hpAll', 'mpAll', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9', 'm14', 'm15', 'm16', 'm17', 'm18', 'm19', 'm20', 'm21', 'pa1', 'pa2', 'pa3', 'pa4', 'pm1', 'pm2', 'pm3', 'pm4', 'pm5', 'pm6', 'pm7', 'min_use_mp', 'za', 'za1', 'za2', 'za3', 'za4', 'zma', 'zm', 'zm1', 'zm2', 'zm3', 'zm4', 'zm5', 'zm6', 'zm7', 'mib1', 'mab1', 'mib2', 'mab2', 'mib3', 'mab3', 'mib4', 'mab4', 'speedhp', 'speedmp', 'm10', 'm11', 'zona', 'zonb', 'maxves', 'minAtack', 'maxAtack', 'free_stats', 'tya1', 'tya2', 'tya3', 'tya4', 'tym1', 'tym2', 'tym3', 'tym4', 'tym5', 'tym6', 'tym7'], ]; -$is = ['oza' => 'Защита от урона', 'oza1' => 'Защита от колющего урона', 'oza2' => 'Защита от рубящего урона', 'oza3' => 'Защита от дробящего урона', 'oza4' => 'Защита от режущего урона', 'hpAll' => 'Уровень жизни (HP)', 'mpAll' => 'Уровень маны', 'sex' => 'Пол', 'lvl' => 'Уровень', 's1' => 'Сила', 's2' => 'Ловкость', 's3' => 'Интуиция', 's4' => 'Выносливость', 's5' => 'Интелект', 's6' => 'Мудрость', 's7' => 'Духовность', 's8' => 'Воля', 's9' => 'Свобода духа', 's10' => 'Божественность', 'm1' => 'Мф. критического удара (%)', 'm2' => 'Мф. против критического удара (%)', 'm3' => 'Мф. мощности критического удара (%)', 'm4' => 'Мф. увертывания (%)', 'm5' => 'Мф. против увертывания (%)', 'm6' => 'Мф. контрудара (%)', 'm7' => 'Мф. парирования (%)', 'm8' => 'Мф. блока щитом (%)', 'm9' => 'Мф. пробоя брони (%)', 'm14' => 'Мф. абс. критического удара (%)', 'm15' => 'Мф. абс. увертывания (%)', 'm16' => 'Мф. абс. парирования (%)', 'm17' => 'Мф. абс. контрудара (%)', 'm18' => 'Мф. абс. блока щитом (%)', 'm19' => 'Мф. абс. магический промах (%)', 'm20' => 'Мф. удача (%)', 'm21' => 'Мф. абс. попадания (%)', 'a1' => 'Мастерство владения ножами, кинжалами', 'a2' => 'Мастерство владения топорами, секирами', 'a3' => 'Мастерство владения дубинами, молотами', 'a4' => 'Мастерство владения мечами', 'a5' => 'Мастерство владения магическими посохами', 'a6' => 'Мастерство владения луками', 'a7' => 'Мастерство владения арбалетами', 'aall' => 'Мастерство владения оружием', 'mall' => 'Мастерство владения магией стихий', 'm2all' => 'Мастерство владения магией', 'mg1' => 'Мастерство владения магией огня', 'mg2' => 'Мастерство владения магией воздуха', 'mg3' => 'Мастерство владения магией воды', 'mg4' => 'Мастерство владения магией земли', 'mg5' => 'Мастерство владения магией Света', 'mg6' => 'Мастерство владения магией Тьмы', 'mg7' => 'Мастерство владения серой магией', 'tj' => 'Тяжелая броня', 'lh' => 'Легкая броня', 'minAtack' => 'Минимальный урон', 'maxAtack' => 'Максимальный урон', 'm10' => 'Мф. мощности урона', 'm11' => 'Мф. мощности магии стихий', 'm11a' => 'Мф. мощности магии', 'pa1' => 'Мф. мощности колющего урона', 'pa2' => 'Мф. мощности рубящего урона', 'pa3' => 'Мф. мощности дробящий урона', 'pa4' => 'Мф. мощности режущий урона', 'pm1' => 'Мф. мощности магии огня', 'pm2' => 'Мф. мощности магии воздуха', 'pm3' => 'Мф. мощности магии воды', 'pm4' => 'Мф. мощности магии земли', 'pm5' => 'Мф. мощности магии Света', 'pm6' => 'Мф. мощности магии Тьмы', 'pm7' => 'Мф. мощности серой магии', 'za' => 'Защита от урона', 'zm' => 'Защита от магии стихий', 'zma' => 'Защита от магии', 'za1' => 'Защита от колющего урона', 'za2' => 'Защита от рубящего урона', 'za3' => 'Защита от дробящий урона', 'za4' => 'Защита от режущий урона', 'zm1' => 'Защита от магии огня', 'zm2' => 'Защита от магии воздуха', 'zm3' => 'Защита от магии воды', 'zm4' => 'Защита от магии земли', 'zm5' => 'Защита от магии Света', 'zm6' => 'Защита от магии Тьмы', 'zm7' => 'Защита от серой магии', 'pza' => 'Понижение защиты от урона', 'pzm' => 'Понижение защиты от магии', 'pza1' => 'Понижение защиты от колющего урона', 'min_heal_proc' => 'Эффект лечения (%)', 'silver' => 'Премиум', 'notravma' => 'Защита от травм', 'yron_min' => 'Минимальный урон', 'yron_max' => 'Максимальный урон', 'pza2' => 'Понижение защиты от рубящего урона', 'pza3' => 'Понижение защиты от дробящего урона', 'pza4' => 'Понижение защиты от режущего урона', 'pzm1' => 'Понижение защиты от магии огня', 'pzm2' => 'Понижение защиты от магии воздуха', 'pzm3' => 'Понижение защиты от магии воды', 'pzm4' => 'Понижение защиты от магии земли', 'pzm5' => 'Понижение защиты от магии Света', 'pzm6' => 'Понижение защиты от магии Тьмы', 'pzm7' => 'Понижение защиты от серой магии', 'speedhp' => 'Регенерация здоровья (НР)', 'speedmp' => 'Регенерация маны (МР)', 'tya1' => 'Колющие атаки', 'tya2' => 'Рубящие атаки', 'tya3' => 'Дробящие атаки', 'tya4' => 'Режущие атаки', 'tym1' => 'Огненные атаки', 'tym2' => 'Электрические атаки', 'tym3' => 'Ледяные атаки', 'tym4' => 'Земляные атаки', 'tym5' => 'Атаки Света', 'tym6' => 'Атаки Тьмы', 'tym7' => 'Серые атаки', 'min_use_mp' => 'Уменьшает расход маны', 'pog' => 'Поглощение урона', 'maxves' => 'Увеличивает рюкзак', 'zona' => 'Дополнительная зона атаки', 'zaproc' => 'Блокировка физического Урона(%)', 'zmproc' => 'Блокировка магического Урона (%)', 'speed_dungeon' => 'Скорость перемещения по пещерам', 'free_stats' => 'Свободных распределений', 'antm3' => 'Мф. против мощности крит. удара']; +$is = ['oza' => 'Защита от урона', + 'oza1' => 'Защита от колющего урона', + 'oza2' => 'Защита от рубящего урона', + 'oza3' => 'Защита от дробящего урона', + 'oza4' => 'Защита от режущего урона', + 'hpAll' => 'Уровень жизни (HP)', + 'mpAll' => 'Уровень маны', + 'sex' => 'Пол', + 'lvl' => 'Уровень', + 's1' => 'Сила', + 's2' => 'Ловкость', + 's3' => 'Интуиция', + 's4' => 'Выносливость', + 's5' => 'Интелект', + 's6' => 'Мудрость', + 's7' => 'Духовность', + 's8' => 'Воля', + 's9' => 'Свобода духа', + 's10' => 'Божественность', + 'm1' => 'Мф. критического удара (%)', + 'm2' => 'Мф. против критического удара (%)', + 'm3' => 'Мф. мощности критического удара (%)', + 'm4' => 'Мф. увертывания (%)', + 'm5' => 'Мф. против увертывания (%)', + 'm6' => 'Мф. контрудара (%)', + 'm7' => 'Мф. парирования (%)', + 'm8' => 'Мф. блока щитом (%)', + 'm9' => 'Мф. пробоя брони (%)', + 'm14' => 'Мф. абс. критического удара (%)', + 'm15' => 'Мф. абс. увертывания (%)', + 'm16' => 'Мф. абс. парирования (%)', + 'm17' => 'Мф. абс. контрудара (%)', + 'm18' => 'Мф. абс. блока щитом (%)', + 'm19' => 'Мф. абс. магический промах (%)', + 'm20' => 'Мф. удача (%)', + 'm21' => 'Мф. абс. попадания (%)', + 'a1' => 'Мастерство владения ножами, кинжалами', + 'a2' => 'Мастерство владения топорами, секирами', + 'a3' => 'Мастерство владения дубинами, молотами', + 'a4' => 'Мастерство владения мечами', + 'a5' => 'Мастерство владения магическими посохами', + 'a6' => 'Мастерство владения луками', + 'a7' => 'Мастерство владения арбалетами', + 'aall' => 'Мастерство владения оружием', + 'mall' => 'Мастерство владения магией стихий', + 'm2all' => 'Мастерство владения магией', + 'mg1' => 'Мастерство владения магией огня', + 'mg2' => 'Мастерство владения магией воздуха', + 'mg3' => 'Мастерство владения магией воды', + 'mg4' => 'Мастерство владения магией земли', + 'mg5' => 'Мастерство владения магией Света', + 'mg6' => 'Мастерство владения магией Тьмы', + 'mg7' => 'Мастерство владения серой магией', + 'tj' => 'Тяжелая броня', + 'lh' => 'Легкая броня', + 'minAtack' => 'Минимальный урон', + 'maxAtack' => 'Максимальный урон', + 'm10' => 'Мф. мощности урона', + 'm11' => 'Мф. мощности магии стихий', + 'm11a' => 'Мф. мощности магии', + 'pa1' => 'Мф. мощности колющего урона', + 'pa2' => 'Мф. мощности рубящего урона', + 'pa3' => 'Мф. мощности дробящий урона', + 'pa4' => 'Мф. мощности режущий урона', + 'pm1' => 'Мф. мощности магии огня', + 'pm2' => 'Мф. мощности магии воздуха', + 'pm3' => 'Мф. мощности магии воды', + 'pm4' => 'Мф. мощности магии земли', + 'pm5' => 'Мф. мощности магии Света', + 'pm6' => 'Мф. мощности магии Тьмы', + 'pm7' => 'Мф. мощности серой магии', + 'zm' => 'Защита от магии стихий', + 'zma' => 'Защита от магии', + 'za' => 'Защита от урона', + 'za1' => 'Защита от колющего урона', + 'za2' => 'Защита от рубящего урона', + 'za3' => 'Защита от дробящий урона', + 'za4' => 'Защита от режущий урона', + 'zm1' => 'Защита от магии огня', + 'zm2' => 'Защита от магии воздуха', + 'zm3' => 'Защита от магии воды', + 'zm4' => 'Защита от магии земли', + 'zm5' => 'Защита от магии Света', + 'zm6' => 'Защита от магии Тьмы', + 'zm7' => 'Защита от серой магии', + 'pza' => 'Понижение защиты от урона', + 'pzm' => 'Понижение защиты от магии', + 'pza1' => 'Понижение защиты от колющего урона', + 'min_heal_proc' => 'Эффект лечения (%)', + 'silver' => 'Премиум', + 'notravma' => 'Защита от травм', + 'yron_min' => 'Минимальный урон', + 'yron_max' => 'Максимальный урон', + 'pza2' => 'Понижение защиты от рубящего урона', + 'pza3' => 'Понижение защиты от дробящего урона', + 'pza4' => 'Понижение защиты от режущего урона', + 'pzm1' => 'Понижение защиты от магии огня', + 'pzm2' => 'Понижение защиты от магии воздуха', + 'pzm3' => 'Понижение защиты от магии воды', + 'pzm4' => 'Понижение защиты от магии земли', + 'pzm5' => 'Понижение защиты от магии Света', + 'pzm6' => 'Понижение защиты от магии Тьмы', + 'pzm7' => 'Понижение защиты от серой магии', + 'speedhp' => 'Регенерация здоровья (НР)', + 'speedmp' => 'Регенерация маны (МР)', + 'tya1' => 'Колющие атаки', + 'tya2' => 'Рубящие атаки', + 'tya3' => 'Дробящие атаки', + 'tya4' => 'Режущие атаки', + 'tym1' => 'Огненные атаки', + 'tym2' => 'Электрические атаки', + 'tym3' => 'Ледяные атаки', + 'tym4' => 'Земляные атаки', + 'tym5' => 'Атаки Света', + 'tym6' => 'Атаки Тьмы', + 'tym7' => 'Серые атаки', + 'min_use_mp' => 'Уменьшает расход маны', + 'pog' => 'Поглощение урона', + 'maxves' => 'Увеличивает рюкзак', + 'zona' => 'Дополнительная зона атаки', + 'zaproc' => 'Блокировка физического Урона(%)', + 'zmproc' => 'Блокировка магического Урона (%)', + 'speed_dungeon' => 'Скорость перемещения по пещерам', + 'free_stats' => 'Свободных распределений', + 'antm3' => 'Мф. против мощности крит. удара']; if (empty($rz[$rt[$itm['type']]][0]) || !file_exists( Config::get('img') . '/i/encicl/pict_' . $rz[$rt[$itm['type']]][0] . '.jpg' diff --git a/js/btl_mini.js b/js/btl_mini.js index ecb66a8e..b2c7b5f8 100644 --- a/js/btl_mini.js +++ b/js/btl_mini.js @@ -314,6 +314,7 @@ function sleep(time) { } +// Действите при выставлении хода и нажатии на Вперёд! async function atack() { if (top.slcbrc[3] == 1) autobattle(); diff --git a/main.php b/main.php index a8b9500d..7dd72dd0 100644 --- a/main.php +++ b/main.php @@ -490,11 +490,7 @@ if (isset($_GET['security']) && !isset($u->tfer['id']) && $trololo == 1) { ) || ( isset($_GET['zayvka']) && - ( - $_GET['r'] == 6 || - $_GET['r'] == 7 || - !isset($_GET['r']) - ) && + (!isset($_GET['r']) || $_GET['r'] == 6 || $_GET['r'] == 7) && $u->info['battle'] > 0 ) && !isset($u->tfer['id']) diff --git a/modules_data/_animal.php b/modules_data/_animal.php index 308d2474..16fc138c 100644 --- a/modules_data/_animal.php +++ b/modules_data/_animal.php @@ -43,7 +43,11 @@ if (!isset($an['id'])) { if ($n == 1) { - mysql_query('UPDATE `users_animal` SET `name` = "' . mysql_real_escape_string($nl) . '",`renameArrayKeys` = "1" WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . $an['id'] . '" AND `delete` = "0" LIMIT 1'); + mysql_query( + 'UPDATE `users_animal` SET `name` = "' . mysql_real_escape_string( + $nl + ) . '",`renameArrayKeys` = "1" WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . $an['id'] . '" AND `delete` = "0" LIMIT 1' + ); $an['renameArrayKeys'] = 1; echo 'Вы успешно переименовали питомца в "' . $nl . '"'; } else { @@ -91,7 +95,13 @@ if (!isset($an['id'])) { } if (isset($_GET['obj_corm'])) { - $corm = mysql_fetch_array(mysql_query('SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `im`.`type` = "49" AND `iu`.`delete` = "0" AND `iu`.`inShop` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inTransfer` = "0" AND `iu`.`id` = "' . mysql_real_escape_string($_GET['obj_corm']) . '" LIMIT 1')); + $corm = mysql_fetch_array( + mysql_query( + 'SELECT `iu`.*,`im`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON `iu`.`item_id` = `im`.`id` WHERE `im`.`type` = "49" AND `iu`.`delete` = "0" AND `iu`.`inShop` = "0" AND `iu`.`inOdet` = "0" AND `iu`.`inTransfer` = "0" AND `iu`.`id` = "' . mysql_real_escape_string( + $_GET['obj_corm'] + ) . '" LIMIT 1' + ) + ); if (isset($corm['id'])) { //кормушка зверя $see1 = 1; @@ -185,20 +195,21 @@ if (!isset($an['id'])) { items['add'])) { - if (isset($anl['add_' . $u->items['add'][$i]])) { - if ($u->items['add'][$i] == 'mib1') { - $ba .= '• Броня головы: +' . $anl['add_' . $u->items['add'][$i]] . '
'; - } elseif ($u->items['add'][$i] == 'mib2') { - $ba .= '• Броня корпуса: +' . $anl['add_' . $u->items['add'][$i]] . '
'; - } elseif ($u->items['add'][$i] == 'mib3') { - $ba .= '• Броня пояса: +' . $anl['add_' . $u->items['add'][$i]] . '
'; - } elseif ($u->items['add'][$i] == 'mib4') { - $ba .= '• Броня ног: +' . $anl['add_' . $u->items['add'][$i]] . '
'; - } elseif ($u->items['add'][$i] == 'mab1' || $u->items['add'][$i] == 'mab2' || $u->items['add'][$i] == 'mab3' || $u->items['add'][$i] == 'mab4') { + $statnames = new \Model\Constant\Stat(); + $statnames->getBonus(); + while ($i < count($statnames->sysBonusNames)) { + if (isset($anl['add_' . $statnames->sysBonusNames[$i]])) { + if ($statnames->sysBonusNames[$i] == 'mib1') { + $ba .= '• Броня головы: +' . $anl['add_' . $statnames->sysBonusNames[$i]] . '
'; + } elseif ($statnames->sysBonusNames[$i] == 'mib2') { + $ba .= '• Броня корпуса: +' . $anl['add_' . $statnames->sysBonusNames[$i]] . '
'; + } elseif ($statnames->sysBonusNames[$i] == 'mib3') { + $ba .= '• Броня пояса: +' . $anl['add_' . $statnames->sysBonusNames[$i]] . '
'; + } elseif ($statnames->sysBonusNames[$i] == 'mib4') { + $ba .= '• Броня ног: +' . $anl['add_' . $statnames->sysBonusNames[$i]] . '
'; } else { - $ba .= '• ' . $u->is[$u->items['add'][$i]] . ': +' . $anl['add_' . $u->items['add'][$i]] . '
'; + $ba .= '• ' . $statnames->bonusNames[$statnames->sysBonusNames[$i]] . ': +' . $anl['add_' . $statnames->sysBonusNames[$i]] . '
'; } } $i++; diff --git a/modules_data/_obraz.php b/modules_data/_obraz.php index 0122f028..f95fc7c0 100644 --- a/modules_data/_obraz.php +++ b/modules_data/_obraz.php @@ -1,16 +1,91 @@ - var elem = document.getElementById('se-pre-con'); - elem.parentNode.removeChild(elem); - - "; + +use Core\Config; +use Core\Db; +use Helper\Conversion; +use Model\Constant\Stat; + if (!defined('GAME')) { die(); } +/** @var User $u */ + +$shadows = Db::getRows( + "select * from obraz where + sex = ? and + level <= ? and + (login = '' or login = ?) and + (uid = 0 or uid = ?) and + (align = '0' or align = ?) and + (clan = 0 or clan = ?) order by level, img", + [$u->info['sex'], $u->info['level'], $u->info['login'], $u->info['id'], $u->info['align'], $u->info['clan']] +); + +$statnames = new Stat(); +$statnames->getRequirement(); +$code = PassGen::intCode(); +$imgsrc = Config::img(); +$str2 = ''; +foreach ($shadows as $shadow) { + $tr = true; + $str = ''; + $data = Conversion::dataStringToArray($shadow['tr']); + + if ($shadow['level'] > 0) { + $str .= "\r• Уровень персонажа: {$shadow['level']}"; + } + + if (!empty($shadow['itm'])) { + $needItems = []; + foreach (explode(',', $shadow['itm']) as $itemId) { + if ($itemId < 1) { + continue; + } + $item = Db::getRow('select item_id as id, name from items_users left join items_main on item_id = items_main.id where item_id = ? and inodet > 0 and inshop = 0 and uid = ?', [$itemId, $u->info['id']]); + if (!$item['id']) { + $tr = false; + } + $needItems[] = "«{$item['name']}»"; + } + if (!empty($needItems)) { + $str .= "\r• Предметы: " . implode(', ', $needItems); + } + } + + foreach ($statnames->sysRequirementNames as $srn) { + if (!isset($data['tr_' . $srn])) { + continue; + } + + $str .= "\r• $statnames->requirementNames[$srn]: " . $data['tr_' . $srn]; + + if ($data['tr_' . $srn] <= $u->stats[$srn]) { + continue; + } + + $tr = false; + } + + if ((!empty($shadow['tr']) || !empty($shadow['itm'])) && !$tr) { + continue; + } + if (!empty($str)) { + $str = "Требуется минимальное:$str"; + } + + $str2 .= << + + +HTML; +} ?> + - - - - -
info['id']) . '
'; ?>
-

-    -
  + + + + + - - + +
+
+
+ + + + +
info['id']) ?>
+ -
-
-
-
-
- info['sex'] . '" AND `level` <= "' . $u->info['level'] . '" AND (`login` = "" OR `login` = "' . $u->info['login'] . '") AND (`uid` = "" OR `uid` = "' . $u->info['id'] . '") AND (`align` = "0" OR `align` = "' . $u->info['align'] . '") AND (`clan` = "0" OR `clan` = "' . $u->info['clan'] . '") ORDER BY `level` ASC, `img` ASC'); - while ($pl = mysql_fetch_array($sp)) { - $tr = true; - $trd = ''; - $po = Helper\Conversion::dataStringToArray($pl['tr']); - $t = $u->items['tr']; - $x = 0; - if ($pl['level'] > 0) { - $trd .= "\r" . '• Уровень персонажа: ' . $pl['level'] . ''; - } - if ($pl['itm'] > 0) { - $pl['itm'] = explode(',', $pl['itm']); - $j = 0; - $tritm = ''; - while ($j < count($pl['itm'])) { - $itm_id = $pl['itm'][$j]; - if ($itm_id > 0) { - $itm_id = mysql_fetch_array(mysql_query('SELECT `id`,`name` FROM `items_main` WHERE `id` = "' . $itm_id . '" LIMIT 1')); - $itm_id_true = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "' . $itm_id['id'] . '" AND - `delete` = 0 AND `inOdet` > 0 AND `inShop` = 0 AND `uid` = "' . $u->info['id'] . '" - LIMIT 1')); - if (!isset($itm_id_true['id'])) { - $tr = false; - } - if ($j > 0) { - $tritm .= ', '; - } - $tritm .= '"' . $itm_id['name'] . '"'; - } - $j++; - } - if ($tritm != '') { - $trd .= "\r" . '• Предметы: ' . $tritm . ''; - } - } - while ($x < count($t)) { - $n = $t[$x]; - if (isset($po['tr_' . $n])) { - $trd .= "\r" . '• ' . $u->is[$n] . ': ' . $po['tr_' . $n] . ''; - if ($po['tr_' . $n] > $u->stats[$n]) { - $tr = false; - } - } - $x++; - } - - if (($pl['tr'] == '' && $pl['itm'] == '') || $tr == true) { - if ($trd != '') { - $trd = 'Требуется минимальное:' . $trd; - } - echo ' '; - } - } - ?> -
\ No newline at end of file diff --git a/modules_data/_zv.php b/modules_data/_zv.php index 78ce18a7..f5d20612 100644 --- a/modules_data/_zv.php +++ b/modules_data/_zv.php @@ -15,10 +15,11 @@ if ($u->info['inTurnir'] > 0 && $u->info['inUser'] == 0 && $u->info['room'] == 3 } $zv = new FightRequest(); +$r = $_GET['r'] ?? ''; // Турниры по умолчанию. // 4-group,5-chaos,6-current,7-ended,10-tournament -$r = match ($_GET['r']) { +$r = match ($r) { '4' => FightRequest::BATTLE_RAZDEL_GROUP, '5' => FightRequest::BATTLE_RAZDEL_CHAOTIC, '6' => FightRequest::BATTLE_RAZDEL_CURRENT, diff --git a/modules_data/btl_.php b/modules_data/btl_.php index 4afcd16b..20dc1d45 100644 --- a/modules_data/btl_.php +++ b/modules_data/btl_.php @@ -87,7 +87,7 @@ $allprice = Battle::getType($allprice, $thisBattle['smert'] == 1); } ?> var noErTmr; - var smnpty = info['smena'])?>; + var smnpty = info['smena'] ?>; setInterval('top.c.noEr = 0;', 1000); function mbsum(event) { @@ -193,8 +193,8 @@ $allprice = Battle::getType($allprice, $thisBattle['smert'] == 1);