2022-11-19 01:49:36 +00:00
|
|
|
#pragma once
|
|
|
|
#include "gta/net_game_event.hpp"
|
|
|
|
#include "network/CNetGamePlayer.hpp"
|
|
|
|
#include "services/players/player_service.hpp"
|
|
|
|
|
|
|
|
namespace big
|
|
|
|
{
|
|
|
|
class packet
|
|
|
|
{
|
|
|
|
public:
|
2023-11-19 22:20:15 +00:00
|
|
|
char m_data[0x400]{};
|
2022-11-19 01:49:36 +00:00
|
|
|
rage::datBitBuffer m_buffer;
|
|
|
|
|
|
|
|
packet();
|
|
|
|
void send(uint32_t msg_id);
|
2023-01-03 16:48:32 +00:00
|
|
|
void send(player_ptr player, int connection_id);
|
|
|
|
void send(int peer_id, int connection_id);
|
2022-11-19 01:49:36 +00:00
|
|
|
|
2023-03-01 21:27:15 +00:00
|
|
|
inline operator rage::datBitBuffer&()
|
2022-11-19 01:49:36 +00:00
|
|
|
{
|
|
|
|
return m_buffer;
|
|
|
|
}
|
|
|
|
|
2023-03-01 21:27:15 +00:00
|
|
|
template<typename T>
|
2022-11-19 01:49:36 +00:00
|
|
|
inline void write(T data, int length)
|
|
|
|
{
|
|
|
|
m_buffer.Write<T>(data, length);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void write_message(rage::eNetMessage message)
|
|
|
|
{
|
|
|
|
write<int>(0x3246, 14);
|
|
|
|
if ((int)message > 0xFF)
|
|
|
|
{
|
|
|
|
write<bool>(true, 1);
|
|
|
|
write<rage::eNetMessage>(message, 16);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
write<bool>(false, 1);
|
|
|
|
write<rage::eNetMessage>(message, 8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-07-20 22:46:32 +02:00
|
|
|
inline void write_peer_id(uint64_t peer_id)
|
2022-11-19 01:49:36 +00:00
|
|
|
{
|
|
|
|
char b[8];
|
|
|
|
rage::datBitBuffer buf(b, 8);
|
|
|
|
buf.WriteQWord(peer_id, 64);
|
|
|
|
m_buffer.WriteArray(b, 8 * buf.GetDataLength());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|