diff --git a/admin/edit_user.php b/admin/edit_user.php index 280e8eb..b9720fa 100644 --- a/admin/edit_user.php +++ b/admin/edit_user.php @@ -37,10 +37,11 @@ if (isset($_SESSION['player_id'])) { if ($del) { $itemdel = db::c()->query('SELECT item_type, dressed_slot FROM inventory WHERE id=?i', $del)->fetch_assoc(); if ($itemdel['dressed_slot'] == 1) { - dropitem($itemdel['item_type']); + $item = new \Battles\DressedItems($del); + $item->undressItem($itemdel['item_type']); if ($itemdel['item_type'] == 5) { - dropitem(6); - dropitem(7); + $item->undressItem(6); + $item->undressItem(7); } } db::c()->query('DELETE FROM `inventory` WHERE `id` = ?i', $del); diff --git a/cave.php b/cave.php index bfba725..f684eb0 100644 --- a/cave.php +++ b/cave.php @@ -487,7 +487,8 @@ if (@$_GET['kill'] && $user['id'] == $user['caveleader'] && $_GET['kill'] != $us while ($rec = mysql_fetch_assoc($r)) { $slot = getslot($rec['id'], $usr); if ($slot) { - dropitemid(0, $v['user'], $slot); + $item = new \Battles\DressedItems($v['user']); + $item->undressItem($slot); } } mysql_query("DELETE FROM `inventory` WHERE `owner` = '$v[user]' AND `foronetrip` = 1"); @@ -898,7 +899,8 @@ if (@$_GET['exit']) { while ($rec = mysql_fetch_assoc($r)) { $slot = getslot($rec['id']); if ($slot) { - dropitemid(0, $user['id'], $slot); + $item = new \Battles\DressedItems($user['id']); + $item->undressItem($slot); } } mysql_query("DELETE FROM `inventory` WHERE `owner` = '$user[id]' AND `foronetrip` = 1"); diff --git a/classes/Battles/DressedItems.php b/classes/Battles/DressedItems.php index b429f08..b8a8644 100644 --- a/classes/Battles/DressedItems.php +++ b/classes/Battles/DressedItems.php @@ -8,6 +8,7 @@ namespace Battles; use Battles\Database\DBPDO; +use stdClass; class DressedItems { @@ -30,10 +31,10 @@ class DressedItems return self::$db->fetch('SELECT *, COUNT(1) AS count FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]); } - public function getItemsInSlots(): \stdClass + public function getItemsInSlots(): stdClass { $items = self::$db->ofetchALL('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot > 0', $this->USERID); - $this->dressedItem = new \stdClass(); + $this->dressedItem = new stdClass(); foreach ($items as $item) { $i = $item->dressed_slot; $this->dressedItem->$i = $item; diff --git a/cronjobs/cron_bots_battle.php b/cronjobs/cron_bots_battle.php index ad49089..5dede9b 100644 --- a/cronjobs/cron_bots_battle.php +++ b/cronjobs/cron_bots_battle.php @@ -486,7 +486,8 @@ class fbattle $inv_broken = mysql_query("SELECT * FROM `inventory` WHERE `type` != 12 AND `dressed` = 1 AND ((`maxdur` <= `duration`) OR (`dategoden` > 0 AND `dategoden` <= '" . time() . "')) AND `owner` = '{$v}'"); while ($br = mysql_fetch_array($inv_broken)) { - dropitemid($br['type'], $v); + $item = new \Battles\DressedItems($v); + $item->undressItem($br['type']); } $its = mysql_query("SELECT `id` FROM `inventory` WHERE `dressed` = 0 AND ((`maxdur` <= `duration`) OR (`dategoden` > 0 AND `dategoden` <= '" . time() . "')) AND `owner` = '{$v}'"); @@ -573,7 +574,8 @@ class fbattle $this->AddToLog('' . date("H:i") . ' ' . Nick::id($v)->short() . ' получил повреждение: ' . $tr . '
'); $inv_broken = mysql_query("SELECT `id`, `type`, `dressed`, `duration`, `maxdur`, `dategoden`, `owner` FROM `inventory` WHERE `type` != 12 AND `dressed` = 1 AND ((`maxdur` <= `duration`) OR (`dategoden` > 0 AND `dategoden` <= '" . time() . "')) AND `owner` = '{$v}'"); while ($br = mysql_fetch_array($inv_broken)) { - dropitemid($br['type'], $v); + $item = new \Battles\DressedItems($v); + $item->undressItem($br['type']); } } } diff --git a/functions.php b/functions.php index b07cb06..8dbccff 100644 --- a/functions.php +++ b/functions.php @@ -454,272 +454,6 @@ function undressall($user_id) db::c()->query('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot BETWEEN 1 AND 12 AND owner_id = ?i', $user_id); } -function dropitemid($slot, $id) -{ - global $user; - switch ($slot) { - case 1: - $slot1 = 'sergi'; - break; - case 2: - $slot1 = 'kulon'; - break; - case 3: - $slot1 = 'weap'; - break; - case 4: - $slot1 = 'bron'; - break; - case 5: - $slot1 = 'r1'; - break; - case 6: - $slot1 = 'r2'; - break; - case 7: - $slot1 = 'r3'; - break; - case 8: - $slot1 = 'helm'; - break; - case 9: - $slot1 = 'perchi'; - break; - case 10: - $slot1 = 'shit'; - break; - case 11: - $slot1 = 'boots'; - break; - case 12: - $slot1 = 'm1'; - break; - case 13: - $slot1 = 'm2'; - break; - case 14: - $slot1 = 'm3'; - break; - case 15: - $slot1 = 'm4'; - break; - case 16: - $slot1 = 'm5'; - break; - case 17: - $slot1 = 'm6'; - break; - case 18: - $slot1 = 'm7'; - break; - case 19: - $slot1 = 'm8'; - break; - case 20: - $slot1 = 'm9'; - break; - case 21: - $slot1 = 'm10'; - break; - case 22: - $slot1 = 'rybax'; - break; - case 23: - $slot1 = 'plaw'; - break; - default: - $slot1 = ''; - break; - } - $checkid = db::c()->query('SELECT 1 FROM `users` WHERE `id` = ?i', $id); - if ($checkid->getNumRows()) { - if (mysql_query('UPDATE `users`, `inventory` SET `users`.`' . $slot1 . '` = 0, `inventory`.`dressed` = 0, `users`.`sila` = `users`.`sila` - `inventory`.`gsila`, `users`.`lovk` = `users`.`lovk` - `inventory`.`glovk`, `users`.`inta` = `users`.`inta` - `inventory`.`ginta`, `users`.`intel` = `users`.`intel` - `inventory`.`gintel`, `users`.`maxhp` = `users`.`maxhp` - `inventory`.`ghp`, `users`.`noj` = `users`.`noj` - `inventory`.`gnoj`, `users`.`topor` = `users`.`topor` - `inventory`.`gtopor`, `users`.`dubina` = `users`.`dubina` - `inventory`.`gdubina`, `users`.`mec` = `users`.`mec` - `inventory`.`gmech`, `users`.`mfire` = `users`.`mfire` - `inventory`.`gfire`, `users`.`mwater` = `users`.`mwater` - `inventory`.`gwater`, `users`.`mair` = `users`.`mair` - `inventory`.`gair`, `users`.`mearth` = `users`.`mearth` - `inventory`.`gearth`, `users`.`mlight` = `users`.`mlight` - `inventory`.`glight`, `users`.`mgray` = `users`.`mgray` - `inventory`.`ggray`, `users`.`mdark` = `users`.`mdark` - `inventory`.`gdark`, `users`.`fkrit` = `users`.`fkrit` - `inventory`.`mfkrit`, `users`.`fakrit` = `users`.`fakrit` - `inventory`.`mfakrit`, `users`.`fuvorot` = `users`.`fuvorot` - `inventory`.`mfuvorot`, `users`.`fauvorot` = `users`.`fauvorot` - `inventory`.`mfauvorot`, `users`.`ubron1` = `users`.`ubron1` - `inventory`.`bron1`, `users`.`ubron2` = `users`.`ubron2` - `inventory`.`bron2`, `users`.`ubron3` = `users`.`ubron3` - `inventory`.`bron3`, `users`.`ubron4` = `users`.`ubron4` - `inventory`.`bron4`, `users`.`uminu` = `users`.`uminu` - `inventory`.`minu`, `users`.`umaxu` = `users`.`umaxu` - `inventory`.`maxu` WHERE `inventory`.`id` = `users`.`' . $slot1 . '` AND `inventory`.`dressed` = 1 AND `inventory`.`owner` = "' . $id . '" AND `users`.`id` = "' . $id . '"')) { - db::c()->query('UPDATE `users` SET `hp` = `maxhp`, `fullhptime` = ?i WHERE `hp` > `maxhp` AND `id` = ?i', time(), $id); - $user->$slot1 = 0; - } - return true; - } else { - return false; - } -} - -// снять предмет -function dropitem($slot) -{ - global $user; - $wear_arr = []; - switch ($slot) { - case 1: - $slot1 = 'sergi'; - break; - case 2: - $slot1 = 'kulon'; - break; - case 3: - $slot1 = 'weap'; - break; - case 4: - $slot1 = 'bron'; - break; - case 5: - $slot1 = 'r1'; - break; - case 6: - $slot1 = 'r2'; - break; - case 7: - $slot1 = 'r3'; - break; - case 8: - $slot1 = 'helm'; - break; - case 9: - $slot1 = 'perchi'; - break; - case 10: - $slot1 = 'shit'; - break; - case 11: - $slot1 = 'boots'; - break; - case 12: - $slot1 = 'm1'; - break; - case 13: - $slot1 = 'm2'; - break; - case 14: - $slot1 = 'm3'; - break; - case 15: - $slot1 = 'm4'; - break; - case 16: - $slot1 = 'm5'; - break; - case 17: - $slot1 = 'm6'; - break; - case 18: - $slot1 = 'm7'; - break; - case 19: - $slot1 = 'm8'; - break; - case 20: - $slot1 = 'm9'; - break; - case 21: - $slot1 = 'm10'; - break; - case 22: - $slot1 = 'rybax'; - break; - case 23: - $slot1 = 'plaw'; - break; - default: - $slot1 = ''; - break; - } - - if (db::c()->query('UPDATE `users` as `u`, `inventory` as `i` SET `u`.?f = 0, `i`.`dressed` = 0, - `u`.`sila` = `u`.`sila` - `i`.`gsila`, - `u`.`lovk` = `u`.`lovk` - `i`.`glovk`, - `u`.`inta` = `u`.`inta` - `i`.`ginta`, - `u`.`intel` = `u`.`intel` - `i`.`gintel`, - `u`.`maxhp` = `u`.`maxhp` - `i`.`ghp`, - `u`.`noj` = `u`.`noj` - `i`.`gnoj`, - `u`.`topor` = `u`.`topor` - `i`.`gtopor`, - `u`.`dubina` = `u`.`dubina` - `i`.`gdubina`, - `u`.`mec` = `u`.`mec` - `i`.`gmech`, - `u`.`mfire` = `u`.`mfire` - `i`.`gfire`, - `u`.`mwater` = `u`.`mwater` - `i`.`gwater`, - `u`.`mair` = `u`.`mair` - `i`.`gair`, - `u`.`mearth` = `u`.`mearth` - `i`.`gearth`, - `u`.`mlight` = `u`.`mlight` - `i`.`glight`, - `u`.`mgray` = `u`.`mgray` - `i`.`ggray`, - `u`.`mdark` = `u`.`mdark` - `i`.`gdark`, - `u`.`ubron1` = `u`.`ubron1` - `i`.`bron1`, - `u`.`ubron2` = `u`.`ubron2` - `i`.`bron2`, - `u`.`ubron3` = `u`.`ubron3` - `i`.`bron3`, - `u`.`ubron4` = `u`.`ubron4` - `i`.`bron4`, - `u`.`fkrit` = `u`.`fkrit` - `i`.`mfkrit`, - `u`.`fakrit` = `u`.`fakrit` - `i`.`mfakrit`, - `u`.`fuvorot` = `u`.`fuvorot` - `i`.`mfuvorot`, - `u`.`fauvorot` = `u`.`fauvorot` - `i`.`mfauvorot`, - `u`.`uminu` = `u`.`uminu` - `i`.`minu`, - `u`.`umaxu` = `u`.`umaxu` - `i`.`maxu` - WHERE `i`.`id` = `u`.?f AND `i`.`dressed` = 1 AND `i`.`owner` = ?i AND u.id = ?i', $slot1, $slot1, $user->getId(), $user->getId())) { - db::c()->query('UPDATE `users` SET `hp` = `maxhp`, `fullhptime` = ?i WHERE `hp` > `maxhp` AND `id` = ?i', time(), $user->getId()); - } - - $wear_raw = db::c()->query('SELECT * FROM `inventory` where `owner` = ?i AND `dressed` = 1', $user->getId()); - while ($wear_list = $wear_raw->fetch_assoc()) { - $wear_arr[] = $wear_list['prototype']; - } - - $item['id'] = $user->$slot1; - - $get_pro = db::c()->query('SELECT * FROM `inventory` where `id` = ?i', $item['id'])->fetch_assoc(); - ///////////////////// - $sets_items = db::c()->query('SELECT * FROM `item_sets`'); - - //для каждого комплекта - while ($items_in_set = $sets_items->fetch_assoc()) { - $checker = 0; - $temp_is = explode(",", $items_in_set['prot_id']); - $set_id = $items_in_set['set_id']; - - //если прото в комплекте и не одет - if (in_array($get_pro['prototype'], $temp_is) && (!in_array($get_pro['prototype'], $wear_arr))) { - $checker = 1; - - //для каждого одетого предмета - foreach ($temp_is as $check_proto) { - if ($check_proto != $get_pro['prototype'] && !in_array($check_proto, $wear_arr)) { - $checker = 0; - } - } - } - - - // - if (($checker == 1) && (!in_array($get_pro['prototype'], $wear_arr))) { - db::c()->query('UPDATE `users` as `u`, `item_sets` as `s` SET - `u`.`uminu` = `u`.`uminu` - `s`.`minu`, - `u`.`umaxu` = `u`.`umaxu` - `s`.`maxu`, - `u`.`sila = `u`.`sila - `s`.`gsila`, - `u`.`lovk = `u`.`lovk - `s`.`glovk`, - `u`.`inta = `u`.`inta - `s`.`ginta`, - `u`.`intel = `u`.`intel - `s`.`gintel`, - `u`.`maxhp = `u`.`maxhp - `s`.`ghp`, - `u`.`maxmana = `u`.`maxmana - `s`.`gmana`, - `u`.`fkrit = `u`.`fkrit - `s`.`mfkrit`, - `u`.`fakrit = `u`.`fakrit - `s`.`mfakrit`, - `u`.`fuvorot = `u`.`fuvorot - `s`.`mfuvorot`, - `u`.`fauvorot = `u`.`fauvorot - `s`.`mfauvorot`, - `u`.`noj = `u`.`noj - `s`.`gnoj`, - `u`.`topor = `u`.`topor - `s`.`gtopor`, - `u`.`dubina = `u`.`dubina - `s`.`gdubina`, - `u`.`mec = `u`.`mec - `s`.`gmech`, - `u`.`ubron1 = `u`.`ubron1 - `s`.`bron1`, - `u`.`ubron2 = `u`.`ubron2 - `s`.`bron2`, - `u`.`ubron3 = `u`.`ubron3 - `s`.`bron3`, - `u`.`ubron4 = `u`.`ubron4 - `s`.`bron4`, - `u`.`mfire = `u`.`mfire - `s`.`gfire`, - `u`.`mwater = `u`.`mwater - `s`.`gwater`, - `u`.`mair = `u`.`mair - `s`.`gair`, - `u`.`mearth = `u`.`mearth - `s`.`gearth`, - `u`.`mlight = `u`.`mlight - `s`.`glight`, - `u`.`mgray = `u`.`mgray - `s`.`ggray` - WHERE - `u`.`id` = ?i AND `s`.`set_id`= ?i', $user->getId(), $set_id); - } - } - return true; -} - #15 function ref_drop() { @@ -766,7 +500,8 @@ function ref_drop() $user = db::c()->query('SELECT `sergi`,`kulon`,`weap`,`bron`,`r1`,`r2`,`r3`,`helm`,`perchi`,`shit`,`boots`,`m1`,`m2`,`m3`,`m4`,`m5`,`m6`,`m7`,`m8`,`m9`,`m10` FROM `users` WHERE id = ?i', $_SESSION['uid'])->fetch_assoc(); for ($i = 0; $i <= 20; $i++) { if ($user[$slot[$i]] && !derj($user[$slot[$i]])) { - dropitem($i + 1); + $item = new \Battles\DressedItems($_SESSION['uid']); + $item->undressItem($i + 1); $user[$slot[$i]] = null; } } diff --git a/labirint.php b/labirint.php index 2448400..6825a00 100644 --- a/labirint.php +++ b/labirint.php @@ -142,7 +142,8 @@ if (isset($_POST['exit'])) { } $dresed = mysql_query('SELECT `id`, `type` FROM `inventory` WHERE `dressed` = 1 AND `laba` = 2 AND `owner` = "' . $user['id'] . '"'); while ($pl = mysql_fetch_array($dresed)) { - dropitemid($pl['type'], $user['id']); + $item = new \Battles\DressedItems($user['id']); + $item->undressItem($pl['type']); } mysql_query('DELETE FROM `inventory` WHERE `laba` > 0 AND `owner` = "' . $user['id'] . '"'); mysql_query("UPDATE `users`, `online` SET `users`.`room` = '1051', `online`.`room` = '1051', `users`.`x` = '0', `users`.`y` = '0', `users`.`laba` = '0' WHERE `online`.`id` = `users`.`id` AND `online`.`id` = '" . $user['id'] . "'"); @@ -291,7 +292,8 @@ if ($user['y'] >= count($map_d) - 2) { } $dresed = mysql_query('SELECT `id`, `type` FROM `inventory` WHERE `dressed` = 1 AND `laba` = 2 AND `owner` = "' . $user['id'] . '"'); while ($pl = mysql_fetch_array($dresed)) { - dropitemid($pl['type'], $user['id']); + $item = new \Battles\DressedItems($user['id']); + $item->undressItem($pl['type']); } mysql_query('UPDATE `inventory` SET `laba` = 0 WHERE `laba` = 1 AND `owner` = "' . $user['id'] . '"'); mysql_query('DELETE FROM `inventory` WHERE `laba` = 2 AND `owner` = "' . $user['id'] . '"');