Почистил функцию удаления эффектов.
This commit is contained in:
parent
3d3df26289
commit
b5819ed03f
56
main.php
56
main.php
@ -271,22 +271,16 @@ function unstack($it_id, $it_count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//FIXME id and uid together???
|
function del_efs($id, $type)
|
||||||
function del_efs($uid, $id, $type)
|
|
||||||
{
|
{
|
||||||
global $user;
|
if ($id && !in_array($type, [2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 20])) {
|
||||||
$arr = [2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 20];
|
db::c()->query('DELETE FROM users_effects WHERE owner_id = ?i AND effect_id = ?i', $_SESSION['uid'], $id);
|
||||||
if ($uid == $user['id'] && $id != null) {
|
if ($type == 1022) {
|
||||||
if (!in_array($type, $arr)) {
|
db::c()->query('UPDATE `users` SET `invis` = 0 WHERE `id` = ?i', $_SESSION['uid']);
|
||||||
db::c()->query('DELETE FROM `users_effects` WHERE `owner_id` = ?i AND `id` = ?i', $uid, $id);
|
|
||||||
if ($type == 1022) {
|
|
||||||
db::c()->query('UPDATE `users` SET `invis` = ?i WHERE `id` = ?i', 0, $uid);
|
|
||||||
$user['invis'] = 0;
|
|
||||||
}
|
|
||||||
err('Эффект удалён.');
|
|
||||||
} else {
|
|
||||||
err('Данный эффект нельзя удалить.');
|
|
||||||
}
|
}
|
||||||
|
return 'Эффект удалён.';
|
||||||
|
} else {
|
||||||
|
return 'Эффект нельзя удалить.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,9 +299,11 @@ function dressitem($id)
|
|||||||
define('BELT', 8);
|
define('BELT', 8);
|
||||||
define('RING', 9);
|
define('RING', 9);
|
||||||
define('AMULET', 10);
|
define('AMULET', 10);
|
||||||
define('ERROR_TOO_MANY_ITEMS_IN_SLOTS', 'Критическая ошибка: Переполнение слота!');
|
define('DRESSITEM_ERROR', [
|
||||||
define('ERROR_UNKNOWN_ITEM_TYPE', 'Неизвестный тип предмета!');
|
'TOO_MANY_ITEMS_IN_SLOTS' => 'Критическая ошибка: Переполнение слота!',
|
||||||
define('ERROR_ITEM_NOT_FOUND', 'Предмет не найден!');
|
'UNKNOWN_ITEM_TYPE' => 'Неизвестный тип предмета!',
|
||||||
|
'ITEM_NOT_FOUND' => 'Предмет не найден!',
|
||||||
|
]);
|
||||||
$itemInSlot = [];
|
$itemInSlot = [];
|
||||||
$selectedItemRow = db::c()->query('SELECT item_type FROM `inventory` WHERE item_id = ?i AND owner_id = ?i AND `dressed_slot` = 0', $id, $_SESSION['uid']);
|
$selectedItemRow = db::c()->query('SELECT item_type FROM `inventory` WHERE item_id = ?i AND owner_id = ?i AND `dressed_slot` = 0', $id, $_SESSION['uid']);
|
||||||
if ($selectedItemRow->getNumRows()) {
|
if ($selectedItemRow->getNumRows()) {
|
||||||
@ -319,7 +315,7 @@ function dressitem($id)
|
|||||||
$itemInSlot[] = $row->dressed_slot;
|
$itemInSlot[] = $row->dressed_slot;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (in_array($selectedItem->item_type,[HELMET,ARMOR,LEGS,BOOTS,GLOVES,WEAPON,SHIELD,BELT,AMULET])) {
|
if (in_array($selectedItem->item_type, [HELMET, ARMOR, LEGS, BOOTS, GLOVES, WEAPON, SHIELD, BELT, AMULET])) {
|
||||||
//работаем с нормальными слотами
|
//работаем с нормальными слотами
|
||||||
if (!$itemInSlotQuantity) {
|
if (!$itemInSlotQuantity) {
|
||||||
// просто одеваем предмет
|
// просто одеваем предмет
|
||||||
@ -330,35 +326,34 @@ function dressitem($id)
|
|||||||
db::c()->query('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ?i', $id);
|
db::c()->query('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ?i', $id);
|
||||||
} else {
|
} else {
|
||||||
// невозможная ситуация - два предмета в одиночном слоте. критическая ошибка, запись в лог, раздевание.
|
// невозможная ситуация - два предмета в одиночном слоте. критическая ошибка, запись в лог, раздевание.
|
||||||
$error = ERROR_TOO_MANY_ITEMS_IN_SLOTS;
|
$error = DRESSITEM_ERROR['TOO_MANY_ITEMS_IN_SLOTS'];
|
||||||
db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot BETWEEN 1 AND 12 AND owner_id = ?i', $_SESSION['uid']);
|
db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot BETWEEN 1 AND 12 AND owner_id = ?i', $_SESSION['uid']);
|
||||||
}
|
}
|
||||||
} elseif ($selectedItem->item_type == RING) {
|
} elseif ($selectedItem->item_type == RING) {
|
||||||
// работаем с кольцами
|
// работаем с кольцами
|
||||||
if ($itemInSlotQuantity < 3) {
|
if ($itemInSlotQuantity < 3) {
|
||||||
// Сравниваем массив колец и массив слотов для колец.
|
// Сравниваем массив колец и массив слотов для колец.
|
||||||
$emptyRingSlots = array_diff([9,10,11], $itemInSlot);
|
$emptyRingSlots = array_diff([9, 10, 11], $itemInSlot);
|
||||||
// Сортируем массив свободных слотов по возрастанию.
|
// Сортируем массив свободных слотов по возрастанию.
|
||||||
sort($emptyRingSlots);
|
sort($emptyRingSlots);
|
||||||
print_r($emptyRingSlots);
|
|
||||||
// Одеваем предмет в первый свободный слот.
|
// Одеваем предмет в первый свободный слот.
|
||||||
db::c()->query('UPDATE inventory SET dressed_slot = ?i WHERE item_id = ?i',$emptyRingSlots[0], $id);
|
db::c()->query('UPDATE inventory SET dressed_slot = ?i WHERE item_id = ?i', $emptyRingSlots[0], $id);
|
||||||
} elseif ($itemInSlotQuantity === 3) {
|
} elseif ($itemInSlotQuantity === 3) {
|
||||||
db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = 11');
|
db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = 11');
|
||||||
db::c()->query('UPDATE inventory SET dressed_slot = 11 WHERE item_id = ?i', $id);
|
db::c()->query('UPDATE inventory SET dressed_slot = 11 WHERE item_id = ?i', $id);
|
||||||
// снимаем предмет из слота 11 и одеваем вместо
|
// снимаем предмет из слота 11 и одеваем вместо
|
||||||
} else {
|
} else {
|
||||||
// невозможная ситуация - больше трёх предметов на три слота. критическая ошибка, запись в лог, раздевание.
|
// невозможная ситуация - больше трёх предметов на три слота. критическая ошибка, запись в лог, раздевание.
|
||||||
$error = ERROR_TOO_MANY_ITEMS_IN_SLOTS;
|
$error = DRESSITEM_ERROR['TOO_MANY_ITEMS_IN_SLOTS'];
|
||||||
db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot BETWEEN 1 AND 12 AND owner_id = ?i', $_SESSION['uid']);
|
db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot BETWEEN 1 AND 12 AND owner_id = ?i', $_SESSION['uid']);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//предмет вообще не должен одеваться, ошибка
|
//предмет вообще не должен одеваться, ошибка
|
||||||
$error = ERROR_UNKNOWN_ITEM_TYPE;
|
$error = DRESSITEM_ERROR['UNKNOWN_ITEM_TYPE'];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//с предметом что-то сильно не ок, ошибка.
|
//с предметом что-то сильно не ок, ошибка.
|
||||||
$error = ERROR_ITEM_NOT_FOUND;
|
$error = DRESSITEM_ERROR['ITEM_NOT_FOUND'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($error)) {
|
if (isset($error)) {
|
||||||
@ -445,7 +440,7 @@ if ($obraz && ($user['shadow'] == 'g0.gif' || $user['shadow'] == 'man0.gif')) {
|
|||||||
if (isset($_GET['del']) && $_GET['del'] == 1 && $_GET['efid'] > 0) {
|
if (isset($_GET['del']) && $_GET['del'] == 1 && $_GET['efid'] > 0) {
|
||||||
$pl = db::c()->query('SELECT `id`, `type` FROM `users_effects` WHERE `owner_id` = ?i AND `id` = ?i', $user['id'], (int)$_GET['efid'])->fetch_assoc();
|
$pl = db::c()->query('SELECT `id`, `type` FROM `users_effects` WHERE `owner_id` = ?i AND `id` = ?i', $user['id'], (int)$_GET['efid'])->fetch_assoc();
|
||||||
if (isset($pl['id'])) {
|
if (isset($pl['id'])) {
|
||||||
del_efs($user['id'], $pl['id'], $pl['type']);
|
echo del_efs($pl['id'], $pl['type']);
|
||||||
} else {
|
} else {
|
||||||
echo "<span class='error'>Эффект не найден!</span>";
|
echo "<span class='error'>Эффект не найден!</span>";
|
||||||
}
|
}
|
||||||
@ -736,7 +731,8 @@ try {
|
|||||||
<br>
|
<br>
|
||||||
Интеллект: <?= ($showUser->free_stat_points ? $showUser->getIntelligence(1) . '(' . strval($showUser->intelligence + $getItemsBonuses->getIntelliganceBonus()) . ')' : $showUser->intelligence + $getItemsBonuses->getIntelliganceBonus()) ?>
|
Интеллект: <?= ($showUser->free_stat_points ? $showUser->getIntelligence(1) . '(' . strval($showUser->intelligence + $getItemsBonuses->getIntelliganceBonus()) . ')' : $showUser->intelligence + $getItemsBonuses->getIntelliganceBonus()) ?>
|
||||||
<br>
|
<br>
|
||||||
Мудрость: <?= ($showUser->free_stat_points ? $showUser->getWisdom(1) . '(' . strval($showUser->wisdom + $getItemsBonuses->getWisdomBonus()) . ')' : $showUser->wisdom + $getItemsBonuses->getWisdomBonus()) ?><br>
|
Мудрость: <?= ($showUser->free_stat_points ? $showUser->getWisdom(1) . '(' . strval($showUser->wisdom + $getItemsBonuses->getWisdomBonus()) . ')' : $showUser->wisdom + $getItemsBonuses->getWisdomBonus()) ?>
|
||||||
|
<br>
|
||||||
<?php if ($showUser->free_stat_points): ?>
|
<?php if ($showUser->free_stat_points): ?>
|
||||||
<small style="color: darkgreen;">Возможных
|
<small style="color: darkgreen;">Возможных
|
||||||
увеличений: <?= $showUser->free_stat_points ?></small><br>
|
увеличений: <?= $showUser->free_stat_points ?></small><br>
|
||||||
@ -746,7 +742,8 @@ try {
|
|||||||
Уворот: <?= $getItemsBonuses->getEvasionBonus() ?><br>
|
Уворот: <?= $getItemsBonuses->getEvasionBonus() ?><br>
|
||||||
Точность: <?= $getItemsBonuses->getAccuracyBonus() ?><br>
|
Точность: <?= $getItemsBonuses->getAccuracyBonus() ?><br>
|
||||||
Шанс крита: <?= $getItemsBonuses->getCriticalsBonus() ?><br>
|
Шанс крита: <?= $getItemsBonuses->getCriticalsBonus() ?><br>
|
||||||
Урон: <?= $showUser->minDamage + $getItemsBonuses->getMinPhysDamage() ?> - <?= $showUser->maxDamage + $getItemsBonuses->getMaxPhysDamage()?> <br>
|
Урон: <?= $showUser->minDamage + $getItemsBonuses->getMinPhysDamage() ?>
|
||||||
|
- <?= $showUser->maxDamage + $getItemsBonuses->getMaxPhysDamage() ?> <br>
|
||||||
<br>
|
<br>
|
||||||
<div style="color: gray;">
|
<div style="color: gray;">
|
||||||
Защита от огня: ?? <br>
|
Защита от огня: ?? <br>
|
||||||
@ -798,7 +795,6 @@ try {
|
|||||||
$row = [];
|
$row = [];
|
||||||
$iteminfo = [];
|
$iteminfo = [];
|
||||||
while ($row = $data->fetch_assoc()) {
|
while ($row = $data->fetch_assoc()) {
|
||||||
//FIXME Какая-то хуета. Зачем я каждый прежмет делал новым классом?
|
|
||||||
$iteminfo[] = new InventoryItem($row);
|
$iteminfo[] = new InventoryItem($row);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -810,7 +806,7 @@ try {
|
|||||||
$ii->printInfo();
|
$ii->printInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($viewInventory and $getItems) {
|
if ($viewInventory && $getItems) {
|
||||||
foreach ($viewInventory as $viewCategiryes) {
|
foreach ($viewInventory as $viewCategiryes) {
|
||||||
echo $viewCategiryes['header'];
|
echo $viewCategiryes['header'];
|
||||||
foreach ($viewCategiryes['ids'] as $viewItem) {
|
foreach ($viewCategiryes['ids'] as $viewItem) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user