dev #41

Merged
lopar merged 29 commits from dev into master 2021-05-25 15:28:14 +00:00
5 changed files with 22 additions and 25 deletions
Showing only changes of commit 2f4dfd84cf - Show all commits

View File

@ -7,6 +7,7 @@ class InventoryItem extends Item
{ {
private $present; private $present;
private $owner_id; private $owner_id;
private $db;
private const TOO_MANY_ITEMS_IN_SLOTS = 'Критическая ошибка: Переполнение слота!'; private const TOO_MANY_ITEMS_IN_SLOTS = 'Критическая ошибка: Переполнение слота!';
private const UNKNOWN_ITEM_TYPE = 'Неизвестный тип предмета!'; private const UNKNOWN_ITEM_TYPE = 'Неизвестный тип предмета!';
private const REQUIREMENTS_NOT_MET = 'Персонаж не соответствует требованиям!'; private const REQUIREMENTS_NOT_MET = 'Персонаж не соответствует требованиям!';
@ -20,6 +21,7 @@ class InventoryItem extends Item
{ {
parent::__construct($row); parent::__construct($row);
$this->owner_id = $row->owner_id; $this->owner_id = $row->owner_id;
$this->db = DBPDO::INIT();
} }
public function printInfo() public function printInfo()
@ -127,4 +129,15 @@ IMG;
return isset($error) ? $error : true; 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) function usemagic($id, $target)
{ {
@ -543,7 +528,7 @@ function usemagic($id, $target)
} }
if ($bat) { if ($bat) {
if ($row['maxdur'] <= ($row['duration'] + 1)) { if ($row['maxdur'] <= ($row['duration'] + 1)) {
destructitem($row['id']); \Battles\InventoryItem::destroyItem($row['id']);
} else { } else {
if (!$row['magic']) { if (!$row['magic']) {
db::c()->query('UPDATE `inventory` SET `includemagicdex` =`includemagicdex` - ?i WHERE id = ?i', $bat, $row['id']); 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) function show_item($row, $txt, $place)
{ {
if (($row['maxdur'] <= $row['duration']) || ($row['dategoden'] && $row['dategoden'] <= time())) { if (($row['maxdur'] <= $row['duration']) || ($row['dategoden'] && $row['dategoden'] <= time())) {
destructitem($row['id']); \Battles\InventoryItem::destroyItem($row['id']);
} }
$r = ''; $r = '';

View File

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

View File

@ -60,13 +60,12 @@ if ($edit) {
unset($dressing); unset($dressing);
} }
if ($destruct) { if ($destruct) {
$q = db::c()->query('SELECT `id`, `dressed`, `name`, `duration`, `maxdur` FROM `inventory` WHERE `owner` = ?i AND `id` = ?i', $_SESSION['uid'], $destruct); $q = DBPDO::INIT()->ofetch('select name,dressed_slot from inventory where owner_id = ? and item_id = ?', [$user->getId(), $destruct]);
if ($q->getNumRows()) { if ($q) {
$q = $q->fetch_assoc(); if (empty($q->dressed_slot)) {
if (empty($q['dressed'])) { InventoryItem::destroyItem($destruct);
destructitem($q['id']); GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q->name . ' id:(cap' . $destruct . ')');
GameLogs::addUserLog($user->getId(), $user->getLogin() . ' выбросил предмет ' . $q['name'] . ' id:(cap' . $q['id'] . ')'); err('Предмет ' . $q->name . ' выброшен.');
err('Предмет ' . $q['name'] . ' выброшен.');
} else { } else {
err('Ошибка: нельзя выбросить одетый предмет!'); err('Ошибка: нельзя выбросить одетый предмет!');
} }