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('Ошибка: нельзя выбросить одетый предмет!');
}