Esempio n. 1
0
void CKnightsManager::CreateKnights(CUser* pUser, Packet & pkt)
{
	if (pUser == nullptr)
		return;

	Packet result(WIZ_KNIGHTS_PROCESS, uint8(KNIGHTS_CREATE));
	std::string idname;
	uint8 ret_value = 0;
	pkt >> idname;

	if (idname.empty() || idname.size() > MAX_ID_SIZE
		|| !IsAvailableName(idname.c_str()))
		ret_value = 3;
	else if (pUser->GetClanID() != 0)
		ret_value = 5;
	else if (g_pMain->m_nServerGroup == 2)
		ret_value = 8;
	else if (!pUser->GetMap()->canUpdateClan())
		ret_value = 9;
	else if (pUser->GetLevel() < CLAN_LEVEL_REQUIREMENT)
		ret_value = 2;
	else if (!pUser->hasCoins(CLAN_COIN_REQUIREMENT))
		ret_value = 4;

	if (ret_value == 0)
	{
		uint16 knightindex = GetKnightsIndex(pUser->m_bNation);
		if (knightindex >= 0)
		{	
			result	<< uint8(ClanTypeTraining) 
				<< knightindex << pUser->GetNation()
				<< idname << pUser->GetName();
			g_pMain->AddDatabaseRequest(result, pUser);
			return;
		}
		ret_value = 6;
	}

	result << ret_value;
	pUser->Send(&result);
}
Esempio n. 2
0
void CKnightsManager::CreateKnights(CUser* pUser, Packet & pkt)
{
	if (pUser == NULL)
		return;
	
	Packet result(WIZ_KNIGHTS_PROCESS, uint8(KNIGHTS_CREATE));
	std::string idname;
	uint8 ret_value = 0;
	pkt >> idname;

	if (idname.empty() || idname.size() > MAX_ID_SIZE
		|| !IsAvailableName(idname.c_str()))
		ret_value = 3;
	else if (pUser->m_pUserData->m_bKnights != 0)
		ret_value = 5;
	else if (g_pMain->m_nServerGroup == 2)
		ret_value = 8;
	else if (pUser->GetLevel() < CLAN_LEVEL_REQUIREMENT)
		ret_value = 2;
	else if (pUser->m_pUserData->m_iGold < CLAN_COIN_REQUIREMENT)
		ret_value = 4;

	if (ret_value == 0)
	{
		uint16 knightindex = GetKnightsIndex(pUser->m_pUserData->m_bNation);
		if (knightindex >= 0)
		{	
			result	<< uint8(CLAN_TYPE) 
					<< knightindex << pUser->GetNation()
					<< idname << pUser->m_pUserData->m_id;
			g_pMain->m_LoggerSendQueue.PutData(&result, pUser->GetSocketID());
			return;
		}
		ret_value = 6;
	}

	result << ret_value;
	pUser->Send(&result);
}