/** * 如果玩家没有出序章 在遇到C++服务器重启的时候 重置这写玩家的任务 */ public function reset_task() { Com_Log::write('x_reset', "=============================[start]========================="); $keys = Com_AdCache::factory('player')->keys("data|player:*"); if (!empty($keys)) { $syndata['city_id'] = 2100; $syndata['city_x'] = 3382; $syndata['city_y'] = 3538; $role_init_data = array(); foreach ($keys as $key) { $player_info = Com_AdCache::factory('player')->hash_get($key, array('player_id', 'level', 'vip', 'map_id', 'career_type')); // if($player_info['player_id'] != 980564) continue; if ($player_info['level'] >= 10) { continue; } Com_Log::write('x_reset', "player_id:{$player_info['player_id']}"); if (!isset($role_init_data[$player_info['career_type']]) && empty($role_init_data[$player_info['career_type']])) { $role_init_data[$player_info['career_type']] = Cache_RoleAttrInit::getInstance()->get_role_attr_init($player_info['career_type']); } if ($player_info['map_id'] == 2100 && $player_info['level'] < 10) { $this->init_set_task($player_info['player_id'], explode(":", $role_init_data[$player_info['career_type']]['default_task_id'])); // $this->get_data('PlayerTaskLog')->del_player_task_log($player_info['player_id']); $syndata['level'] = 1; $level_exp = Cache_RoleExp::getInstance()->get_role_exp(1); $syndata['level_exp'] = intval($level_exp['need_exp']); $syndata['exp'] = 0; $this->get_data('Player')->update_player_info($player_info['player_id'], $syndata); $update_fields = $this->get_game('PlayerSkill')->extend_set($player_info['player_id'], $player_info['career_type'], 1, false); $update_fields['guide'] = ''; try { $update_fields['wing_info'] = $this->get_game('PlayerWing')->create_player_wing($player_info['player_id'], false); $update_fields['equip_wing'] = 0; } catch (Exception $e) { Com_Log::write('reset_del', "del wing error ##" . var_export($e, true)); } $this->get_data('PlayerDetail')->update_player_detail($player_info['player_id'], $update_fields); try { $this->get_game('Fairy')->set_fairy_state_interface($player_info['player_id']); } catch (Exception $e) { Com_Log::write('reset_del', "del fairy error ##" . var_export($e, true)); } $props = $this->get_data('PlayerProp')->get_player_all_prop($player_info['player_id']); if ($props) { foreach ($props as $ppid => $val) { Com_Log::write('reset_del', "del prop player_id:{$player_info['player_id']} ##" . var_export($val, true)); $result = $this->get_data('PlayerProp')->delete_player_prop($player_info['player_id'], $val, true, array('cmd_id' => 107, 'level' => $player_info['level'], 'vip' => $player_info['vip'])); if (!$result) { Com_Log::write('reset_del', "del prop error ##" . var_export($val, true)); } } } } } } Com_Log::write('x_reset', "=============================[end]========================="); }
public function update_player_level($player_id, $level) { if ($level < 0 || $level > 100) { echo "等级错误"; return; } $objPlayer = TenYear::getInstance('Data_Player'); $level_exp = Cache_RoleExp::getInstance()->get_role_exp(1); $objPlayer->update_player_info($player_id, array('level' => $level, 'level_exp' => intval($level_exp['need_exp']))); SynPlayer::set_syn_data(array('level' => $level, 'level_exp' => intval($level_exp['need_exp']))); $data = SynPlayer::get_data(); Protocol::input($player_id, 7, 4, 417, array(0 => $data['m'], 1 => $data['u'])); Protocol::out(); echo "添加成功"; }
protected function init_player_data($data) { $nowTime = time(); $role_init_data = Cache_RoleAttrInit::getInstance()->get_role_attr_init($data['career_type']); $level_exp = Cache_RoleExp::getInstance()->get_role_exp(1); $logs = array(); $fame_info = $this->get_game('PlayerUpgrade')->get_update_fame_level(1, 0, $logs); $signature = $this->get_player_init_signature(); return array('player_id' => $data['player_id'], 'name' => $data['name'], 'user_account' => $data['user_account'], 'sex' => $data['sex'], 'career_type' => $data['career_type'], 'avatar' => $data['avatar'], 'level' => $role_init_data['level'], 'map_id' => $this->default_city_id, 'reg_time' => $nowTime, 'login_time' => $nowTime, 'logout_time' => $nowTime, 'session_id' => $data['session_id'], 'level_exp' => intval($level_exp['need_exp']), 'skill_point' => 20000, 'silver' => $role_init_data['default_silver'], 'gold' => $role_init_data['default_gold'], 'adult_flag' => $data['adult_flag'], 'bag_num' => $this->get_game('PlayerBag')->get_default_bag_num(), 'storage_num' => 20, 'is_dummy' => !empty($data['is_dummy']) ? $data['is_dummy'] : 0, 'ad_info' => !empty($data['ad_info']) ? $data['ad_info'] : 0, 'fame_level' => intval($fame_info['fame_level']), 'fame_level_exp' => intval($fame_info['fame_level_exp']), 'union_id' => 0, 'signature' => $signature, 'op_id' => OPERATOR_ID, 'client_ip' => $data['client_ip']); }
protected function get_update_level($level, $exp, &$logs, &$level_config_array) { while ($exp > 0) { if (!isset($this->_level_config_array[$level])) { $this->_level_config_array[$level] = Cache_RoleExp::getInstance()->get_role_exp($level); # 获取当前等级升级到下一级所需的经验配置信息 } $level_config_array[$level] = $this->_level_config_array[$level]; $nextLevelExp = $this->_level_config_array[$level]['need_exp']; if (empty($nextLevelExp)) { return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp); } if ($exp >= $nextLevelExp) { $old_level = $level; $level += 1; $old_exp = $exp; $exp -= $nextLevelExp; $logs[] = array('type' => 2, 'item_id' => 1, 'item_num' => $nextLevelExp, 'amount' => $old_exp, 'front_attr' => $old_level, 'after_attr' => $level, 'is_async' => 0); if ($exp <= 0) { #经验正好等于的时候就不进入下次循环了 这里再取一次吧 if (!isset($this->_level_config_array[$level])) { $this->_level_config_array[$level] = Cache_RoleExp::getInstance()->get_role_exp($level); # 获取当前等级升级到下一级所需的经验配置信息 } $level_config_array[$level] = $this->_level_config_array[$level]; $nextLevelExp = $this->_level_config_array[$level]['need_exp']; return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp); } } else { return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp); } } return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp); }