bool HelloWorld3Module::AfterInit() { //初始化完毕 std::cout << "Hello, world3, AfterInit" << std::endl; m_pKernelModule = dynamic_cast<NFIKernelModule*>(pPluginManager->FindModule("NFCKernelModule")); m_pEventProcessModule = dynamic_cast<NFIEventProcessModule*>(pPluginManager->FindModule("NFCEventProcessModule")); m_pElementInfoModule = dynamic_cast<NFIElementInfoModule*>(pPluginManager->FindModule("NFCElementInfoModule")); //创建容器,所有的对象均需在容器中 m_pKernelModule->CreateContainer(1, ""); m_pEventProcessModule->AddClassCallBack("Player", this, &HelloWorld3Module::OnClassCallBackEvent); //创建对象,挂类回调和属性回调,然后事件处理对象 NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->CreateObject(NFIDENTID(0, 10), 1, 0, "Player", "", NFCDataList()); if (!pObject.get()) { return false; } pObject->GetPropertyManager()->AddProperty(pObject->Self(), "Hello", TDATA_STRING, true, true, true, true, 0, ""); pObject->GetPropertyManager()->AddProperty(pObject->Self(), "World", TDATA_INT, true, true, true, true, 0, ""); pObject->AddPropertyCallBack("Hello", this, &HelloWorld3Module::OnPropertyStrCallBackEvent); pObject->AddPropertyCallBack("World", this, &HelloWorld3Module::OnPropertyCallBackEvent); pObject->SetPropertyString("Hello", "hello,World"); pObject->SetPropertyInt("World", 1111); m_pEventProcessModule->DoEvent(pObject->Self(), 11111111, NFCDataList() << int(100) << "200"); return true; }
void NFCGSSwichServerModule::OnReqSwichServer(const NFSOCK nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { CLIENT_MSG_PROCESS_NO_OBJECT(nMsgID, msg, nLen, NFMsg::ReqSwitchServer); if (nPlayerID != NFINetModule::PBToNF(xMsg.selfid())) { return; } if (xMsg.target_serverid() != pPluginManager->GetAppID()) { m_pLogModule->LogNormal(NFILogModule::NLL_ERROR_NORMAL, nPlayerID, "Target server is not this server", xMsg.target_serverid(), __FUNCTION__, __LINE__); return; } const NFGUID nClientID = NFINetModule::PBToNF(xMsg.client_id()); const int nGateID = (int)xMsg.gate_serverid(); const int nSceneID = (int)xMsg.sceneid(); const int nGroup = (int)xMsg.groupid(); //if (!AddPlayerGateInfo(nPlayerID, nClientID, nGateID)) // { // return; // } NFDataList var; var.AddString(NFrame::Player::GateID()); var.AddInt(nGateID); NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->CreateObject(nPlayerID, nSceneID, 0, NFrame::Player::ThisName(), "", var); if (NULL == pObject.get()) { //mRoleBaseData //mRoleFDData return; } pObject->SetPropertyInt(NFrame::Player::GateID(), nGateID); pObject->SetPropertyInt(NFrame::Player::GameID(), pPluginManager->GetAppID()); m_pKernelModule->DoEvent(pObject->Self(), NFrame::Player::ThisName(), CLASS_OBJECT_EVENT::COE_CREATE_FINISH, NFDataList()); m_pScenemodule->RequestEnterScene(pObject->Self(), nSceneID, nGroup, 0, NFDataList()); //m_pEventModule->DoEvent(pObject->Self(), NFED_ON_CLIENT_ENTER_SCENE, varEntry); if (!m_pGameServerNet_ServerModule->AddPlayerGateInfo(nPlayerID, nClientID, nGateID)) { m_pKernelModule->DestroyObject(nPlayerID); return ; } m_pGameServerNet_ServerModule->SendMsgPBToGate(NFMsg::EGMI_REQSWICHSERVER, xMsg, nPlayerID); m_pNetClientModule->SendSuitByPB(NF_SERVER_TYPES::NF_ST_WORLD, nPlayerID.ToString(), NFMsg::EGMI_ACKSWICHSERVER, xMsg); }
bool HelloWorld6Module::AfterInit() { //初始化完毕 std::cout << "Hello, world6, AfterInit" << std::endl; m_pKernelModule = pPluginManager->FindModule<NFIKernelModule>("NFCKernelModule"); m_pEventProcessModule = pPluginManager->FindModule<NFIEventProcessModule>("NFCEventProcessModule"); m_pElementInfoModule = pPluginManager->FindModule<NFIElementInfoModule>("NFCElementInfoModule"); m_pLuaScriptModule = pPluginManager->FindModule<NFILuaScriptModule>("NFCLuaScriptModule"); //assert( NULL != m_pLuaScriptModule); m_pKernelModule->CreateScene(1, ""); NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->CreateObject(NFGUID(), 1, 0, "Player", "", NFCDataList()); if ( !pObject.get() ) { return false; } NF_SHARE_PTR<NFIRecord> pRecord = pObject->GetRecordManager()->GetElement("TaskList"); if ( pRecord.get() ) { NFCDataList var; var << "Task_From_C++"; var << 0; pRecord->AddRow(-1, var); } pObject->SetPropertyInt("MAXHP",100); m_pEventProcessModule->DoEvent(pObject->Self(), 2222, NFCDataList()); return true; }
bool NFCCreateRoleModule::ConvertPBToPropertyManager(const NFMsg::ObjectPropertyList& pPropertyData, NF_SHARE_PTR<NFIPropertyManager> pProps) { if (pProps) { for (int i = 0; i < pPropertyData.property_int_list_size(); ++i) { const NFMsg::PropertyInt& xData = pPropertyData.property_int_list(i); if (pProps->ExistElement(xData.property_name())) { pProps->AddProperty(pProps->Self(), xData.property_name(), NFDATA_TYPE::TDATA_INT); } pProps->SetPropertyInt(xData.property_name(), xData.data()); } for (int i = 0; i < pPropertyData.property_float_list_size(); ++i) { const NFMsg::PropertyFloat& xData = pPropertyData.property_float_list(i); if (pProps->ExistElement(xData.property_name())) { pProps->AddProperty(pProps->Self(), xData.property_name(), NFDATA_TYPE::TDATA_FLOAT); } pProps->SetPropertyFloat(xData.property_name(), xData.data()); } for (int i = 0; i < pPropertyData.property_string_list_size(); ++i) { const NFMsg::PropertyString& xData = pPropertyData.property_string_list(i); if (pProps->ExistElement(xData.property_name())) { pProps->AddProperty(pProps->Self(), xData.property_name(), NFDATA_TYPE::TDATA_STRING); } pProps->SetPropertyString(xData.property_name(), xData.data()); } for (int i = 0; i < pPropertyData.property_object_list_size(); ++i) { const NFMsg::PropertyObject& xData = pPropertyData.property_object_list(i); if (pProps->ExistElement(xData.property_name())) { pProps->AddProperty(pProps->Self(), xData.property_name(), NFDATA_TYPE::TDATA_OBJECT); } pProps->SetPropertyObject(xData.property_name(), NFGUID(xData.data().svrid(), xData.data().index())); } for (int i = 0; i < pPropertyData.property_vector2_list_size(); ++i) { const NFMsg::PropertyVector2& xData = pPropertyData.property_vector2_list(i); if (pProps->ExistElement(xData.property_name())) { pProps->AddProperty(pProps->Self(), xData.property_name(), NFDATA_TYPE::TDATA_VECTOR2); } pProps->SetPropertyVector2(xData.property_name(), NFVector2(xData.data().x(), xData.data().y())); } for (int i = 0; i < pPropertyData.property_vector3_list_size(); ++i) { const NFMsg::PropertyVector3& xData = pPropertyData.property_vector3_list(i); if (pProps->ExistElement(xData.property_name())) { pProps->AddProperty(pProps->Self(), xData.property_name(), NFDATA_TYPE::TDATA_VECTOR3); } pProps->SetPropertyVector3(xData.property_name(), NFVector3(xData.data().x(), xData.data().y(), xData.data().z())); } } return true; }
void NFCCreateRoleModule::OnDBLoadRoleDataProcess(const NFSOCK nSockIndex, const int nMsgID, const char * msg, const uint32_t nLen) { NFGUID nClientID; NFMsg::RoleDataPack xMsg; if (!m_pNetModule->ReceivePB(nMsgID, msg, nLen, xMsg, nClientID)) { //releasing all the resource that allow when the user login, then kick off the user // TODO //m_pGameServerNet_ServerModule->RemovePlayerGateInfo(); //Avtually, the developer may not know the user id in this situation, therefore the developer must record the login-time when the user coming //and check the time per min to kick off the user who are not active. return; } NFGUID nRoleID = NFINetModule::PBToNF(xMsg.id()); if (m_pKernelModule->GetObject(nRoleID)) { //it should be rebind with proxy's netobject m_pKernelModule->DestroyObject(nRoleID); } mxObjectDataCache[nRoleID] = xMsg; NF_SHARE_PTR<NFIGameServerNet_ServerModule::GateBaseInfo> pGateInfo = m_pGameServerNet_ServerModule->GetPlayerGateInfo(nRoleID); if (nullptr != pGateInfo) { if (pGateInfo->eStatus == NFIGameServerNet_ServerModule::GateBaseInfo::E_LOADING) { pGateInfo->eStatus = NFIGameServerNet_ServerModule::GateBaseInfo::E_LOADED; } } NFDataList var; var.AddString(NFrame::Player::GateID()); var.AddInt(pGateInfo->nGateID); var.AddString(NFrame::Player::GameID()); var.AddInt(pPluginManager->GetAppID()); var.AddString(NFrame::Player::HomeSceneID()); var.AddInt(1); var.AddString(NFrame::Player::SceneID()); var.AddInt(1); NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->CreateObject(nRoleID, 1, 0, NFrame::Player::ThisName(), "", var); if (nullptr == pObject) { //mRoleBaseData //mRoleFDData mxObjectDataCache.erase(nRoleID); return; } //get data first then create player m_pSceneProcessModule->RequestEnterScene(pObject->Self(), 1, -1, 0, NFDataList()); }
void NFCCreateRoleModule::OnClienEnterGameProcess(const NFSOCK nSockIndex, const int nMsgID, const char * msg, const uint32_t nLen) { NFGUID nClientID; NFMsg::ReqEnterGameServer xMsg; if (!m_pNetModule->ReceivePB( nMsgID, msg, nLen, xMsg, nClientID)) { return; } NFGUID nRoleID = NFINetModule::PBToNF(xMsg.id()); if (m_pKernelModule->GetObject(nRoleID)) { //it should be rebind with proxy's netobject m_pKernelModule->DestroyObject(nRoleID); } ////////////////////////////////////////////////////////////////////////// NF_SHARE_PTR<NFIGameServerNet_ServerModule::GateBaseInfo> pGateInfo = m_pGameServerNet_ServerModule->GetPlayerGateInfo(nRoleID); if (nullptr != pGateInfo) { m_pGameServerNet_ServerModule->RemovePlayerGateInfo(nRoleID); } NF_SHARE_PTR<NFIGameServerNet_ServerModule::GateServerInfo> pGateServerinfo = m_pGameServerNet_ServerModule->GetGateServerInfoBySockIndex(nSockIndex); if (nullptr == pGateServerinfo) { return; } int nGateID = -1; if (pGateServerinfo->xServerData.pData) { nGateID = pGateServerinfo->xServerData.pData->server_id(); } if (nGateID < 0) { return; } if (!m_pGameServerNet_ServerModule->AddPlayerGateInfo(nRoleID, nClientID, nGateID)) { return; } if (m_pPlayerRedisModule->LoadPlayerData(nRoleID)) { int nHomeSceneID = m_pPlayerRedisModule->GetPlayerHomeSceneID(nRoleID); if (nHomeSceneID <= 0) { nHomeSceneID = m_pPVPModule->RandomTileScene(); } NFDataList var; var.AddString(NFrame::Player::Name()); var.AddString(xMsg.name()); var.AddString(NFrame::Player::GateID()); var.AddInt(nGateID); var.AddString(NFrame::Player::GameID()); var.AddInt(pPluginManager->GetAppID()); var.AddString(NFrame::Player::HomeSceneID()); var.AddInt(nHomeSceneID); var.AddString(NFrame::Player::SceneID()); var.AddInt(nHomeSceneID); var.AddString(NFrame::Player::ViewOppnent()); var.AddObject(nRoleID); NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->CreateObject(nRoleID, nHomeSceneID, 0, NFrame::Player::ThisName(), "", var); if (nullptr == pObject) { //mRoleBaseData //mRoleFDData return; } //get data first then create player m_pSceneProcessModule->RequestEnterScene(pObject->Self(), nHomeSceneID, -1, 0, NFDataList()); } }