Отказ от старой дублирующей destructitem() в пользу классовой InventoryItem::destroyItem().

This commit is contained in:
lopar 2021-05-12 22:02:05 +03:00
parent cb3887b773
commit 2f4dfd84cf
5 changed files with 22 additions and 25 deletions

View File

@ -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]);
}
}

View File

@ -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']);

View File

@ -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 = '';

View File

@ -43,7 +43,7 @@ if ($user['battle'] > 0) {
echo "<font color=red><b>Этот свиток нельзя встраивать в предметы!<b></font>";
} else {
// встраиваем
destructitem($svitok['id']);
\Battles\InventoryItem::destroyItem($svitok['id']);
echo "<font color=red><b>Свиток \"" . $svitok['name'] . "\" удачно встроен в \"" . $dress['name'] . "\"<b></font>";
mysql_query("UPDATE `inventory` SET
" . ($dress['nintel'] < $svitok['nintel'] ? "`nintel`='" . $svitok['nintel'] . "'," : "") . "

View File

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