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"; }
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; }