示例#1
0
 /**
  * 活动结算弹出面板清数据
  * @param unknown $player_id
  * @param unknown $union_id
  * @param unknown $total_exp
  * @return multitype:unknown number
  */
 public function total_bonfire_exp($player_id, $union_id, $rewards)
 {
     $err_code = 1;
     $union_id = intval($union_id);
     if (Com_Array::is_good_arr($rewards)) {
         /* $objPlayerData = $this->get_data('Player');
         			$player_union_id = $objPlayerData->get_player_info($player_id,"union_id");
         			if($player_union_id == $union_id){ */
         $objUnionBonfireData = $this->get_data('UnionBonfire');
         $unionBonfireInfo = $objUnionBonfireData->get_union_bonfire($union_id);
         $objUnionBonfireData->del_union_bonfire($union_id);
         foreach ($rewards as $val) {
             $role_id = $val[0];
             $total_exp = $val[1];
             $is_in_guild_territory = $val[2];
             $objUnionBonfireData->clear_bonfire_cd($role_id, 1);
             $objUnionBonfireData->clear_bonfire_cd($role_id, 2);
             $objUnionBonfireData->clear_bonfire_cd($role_id, 3);
             if ($is_in_guild_territory) {
                 $prop = array(1, intval($unionBonfireInfo['total_exp']));
                 Protocol::input($role_id, 8, 17, 1747, array($prop));
             }
         }
         $err_code = 0;
         //}
     }
     return array($err_code, $union_id);
 }
示例#2
0
 /**
  * @Purpose:
  * 获取玩家精灵列表
  * @Method Name: get_player_fairy_list()
  * @Parameter: $player_id 玩家ID
  * @Return: mixed 玩家精灵列表
  */
 public function get_player_fairy_list($player_id)
 {
     $data = array();
     $arr_player_fairy_id = $this->get_player_fairy_id($player_id);
     if (Com_Array::is_good_arr($arr_player_fairy_id)) {
         foreach ($arr_player_fairy_id as $id => $val) {
             $data[$id] = $this->Redis->hash_get($this->getKeys($this->keyPrefix, array('fairy_id' => $id)));
             $data[$id]['attr_lib_list'] = json_decode($data[$id]['attr_lib_list'], true);
             $data[$id]['combination_list'] = json_decode($data[$id]['combination_list'], true);
             $data[$id]['train_attr'] = json_decode($data[$id]['train_attr'], true);
         }
         return $data;
     } else {
         /*
         $cache_data = $this->build_cache($player_id);
         
         foreach ($cache_data as $key => $value)
         {
         	$value['attr_lib_list'] = $value['attr_lib_list'] ? json_decode($value['attr_lib_list'], true) : $value['attr_lib_list'];
         	$value['combination_list'] = $value['combination_list'] ? json_decode($value['combination_list'], true) : $value['combination_list'];
         	$data[$value['fairy_id']] = $value;
         }
         */
         return $data;
     }
 }
示例#3
0
 public function get_gold_special($player_id, $field = null)
 {
     $data = $this->redis()->hash_get($this->get_adcache_key($player_id), $field);
     if (is_array($field) || empty($field)) {
         if (Com_Array::is_good_arr($data)) {
             foreach ($data as $key => $val) {
                 if (in_array($key, $this->_field)) {
                     if (is_array($this->_field[$key])) {
                         if ($data[$key]) {
                             $data[$key] = json_decode($data[$key], true);
                         } else {
                             $data[$key] = array();
                         }
                     }
                 }
             }
         }
     } else {
         if (!empty($field)) {
             if (in_array($field, $this->_field)) {
                 $data = json_decode($data, true);
             }
         }
     }
     return $data;
 }
示例#4
0
 public function do_sys_msg($data)
 {
     if (empty($data)) {
         return;
     }
     $data = json_decode($data, true);
     $player_id = $data['player_id'];
     $content = $data['content'];
     $location = $data['location'];
     $location_type = $data['location_type'];
     $type = intval($data['type']);
     $value = intval($data['value']);
     $type2 = intval($data['type2']);
     $value2 = intval($data['value2']);
     $game_manager = $this->get_data('PlayerFriend')->get_game_manager();
     if (Com_Array::is_good_arr($game_manager)) {
         if (isset($game_manager[$player_id])) {
             return false;
         }
     }
     if ($type == 1 && $location_type == 7) {
         if ($player_id == 0) {
             return;
         }
         $player_info = $this->get_data('Player')->get_player_info($player_id, array('gm', 'union_id'));
         $value = $player_info['union_id'];
     }
     Protocol::input($player_id, 7, 4, 441, array($player_id, $location_type, $type, $value, $type2, $value2, $content, $location));
     if (!IS_FRONT) {
         Protocol::out();
     }
 }
示例#5
0
 /**
  * 添加多个
  * @param $player_id
  * @param $level
  * @param $vip_level
  * @param $data
  * @return bool
  */
 public function add_multi_guide_log($player_id, $level, $vip_level, $data)
 {
     if (Com_Array::is_arr2($data)) {
         foreach ($data as $param) {
             $this->add_guide_log($player_id, $level, $vip_level, $param['type'], $param['task_id'], $param['step'], $param['status']);
         }
     } else {
         $this->add_guide_log($player_id, $level, $vip_level, $data['type'], $data['task_id'], $data['step'], $data['status']);
     }
     return true;
 }
示例#6
0
 /**
  * @Purpose:
  * 通知C++新一天的优先公会活动
  */
 public function refresh_new_union_activities_p2c()
 {
     #获取公会ID列表
     $union_id_list = $this->get_data('UnionInfo')->get_all_union_id();
     if (Com_Array::is_good_arr($union_id_list)) {
         foreach ($union_id_list as $union_id => $val) {
             #同步活动数据到C++
             $this->get_game('Union')->Sync_Union_msg($union_id, 0);
             Protocol::out();
         }
     }
 }
示例#7
0
 public function get_assistant_list()
 {
     $data = $this->get_data("Assistant")->get_assistant_list();
     $out = array();
     if (Com_Array::is_good_arr($data)) {
         foreach ($data as $val) {
             $item['id'] = $val['id'];
             $item['type'] = $val['type'];
             $item['content'] = $val['content'];
             $out[] = $item;
         }
     }
     return $out;
 }
示例#8
0
 /**
  * 公会勋章
  * @param unknown $player_id
  * @return multitype:number
  */
 public function get_union_medal($player_id)
 {
     $objPlayerData = $this->get_data('Player');
     $playerInfo = $objPlayerData->get_player_info($player_id, array("union_id"));
     $union_id = intval($playerInfo['union_id']);
     if ($union_id == 0) {
         $this->throw_error('171001');
         //该玩家未加入该公会
     }
     //已激活的勋章
     $objUnionInfoData = $this->get_data('UnionInfo');
     $union_medal = $objUnionInfoData->get_union_info($union_id, "union_medal");
     $union_medal = $union_medal ? $union_medal : array(1);
     //临时
     $medal_list = Cache_UnionMedal::getInstance()->get_union_medal_info();
     $data['medal_list'] = array();
     if (Com_Array::is_good_arr($medal_list)) {
         foreach ($medal_list as $val) {
             $item['sid'] = $val['sid'];
             $item['name'] = $val['name'];
             $status = 0;
             $progress_num = 0;
             $achieve_list = Cache_UnionAchieve::getInstance()->get_union_achieve_info(array("medal_id" => $val['sid']));
             if ($union_medal && in_array($val['sid'], $union_medal)) {
                 $status = 1;
                 $progress_num = count($achieve_list);
             } else {
                 foreach ($achieve_list as $achieve_val) {
                     $achieve_info = $this->get_data('UnionAchieve')->get_union_achieve_list($union_id, $achieve_val['sid']);
                     if ($achieve_info) {
                         if ($achieve_info['state'] == 1) {
                             $progress_num++;
                         }
                     }
                 }
             }
             $item['status'] = $status;
             $item['atk_min'] = $val['atk_min'];
             $item['hp'] = $val['max_hp'];
             $item['arm'] = $val['arm'];
             $item['progress_num'] = $progress_num;
             $item['total_num'] = count($achieve_list);
             $data['medal_list'][] = $item;
         }
     }
     $data['last_medal_id'] = array_pop($union_medal);
     //die(var_dump($data));
     return $data;
 }
 public function get_resource_fight_prop_loot($player_level = 0)
 {
     $common_drop = 0;
     $sql = "select * from {$this->table_name}";
     $list = $this->select_all($sql, $this->get_cache_key(array('resource_fight_prop_loot' => 'resource_fight_prop_loot')));
     if (Com_Array::is_good_arr($list)) {
         foreach ($list as $val) {
             if ($player_level < $val['level']) {
                 break;
             }
             $common_drop = $val['common_drop'];
         }
     }
     return $common_drop;
 }
示例#10
0
 public function receive_blue_diamond_package($player_id, $sid)
 {
     $sid = intval($sid);
     $this->blue_info = $this->get_blue_info($player_id);
     if ($this->blue_info['blue_vip_level'] < 1) {
         $this->throw_error('2328003', 5010067);
     }
     $package_config = Cache_TencentBlueSpecial::getInstance()->get_blue_item_by_sid($sid);
     if (!Com_Array::is_good_arr($package_config)) {
         $this->throw_error('10222', 5010069);
     }
     $player_info = $this->get_data('Player')->get_player_info($player_id, array('gold', 'level', 'vip', 'privilege_level', 'qq_blue_points'));
     if ($package_config['type'] == 1) {
         #每日礼包
         $receive_daily_reward = $this->get_data("PlayerDailyTime")->get_player_used_time($player_id, 'receive_blue_package_times');
         if ($receive_daily_reward) {
             $this->throw_error('2328001', 5010074);
         }
     } else {
         #积分礼包
         if (intval($player_info['qq_blue_points']) < $package_config['points']) {
             $this->throw_error('2328002', 5010079);
         }
     }
     $this->start_trans();
     $reward = $this->get_format_reward($package_config['reward']);
     $result = $this->get_game('Reward')->send_reward($player_id, $reward, array('cmd_id' => '2328'));
     if ($result !== true) {
         $this->throw_error($result);
     }
     #领取过每日礼包
     if ($package_config['type'] == 1) {
         $re = $this->get_data("PlayerDailyTime")->add_used_time($player_id, 'receive_blue_package_times', 1);
         $this->write_check($re, 5010104);
     } else {
         #扣蓝钻积分
         $cost_currency_value = $package_config['points'];
         $cost_currency_key = "qq_blue_points";
         $arr_consume = array();
         $this->get_data('Player')->check_player_resource($player_id, $player_info, '-', $cost_currency_key, $cost_currency_value);
         $re = $this->get_data('Player')->update_player_resource($player_id, $player_info, '2328', array(), $arr_consume);
         $this->write_check($re, 5010108);
     }
     $this->commit();
     $this->get_game('Reward')->add_reward_log();
     $out = array($sid, 1, intval($player_info['qq_blue_points']));
     return $out;
 }
示例#11
0
 /**
  * 获取城市据点信息
  */
 public function get_city_info($city_id, $field = null)
 {
     if (is_array($city_id)) {
         $cache = array();
         $data = array();
         foreach ($city_id as $key => $val) {
             if (isset($this->city_configs[$val])) {
                 $cache[$val] = $this->city_configs[$val];
                 unset($city_id[$key]);
             }
         }
         if (!empty($city_id)) {
             $sql = "select * from city where city_id in (#city_id#)";
             $data = $this->get_list($sql, 'city_id', $city_id);
             foreach ($data as $key => $val) {
                 if (count($this->city_configs) > $this->size) {
                     Com_Array::shift($this->city_configs);
                 }
                 $this->city_configs[$key] = $val;
             }
         }
         foreach ($cache as $key => $val) {
             $data[$key] = $val;
         }
         return $data;
     }
     $data = array();
     $city_id = intval($city_id);
     if ($city_id < 1) {
         return array();
     }
     if (!isset($this->city_configs[$city_id])) {
         $cache_key = $this->get_cache_key(array('city_id' => $city_id));
         $sql = "select * from city where city_id='{$city_id}'";
         $data = $this->select_one($sql, $cache_key);
         if (empty($data)) {
             return array();
         }
         if (count($this->city_configs) > $this->size) {
             Com_Array::shift($this->city_configs);
         }
         $this->city_configs[$city_id] = $data;
     } else {
         $data = $this->city_configs[$city_id];
     }
     return Com_Array::get_arr_field($data, $field);
 }
示例#12
0
 public function replace_buff_data($data)
 {
     if (Com_Array::is_arr2($data)) {
         $set_data = array();
         foreach ($data as $val) {
             $set_data[$val['buff_sid']] = json_encode($val);
         }
         if (!empty($set_data)) {
             $cache_key = $this->get_cache_key($val['player_id']);
             $result = $this->redis()->hash_set($cache_key, $set_data);
         }
     } else {
         $cache_key = $this->get_cache_key($data['player_id']);
         $result = $this->redis()->hash_set($cache_key, $data['buff_sid'], json_encode($data));
     }
     return $result;
 }
示例#13
0
 /**
  * @Purpose:
  * 获取玩家英雄列表
  * @Method Name: get_player_hero_list()
  * @Parameter: $player_id 玩家ID
  * * @Parameter: $is_decode 是否进行字符串转数组操作
  * @Return: mixed 玩家英雄列表
  */
 public function get_player_hero_list($player_id, $is_decode = false)
 {
     $data = $this->get_player_hero_id($player_id);
     if ($is_decode) {
         if (Com_Array::is_good_arr($data)) {
             foreach ($data as $id => $val) {
                 if (!$val) {
                     unset($data[$id]);
                     continue;
                 }
                 //英雄数据格式转换
                 $data[$id] = json_decode($val, true);
             }
         }
     }
     return $data;
 }
示例#14
0
 public function get_item_compose_info($player_level)
 {
     if ($player_level <= 0) {
         return false;
     }
     #$sql = "select * from item_compose where req_lv <= $player_level order by sort_priority";
     $sql = "select * from item_compose where req_lv <= {$player_level}";
     $cache_lv = ceil($player_level / 10) * 10;
     $compose_list = $this->select_all($sql, $this->get_cache_key(array('req_lv' => $cache_lv)));
     $compose_info = array();
     # 升序排序
     Com_Array::multisort($compose_list, array('sort_priority' => 'asc'));
     # 列表结构转为哈希结构
     foreach ($compose_list as $index => $comp_info) {
         $compose_info[$comp_info['comp_type']][$comp_info['comp_sub_type']][$comp_info['target_id']] = $comp_info;
     }
     return $compose_info;
 }
示例#15
0
 /**
  * @Purpose:
  * 获取公会引导信息
  * @Param $player_id 玩家ID
  */
 public function get_union_guide_info($player_id)
 {
     $player_id = intval($player_id);
     #获取玩家公会ID,验证公会信息
     $union_id = $this->get_data('Player')->get_player_info($player_id, 'union_id');
     if ($union_id > 0) {
         #获取引导配置表
         $guide_table = $this->get_cache_table_data('guide_table', null);
         if (Com_Array::is_good_arr($guide_table)) {
             #获取玩家公会引导天数据
             $ug_data = $this->get_data('UnionGuide')->get_union_guide_info($player_id, 'ug', 'day');
             foreach ($guide_table as $guide) {
                 $rtn_data[] = array(intval($guide['type']), intval($guide['sub_type']), $guide['explain'], intval($ug_data[$guide['type'] . $guide['sub_type']]), intval($guide['func_jump']), intval($guide['npc_id']));
             }
         }
     }
     return $rtn_data ? $rtn_data : array();
 }
示例#16
0
 /**
  *
  * Enter description here ...
  * @param string $id 语言id
  * @param int  $flag 标志(1:返回数组,0:返回语言)
  */
 public function get_language($id, $flag = 0)
 {
     if (is_array($id)) {
         $sql = "SELECT * FROM language_error WHERE phrase_id IN (#phrase_id#)";
         $data = $this->get_list($sql, 'phrase_id', $id);
         if ($flag == 0) {
             $data = Com_Array::arr2_to_arr1($data, 'phrase_id,phrase_value');
         }
         return $data;
     } else {
         $cacheKey = $this->get_cache_key(array('phrase_id' => $id));
         $sql = "SELECT * FROM language_error WHERE phrase_id = '{$id}'";
         $item = $this->select_one($sql, $cacheKey);
         if ($flag == 0) {
             $item = $item['phrase_value'];
         }
         return $item;
     }
 }
示例#17
0
 public function get_wing_equips_for_swallow($player_id, $player_prop_id)
 {
     $this->get_game('PlayerFunc')->get_func_is_open($player_id, $this->func_id);
     $this->param_check_numeric(array($player_id));
     $player_prop_info = $this->get_data('PlayerProp')->get_player_prop_detail($player_id, $player_prop_id);
     if (empty($player_prop_info)) {
         $this->throw_error('80013');
         //玩家没有该装备!
     }
     $player_props = $this->get_data('PlayerProp')->get_player_prop_by_item_position($player_id, 1);
     Com_Array::multisort($player_props, array('quality' => 'desc', 'level' => 'desc'));
     # 过滤不允许该装备吞噬的装备
     $player_props = $this->filter_unvalid_props($player_prop_info, $player_props);
     $out_1514 = array(0 => $player_prop_id, 1 => array('item_position' => 1, 'grid_list' => array()));
     foreach ($player_props as $k => $v) {
         $out_1514[1]['grid_list'][] = $v['grid'];
     }
     return $out_1514;
 }
示例#18
0
 /**
  * 获取随机任务列表
  */
 public function get_task_random_list($player_id, $task_info = null, $player_info = null)
 {
     if (is_null($task_info)) {
         $task_info = $this->get_data('PlayerTask')->get_task_info($player_id, array('random_val', 'random_refresh_time'));
     }
     if (is_null($player_info) || !isset($player_info['level'])) {
         $player_info = $this->get_data('Player')->get_player_info($player_id, array('level'));
     }
     $out = array();
     $out['list'] = array();
     $now_time = time();
     $refresh_time = $task_info['random_refresh_time'] - $now_time;
     //        Com_Log::write("get_task_random_list.".$player_id,var_export($refresh_time,true));
     if ($refresh_time <= 0) {
         $task_info = $this->get_random_tasks($player_id);
         $refresh_time = $task_info['random_refresh_time'] - $now_time;
     }
     if ($task_info['random_val']) {
         Com_Array::multisort($task_info['random_val'], 'order', 'asc');
         foreach ($task_info['random_val'] as $val) {
             if (empty($val['task_id'])) {
                 continue;
             }
             $val['due_time'] = $val['due_time'] - $now_time;
             $val['due_time'] = $val['due_time'] > 0 ? $val['due_time'] : 0;
             $task_award = $this->get_award($player_info['level'], $val['quality'], $val['task_id']);
             $val['task_award'] = '';
             if ($task_award) {
                 foreach ($task_award as $award) {
                     if (!empty($val['task_award'])) {
                         $val['task_award'] .= "|" . $award['id'] . ":" . $award['num'];
                     } else {
                         $val['task_award'] .= $award['id'] . ":" . $award['num'];
                     }
                 }
             }
             $out['list'][] = $this->format_task_random_struct($val);
         }
     }
     $out['refresh_time'] = $refresh_time > 0 ? $refresh_time : 0;
     return $out;
 }
示例#19
0
 /**
  *
  * @param $player_id
  * @param $item_unique_id  0缓慢回血药剂 或者  1直接回血药剂
  */
 public function prop_use_by_drug($player_id, $item_unique_id)
 {
     if ($item_unique_id == 'hot') {
         $props = $this->get_game('Prop')->get_prop_list_by_type($player_id, 2, 1);
     } elseif ($item_unique_id == 'dh') {
         $props = $this->get_game('Prop')->get_prop_list_by_type($player_id, 2, 6);
     } elseif ($item_unique_id == 'mp') {
         $props = $this->get_game('Prop')->get_prop_list_by_type($player_id, 2, 11);
     }
     $player_info = $this->get_data('Player')->get_player_info($player_id, array('name', 'career_type', 'level', 'exp', 'level_exp', 'silver', 'gold', 'ticket', 'chips', 'honor', 'kf_coin', 'vip', 'crystal', 'fame', 'fame_level', 'fame_level_exp', 'kf_score', 'privilege_level'));
     if (empty($props)) {
         $player_detail = $this->get_data('PlayerDetail')->get_player_detail($player_id, array('hook_settings', 'hook_status'));
         if ($player_detail['hook_settings']['onhook_drug_option'] & 1) {
             #开启自动选项
             $ttl = $this->exist_drgu_lock($player_id);
             if ($ttl) {
                 return array('error_code' => 4, 'cooldown_msec' => intval($ttl));
                 //还在冷却中
             }
             if ($item_unique_id == 'hot') {
                 $prop_configs = Cache_Prop::getInstance()->get_prop_by_type(2, 1);
             } elseif ($item_unique_id == 'dh') {
                 $prop_configs = Cache_Prop::getInstance()->get_prop_by_type(2, 6);
             } elseif ($item_unique_id == 'mp') {
                 $prop_configs = Cache_Prop::getInstance()->get_prop_by_type(2, 11);
             }
             if (!empty($prop_configs)) {
                 if ($player_detail['hook_settings']['onhook_hp_order'] == 0) {
                     $prop_configs = Com_Array::multisort($prop_configs, array('level' => 'desc'));
                     #按等级排序 从小到大
                 } else {
                     $prop_configs = Com_Array::multisort($prop_configs, array('level' => 'asc'));
                     #按等级排序 从小到大
                 }
                 $prop_info = array();
                 foreach ($prop_configs as $val) {
                     if ($val['prop_id'] == '50074' || $val['prop_id'] == '50004') {
                         continue;
                     }
                     #策划要把这两种药先去了
                     if ($player_info['level'] >= $val['level']) {
                         $prop_info[] = $val;
                         break;
                     }
                 }
                 if (!empty($prop_info)) {
                     $prop_info = reset($prop_info);
                 } else {
                     return array('error_code' => 2, 'cooldown_msec' => 0);
                     //没有这个道具
                 }
                 if ($prop_info['buy_type'] == 0) {
                     $cur_key = 'silver';
                 } else {
                     $cur_key = Cache_Currency::getInstance()->get_key($prop_info['buy_type']);
                     if (is_array($cur_key)) {
                         #如果没有类型默认金币
                         $cur_key = 'silver';
                     }
                 }
                 $arr_consume = array();
                 if ('gold' == $cur_key) {
                     $arr_consume = array('price' => $prop_info['buy_price'], 'gold' => $prop_info['buy_price'], 'ticket' => 0, 'count' => 1);
                     #数据中心推送
                 } elseif ('ticket' == $cur_key) {
                     $arr_consume = array('price' => $prop_info['buy_price'], 'gold' => 0, 'ticket' => $prop_info['buy_price'], 'count' => 1);
                     #数据中心推送
                 }
                 $result = $this->get_data('Player')->check_player_resource($player_id, $player_info, '-', $cur_key, $prop_info['buy_price'], 0);
                 if ($result === true) {
                     #这地方相当于购买并使用功能
                     $result = $this->get_data('Player')->update_player_resource($player_id, $player_info, 409, array(), $arr_consume);
                     $this->add_drug_lock($player_id);
                     if ($result) {
                         return array('error_code' => 0, 'cooldown_msec' => 0, 'item_sid' => intval($prop_info['prop_id']));
                     }
                 } else {
                     return array('error_code' => 6, 'cooldown_msec' => 0);
                     //服务器内部错误
                 }
             } else {
                 return array('error_code' => 2, 'cooldown_msec' => 0);
                 //没有这个道具
             }
         } else {
             #没有勾选自动购买选项
             return array('error_code' => 2, 'cooldown_msec' => 0);
             //没有这个道具
         }
     }
     $player_prop = reset($props);
     $result = $this->get_game('Prop')->deduct_prop_by_ppid($player_id, $player_prop['player_prop_id'], 1, array('cmd_id' => 409, 'level' => $player_info['level'], 'vip' => $player_info['vip']), $player_prop);
     if (!$result) {
         return array('error_code' => 6, 'cooldown_msec' => 0);
         //服务器内部错误
     }
     return array('error_code' => 0, 'cooldown_msec' => 0, 'item_sid' => $player_prop['prop_id']);
 }
示例#20
0
 public function create_sql($table, $data)
 {
     $content = '';
     if (Com_Array::is_arr2($data)) {
         $content = "insert into " . $table;
         $i = 0;
         foreach ($data as $key => $value) {
             $value = $this->get_pub_data($value);
             if ($i == 0) {
                 $content .= "(`" . implode("`,`", array_keys($value)) . "`) values";
             }
             $content .= "('" . implode("','", $value) . "'),";
             $i++;
         }
         $content = rtrim($content, ',') . ";\n";
     } else {
         if (is_array($data)) {
             $data = $this->get_pub_data($data);
             $content = 'insert into ' . $table . "(`" . implode("`,`", array_keys($data)) . "`) values('" . implode("','", $data) . "');\n";
             Com_Log::write('game_log', $content);
         }
     }
     return $content;
 }
示例#21
0
 /**
  * @Purpose:
  * 获取缓存配置表数据(通用函数)
  * @param $cacheKeyPrefix 缓存关键字
  * @param $db_name 配置表名
  * @param $array 查询条件
  * @param $many_times 是否获取符合条件的所有数据
  */
 protected function get_cache_config_table($cacheKeyPrefix, $db_name, $array = array(), $many_times = false)
 {
     $index = '';
     if (!empty($cacheKeyPrefix) && !empty($db_name)) {
         if (empty($array)) {
             if (empty($this->temporary_data['all'])) {
                 $sql = "select * from {$db_name}";
                 $data = $this->select_all($sql, $cacheKeyPrefix . '|' . $db_name . '_all');
                 if (Com_Array::is_good_arr($data)) {
                     $this->temporary_data['all'] = $data;
                 }
             }
             $index = 'all';
         } else {
             if (is_array($array)) {
                 $key = '';
                 $conditions = '';
                 //查询条件组合
                 foreach ($array as $keys => $val) {
                     if (is_string($val)) {
                         $conditions .= ($conditions ? "and" : "") . " {$keys} = '{$val}' ";
                     } else {
                         $conditions .= ($conditions ? "and" : "") . " {$keys} = {$val} ";
                     }
                     $keys .= ($keys ? "&" : "") . $val;
                     $key .= $keys . $many_times;
                 }
                 $select_func = '';
                 if (empty($this->temporary_data[$key])) {
                     if ($many_times) {
                         $select_func = 'select_all';
                     } else {
                         $select_func = 'select_one';
                     }
                     $sql = "select * from {$db_name} where {$conditions}";
                     $data = $this->{$select_func}($sql, $this->get_cache_key(array($db_name => $key), $cacheKeyPrefix));
                     if (Com_Array::is_good_arr($data)) {
                         $this->temporary_data[$key] = $data;
                     }
                 }
                 $index = $key;
             }
         }
     }
     return empty($index) ? array() : $this->temporary_data[$index];
 }
示例#22
0
 /**
  *
  * @param unknown $instant_ntf 0:提前通知 1:到点通知
  * @param unknown $type_id 活动id
  * @param unknown $category 玩法类型
  */
 public function activity_send_notice($player_id, $instant_ntf, $sid)
 {
     $player_id = intval($player_id);
     $instant_ntf = intval($instant_ntf);
     $sid = intval($sid);
     #{活动名}活动10分钟后开启,请广大玩家做好准备,海量丰厚奖励等着你!
     #{活动名}活动开启了,立刻参与,活动奖励轻松获得!
     $activity_info = Cache_ActivityHall::getInstance()->get_activity_info($sid);
     if (!Com_Array::is_good_arr($activity_info)) {
         return false;
     }
     $code = $activity_info['func_id'];
     $arrPushConfig = Cache_PushUpgrade::getInstance()->get_upgrade_info($code, $instant_ntf + 1);
     if (!Com_Array::is_good_arr($arrPushConfig)) {
         return false;
     }
     $replace_info = array();
     $replace_info[] = array('rep_type' => 7, 'txt' => $activity_info['name']);
     if ($arrPushConfig['go_name']) {
         $replace_info[] = array('rep_type' => 1, 'rep_val' => $code, 'txt' => strval($arrPushConfig['go_name']));
     } else {
         $replace_info[] = array('rep_type' => 7, 'txt' => '');
     }
     $msg = Language_Message::make_message($arrPushConfig['code'], $replace_info, 0, '', true);
     $this->get_game('SystemNotice')->send_system_msg($player_id, $msg, $arrPushConfig['need_broadcas'], 1, 2, $sid);
 }
示例#23
0
 public function doAction()
 {
     $userInfo_json = base64_decode($_POST['data']);
     $userInfo_array = json_decode($userInfo_json, true);
     $activity = $userInfo_array['activity'];
     //#处理倍率活动
     if (isset($activity['ratio'])) {
         #防止活动ID 冲突
         $status = true;
         // 			$event_master_info=array();
         // 			$event_master_info["event_id"] = $activity['id']+100000;
         // 			#
         // 			$event_master_info["event_type"]=1;
         // 			$event_master_info["event_topic"]=0;
         // 			$event_master_info["event_tag"]=2;#倍率活动2
         // 			$event_master_info["event_template"]=0;
         // 			$event_master_info["event_importance"]=0;
         // 			$event_master_info["event_recommend_flag"]=0;
         // 			$event_master_info["event_priority"]=0;
         // 			$event_master_info["event_reward_cycle"]=0;
         // 			$event_master_info["event_reward_stint"]=0;
         // 			$event_master_info["event_status"]=1;#1表示上线
         // 			$event_master_info["week_frequency"]=0;
         // 			$event_master_info["announce_date_head"]=strtotime($activity['start_time_str']);
         // 			$event_master_info["open_date_head"]=0;
         // 			$event_master_info["open_date_tail"]=0;
         // 			$event_master_info["announce_date_tail"]=strtotime($activity['end_time_str']);
         // 			$event_master_info["reward_date_head"]=0;
         // 			$event_master_info["reward_date_tail"]=0;
         // 			$event_master_info["reg_date"]=time();
         // 			$event_master_info["mod_date"]=time();
         // 			$event_master_info["event_jump_btn_type"]=0;
         // 			$event_master_info["event_jump_btn_target"]=0;
         // 			$event_master_info["event_jump_btn_res"]=0;
         // 			$event_master_info["event_title"]="";
         // 			$event_master_info["event_comment"]="";
         // 			$event_master_info["event_desc"]="";
         // 			$event_master_info["event_desc_res"]="";
         // 			$event_master_info["event_title_res"]="";
         // 			$event_master_info["event_title_bg_res"]="";
         // 			$event_master_info["event_ad_res"]="";
         // 			$event_master_info["event_reward_info"]="";
         // 			$result = $this->get_data('Event')->replace_into_event_master($event_master_info);
         // 			if(!$result){
         // 				$status = false;
         // 			}
         #插入倍率表
         $event_ratio_info = array();
         $event_ratio_info["event_id"] = $activity["activity_a_id"];
         $event_ratio_info["ratio_type"] = 1;
         $event_ratio_info["relate_cmd2"] = $activity['activity_action_id'];
         $ratio_arr = explode("|", $activity['ratio']);
         foreach ($ratio_arr as $ra) {
             $ra_t = explode(":", $ra);
             $ra_r[] = $ra_t[1];
             #资源
             $ra_v = $ra_t[2];
             #赔率
         }
         $event_ratio_info["relate_item_id"] = implode(":", $ra_r);
         $vip_arr = range($activity['vip_start_level'], $activity['vip_end_level']);
         foreach (range(0, 10) as $k) {
             if (in_array($k, $vip_arr)) {
                 $vip_t[] = $k . ":" . $ra_v * 10000;
             } else {
                 $vip_t[] = $k . ":10000";
             }
         }
         // 			foreach (range($activity['vip_start_level'],$activity['vip_end_level']) as $k){
         // 				$vip_t[] = $k.":".($ra_v*10000);
         // 			}
         $event_ratio_info["relate_ratio"] = implode("|", $vip_t);
         #
         $result = $this->get_data('Event')->replace_into_event_ratio($event_ratio_info);
         if (!$result) {
             $status = false;
         }
         if ($status) {
             echo json_encode(array('status' => 1, 'data' => "success"));
         } else {
             echo json_encode(array('status' => 0, 'data' => 'fail'));
         }
         return true;
     }
     //奖励
     $reward = Com_Array::is_good_arr($userInfo_array['activity']['reward']) ? $userInfo_array['activity']['reward'] : array();
     $tmp_reward_id = array();
     $status = true;
     foreach ($reward as $r_item) {
         $event_reward_master_info = array();
         $event_reward_master_info["reward_id"] = $r_item['id'];
         $tmp_reward_id[] = $r_item['id'];
         #活动中用
         $event_reward_master_info["activity_id"] = $activity['id'];
         $event_reward_master_info["reward_type"] = $r_item['button_type'];
         $event_reward_master_info["reward_priority"] = 0;
         # 奖励优先度级别,排序用
         $event_reward_master_info["reward_billing_cycle"] = 0;
         #需要计算reward_type,type_value
         $event_reward_master_info["reward_gain_cycle"] = $r_item['type_value'];
         #重复计算的
         $event_reward_master_info["reward_gain_stint"] = $r_item['type_times'];
         $event_reward_master_info["valid_date_head"] = !empty($r_item['start_time']) ? $r_item['start_time'] : 0;
         $event_reward_master_info["valid_date_tail"] = !empty($r_item['end_time']) ? $r_item['end_time'] : 0;
         $event_reward_master_info["valid_date_head"] = $this->changetime($event_reward_master_info["valid_date_head"]);
         $event_reward_master_info["valid_date_tail"] = $this->changetime($event_reward_master_info["valid_date_tail"]);
         if (!empty($activity['type_value'])) {
             $event_reward_master_info["valid_date_flag"] = 1;
             $r_item['reward_type'] = 0;
             $event_reward_master_info["valid_date_head"] = (int) (date('H', $event_reward_master_info["valid_date_head"]) * 3600) + (int) (date('i', $event_reward_master_info["valid_date_head"]) * 60) + (int) date('s', $event_reward_master_info["valid_date_head"]);
             $event_reward_master_info["valid_date_tail"] = (int) (date('H', $event_reward_master_info["valid_date_tail"]) * 3600) + (int) (date('i', $event_reward_master_info["valid_date_tail"]) * 60) + (int) date('s', $event_reward_master_info["valid_date_tail"]);
         } else {
             $event_reward_master_info["valid_date_flag"] = 0;
         }
         if ($r_item['reward_type'] == 0) {
             $event_reward_master_info["reward_gain_cycle"] = $event_reward_master_info["valid_date_tail"] - $event_reward_master_info["valid_date_head"];
         }
         if ($r_item['reward_type'] == 1) {
             // 			$event_master_info["event_reward_stint"] =86400;
             $event_reward_master_info["reward_gain_cycle"] = 86400;
         }
         if ($r_item['reward_type'] == 2) {
             $event_reward_master_info["reward_gain_cycle"] = 7 * 86400;
         }
         $event_reward_master_info["cond_func_relation"] = $r_item['relation'];
         foreach ($event_reward_master_info as $k => $v) {
             if (empty($event_reward_master_info[$k])) {
                 $event_reward_master_info[$k] = 0;
             }
         }
         //转换函数格式
         $tmp_func_content = explode(",", $r_item['func_content']);
         $tmp_func_content_arr = array();
         foreach ($tmp_func_content as $v) {
             $tmp_func_content_t = "";
             $tmp_func_content_t = str_replace("#", ":", $v);
             $tmp_func_content_t = str_replace("|", ",", $tmp_func_content_t);
             $tmp_func_content_arr[] = $tmp_func_content_t;
         }
         $event_reward_master_info["cond_func"] = implode("|", $tmp_func_content_arr);
         $event_reward_master_info["cond_desc"] = $r_item['cond_desc'];
         #处理奖励中的魔晶
         $tmp_reward_arr = explode("|", $r_item['reward']);
         $tmp_reward_arr = empty($tmp_reward_arr) ? array() : $tmp_reward_arr;
         for ($i = 0; $i < count($tmp_reward_arr); $i++) {
             $tmp_r_arr = explode(":", $tmp_reward_arr[$i]);
             if ($tmp_r_arr[0] == 15) {
                 $tmp_r_arr[0] = 13;
             }
             if ($tmp_r_arr[0] == 16) {
                 $tmp_r_arr[0] = 14;
             }
             $tmp_reward_arr[$i] = implode(":", $tmp_r_arr);
         }
         $r_item['reward'] = implode("|", $tmp_reward_arr);
         #
         #处理奖励中的魔晶
         $tmp_cost_arr = explode("|", $r_item['cost']);
         $tmp_cost_arr = empty($tmp_cost_arr) ? array() : $tmp_cost_arr;
         for ($i = 0; $i < count($tmp_cost_arr); $i++) {
             $tmp_r_arr = explode(":", $tmp_cost_arr[$i]);
             if (isset($tmp_r_arr[2])) {
                 unset($tmp_r_arr[2]);
             }
             if ($tmp_r_arr[0] == 15) {
                 $tmp_r_arr[0] = 13;
             }
             if ($tmp_r_arr[0] == 16) {
                 $tmp_r_arr[0] = 14;
             }
             $tmp_cost_arr[$i] = implode(":", $tmp_r_arr);
         }
         $r_item['cost'] = implode("|", $tmp_cost_arr);
         #
         $event_reward_master_info["reward_info"] = $r_item['reward'];
         $event_reward_master_info["consume_info"] = $r_item['cost'];
         $event_reward_master_info["announce_content"] = $r_item['send_msg'];
         foreach ($event_reward_master_info as $k => $v) {
             $event_reward_master_info[$k] = addslashes($v);
         }
         $result = $this->get_data('Event')->replace_into_event_reward_master($event_reward_master_info);
         if (!$result) {
             $status = false;
         }
     }
     $event_master_info = array();
     $event_master_info["week_frequency"] = 0;
     #type_value
     if (!empty($activity['type_value'])) {
         $type_value_arr = explode(",", $activity['type_value']);
         $tmp_week = "";
         for ($i = 1; $i < 7; $i++) {
             if (in_array($i, $type_value_arr)) {
                 $tmp_week .= "1";
             } else {
                 $tmp_week .= "0";
             }
         }
         if (in_array(7, $type_value_arr)) {
             $tmp_week = "1" . $tmp_week;
         } else {
             $tmp_week = "0" . $tmp_week;
         }
         $event_master_info["week_frequency"] = $tmp_week;
     }
     $event_master_info["event_id"] = $activity['id'];
     $o_event = $this->get_data("Event")->get_event_info($activity['id']);
     if (!empty($o_event)) {
         $event_master_info["reg_date"] = $o_event["reg_date"];
     } else {
         $event_master_info["reg_date"] = time();
     }
     $event_master_info["event_type"] = $activity['activity_type'];
     $event_master_info["event_topic"] = $activity['activity_group_id'];
     $event_master_info["event_tag"] = $activity['activity_tag'];
     #新建字段
     $event_master_info["event_template"] = $activity['tpl_id'];
     $event_master_info["event_importance"] = !empty($activity['hot']) ? (int) $activity['hot'] - 1 : 0;
     $event_master_info["event_recommend_flag"] = (int) $activity['hot'];
     $event_master_info["event_priority"] = $activity['sort'];
     #和event_importance有争议
     $event_master_info["event_reward_cycle"] = 0;
     #需要计算reward_type,type_value
     $event_master_info["event_billing_cycle"] = 0;
     #需要计算reward_type,type_value
     $event_master_info["event_status"] = $activity['status'];
     $event_master_info["announce_date_head"] = !empty($activity['panel_stime']) ? $activity['panel_stime'] : 0;
     $event_master_info["open_date_head"] = !empty($activity['start_time']) ? $activity['start_time'] : 0;
     $event_master_info["open_date_tail"] = !empty($activity['end_time']) ? $activity['end_time'] : 0;
     $event_master_info["announce_date_tail"] = !empty($activity['panel_etime']) ? $activity['panel_etime'] : 0;
     $event_master_info["reward_date_head"] = !empty($activity['start_get_time']) ? $activity['start_get_time'] : 0;
     $event_master_info["reward_date_tail"] = !empty($activity['end_get_time']) ? $activity['end_get_time'] : 0;
     $event_master_info["announce_date_head"] = $this->changetime($event_master_info["announce_date_head"]);
     $event_master_info["open_date_head"] = $this->changetime($event_master_info["open_date_head"]);
     $event_master_info["open_date_tail"] = $this->changetime($event_master_info["open_date_tail"]);
     $event_master_info["announce_date_tail"] = $this->changetime($event_master_info["announce_date_tail"]);
     $event_master_info["reward_date_head"] = $this->changetime($event_master_info["reward_date_head"]);
     $event_master_info["reward_date_tail"] = $this->changetime($event_master_info["reward_date_tail"]);
     if (!empty($activity['type_value'])) {
         #周期活动
         $event_master_info["announce_date_head"] = (int) (date('H', $event_master_info["announce_date_head"]) * 3600) + (int) (date('i', $event_master_info["announce_date_head"]) * 60) + (int) date('s', $event_master_info["announce_date_head"]);
         $event_master_info["open_date_head"] = (int) (date('H', $event_master_info["open_date_head"]) * 3600) + (int) (date('i', $event_master_info["open_date_head"]) * 60) + (int) date('s', $event_master_info["open_date_head"]);
         $event_master_info["open_date_tail"] = (int) (date('H', $event_master_info["open_date_tail"]) * 3600) + (int) (date('i', $event_master_info["open_date_tail"]) * 60) + (int) date('s', $event_master_info["open_date_tail"]);
         $event_master_info["announce_date_tail"] = (int) (date('H', $event_master_info["announce_date_tail"]) * 3600) + (int) (date('i', $event_master_info["announce_date_tail"]) * 60) + (int) date('s', $event_master_info["announce_date_tail"]);
         $event_master_info["reward_date_head"] = (int) (date('H', $event_master_info["reward_date_head"]) * 3600) + (int) (date('i', $event_master_info["reward_date_head"]) * 60) + (int) date('s', $event_master_info["reward_date_head"]);
         $event_master_info["reward_date_tail"] = (int) (date('H', $event_master_info["reward_date_tail"]) * 3600) + (int) (date('i', $event_master_info["reward_date_tail"]) * 60) + (int) date('s', $event_master_info["reward_date_tail"]);
         $activity['reward_type'] = 0;
     }
     //领奖周期和次数
     if ($activity['reward_type'] == 0) {
         $event_master_info["event_reward_cycle"] = $event_master_info["reward_date_tail"] - $event_master_info["reward_date_head"];
     }
     if ($activity['reward_type'] == 1) {
         // 			$event_master_info["event_reward_stint"] =86400;
         $event_master_info["event_reward_cycle"] = 86400;
     }
     if ($activity['reward_type'] == 2) {
         $event_master_info["event_reward_cycle"] = 7 * 86400;
     }
     $event_master_info["event_reward_stint"] = (int) $activity['type_times'];
     //领奖周期
     $event_master_info["mod_date"] = time();
     $event_master_info["event_jump_btn_type"] = $activity['url_type'];
     foreach ($event_master_info as $k => $v) {
         if (empty($event_master_info[$k])) {
             $event_master_info[$k] = 0;
         }
     }
     $event_master_info["event_jump_btn_target"] = $activity['target_id'];
     $event_master_info["event_jump_btn_res"] = $activity['button_pic'];
     $event_master_info["event_title"] = $activity['name'];
     $event_master_info["event_desc"] = $activity['desc_info'];
     $event_master_info["event_desc_res"] = $activity['ad_large_pic1'];
     #活动内容图片
     $event_master_info["event_title_res"] = $activity['title_pic'];
     $event_master_info["event_title_bg_res"] = $activity['title_bg_pic'];
     #标题背景图
     if ($event_master_info["event_importance"] == 1) {
         $event_master_info["event_ad_res"] = $activity['ad_large_pic'];
         #广告大小图
     } else {
         $event_master_info["event_ad_res"] = $activity['ad_small_pic'];
         #广告大小图
     }
     $event_master_info["event_reward_info"] = implode(":", $tmp_reward_id);
     $event_master_info["event_comment"] = $activity['activity_comment'];
     foreach ($event_master_info as $k => $v) {
         $event_master_info[$k] = addslashes($v);
     }
     $result = $this->get_data('Event')->replace_into_event_master($event_master_info);
     if (!$result) {
         $status = false;
     }
     if ($status) {
         echo json_encode(array('status' => 1, 'data' => "success"));
     } else {
         echo json_encode(array('status' => 0, 'data' => 'fail'));
     }
 }
示例#24
0
 /**
  * @Purpose:
  * 格式化配置表字段,拆分指定格式数据
  * @Param $field 数据字段
  * @Return 返回数组
  */
 private function format_table_field($field)
 {
     $rtn_data = array();
     $data = explode("|", $field);
     if (Com_Array::is_good_arr($data)) {
         foreach ($data as $second_layer) {
             list($type, $value) = explode(":", $second_layer);
             $rtn_data[$type] = $value;
         }
     } else {
         list($type, $value) = explode(":", $data);
         $rtn_data[$type] = $value;
     }
     return $rtn_data;
 }
示例#25
0
 public function get_fund_income_conf_list_level_2($fund_id, $player_level)
 {
     if (empty($fund_id) || empty($player_level)) {
         return false;
     }
     # 确定玩家等级段
     $sql = "select distinct buy_level_upper from fund_income_level where fund_id = {$fund_id}";
     $records = $this->select_all($sql, $this->get_cache_key(array('fund_id' => $fund_id, 'distinct' => 1), $this->prefix_fund_income_level));
     # 按价格由高到低排序
     Com_Array::multisort($records, array('buy_level_upper' => 'asc'));
     $buy_level_upper;
     foreach ($records as $record) {
         if ($player_level <= $record['buy_level_upper']) {
             $buy_level_upper = $record['buy_level_upper'];
             break;
         }
     }
     $sql = "select * from fund_income_level where fund_id = {$fund_id} and buy_level_upper = {$buy_level_upper}";
     $records = $this->select_all($sql, $this->get_cache_key(array('fund_id' => $fund_id, 'buy_level_upper' => $buy_level_upper), $this->prefix_fund_income_level));
     $income_conf_hash = array();
     if (!empty($records)) {
         foreach ($records as $record) {
             $income_conf_hash[$record['income_offset']] = $record;
         }
     }
     return $income_conf_hash;
 }
示例#26
0
 public static function get_hero_potential_panel_struct($data)
 {
     if (Com_Array::is_good_arr($data['potential_info'])) {
         //格式化技能信息列表
         foreach ($data['potential_info'] as $key => $val) {
             $data['potential_info'][$key] = self::get_hero_potential_info_struct($val);
         }
     }
     return array(0 => intval($data['potential_level']), 1 => intval($data['level_max']), 2 => intval($data['potential_per']), 3 => $data['potential_info'] ? $data['potential_info'] : array());
 }
示例#27
0
 /**
  * 公会排行列表
  * type类型    2、建筑等级 3、公会战力 
  */
 public function get_union_rank($type)
 {
     switch ($type) {
         case 2:
             $data = $this->get_union_build_rank_list();
             break;
         case 3:
             $data = $this->get_data('UnionInfo')->get_union_sum_fpower_rank_list(1, 100);
             break;
     }
     $union_list = array();
     if (Com_Array::is_good_arr($data)) {
         Com_Array::multisort($data, array('val' => 'desc', 'player_num' => 'desc', 'union_level' => 'desc', 'union_exp' => 'desc'));
         foreach ($data as $key => $val) {
             $item = array();
             $item['rank'] = $key + 1;
             $item['union_name'] = $val['union_name'];
             $item['union_id'] = $val['union_id'];
             $item['create_player_id'] = $val['create_player_id'];
             $item['create_player_name'] = $val['create_player_name'];
             $item['union_player_num'] = $val['player_num'];
             $item['val'] = $val['val'];
             $union_list[] = $item;
             if ($item['rank'] >= 100) {
                 break;
             }
         }
     }
     return $union_list;
 }
示例#28
0
 /**
  * 多维排序
  * @param $limit_num 数量
  * @return int
  */
 public function get_total_rank_list_by_multisort($limit_num = 99)
 {
     $data = array();
     $rank_list = $this->redis()->zsets_all($this->_cacheKeyKfDuelTotalRank, false, 0, $limit_num);
     if ($rank_list) {
         foreach ($rank_list as $player_id) {
             $player_info = $this->get_player_info($player_id);
             $data[] = $player_info;
         }
         if (count($data) > 1) {
             Com_Array::multisort($data, array('score' => 'desc', 'sum_fpower' => 'desc'));
         }
     }
     return $data;
 }
示例#29
0
 /**
  * 获取引导任务格式化
  * @param $task_guide_config
  * @return array
  */
 public function get_guide_target_val($task_guide_config, $player_id)
 {
     $target = array();
     switch ($task_guide_config['type']) {
         case 1:
             $param = explode(":", $task_guide_config['content']);
             $cur_num = 0;
             #取出技能符文数
             $player_detail = $this->get_data('PlayerDetail')->get_player_detail($player_id, array('skill_info', 'skill_rune_info'));
             if (Com_Array::is_good_arr($player_detail['skill_info'])) {
                 foreach ($player_detail['skill_info'] as $skill_id => $skill_info) {
                     if ($skill_info['keyboard'] == $param[0]) {
                         if (isset($player_detail['skill_rune_info'][$skill_id])) {
                             $cur_num = count($player_detail['skill_rune_info'][$skill_id]);
                         }
                     }
                 }
             }
             $target = array('guide_id' => $task_guide_config['guide_id'], 'type' => $task_guide_config['type'], 'target_type' => $param[0], 'cur_num' => $cur_num, 'max_num' => $param[1]);
             break;
         case 3:
             $data = $this->get_data('Fairy')->get_player_fairy_list($player_id);
             $param = explode(":", $task_guide_config['content']);
             if (!empty($data)) {
                 foreach ($data as $fairy) {
                     if ($fairy['type'] == $param[0]) {
                         $cur_num = $fairy['level'];
                         break;
                     }
                 }
             } else {
                 $cur_num = 0;
             }
             $target = array('guide_id' => $task_guide_config['guide_id'], 'type' => $task_guide_config['type'], 'target_type' => $param[0], 'cur_num' => $cur_num, 'max_num' => $param[1]);
             break;
         case 8:
             $player_info = $this->get_data('Player')->get_player_info($player_id, array('union_id'));
             if (!empty($player_info['union_id'])) {
                 $cur_num = 1;
             } else {
                 $cur_num = 0;
             }
             $target = array('guide_id' => $task_guide_config['guide_id'], 'type' => $task_guide_config['type'], 'target_type' => 0, 'cur_num' => $cur_num, 'max_num' => $task_guide_config['content']);
             break;
         default:
             $target = array('guide_id' => $task_guide_config['guide_id'], 'type' => $task_guide_config['type'], 'target_type' => 0, 'cur_num' => 0, 'max_num' => $task_guide_config['content']);
             break;
     }
     return $target;
 }
示例#30
0
 public function init_magic_parliament_deatil($player_id, $plm_id)
 {
     $this->param_check_numeric(array($player_id, $plm_id));
     $player_info = $this->get_data('Player')->get_player_info($player_id, array('level', 'vip', 'privilege_level'));
     # 获取议会配置信息
     $plm_conf = Cache_MagicParliament::getInstance()->get_parliament_conf($plm_id);
     if (empty($plm_conf)) {
         $this->throw_error('100002');
         # 获取魔法议会配置失败
     }
     # 根据称号要求,获取本服前N名玩家列表,并转换成以排位为key的哈希
     $player_rank_hash = $this->get_player_rank_hash_for_title();
     $plm_info_hash = array();
     # 获取玩家当日赴会次数|特权使用次数|免费奖励领取次数
     $attend_meeting_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, $this->get_redis_key($this->daily_attend_meeting_num_prefix, $plm_conf['plm_id']));
     $use_privilege_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, $this->get_redis_key($this->daily_use_privilege_num_prefix, $plm_conf['plm_id']));
     $free_reward_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, $this->get_redis_key($this->daily_gain_free_reward_num_prefix, $plm_conf['plm_id']));
     $attend_meeting_status = $plm_conf['attend_meeting_stint'] > $attend_meeting_num ? 1 : 0;
     # 否达成议会特权要求
     $title_conf = Cache_MagicParliament::getInstance()->get_title_conf($plm_conf['use_privilege_req_title_id']);
     $hold_title = false;
     for ($i = $title_conf['req_fame_rank_min']; $i <= $title_conf['req_fame_rank_max']; $i++) {
         if (isset($player_rank_hash[$i]) && $player_rank_hash[$i]['player_id'] == $player_id && $player_rank_hash[$i]['fame'] >= $title_conf['req_fame']) {
             $hold_title = true;
             break;
         }
     }
     $privilege_status = 0;
     if ($hold_title && $use_privilege_num < $plm_conf['use_privilege_stint']) {
         $privilege_status = 1;
     }
     # 议会人气值
     if ($plm_conf['plm_id'] == $this->sage_plm_id) {
         $popularity = $this->get_cross('PlayerDailyTime')->get_any_used_time($this->get_redis_key($this->daily_popularity_prefix, $plm_conf['plm_id']));
     } else {
         $popularity = $this->get_data('PlayerDailyTime')->get_any_used_time($this->get_redis_key($this->daily_popularity_prefix, $plm_conf['plm_id']));
     }
     # 议会免费奖励领取上限
     $free_reward_gain_stint = $this->get_free_reward_gain_stint($plm_id, $plm_conf);
     $free_reward_num_remain = max($free_reward_gain_stint - $free_reward_num, 0);
     $free_reward_status = $free_reward_num_remain > 0 ? 1 : 0;
     # 获取人气值修正信息 && 等级修正信息 && 合并两个修正为一个
     $revise_info_1 = Cache_MagicParliament::getInstance()->get_revise_1($plm_conf['plm_id'], $popularity);
     $revise_info_2 = Cache_MagicParliament::getInstance()->get_revise_2($plm_conf['plm_id'], $player_info['level']);
     if (empty($revise_info_1)) {
         $this->throw_error('100003');
         # 获取人气值修正信息配置失败
     }
     if (empty($revise_info_2)) {
         $this->throw_error('100004');
         # 获取等级修正信息配置失败
     }
     # 所有议会配置信息哈希
     $plm_conf_hash = Cache_MagicParliament::getInstance()->get_all_parliament_conf_hash();
     if (empty($plm_conf_hash)) {
         $this->throw_error('100002');
         # 获取魔法议会配置失败
     }
     # 历史行为日志
     $action_log_list = $this->get_data('MagicParliament')->get_action_log($plm_id, $this->action_log_num);
     Com_Array::multisort($action_log_list, array('reg_time' => 'asc'));
     $action_log_history = array();
     if (!empty($action_log_list)) {
         foreach ($action_log_list as $action_log) {
             $pinfo = $this->get_data('Player')->get_player_info($action_log['player_id'], array('name'));
             $reg_time = date('m-d H:i', $action_log['reg_time']);
             $reward_info = json_decode($action_log['reward_info'], true);
             $reward_list = array();
             if (!empty($reward_info)) {
                 foreach ($reward_info as $item_id => $item_num) {
                     $reward_list[] = array('txt' => '', 'type' => 2, 'value' => $item_id, 'param' => $item_num);
                 }
             }
             $code = 0;
             switch ($action_log['action_type']) {
                 case 1:
                     # 赴会
                     $code = 100011;
                     # 赴会消息提示内容
                     $params = array(array(array('txt' => '', 'type' => 7, 'value' => $reg_time, 'param' => '')), array(array('txt' => $pinfo['name'], 'type' => 0, 'value' => $action_log['player_id'], 'param' => '')), array(array('txt' => '', 'type' => 7, 'value' => $plm_conf_hash[$plm_id]['plm_name'], 'param' => '')), $reward_list);
                     break;
                 case 2:
                     # 特权
                     $code = 100012;
                     # 行使特权消息提示内容
                     $params = array(array(array('txt' => '', 'type' => 7, 'value' => $reg_time, 'param' => '')), array(array('txt' => $pinfo['name'], 'type' => 0, 'value' => $action_log['player_id'], 'param' => '')), array(array('txt' => '', 'type' => 7, 'value' => $plm_conf_hash[$plm_id]['privilege_name'], 'param' => '')), array(array('txt' => '', 'type' => 7, 'value' => $plm_conf_hash[$plm_id]['plm_name'], 'param' => '')), $reward_list);
                     break;
                 case 3:
                     # 领取免费奖励
                     $code = 100013;
                     # 领取免费奖励消息提示内容
                     $params = array(array(array('txt' => '', 'type' => 7, 'value' => $reg_time, 'param' => '')), array(array('txt' => $pinfo['name'], 'type' => 0, 'value' => $action_log['player_id'], 'param' => '')), $reward_list);
                     break;
             }
             $dynamic_text = array('code' => $code, 'content' => array(), 'params' => $params);
             $action_log_history[] = $dynamic_text;
         }
     }
     # 修正特权奖励与消耗
     $use_privilege_cost_res = $this->get_game('Reward')->get_revised_value($plm_conf['use_privilege_cost_res'], array($revise_info_1['privilege_cost_revise'], $revise_info_2['privilege_cost_revise']));
     $use_privilege_reward = $this->get_game('Reward')->get_revised_value($plm_conf['use_privilege_reward'], array($revise_info_1['privilege_reward_revise'], $revise_info_2['privilege_reward_revise']));
     $plm_info_hash[$plm_conf['plm_id']] = array('plm_id' => $plm_conf['plm_id'], 'attend_meeting_info' => array('attend_meeting_cost' => $plm_conf['attend_meeting_res_cost'], 'attend_meeting_reward' => $plm_conf['attend_meeting_reward'], 'attend_meeting_status' => $attend_meeting_status), 'privilege_info' => array('privilege_cost' => $use_privilege_cost_res, 'privilege_reward' => $use_privilege_reward, 'privilege_status' => $privilege_status), 'free_reward_info' => array('free_reward' => $plm_conf['free_reward'], 'free_reward_status' => $free_reward_status, 'remain_num' => $free_reward_num_remain), 'popularity' => intval($popularity), 'history' => $action_log_history);
     $out_2503 = $plm_info_hash[$plm_id];
     #var_export($out_2503);
     return $out_2503;
 }