void NFCDBNet_ServerModule::OnCreateRoleGameProcess(const NFSOCK nSockIndex, const int nMsgID, const char * msg, const uint32_t nLen) { NFGUID nClientID; NFMsg::ReqCreateRole xMsg; if (!m_pNetModule->ReceivePB(nMsgID, msg, nLen, xMsg, nClientID)) { return; } const std::string& strAccount = xMsg.account(); const std::string& strName = xMsg.noob_name(); NFGUID xID = m_pKernelModule->CreateGUID(); if (m_pPlayerRedisModule->CreateRole(strAccount, strName, xID)) { NFMsg::AckRoleLiteInfoList xAckRoleLiteInfoList; xAckRoleLiteInfoList.set_account(strAccount); NFMsg::RoleLiteInfo* pData = xAckRoleLiteInfoList.add_char_data(); pData->mutable_id()->CopyFrom(NFINetModule::NFToPB(xID)); pData->set_career(xMsg.career()); pData->set_game_id(pPluginManager->GetAppID()); pData->set_sex(xMsg.sex()); pData->set_race(xMsg.race()); pData->set_noob_name(xMsg.noob_name()); pData->set_role_level(1); pData->set_delete_time(0); pData->set_reg_time(0); pData->set_last_offline_time(0); pData->set_last_offline_ip(0); pData->set_view_record(""); m_pNetModule->SendMsgPB(NFMsg::EGMI_ACK_ROLE_LIST, xAckRoleLiteInfoList, nSockIndex, nClientID); } }
void NFCProxyServerNet_ServerModule::OnReqCreateRoleProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { //在没有正式进入游戏之前,nPlayerID都是FD NFGUID nPlayerID; NFMsg::ReqCreateRole xData; if (!m_pNetModule->ReceivePB(nSockIndex, nMsgID, msg, nLen, xData, nPlayerID)) { return; } NF_SHARE_PTR<ConnectData> pServerData = m_pProxyServerToGameModule->GetClusterModule()->GetServerNetInfo(xData.game_id()); if (pServerData && ConnectDataState::NORMAL == pServerData->eState) { //数据匹配 NetObject* pNetObject = m_pNetModule->GetNet()->GetNetObject(nSockIndex); if (pNetObject && pNetObject->GetConnectKeyState() > 0 && pNetObject->GetGameID() == xData.game_id() && pNetObject->GetAccount() == xData.account()) { NFMsg::MsgBase xMsg; if (!xData.SerializeToString(xMsg.mutable_msg_data())) { return; } //playerid主要是网关转发消息的时候做识别使用,其他使用不使用 xMsg.mutable_player_id()->CopyFrom(NFINetModule::NFToPB(pNetObject->GetClientID())); std::string strMsg; if (!xMsg.SerializeToString(&strMsg)) { return; } m_pProxyServerToGameModule->GetClusterModule()->SendByServerID(pNetObject->GetGameID(), nMsgID, strMsg); } } }
void NFCPlayerLogic::RequireCreateRole(string strRoleName, int byCareer, int bySex) { NFMsg::ReqCreateRole xMsg; xMsg.set_account(g_pLoginLogic->GetAccount()); xMsg.set_race(0); xMsg.set_noob_name(strRoleName); xMsg.set_career(byCareer); xMsg.set_sex(bySex); xMsg.set_game_id(g_pLoginLogic->GetServerID()); g_pNetLogic->SendToServerByPB(NFMsg::EGameMsgID::EGMI_REQ_CREATE_ROLE, xMsg); }