prepare('SELECT * FROM `user` WHERE `id` = ?'); $_user -> execute([1]); $user = $_user -> fetch(); $_areas = $db -> prepare('SELECT * FROM `areas`'); $_areas -> execute(); $areas = $_areas -> fetchAll(); foreach ($areas as $area) { $dash[$area['x']][$area['y']] = $area['area']; } function check($x, $y, $set = array()) { global $dash, $size; if (!isset($dash[$x][$y])) return $set; if ($dash[$x][$y] == '5') return false; $set[$x . '_' . $y] = $dash[$x][$y]; if ($dash[$x][$y] == '6') return $set; $shifts = [ [$x + 1, $y], [$x - 1, $y], [$x, $y + 1], [$x, $y - 1] ]; for ($i = 0; $i < 4; ++$i) { $x2 = $shifts[$i][0]; $y2 = $shifts[$i][1]; if ($x2 >= 0 && $x2 <= $size[0] && $y2 >= 0 && $y2 <= $size[1] && isset($dash[$x2][$y2]) && $dash[$x2][$y2] == $dash[$x][$y] && !isset($set[$x2.'_'.$y2])) $set = check($x2, $y2, $set); } return $set; } $_area = $db -> prepare('SELECT * FROM `area`'); $_area -> execute(); $area = $_area -> fetchAll(); foreach($area as $area2){ if($chanse > $area2['chanse']){ $rand = $area2['id']; break; } } $chanse = rand(1,100); if(!$user['area']){ $__user = $db->prepare('UPDATE `user` SET `area` = ? WHERE `id` = ?'); $__user->execute([$rand, $user['id']]); header('Location:/area.php'); exit; } if(isset($_GET['put'])){ $__user = $db->prepare('UPDATE `user` SET `area` = ?, `put` = ? WHERE `id` = ?'); $__user->execute([($user['put'] ? $user['put'] : $rand), $user['area'], $user['id']]); header('Location:/area.php'); exit; } echo ' Ваша сфера: Запасной слот:
'; if(isset($_GET['x']) and isset($_GET['y'])){ $_areas = $db -> prepare('SELECT * FROM `area` WHERE `id` = ?'); $_areas -> execute([$user['area']]); $area = $_areas -> fetch(); if($area){ $_check = $db->prepare('SELECT * FROM `areas` WHERE `x` = ? AND `y` = ? LIMIT 1'); $_check -> execute([(int)$_GET['x'], (int)$_GET['y']]); $check = $_check->fetch(); if($check and $area['id'] != 6){ header('Location:/area.php'); exit; } else{ if($area['id'] !== '6'){ $__areas = $db->prepare('INSERT INTO `areas` SET `user` = ?, `area` = ?, `x` = ?, `y` = ?'); $__areas->execute([1,$user['area'],(int)$_GET['x'],(int)$_GET['y']]); } $__user = $db->prepare('UPDATE `user` SET `area` = ? WHERE `id` = ?'); $__user->execute([0, $user['id']]); $dash[(int) $_GET['x']][(int) $_GET['y']] = $user['area']; $checker = check((int)$_GET['x'], (int)$_GET['y']); if(count($checker) > 2 or $area['id'] == '6'){ print_r($checker); foreach($checker as $key=>$value){ $x = $key[0]; $y = $key[2]; $__delete = $db->prepare('DELETE FROM `areas` WHERE `x` = ? AND `y` = ?'); $__delete->execute([$x, $y]); } switch($area['type']){ case 'attack': break; case 'defense': break; case 'heal': break; } } header('Location:/area.php'); exit; } } } for ($y = 0; $y < $size[0]; ++$y) { for ($x = 0; $x < $size[0]; ++$x) { echo $dash[$x][$y] ? ($user['area'] == '6' ? ' ':' '):' '; } echo '
'; } echo '
Скрипт выполнялся '.round((microtime(true) - $start), 6).' сек.'; ?>