54 std::vector<uint8_t> packet;
57 uint32_t versionLen =
static_cast<uint32_t
>(data.
clientVersion.size());
58 packet.push_back(
static_cast<uint8_t
>(versionLen & 0xFF));
59 packet.push_back(
static_cast<uint8_t
>((versionLen >> 8) & 0xFF));
60 packet.push_back(
static_cast<uint8_t
>((versionLen >> 16) & 0xFF));
61 packet.push_back(
static_cast<uint8_t
>((versionLen >> 24) & 0xFF));
65 uint32_t nameLen =
static_cast<uint32_t
>(data.
playerName.size());
66 packet.push_back(
static_cast<uint8_t
>(nameLen & 0xFF));
67 packet.push_back(
static_cast<uint8_t
>((nameLen >> 8) & 0xFF));
68 packet.push_back(
static_cast<uint8_t
>((nameLen >> 16) & 0xFF));
69 packet.push_back(
static_cast<uint8_t
>((nameLen >> 24) & 0xFF));
73 uint32_t usernameLen =
static_cast<uint32_t
>(data.
username.size());
74 packet.push_back(
static_cast<uint8_t
>(usernameLen & 0xFF));
75 packet.push_back(
static_cast<uint8_t
>((usernameLen >> 8) & 0xFF));
76 packet.push_back(
static_cast<uint8_t
>((usernameLen >> 16) & 0xFF));
77 packet.push_back(
static_cast<uint8_t
>((usernameLen >> 24) & 0xFF));
81 uint32_t passwordLen =
static_cast<uint32_t
>(data.
password.size());
82 packet.push_back(
static_cast<uint8_t
>(passwordLen & 0xFF));
83 packet.push_back(
static_cast<uint8_t
>((passwordLen >> 8) & 0xFF));
84 packet.push_back(
static_cast<uint8_t
>((passwordLen >> 16) & 0xFF));
85 packet.push_back(
static_cast<uint8_t
>((passwordLen >> 24) & 0xFF));
89 for (
int i = 0; i < 8; ++i) {
90 packet.push_back(
static_cast<uint8_t
>((data.
timestamp >> (i * 8)) & 0xFF));
104 uint32_t versionLen =
105 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
107 if (data.size() < offset + versionLen)
109 result.
clientVersion = std::string(data.begin() + offset, data.begin() + offset + versionLen);
110 offset += versionLen;
113 if (data.size() < offset + 4)
116 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
118 if (data.size() < offset + nameLen)
120 result.
playerName = std::string(data.begin() + offset, data.begin() + offset + nameLen);
124 if (data.size() < offset + 4)
126 uint32_t usernameLen =
127 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
129 if (data.size() < offset + usernameLen)
131 result.
username = std::string(data.begin() + offset, data.begin() + offset + usernameLen);
132 offset += usernameLen;
135 if (data.size() < offset + 4)
137 uint32_t passwordLen =
138 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
140 if (data.size() < offset + passwordLen)
142 result.
password = std::string(data.begin() + offset, data.begin() + offset + passwordLen);
143 offset += passwordLen;
146 if (data.size() < offset + 8)
149 for (
int i = 0; i < 8; ++i) {
150 result.
timestamp |=
static_cast<uint64_t
>(data[offset + i]) << (i * 8);
162 std::vector<uint8_t> packet;
165 uint32_t usernameLen =
static_cast<uint32_t
>(data.
username.size());
166 packet.push_back(
static_cast<uint8_t
>(usernameLen & 0xFF));
167 packet.push_back(
static_cast<uint8_t
>((usernameLen >> 8) & 0xFF));
168 packet.push_back(
static_cast<uint8_t
>((usernameLen >> 16) & 0xFF));
169 packet.push_back(
static_cast<uint8_t
>((usernameLen >> 24) & 0xFF));
173 uint32_t passwordLen =
static_cast<uint32_t
>(data.
password.size());
174 packet.push_back(
static_cast<uint8_t
>(passwordLen & 0xFF));
175 packet.push_back(
static_cast<uint8_t
>((passwordLen >> 8) & 0xFF));
176 packet.push_back(
static_cast<uint8_t
>((passwordLen >> 16) & 0xFF));
177 packet.push_back(
static_cast<uint8_t
>((passwordLen >> 24) & 0xFF));
191 uint32_t usernameLen =
192 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
194 if (data.size() < offset + usernameLen)
196 result.
username = std::string(data.begin() + offset, data.begin() + offset + usernameLen);
197 offset += usernameLen;
200 if (data.size() < offset + 4)
202 uint32_t passwordLen =
203 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
205 if (data.size() < offset + passwordLen)
207 result.
password = std::string(data.begin() + offset, data.begin() + offset + passwordLen);
237 result.
success = (data[offset] != 0);
241 if (data.size() < offset + 4)
244 data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
246 if (data.size() < offset + msgLen)
248 result.
message = std::string(data.begin() + offset, data.begin() + offset + msgLen);
254 std::vector<uint8_t> packet;
257 packet.push_back(data.
accepted ? 1 : 0);
260 uint32_t sessionLen =
static_cast<uint32_t
>(data.
sessionId.size());
261 packet.push_back(
static_cast<uint8_t
>(sessionLen & 0xFF));
262 packet.push_back(
static_cast<uint8_t
>((sessionLen >> 8) & 0xFF));
263 packet.push_back(
static_cast<uint8_t
>((sessionLen >> 16) & 0xFF));
264 packet.push_back(
static_cast<uint8_t
>((sessionLen >> 24) & 0xFF));
268 uint32_t serverLen =
static_cast<uint32_t
>(data.
serverId.size());
269 packet.push_back(
static_cast<uint8_t
>(serverLen & 0xFF));
270 packet.push_back(
static_cast<uint8_t
>((serverLen >> 8) & 0xFF));
271 packet.push_back(
static_cast<uint8_t
>((serverLen >> 16) & 0xFF));
272 packet.push_back(
static_cast<uint8_t
>((serverLen >> 24) & 0xFF));
276 uint32_t msgLen =
static_cast<uint32_t
>(data.
message.size());
277 packet.push_back(
static_cast<uint8_t
>(msgLen & 0xFF));
278 packet.push_back(
static_cast<uint8_t
>((msgLen >> 8) & 0xFF));
279 packet.push_back(
static_cast<uint8_t
>((msgLen >> 16) & 0xFF));
280 packet.push_back(
static_cast<uint8_t
>((msgLen >> 24) & 0xFF));
281 packet.insert(packet.end(), data.
message.begin(), data.
message.end());
284 uint32_t versionLen =
static_cast<uint32_t
>(data.
serverVersion.size());
285 packet.push_back(
static_cast<uint8_t
>(versionLen & 0xFF));
286 packet.push_back(
static_cast<uint8_t
>((versionLen >> 8) & 0xFF));
287 packet.push_back(
static_cast<uint8_t
>((versionLen >> 16) & 0xFF));
288 packet.push_back(
static_cast<uint8_t
>((versionLen >> 24) & 0xFF));
345 std::vector<uint8_t> packet;
348 uint32_t reasonLen =
static_cast<uint32_t
>(data.
reason.size());
349 packet.push_back(
static_cast<uint8_t
>(reasonLen & 0xFF));
350 packet.push_back(
static_cast<uint8_t
>((reasonLen >> 8) & 0xFF));
351 packet.push_back(
static_cast<uint8_t
>((reasonLen >> 16) & 0xFF));
352 packet.push_back(
static_cast<uint8_t
>((reasonLen >> 24) & 0xFF));
353 packet.insert(packet.end(), data.
reason.begin(), data.
reason.end());
356 for (
int i = 0; i < 8; ++i) {
357 packet.push_back(
static_cast<uint8_t
>((data.
duration >> (i * 8)) & 0xFF));
361 for (
int i = 0; i < 8; ++i) {
362 packet.push_back(
static_cast<uint8_t
>((data.
timestamp >> (i * 8)) & 0xFF));