示例#1
0
 public function action_worldboss_reward()
 {
     $section = $this->get_param('sec');
     $today = $this->get_param('date');
     //指定日期,格式:1030,代表十月30号
     if (empty($section)) {
         $section_list = array_keys(getApp()->getSectionConfig());
     } else {
         $section_list = (array) $section;
     }
     if (empty($section_list)) {
         throw new Exception('section error');
         return;
     }
     $now = getApp()->now;
     $app = getApp();
     $redis = DbConfig::getRedis('worldboss');
     $redis_set = DbConfig::getRedis('cache');
     if (empty($today)) {
         $today = date('md', $now);
     }
     $rank_keys = $redis->keys("worldboss_rank_*_{$today}");
     $redis->multi(Redis::MULTI);
     foreach ($rank_keys as $rank_key) {
         $redis->zrevrange($rank_key, 0, 9);
     }
     $ranks_data = $redis->exec();
     echo "====[ ranklist {$today} ]===\n";
     print_r($rank_keys);
     print_r($ranks_data);
     echo "====[ end ranklist ]===\n";
     $world_boss_conf = PL_Config_Numeric::get('worldboss');
     $pozhen_chenghao = PL_Config_Numeric::get("chenghaosetting", "pozhen_rank");
     //echo "================[ date = $today ]===============\n";
     //新年活动,培养丹翻倍
     $activity = $app->getActivityConfig('act_worldboss_double');
     if ($activity['started']) {
         $gain_factor = 2;
         //双倍奖励
     } else {
         $gain_factor = 1;
     }
     try {
         foreach ($section_list as $section) {
             foreach ($world_boss_conf as $tag => $conf) {
                 if ($tag != '1001') {
                     //continue;
                 }
                 $boss_key = "worldboss_boss_{$tag}_{$section}_{$today}";
                 $rank_key = "worldboss_rank_{$tag}_{$section}_{$today}";
                 echo "================[ {$boss_key} ]===============\n";
                 $boss_info = $redis->hgetall($boss_key);
                 if ($boss_info['boss_hp_left'] > 0 || $boss_info['reward_time']) {
                     $dead = $boss_info['boss_hp_left'] > 0 ? "boss未死亡" : "boss死亡";
                     if ($boss_info['reward_time']) {
                         $dead .= "补偿时间 : " . date('Y-m-d H:i:s', $boss_info['reward_time']) . "\n";
                     }
                     echo $dead . "\n";
                     continue;
                 }
                 $boss_name = model_Translate::getTransConfig($conf['bossname']);
                 //排行榜奖励 传书
                 $rank_list = $redis->zrevrange($rank_key, 0, 9);
                 $boss_level = $boss_info['boss_level'];
                 $default_level = $conf['default_level'];
                 //echo "boss_level = $boss_level, default_level = $default_level\n";
                 foreach ($rank_list as $top_rank => $top_uid) {
                     if ($top_rank === 0) {
                         //新年活动,首名培养丹翻倍
                         $reward_rank_pyd = $conf['rank_pyd'][$top_rank] * $gain_factor;
                         echo "reward_rank_pyd_top = {$reward_rank_pyd}\n";
                         echo "gain_factor = {$gain_factor}\n";
                     } else {
                         $reward_rank_pyd = $conf['rank_pyd'][$top_rank];
                     }
                     $reward_rank_money = $conf['rank_money'][$top_rank] * ($boss_level - $default_level + 5);
                     $wb_rank = $top_rank + 1;
                     $top_user_info = model_CacheUtil::getInfoByIdUseCache($top_uid, $section, array('level'));
                     print_r($top_user_info);
                     $worldboss_zhidian_offset = PL_Config_Numeric::get('setting', 'worldboss_zhidian_level_offset');
                     $qzhidian_level = max(1, $top_user_info['level'] * 3 - 34);
                     $qzhidian_level = min($qzhidian_level, 140);
                     $rank_awards = array(array('tag' => '601019', 'num' => $reward_rank_pyd), array('tag' => 'money', 'num' => $reward_rank_money), array('tag' => 'qiyu_zhidian', 'level' => $qzhidian_level, 'num' => 1));
                     echo "[reward] Date = {$today}; sec = {$section}; Rank = {$wb_rank}; uid = {$top_uid}; 培养丹 = {$reward_rank_pyd}; money = {$reward_rank_money}; zhidian = {$rank_awards[2]['level']}; \n";
                     //print_r($rank_awards);
                     //echo "[reward] <<<< \n";
                     $desc_str = model_Cdkey::descriptItems($rank_awards);
                     $rank_msg = array('type' => 'system', 'key' => uniqid(), 'time' => getApp()->now);
                     /*
                                         if(P_PLATFORM == "kunlun"){
                        //$rank_msg['content'] = "恭喜掌門在群雄破陣[$boss_name]時表現神勇,進入排行榜第{$wb_rank}名。額外獎勵:$desc_str";
                                         }
                     */
                     $msg_str = model_Translate::get('tid#worldboss_reward');
                     eval("\$content = \"{$msg_str}\";");
                     $rank_msg['content'] = $content;
                     $rank_msg['status'] = 'award';
                     $cdkey = model_Cdkey::gen($rank_awards, $desc_str);
                     $rank_msg['cdkey'] = $cdkey;
                     model_Chat::sendMsg($rank_msg, $top_uid, 'origin', $section);
                     //
                     foreach ($pozhen_chenghao as $pozhen_rank_chenghao) {
                         if ($top_rank < $pozhen_rank_chenghao['rank']) {
                             break;
                         }
                     }
                     $chenghao = array('tag' => $pozhen_rank_chenghao['chenghaotag'], 'create_t' => $now, 'level' => 1);
                     $player = new model_Player($top_uid, $section);
                     if ($tag != '1002') {
                         $player->objectPut('chenghao', $pozhen_rank_chenghao['chenghaotag'], $chenghao);
                     }
                     $player->commit();
                     echo "add chenghao [{$pozhen_rank_chenghao['chenghaotag']}]\n";
                 }
                 if ($redis->exists($boss_key)) {
                     $redis->hset($boss_key, 'reward_time', $now);
                 }
                 //echo " end ====\n";
             }
         }
     } catch (Exception $e) {
         $ex_msg = $e->getMessage();
         $ex_trace_msg = $e->getTraceAsString();
         $excep_content = "{$ex_msg}\n{$ex_trace_msg}";
         $subject = "worldboss_reward_bug_" . P_PLATFORM . "_" . date('Y-m-d H:i:s', time());
         $email_content = "世界boss发奖励错误" . " {$excep_content}\n";
         //model_Util::sendemail('op@playcrab.com,wangkun@playcrab.com,kf@playcrab.com',$subject,$email_content);
         model_Util::sendemail('*****@*****.**', $subject, $email_content);
     }
 }