prepare('SELECT * FROM `items`');
$_items -> execute();
$items = $_items -> fetchAll();
/*
$items = [
'sword' => ['width' => 1, 'height' => 2, 'image' => 'swords/sword.png'],
'rezak' => ['width' => 1, 'height' => 3, 'image' => 'swords/rezak.png'],
'double' => ['width' => 2, 'height' => 2, 'image' => 'swords/double.png']
];
$inv = [
['id' => '1', 'x' => 0, 'y' => 0, 'rotation' => 180],
['name' => 'rezak', 'x' => 3, 'y' => 1, 'rotation' => 180],
['name' => 'sword', 'x' => 0, 'y' => 2],
['name' => 'sword', 'x' = 1, 'y' => 2, 'rotation' => 180],
['name' => 'rezak', 'x' => 2, 'y' => 1],
//['name' => 'sword', 'x' => 2, 'y' => 0, 'rotation' => 90]
];
$minX = min($x1, $x2);
$minY = min($y1, $y2);
$maxX = max($x1, $x2);
$maxY = max($y1, $y2);
if ($currentX >= $minX && $currentX <= $maxX && $currentY >= $minY && $currentY <= $maxY) return true;
else return false;
$x1 = 1;
$y1 = 3;
$rotation = 270;
$width = 1;
$height = 3;
# В зависимости от угла поворота находим x2 и y2
switch ($rotation) {
case 90:
$x2 = $x1 + $height;
$y2 = $y1 + $width;
break;
case 180:
$x2 = $x1 + $width;
$y2 = $y1 - $height;
break;
case 270:
$x2 = $x1 - $height;
$y2 = $y1 + $width;
break;
default:
$x2 = $x1 + $width;
$y2 = $y1 + $height;
break;
}
*/
$_inv = $db -> prepare('SELECT * FROM `table` WHERE `user` = ?');
$_inv -> execute([1]);
$inv = $_inv-> fetchAll();
$size = [4, 4];
$dp = 32;
$url = [];
if(isset($_GET['blacksmit']) or isset($_GET['ore'])){
$basis = imagecreatetruecolor($size[0] * $dp, $size[1] * $dp);
imagecolorallocate($basis, 0, 0, 0);
$slot = imagecreatefrompng('slot.png');
list($slot_width, $slot_height) = getimagesize('slot.png');
for ($x = 0; $x < $size[0]; ++$x) {
for ($y = 0; $y < $size[1]; ++$y) {
$_check = $db->prepare('SELECT * FROM `table` WHERE ? >= LEAST(`x`, `x2`) AND ? <= GREATEST(`x`, `x2`) AND ? >= LEAST(`y`, `y2`) AND ? <= GREATEST(`y`, `y2`)');
$_check -> execute([$x,$x,$y,$y]);
$check = $_check->fetch();
if(!$check) $url[] = '';
if(!$check) imagecopyresampled($basis, $slot, $x * $dp, $y * $dp, 0, 0, $dp, $dp, $slot_width, $slot_height);
}
}
imagedestroy($slot);
$count = count($inv);
for ($i = 0; $i < $count; ++$i) {
$slot = $inv[$i];
$_item = $db -> prepare('SELECT * FROM `items` where `id` = ?');
$_item -> execute([$slot['item']]);
$item = $_item -> fetch();
if($slot['status'] == 'ore') $item['image'] = 'ores/'.$item['ore'];
if($slot['status'] == 'complete') $item['image'] = 'completes/'.$item['complete_image'];
$image = imagecreatefrompng($item['image']);
list($width, $height) = getimagesize($item['image']);
if(in_array($slot['rotation'], [90,270])){
$image = imagerotate($image, $slot['rotation'], 0);
imagecopyresampled($basis, $image, $slot['x'] * $dp, $slot['y'] * $dp, 0, 0, $item['height'] * $dp, $item['width'] * $dp, $height, $width);
}
else{
if($slot['rotation']) $image = imagerotate($image, $slot['rotation'], 0);
imagecopyresampled($basis, $image, $slot['x'] * $dp, $slot['y'] * $dp, 0, 0, $item['width'] * $dp, $item['height'] * $dp, $width, $height);
}
imagedestroy($image);
}
imagepng($basis);
imagedestroy($basis);
}
if(isset($_GET['x']) and isset($_GET['y']) and isset($_GET['item'])){
$_items = $db -> prepare('SELECT * FROM `items` WHERE `id` = ?');
$_items -> execute([(int)$_GET['item']]);
$item = $_items -> fetch();
if($item){
$x2 = (in_array($_GET['rotation'], [90,270]) ? ((int)$_GET['x'] + $item['height'] - 1) : ((int)$_GET['x'] + $item['width'] -1));
$y2 = (in_array($_GET['rotation'], [90,270]) ? ((int)$_GET['y'] + $item['width'] - 1) : ((int)$_GET['y'] + $item['height'] -1));
$_check = $db->prepare('SELECT * FROM `table` WHERE ? >= LEAST(`x`, `x2`) AND ? <= GREATEST(`x`, `x2`) AND ? >= LEAST(`y`, `y2`) AND ? <= GREATEST(`y`, `y2`)');
$_check -> execute([$x2,$x2,$y2,$y2]);
$check = $_check->fetch();
if($check){
header('Location:/?blacksmit');
exit;
}
if($x2 > ($size[0] - 1) or $y2 > ($size[1] - 1)){
header('Location:/?blacksmit');
exit;
}
else{
$__table = $db->prepare('INSERT INTO `table` SET `user` = ?, `item` = ?, `x` = ?, `y` = ?, `x2` = ?, `y2` = ?, `rotation` = ?, `time` = ?, `status` = ?');
$__table->execute([1,(int)$_GET['item'],(int)$_GET['x'],(int)$_GET['y'],$x2,$y2,($_GET['rotation'] ? (int)$_GET['rotation'] : 0), time(), 'ore']);
}
}
header('Location:/?blacksmit');
exit;
}
if(isset($_GET['sword'])){
$_slot = $db -> prepare('SELECT * FROM `table` WHERE `user` = ? AND `id` = ?');
$_slot -> execute([1, (int)$_GET['sword']]);
$slot = $_slot-> fetch();
echo $slot['item'];
$_item = $db -> prepare('SELECT * FROM `items` WHERE `id` = ?');
$_item -> execute([$slot['item']]);
$item = $_item-> fetch();
echo $item['id'];
if(!$slot){
header('Location:/');
exit;
}
if($slot['status'] == 'ore'){
echo '
До изготовления:'.$item['time'] - ($slot['time'] - time()).'
Стадия: Руда
';
}
if($slot['status'] == 'sword'){
echo '
До изготовления:'.$item['time'] - ($slot['time'] - time()).'
Стадия: Клинок
';
}
if($slot['status'] == 'complete'){
$_sword = $db -> prepare('SELECT * FROM `swords` WHERE `ore` = ? ORDER BY RAND() LIMIT 1');
$_sword -> execute([$item['ore']]);
$sword = $_sword-> fetch();
echo 'Вы выковали '.$sword['name'].'!!';
$__slot = $db->prepare('INSERT INTO `inventory` SET `user` = ?, `time` = ?, `item` = ?, `type` = ?, `count` = ?, `rang` = ?');
$__slot->execute([1, time(), $sword['id'], 'sword', '1', '1']);
$__slot = $db->prepare('DELETE FROM `table` WHERE `id` = ? LIMIT 1');
$__slot->execute([(int)$_GET['sword']]);
}
}
echo '
';
?>