diff --git a/classes/Battles/InventoryItem.php b/classes/Battles/InventoryItem.php index 6548988..0cd1c14 100644 --- a/classes/Battles/InventoryItem.php +++ b/classes/Battles/InventoryItem.php @@ -7,6 +7,7 @@ class InventoryItem extends Item { private $present; private $owner_id; + private $db; private const TOO_MANY_ITEMS_IN_SLOTS = 'Критическая ошибка: Переполнение слота!'; private const UNKNOWN_ITEM_TYPE = 'Неизвестный тип предмета!'; private const REQUIREMENTS_NOT_MET = 'Персонаж не соответствует требованиям!'; @@ -20,6 +21,7 @@ class InventoryItem extends Item { parent::__construct($row); $this->owner_id = $row->owner_id; + $this->db = DBPDO::INIT(); } public function printInfo() @@ -127,4 +129,15 @@ IMG; return isset($error) ? $error : true; } + + /** + * @param $itemId + * + * @return bool + */ + public static function destroyItem($itemId): bool + { + $db = new DBPDO(); + return $db->execute('delete from inventory where dressed_slot = 0 and owner_id = ? and item_id = ?', [$_SESSION['uid'], $itemId]); + } } \ No newline at end of file diff --git a/functions.php b/functions.php index 7734440..2633c8a 100644 --- a/functions.php +++ b/functions.php @@ -468,21 +468,6 @@ function ref_drop() } } - -/** - * Уничтожить предмет, принадлежащий игроку, вызывающего функцию. - * @param $id - ID предмета игрока. - * @throws \Krugozor\Database\Mysql\Exception - */ -function destructitem($id) -{ - global $user; - $item = db::c()->query('SELECT 1 FROM inventory WHERE owner_id = ?i AND item_id = ?i', $user->getId(), $id); - if ($item->getNumRows()) { - db::c()->query('DELETE FROM `inventory` WHERE `id` = ?i', $id); - } -} - // использовать магию function usemagic($id, $target) { @@ -543,7 +528,7 @@ function usemagic($id, $target) } if ($bat) { if ($row['maxdur'] <= ($row['duration'] + 1)) { - destructitem($row['id']); + \Battles\InventoryItem::destroyItem($row['id']); } else { if (!$row['magic']) { db::c()->query('UPDATE `inventory` SET `includemagicdex` =`includemagicdex` - ?i WHERE id = ?i', $bat, $row['id']); diff --git a/hostel_room.php b/hostel_room.php index 8ead626..2f2464d 100644 --- a/hostel_room.php +++ b/hostel_room.php @@ -12,7 +12,7 @@ $vips = [1 => 0.15, 2 => 0.30, 3 => 0.45]; function show_item($row, $txt, $place) { if (($row['maxdur'] <= $row['duration']) || ($row['dategoden'] && $row['dategoden'] <= time())) { - destructitem($row['id']); + \Battles\InventoryItem::destroyItem($row['id']); } $r = ''; diff --git a/magic/incmagic.php b/magic/incmagic.php index f84bc75..ae5e016 100644 --- a/magic/incmagic.php +++ b/magic/incmagic.php @@ -43,7 +43,7 @@ if ($user['battle'] > 0) { echo "Этот свиток нельзя встраивать в предметы!"; } else { // встраиваем - destructitem($svitok['id']); + \Battles\InventoryItem::destroyItem($svitok['id']); echo "Свиток \"" . $svitok['name'] . "\" удачно встроен в \"" . $dress['name'] . "\""; mysql_query("UPDATE `inventory` SET " . ($dress['nintel'] < $svitok['nintel'] ? "`nintel`='" . $svitok['nintel'] . "'," : "") . " diff --git a/main.php b/main.php index 0602c58..ba8ee78 100644 --- a/main.php +++ b/main.php @@ -60,13 +60,12 @@ if ($edit) { unset($dressing); } if ($destruct) { - $q = db::c()->query('SELECT `id`, `dressed`, `name`, `duration`, `maxdur` FROM `inventory` WHERE `owner` = ?i AND `id` = ?i', $_SESSION['uid'], $destruct); - if ($q->getNumRows()) { - $q = $q->fetch_assoc(); - if (empty($q['dressed'])) { - destructitem($q['id']); - GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q['name'] . ' id:(cap' . $q['id'] . ')'); - err('Предмет ' . $q['name'] . ' выброшен.'); + $q = DBPDO::INIT()->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [$user->getId(), $destruct]); + if ($q) { + if (empty($q->dressed_slot)) { + InventoryItem::destroyItem($destruct); + GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $destruct . ')'); + err('Предмет ' . $q->name . ' выброшен.'); } else { err('Ошибка: нельзя выбросить одетый предмет!'); }