dev #41
@ -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]);
|
||||
}
|
||||
}
|
@ -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']);
|
||||
|
@ -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 = '';
|
||||
|
||||
|
@ -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'] . "'," : "") . "
|
||||
|
13
main.php
13
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('Ошибка: нельзя выбросить одетый предмет!');
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user