Untitled

 avatar
unknown
plain_text
4 months ago
17 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;
                                                	DWORD j = 0;

                                                    	while (j < m_eventData.size())
                                                        	{
                                                                		m_vec.emplace_back(m_eventData[j]);

                                                                        		if (m_vec.size() == 25)
                                                                                		{
                                                                                            			{
                                                                                                            				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();
                                                                                                        }
                                                                                        }
                                                                                        		++j;
                                                            }

                                                            	if (m_vec.size() || !bSended)
                                                                	{
                                                                        		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());
                                                                                                                                                                                                                        }
                                                                                                                                                                                }
                                                                    }

                                                                    	const auto event = CheckEventIsActive(BEGGINER_EVENT, ch->GetEmpire());
                                                                        	if (event != NULL && ch->GetQuestFlag("event_manager.is_new_player") == 0 && ch->GetLevel() == 0)
                                                                            	{
                                                                                    		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