void CKnightsManager::ReqCreateKnights(CUser *pUser, Packet & pkt) { if (pUser == nullptr) return; Packet result(WIZ_KNIGHTS_PROCESS, uint8(KNIGHTS_CREATE)); string strKnightsName, strChief; uint16 sClanID; uint8 bFlag, bNation; int8 bResult; pkt >> bFlag >> sClanID >> bNation >> strKnightsName >> strChief; bResult = g_DBAgent.CreateKnights(sClanID, bNation, strKnightsName, strChief, bFlag); if (bResult < 0) { result << bResult; pUser->Send(&result); return; } CKnights *pKnights = new CKnights(); pKnights->m_sIndex = sClanID; pKnights->m_byFlag = bFlag; pKnights->m_byNation = bNation; pKnights->m_strName = strKnightsName; pKnights->m_strChief = pUser->GetName(); pUser->GoldLose(CLAN_COIN_REQUIREMENT, false); g_pMain->m_KnightsArray.PutData(pKnights->m_sIndex, pKnights); pKnights->AddUser(pUser); // Ensure the clan leader's fame is set // CKnights::AddUser() will default it to TRAINEE, so it needs to be set afterwards. pUser->m_bFame = CHIEF; result << uint8(1) << pUser->GetSocketID() << sClanID << strKnightsName << pKnights->m_byGrade << pKnights->m_byRanking << pUser->m_iGold; pUser->SendToRegion(&result); }
void CKnightsManager::ReqCreateKnights(CUser *pUser, Packet & pkt) { if (pUser == nullptr) return; Packet result(WIZ_KNIGHTS_PROCESS, uint8(KNIGHTS_CREATE)); string strKnightsName, strChief; uint16 sClanID; uint8 bFlag, bNation; int8 bResult; pkt >> bFlag >> sClanID >> bNation >> strKnightsName >> strChief; bResult = g_DBAgent.CreateKnights(sClanID, bNation, strKnightsName, strChief, bFlag); if (bResult < 0) { result << bResult; pUser->Send(&result); return; } CKnights *pKnights = new CKnights(); pKnights->m_sIndex = sClanID; pKnights->m_byFlag = bFlag; pKnights->m_byNation = bNation; pKnights->m_strName = strKnightsName; pKnights->m_strChief = pUser->GetName(); pUser->m_iGold -= CLAN_COIN_REQUIREMENT; pUser->m_bFame = CHIEF; g_pMain->m_KnightsArray.PutData(pKnights->m_sIndex, pKnights); pKnights->AddUser(pUser); result << uint8(1) << pUser->GetSocketID() << sClanID << strKnightsName << pKnights->m_byGrade << pKnights->m_byRanking << pUser->m_iGold; pUser->SendToRegion(&result); }