From b5819ed03f5644bb23d0ff6f48dd9b84da896d52 Mon Sep 17 00:00:00 2001 From: lopar Date: Sat, 29 Aug 2020 17:54:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D1=81=D1=82=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=8D=D1=84=D1=84?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.php | 56 ++++++++++++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/main.php b/main.php index 7381a00..24e058d 100644 --- a/main.php +++ b/main.php @@ -271,22 +271,16 @@ function unstack($it_id, $it_count) } } -//FIXME id and uid together??? -function del_efs($uid, $id, $type) +function del_efs($id, $type) { - global $user; - $arr = [2, 3, 4, 5, 8, 10, 11, 12, 13, 14, 20]; - if ($uid == $user['id'] && $id != null) { - if (!in_array($type, $arr)) { - 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('Данный эффект нельзя удалить.'); + if ($id && !in_array($type, [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 ($type == 1022) { + db::c()->query('UPDATE `users` SET `invis` = 0 WHERE `id` = ?i', $_SESSION['uid']); } + return 'Эффект удалён.'; + } else { + return 'Эффект нельзя удалить.'; } } @@ -305,9 +299,11 @@ function dressitem($id) define('BELT', 8); define('RING', 9); define('AMULET', 10); - define('ERROR_TOO_MANY_ITEMS_IN_SLOTS', 'Критическая ошибка: Переполнение слота!'); - define('ERROR_UNKNOWN_ITEM_TYPE', 'Неизвестный тип предмета!'); - define('ERROR_ITEM_NOT_FOUND', 'Предмет не найден!'); + define('DRESSITEM_ERROR', [ + 'TOO_MANY_ITEMS_IN_SLOTS' => 'Критическая ошибка: Переполнение слота!', + 'UNKNOWN_ITEM_TYPE' => 'Неизвестный тип предмета!', + 'ITEM_NOT_FOUND' => 'Предмет не найден!', + ]); $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']); if ($selectedItemRow->getNumRows()) { @@ -319,7 +315,7 @@ function dressitem($id) $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) { // просто одеваем предмет @@ -330,35 +326,34 @@ function dressitem($id) db::c()->query('UPDATE inventory SET dressed_slot = item_type WHERE item_id = ?i', $id); } 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']); } } elseif ($selectedItem->item_type == RING) { // работаем с кольцами if ($itemInSlotQuantity < 3) { // Сравниваем массив колец и массив слотов для колец. - $emptyRingSlots = array_diff([9,10,11], $itemInSlot); + $emptyRingSlots = array_diff([9, 10, 11], $itemInSlot); // Сортируем массив свободных слотов по возрастанию. 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) { 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); // снимаем предмет из слота 11 и одеваем вместо } 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']); } } else { //предмет вообще не должен одеваться, ошибка - $error = ERROR_UNKNOWN_ITEM_TYPE; + $error = DRESSITEM_ERROR['UNKNOWN_ITEM_TYPE']; } } else { //с предметом что-то сильно не ок, ошибка. - $error = ERROR_ITEM_NOT_FOUND; + $error = DRESSITEM_ERROR['ITEM_NOT_FOUND']; } 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) { $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'])) { - del_efs($user['id'], $pl['id'], $pl['type']); + echo del_efs($pl['id'], $pl['type']); } else { echo "Эффект не найден!"; } @@ -736,7 +731,8 @@ try {
Интеллект: free_stat_points ? $showUser->getIntelligence(1) . '(' . strval($showUser->intelligence + $getItemsBonuses->getIntelliganceBonus()) . ')' : $showUser->intelligence + $getItemsBonuses->getIntelliganceBonus()) ?>
- Мудрость: free_stat_points ? $showUser->getWisdom(1) . '(' . strval($showUser->wisdom + $getItemsBonuses->getWisdomBonus()) . ')' : $showUser->wisdom + $getItemsBonuses->getWisdomBonus()) ?>
+ Мудрость: free_stat_points ? $showUser->getWisdom(1) . '(' . strval($showUser->wisdom + $getItemsBonuses->getWisdomBonus()) . ')' : $showUser->wisdom + $getItemsBonuses->getWisdomBonus()) ?> +
free_stat_points): ?> Возможных увеличений: free_stat_points ?>
@@ -746,7 +742,8 @@ try { Уворот: getEvasionBonus() ?>
Точность: getAccuracyBonus() ?>
Шанс крита: getCriticalsBonus() ?>
- Урон: minDamage + $getItemsBonuses->getMinPhysDamage() ?> - maxDamage + $getItemsBonuses->getMaxPhysDamage()?>
+ Урон: minDamage + $getItemsBonuses->getMinPhysDamage() ?> + - maxDamage + $getItemsBonuses->getMaxPhysDamage() ?>

Защита от огня: ??
@@ -798,7 +795,6 @@ try { $row = []; $iteminfo = []; while ($row = $data->fetch_assoc()) { - //FIXME Какая-то хуета. Зачем я каждый прежмет делал новым классом? $iteminfo[] = new InventoryItem($row); } @@ -810,7 +806,7 @@ try { $ii->printInfo(); } - if ($viewInventory and $getItems) { + if ($viewInventory && $getItems) { foreach ($viewInventory as $viewCategiryes) { echo $viewCategiryes['header']; foreach ($viewCategiryes['ids'] as $viewItem) {