diff --git a/Source/Network/ClientOptionPacket.cpp b/Source/Network/ClientOptionPacket.cpp new file mode 100644 index 0000000..4d5a3f4 --- /dev/null +++ b/Source/Network/ClientOptionPacket.cpp @@ -0,0 +1,26 @@ +#include "Network/ClientOptionPacket.h" +#include "Network/Connection/Connection.h" +#include "Network/Packets/PacketLengths.h" + +#include + +namespace { +#pragma pack(push, 1) + struct ClientOptionPacket { + /* 0000 */ std::int16_t id; + /* 0002 */ int option; + /* 0006 */ int value; + }; +#pragma pack(pop) + static_assert(sizeof(ClientOptionPacket) == 10); +} + +// OFFSET: 0x00E48400 +// FUNCTION: fn_24219 +void SendClientOption(unsigned char value, CConnection& connection, const PacketLengths& lengths) { + ClientOptionPacket packet; + packet.id = 0x02D8; + packet.option = 6; + packet.value = value; + connection.Send(lengths.FixedLength(packet.id), &packet); +} diff --git a/Source/Network/ClientOptionPacket.h b/Source/Network/ClientOptionPacket.h new file mode 100644 index 0000000..d6448ca --- /dev/null +++ b/Source/Network/ClientOptionPacket.h @@ -0,0 +1,9 @@ +#ifndef RAGNAROK_SOURCE_NETWORK_CLIENTOPTIONPACKET_H +#define RAGNAROK_SOURCE_NETWORK_CLIENTOPTIONPACKET_H + +class CConnection; +class PacketLengths; + +void SendClientOption(unsigned char value, CConnection& connection, const PacketLengths& lengths); + +#endif diff --git a/data/compile.json b/data/compile.json index 63324a0..e0f1d7b 100644 --- a/data/compile.json +++ b/data/compile.json @@ -444,6 +444,7 @@ "Source/File/ResourcePath.cpp": 1, "Source/File/ShortcutFilename.cpp": 1, "Source/Network/ClientKeepalive.cpp": 0, + "Source/Network/ClientOptionPacket.cpp": 0, "Source/Network/Connection/Connection.cpp": 0, "Source/Network/Connection/ConnectionBuffer.cpp": 0, "Source/Network/Connection/ConnectionRuntime.cpp": 0,