Untitled

 avatar
unknown
plain_text
3 months ago
1.9 kB
8
Indexable
void CHARACTER_MANAGER::SendDataPlayer(LPCHARACTER ch)
{
	if (ch && !ch->GetDesc())
		return;

	const int iServerTime = time(NULL);
	const BYTE bSubIdx = EVENT_MANAGER_LOAD;

	TPacketGCEventManager p;
	p.header = HEADER_GC_EVENT_MANAGER;

	std::vector<TEvent> m_vec{};
	bool bClear = true;
	bool bSended = false;

	TEMP_BUFFER buf;

	//for (DWORD j = 0; j < m_eventData.size(); ++j)
	DWORD j = 0;
	while (j < m_eventData.size())
	{
		m_vec.emplace_back(m_eventData[j]);

		if (m_vec.size() == 25)
		{
event_packet_method:
			buf.reset();

			BYTE bCount = m_vec.size();

			p.size = sizeof(TPacketGCEventManager) + sizeof(BYTE) + sizeof(int) + sizeof(bool) + sizeof(BYTE) + (bCount * sizeof(TEvent));
			buf.write(&p, sizeof(TPacketGCEventManager));
			buf.write(&bSubIdx, sizeof(BYTE));
			buf.write(&iServerTime, sizeof(int));
			buf.write(&bClear, sizeof(bool));
			buf.write(&bCount, sizeof(BYTE));
			buf.write(m_vec.data(), bCount * sizeof(TEvent));

			if (ch)
			{
				ch->GetDesc()->Packet(buf.read_peek(), buf.size());
			}
			else
			{
				const DESC_MANAGER::DESC_SET& c_ref_set = DESC_MANAGER::instance().GetClientSet();
				for (const auto& desc : c_ref_set)
				{
					if (desc->GetCharacter())
						desc->Packet(buf.read_peek(), buf.size());
				}
			}

			if (bClear)
				bClear = false;
			bSended = true;

			m_vec.clear();
		}
	}

	if (m_vec.size() || !bSended)
	{
		goto event_packet_method;
	}
	const auto event = CheckEventIsActive(BEGGINER_EVENT, ch->GetEmpire());
	if (event != NULL && ch->GetQuestFlag("event_manager.is_new_player") == 0 && ch->GetLevel() == 0)
	{
		//value0 - itemvnum / value1 - itemcount
		ch->AutoGiveItem(event->dwValue[0],event->dwValue[1]);
		ch->ChatPacket(CHAT_TYPE_INFO,"[LS;9000067]");
		ch->SetQuestFlag("event_manager.is_new_player",1);
	}
	if(ch->GetLevel() == 0)
		ch->PointChange(POINT_LEVEL, 1);
}
Editor is loading...
Leave a Comment