int32_t MsgModule::OnDatasvrGetPlayerDataRes(ProtoSs::Msg* msg, void* arg) { UNUSE_ARG(arg); LuaEngineModule* lua_engine_module = FindModule<LuaEngineModule>(app_); uint64_t task_id = msg->head().seq(); int32_t ret = msg->head().ret(); int32_t player_idx = msg->head().player_idx(); LOG(INFO) << "get player_data result[" << ret << "] player_idx[" << player_idx << "] seq[" << task_id << "]"; if (ret == 0) { const ProtoSs::GetPlayerDataRes& get_player_data_res = msg->get_player_data_res(); Database::PlayerData player_data; player_data.ParseFromArray(get_player_data_res.player_data().c_str(), get_player_data_res.player_data().size()); LOG(INFO) << "\nplayer_data:\n" << player_data.Utf8DebugString(); // 从数据库初始化对象 ObjMgrModule* obj_mgr_module = FindModule<ObjMgrModule>(app_); Player* player = obj_mgr_module->get_player(player_idx); const Database::RoleInfo& role_info = player_data.role_info(); player->set_player_by_db(&role_info); for (int32_t i = 0; i < player_data.city_list_size(); i++) { const Database::CityInfo& city_info = player_data.city_list(i); int32_t city_idx = obj_mgr_module->add_city(player_idx); City* city = obj_mgr_module->get_city(city_idx); city->set_city_by_db(&city_info); if (city != NULL) { city->set_player_idx(player_idx); } } lua_engine_module->Resume(task_id, 0); } else { lua_engine_module->Resume(task_id, 1); } return 0; }