query('SELECT SUM(weight) AS all_weight FROM `inventory` WHERE owner_id = ?i AND `setsale` = 0', $_SESSION['uid'])->fetch_assoc(); $eff = db::c()->query('SELECT type FROM users_effects WHERE owner_id = ?i AND (`type` = 10 OR `type` = 13 OR `type` = 14)', $_SESSION['uid'])->fetch_assoc(); $errors = []; if ($itemsWeight['all_weight'] > get_meshok()) { $errors[0] = 'У вас переполнен рюкзак, вы не можете передвигаться...'; } if ($eff['type'] == 10) { $errors[1] = 'Вы парализованы и не можете передвигаться...'; } if ($eff['type'] == 13 || $eff['type'] == 14) { $errors[2] = 'У вас тяжелая травма, вы не можете передвигаться...'; } if ($errors) { foreach ($errors as $error) { echo sprintf('%s', $error); } } elseif (in_array($roomId, self::allowedRoomMoves($roomId))) { db::c()->query('UPDATE users, online SET users.room = ?i, online.room = ?i WHERE `online`.`user_id` = `users`.`id` AND `online`.`id` = ?i', $roomId, $roomId, $_SESSION['uid']); header('location: ' . $redirectToFile); exit; } } /** * Проверка можно ли перейти из комнаты в комнату. * @param int $roomId ID комнаты * @return array|int[] */ private static function allowedRoomMoves(int $roomId): array { /* * 1 location: main.php?goto=arena * 2 Room 22 shop.php * 3 Room 25 comission.php * 4 Room 23 repair.php * 6 Room 27 posr.php * 7 Room 21 [STREET] * 8 Room 26 [STREET] * 13 location: quest_room.php * 17 Room 50 ashop.php * 222 Room 2702 [STREET] */ $room[20] = [1, 2, 3, 4, 6, 7, 8, 9, 13, 14, 17, 222]; // level+n /* * 3 Room 2111 [STREET] * 4 Room 20 [STREET] * 5 Room 29 Bank.php * 13 Room 34 fshop.php * 14 Room 30 clan_create.php * 16 Room 31 tower.php * 650 Room 650 ul_clans.php */ $room[21] = [3, 4, 5, 13, 14, 16, 16555]; $room[26] = [3, 4, 6, 660]; $room[2601] = [1, 4, 10, 55, 1051, 1052]; $room[2655] = [10, 2055]; /* * 1 Room 21 [STREET] * 2 location: city.php?haos - где эта херня вообще? * 14 NULL * 21 NULL * 203 Room 1055 group_arena.php * [!not on map]666 Room 666 jail.php * 1000 */ $room[2111] = [1, 2, 14, 21, 203, 1000]; $room[2701] = [1, 2]; $room[2702] = [6, 10, 16, 21, 16555]; if (empty($room[$roomId])) { return []; } return $room[$roomId]; } }