diff --git a/_incl_data/class/Insallah/Runes/Runes.php b/_incl_data/class/Insallah/Runes/Runes.php index 1f1a6407..2b42516c 100644 --- a/_incl_data/class/Insallah/Runes/Runes.php +++ b/_incl_data/class/Insallah/Runes/Runes.php @@ -70,16 +70,16 @@ class Runes /** Выкусывает руну из предмета. * - * @param array $itemData + * @param array $itemDataArray * data предмета * * @return array массив, item - предмет, rune - руна из предмета, rune_id - id руны. * Оба в подготовленном строчном формате для data */ - public static function removeRuneData($itemData) + public static function removeRuneData($itemDataArray) { # Ищем есть ли в предмете руна определённого типа. - $runeid = array_search('rune_id', array_flip($itemData)); + $runeid = array_search('rune_id', array_flip($itemDataArray)); if (!in_array($runeid, [6001, 6002, 6003])) { return []; } @@ -96,20 +96,24 @@ class Runes } $args = 0; //basic rune values - rune, id, name, lvl $rune = []; - foreach ($itemData as $key => $value) { + $item = []; + foreach ($itemDataArray as $key => $value) { if ($key == 'rune') { $args = 4 + $bonusArgs; } if ($args > 0) { $rune[$key] = $value; $args--; + continue; } + $item[$key] = $value; } - $runeData = urldecode('|' . http_build_query($rune, '', '|')); - $itemWithoutRuneData = str_replace($runeData, '', $itemData); + + unset($rune['rune'], $rune['rune_id'], $rune['rune_name'], $rune['rune_lvl']); + return [ - 'item' => (string)$itemWithoutRuneData, - 'rune' => $runeData, + 'item' => urldecode('|' . http_build_query($item, '', '|')), + 'rune' => urldecode('|' . http_build_query($rune, '', '|')), 'rune_id' => (int)$runeid ]; } diff --git a/modules_data/location/remont.php b/modules_data/location/remont.php index 29f49783..bc06ffc3 100644 --- a/modules_data/location/remont.php +++ b/modules_data/location/remont.php @@ -389,7 +389,7 @@ if($u->room['file']=='remont') $re = '
Подходящий предмет не найден в инвентаре
'; } }elseif(isset($_GET['unrune'])) { - require_once '../../_incl_data/class/Insallah/Runes/Runes.php'; + require_once $_SERVER['DOCUMENT_ROOT'] . '/_incl_data/class/Insallah/Runes/Runes.php'; $ir = mysql_fetch_array(mysql_query('SELECT `im`.*,`iu`.* FROM `items_users` AS `iu` LEFT JOIN `items_main` AS `im` ON (`im`.`id` = `iu`.`item_id`) WHERE `iu`.`uid`="'.$u->info['id'].'" AND `iu`.`delete`="0" AND `iu`.`inOdet`="0" AND `iu`.`inShop`="0" AND `iu`.`data` LIKE "%rune_id%" AND `iu`.`id` = "'.mysql_real_escape_string((int)$_GET['unrune']).'" LIMIT 1')); if(isset($ir['id']) ) { $po = []; @@ -407,12 +407,12 @@ if($u->room['file']=='remont') $item_and_rune = \Insallah\Runes::removeRuneData($po); if (!empty($item_and_rune)) { # Добавляем предмет без руны - mysql_query(sprintf("update items_users set data = %s where id = %d", $item_and_rune['item'], $ir['id'])); + mysql_query(sprintf("update items_users set data = '%s' where id = %d", $item_and_rune['item'], $ir['id'])); # Отнимаем деньги $u->info['money'] -= $pcena; - mysql_query(sprintf("update users set money = money - %d where id = %d", $u->info['money'], $u->info['id'])); + mysql_query(sprintf("update users set money = money - %f where id = %d", $pcena, $u->info['id'])); # Добавляем руну - $u->addItem($item_and_rune['rune_id'],$u->info['id'],$item_and_rune['rune']); + $u->addItem($item_and_rune['rune_id'],$u->info['id'],$item_and_rune['rune'], null, null, true); } else { /** Если пытаемся извлечь любую руну кроме 6001, 6002, 6003. */ $re = 'Руна слилась с предметом и не извлекается...';