Пример #1
0
 public function run()
 {
     # 获取虚拟玩家配置信息列表
     $dummy_role_list = Cache_Ladder::getInstance()->get_dummy_role_list();
     if (empty($dummy_role_list)) {
         return false;
     }
     $dummy_role_count = count($dummy_role_list);
     if (empty($dummy_role_count)) {
         return false;
     }
     $player_career_info = Cache_PlayerRole::getInstance()->get_player_role();
     # 职业信息
     $timestamp = time();
     echo "Start generate dummy role ...\n";
     echo "\n================================================================\n";
     for ($i = 0; $i < $dummy_role_count; $i++) {
         echo "---------------------------------------------\n";
         $dr_account = "dummy_role_" . $timestamp . "_" . $i;
         # 账号,保证不重复,避免account表的user_account字段唯一索引导致插入失败
         $dr_career_type = $dummy_role_list[$i]['career_type'];
         # 职业
         $dr_sex = $player_career_info[$dr_career_type]['sex'];
         # 性别
         $dr_name = TenYear::getInstance('Data_PlayerName')->get_rand_name($dr_sex);
         # 昵称
         $player_id = TenYear::getInstance('Data_Account')->add_account($dr_account, $dr_name);
         # ID
         if (empty($player_id)) {
             $this->throw_exception(array('message' => 'Failed to get player id ...', 'code' => 0));
         }
         $dr_info = array();
         $dr_info['player_id'] = $player_id;
         $dr_info['user_account'] = $dr_account;
         $dr_info['name'] = $dr_name;
         $dr_info['career_type'] = $dr_career_type;
         $dr_info['avatar'] = $player_career_info[$dr_career_type]['avatar'];
         $dr_info['sex'] = $dr_sex;
         $dr_info['ad_info'] = '';
         $dr_info['client_ip'] = '127.0.0.1';
         $dr_info['session_id'] = '';
         $dr_info['adult_flag'] = 0;
         $dr_info['exec'] = 1;
         $dr_info['is_dummy'] = $dummy_role_list[$i]['is_dummy'];
         echo "[player_id:{$player_id}] Start active dummy role ...\n";
         $ret = TenYear::getInstance('Game_PlayerInit')->active($dr_info);
         # ----------------------------------------------------------------
         # TODO: 调整玩家等级
         # ----------------------------------------------------------------
         # ----------------------------------------------------------------
         #【装备处理】发送并穿戴虚拟玩家配置表中的装备
         # ----------------------------------------------------------------
         echo "[player_id:{$player_id}] Start handle_equip_for_dummy ...\n";
         $this->handle_equip_for_dummy($player_id, $dummy_role_list[$i]['equip_info']);
         # ----------------------------------------------------------------
         #【技能处理】激活并升级并启用虚拟玩家配置表中的技能
         # ----------------------------------------------------------------
         echo "[player_id:{$player_id}] Start handle_skill_for_dummy ...\n";
         $this->handle_skill_for_dummy($dr_info, $dummy_role_list[$i]['skill_info']);
         # ----------------------------------------------------------------
         #【英雄处理】发放并出战虚拟玩家配置表中的英雄
         # ----------------------------------------------------------------
         echo "[player_id:{$player_id}] Start handle_hero_for_dummy ...\n";
         $this->handle_hero_for_dummy($dr_info, $dummy_role_list[$i]['hero_info']);
         # ----------------------------------------------------------------
         #【精灵处理】发放并出战虚拟玩家配置表中的精灵
         # ----------------------------------------------------------------
         echo "[player_id:{$player_id}] Start handle_fairy_for_dummy ...\n";
         $this->handle_fairy_for_dummy($dr_info, $dummy_role_list[$i]['fairy_info']);
         # ----------------------------------------------------------------
         #【时装处理】发放并穿戴虚拟玩家配置表中的时装
         # ----------------------------------------------------------------
         echo "[player_id:{$player_id}] Start handle_fashion_for_dummy ...\n";
         $this->handle_fashion_for_dummy($player_id, $dummy_role_list[$i]['fashion_info']);
         echo "---------------------------------------------\n";
     }
     echo "\n================================================================\n";
     echo "End generate dummy role ...\n";
 }
Пример #2
0
 public function get_challenge_battle_reward($player_id, $player_info = null, $coeff = 0.5, $is_throw_error = 0)
 {
     if (empty($player_info)) {
         $player_info = $this->get_data('Player')->get_player_info($player_id, array('level', 'vip', 'privilege_level'));
     }
     $award_battle_info = Cache_Ladder::getInstance()->get_ladder_award_battle_info($player_info['level']);
     if (empty($award_battle_info) || empty($award_battle_info['reward_base'])) {
         if ($is_throw_error) {
             $this->throw_error('120121');
             # 没有经验奖励配置信息
         } else {
             return array();
         }
     }
     # 挑战奖励要求加成绝对值,不使用加成比率
     #$reward_detail_battle = $this->get_game('Reward')->get_reward_detail_other_way($award_battle_info['reward_base'], $award_battle_info['reward_add']);
     $reward_detail_battle = $this->get_game('Reward')->get_reward_detail($award_battle_info['reward_base']);
     if (!empty($award_battle_info['reward_add'])) {
         $add_info_array = explode("|", $award_battle_info['reward_add']);
         foreach ($add_info_array as $add_info) {
             list($item_id, $item_value) = explode(":", $add_info);
             if (isset($reward_detail_battle[$item_id])) {
                 $reward_detail_battle[$item_id] += $item_value * ($player_info['level'] - $award_battle_info['level']);
             }
         }
     }
     $reward_string_battle = $this->get_game('Reward')->get_reward_string_by_reward_detail($reward_detail_battle);
     $reward_detail_battle_correct = $this->get_game('Reward')->get_reward_detail($reward_string_battle, $coeff);
     # 处理连胜连败加成
     return $reward_detail_battle_correct;
 }