Closes #2.
This commit is contained in:
parent
71eba95c0c
commit
1462ebcacd
@ -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
|
||||
];
|
||||
}
|
||||
|
@ -389,7 +389,7 @@ if($u->room['file']=='remont')
|
||||
$re = '<div align="left">Подходящий предмет не найден в инвентаре</div>';
|
||||
}
|
||||
}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 = 'Руна слилась с предметом и не извлекается...';
|
||||
|
Loading…
Reference in New Issue
Block a user