private function inherit_handle_for_intensify($pp_detail, $pp_inherit_detail, &$update_fields_for_inherit) { $is_inherit = false; # 是否有继承,默认否 if ($pp_detail['intensive_level'] > $pp_inherit_detail['intensive_level']) { # 继承装备相关属性变化 $update_fields_for_inherit['intensive_level'] = $pp_detail['intensive_level']; $intensify_config = Cache_Forge::getInstance()->get_intensify_info($update_fields_for_inherit['intensive_level']); if (!$intensify_config) { $this->throw_error('80501'); //没有该装备此强化等级的配置信息! } $update_fields_for_inherit['intensive_desc'] = Game_EquipIntensifier::get_latest_intensive_desc($pp_inherit_detail, $intensify_config); # 强化特效信息更新 $equip_view = $pp_inherit_detail['equip_view']; if ($equip_view[0]) { $weapon_effect = Cache_WeaponEffect::getInstance()->get_weapon_effect($equip_view[0], $update_fields_for_inherit['intensive_level']); if ($weapon_effect && $weapon_effect['effect_id']) { $equip_view[2] = $weapon_effect['effect_id']; } } $update_fields_for_inherit['equip_view'] = $equip_view; $is_inherit = true; } else { # 继承装备相关属性不变 #$update_fields_for_inherit['intensive_level'] = $pp_inherit_detail['intensive_level']; #$update_fields_for_inherit['intensive_desc'] = $pp_inherit_detail['intensive_desc']; #$update_fields_for_inherit['equip_view'] = $pp_inherit_detail['equip_view']; } return $is_inherit; }
protected function equip_intensify_handle($flag, $player_id, $player_gems, $player_info, $player_equip_info, $intensify_config, $auto_buy, $bless_item_id) { if ($flag) { # 成功 $player_equip_info['intensive_lose_times'] = 0; $player_equip_info['intensive_level'] += 1; $player_equip_info['intensive_desc'] = Game_EquipIntensifier::get_latest_intensive_desc($player_equip_info, $intensify_config); if ($player_equip_info['star_map_id']) { # 获取最新星图状态desc $player_equip_info['star_map_desc'] = $this->get_game('EquipStarMap')->get_latest_starmap_desc($player_equip_info); } } else { # 失败 $player_equip_info['intensive_lose_times'] += 1; } $this->start_trans(); # 玩家银两更新 $this->get_data('Player')->check_player_resource($player_id, $player_info, '-', 'silver', $intensify_config['silver_num'], 1, 1); # 强化特效信息更新 $equip_view = $player_equip_info['equip_view']; if ($equip_view[0]) { $weapon_effect = Cache_WeaponEffect::getInstance()->get_weapon_effect($equip_view[0], $player_equip_info['intensive_level']); if ($weapon_effect && $weapon_effect['effect_id']) { $equip_view[2] = $weapon_effect['effect_id']; } } $equip_update_field = array('intensive_lose_times' => $player_equip_info['intensive_lose_times'], 'intensive_level' => $player_equip_info['intensive_level'], 'intensive_desc' => $player_equip_info['intensive_desc'], 'star_map_desc' => $player_equip_info['star_map_desc'], 'equip_view' => $equip_view); $re = $this->get_data('PlayerProp')->update_player_prop($player_equip_info, $equip_update_field); $this->write_check($re, 3010414); $log_param = array('level' => $player_info['level'], 'vip' => $player_info['vip'], 'privilege_level' => $player_info['privilege_level'], 'cmd_id' => 816); # 消耗祝福石 if (!empty($bless_item_id)) { $arr_logs_bless_item = array(); $re = $this->get_game('Prop')->deduct_prop_by_prop_id($player_id, $bless_item_id, 1, $arr_logs_bless_item, 0, $log_param); $this->write_check($re, 3010422); } # 消耗强化宝石和钻石【勾选自动购买时当所需强化宝石不足时需要消耗钻石】 $gem_cost_num = $intensify_config['item_num']; $cost_currency_type = 0; $cost_currency_value = 0; $price = 0; if ($auto_buy) { if ($player_gems < $intensify_config['item_num']) { $gem_cost_num = $player_gems; # 获取正确的强化宝石的单价 $intensify_gem_info = $this->get_game('Shop')->shortcut_purchase_interface($intensify_config['item_id'], 1); if (empty($intensify_gem_info['item_price'])) { $this->throw_error('80318'); # 商城强化宝石没有配置价格 } # 策划价格配置多项时,选其中一项 list($cur_type, $cur_val) = each($intensify_gem_info['item_price']); $price = $cur_val; $cost_currency_type = $cur_type; $cost_currency_value = intval($cur_val * ($intensify_config['item_num'] - $player_gems)); } } if ($gem_cost_num > 0) { $arr_logs_gem = array(); $re = $this->get_game('Prop')->deduct_prop_by_prop_id($player_id, $intensify_config['item_id'], $gem_cost_num, $arr_logs_gem, 0, $log_param); $this->write_check($re, 3010449); } # 消耗虚拟货币 if ($cost_currency_value > 0) { $cost_currency_key = Cache_Currency::getInstance()->get_key($cost_currency_type); $arr_consume = Com_Util::get_consume_info_for_data_center($player_info, $cost_currency_key, $cost_currency_value, intval($intensify_config['item_num'] - $player_gems)); $this->get_data('Player')->check_player_resource($player_id, $player_info, '-', $cost_currency_key, $cost_currency_value, 1, $cost_currency_type); } $re = $this->get_data('Player')->update_player_resource($player_id, $player_info, '816', array(), $arr_consume); $this->write_check($re, 3010476); $this->commit(); # 若有购买缺少材料,记录虚假商城购买日志 if ($cost_currency_value > 0) { $this->get_game('Shop')->add_dummy_shop_log($player_id, $player_info, $intensify_config['item_id'], intval($intensify_config['item_num'] - $player_gems), $cost_currency_type, $cost_currency_value, 816); } # 刷新玩家属性 if ($player_equip_info['item_position'] == 3) { $this->get_game('EquipAttr')->equip_attr($player_id); } # 粘806 + 通知道具变更信息 $ndata = array(); $ndata[] = $player_equip_info; if (!empty($arr_logs_gem) && is_array($arr_logs_gem)) { foreach ($arr_logs_gem as $k => $v) { # 消耗的宝石 $ndata[] = $v; } } if (!empty($arr_logs_bless_item)) { # 消耗的祝福石,祝福石只消耗1个 $ndata[] = $arr_logs_bless_item[0]; } Protocol_Prop::prop_806($player_id, $ndata); # 通知玩家信息变更[必须放在commit之后] return $player_equip_info['intensive_desc']; }