Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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'];
 }