mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-10 02:08:20 +00:00
e244fbccc2
clone id is correctly assigned, reputation now shows up, rejection verdict is sent correctly (not sure about where the reason goes if it even goes here).
112 lines
3.2 KiB
C++
112 lines
3.2 KiB
C++
#include "PropertyDataMessage.h"
|
|
|
|
#include "GeneralUtils.h"
|
|
|
|
#include "Game.h"
|
|
#include "dLogger.h"
|
|
#include "CDClientManager.h"
|
|
|
|
void GameMessages::PropertyDataMessage::Serialize(RakNet::BitStream& stream) const
|
|
{
|
|
stream.Write<int64_t>(0); // - property id
|
|
|
|
stream.Write<int32_t>(TemplateID); // - template id
|
|
stream.Write<uint16_t>(ZoneId); // - map id
|
|
stream.Write<uint16_t>(VendorMapId); // - vendor map id
|
|
stream.Write<uint32_t>(cloneId); // clone id
|
|
|
|
const auto& name = GeneralUtils::ASCIIToUTF16(Name);
|
|
stream.Write(uint32_t(name.size()));
|
|
for (uint32_t i = 0; i < name.size(); ++i) {
|
|
stream.Write(uint16_t(name[i]));
|
|
}
|
|
|
|
const auto& description = GeneralUtils::ASCIIToUTF16(Description);
|
|
stream.Write(uint32_t(description.size()));
|
|
for (uint32_t i = 0; i < description.size(); ++i) {
|
|
stream.Write(uint16_t(description[i]));
|
|
}
|
|
|
|
const auto& owner = GeneralUtils::ASCIIToUTF16(OwnerName);
|
|
stream.Write(uint32_t(owner.size()));
|
|
for (uint32_t i = 0; i < owner.size(); ++i) {
|
|
stream.Write(uint16_t(owner[i]));
|
|
}
|
|
|
|
stream.Write<LWOOBJID>(OwnerId);
|
|
|
|
stream.Write<uint32_t>(0); // - type
|
|
stream.Write<uint32_t>(0); // - zone code
|
|
stream.Write<uint32_t>(0); // - minimum price
|
|
stream.Write<uint32_t>(1); // - rent duration
|
|
|
|
stream.Write<uint64_t>(LastUpdatedTime); // - timestamp
|
|
|
|
stream.Write<uint32_t>(1);
|
|
|
|
stream.Write<uint32_t>(reputation); // Reputation
|
|
stream.Write<uint32_t>(0);
|
|
|
|
const auto& spawn = GeneralUtils::ASCIIToUTF16(SpawnName);
|
|
stream.Write(uint32_t(spawn.size()));
|
|
for (uint32_t i = 0; i < spawn.size(); ++i) {
|
|
stream.Write(uint16_t(spawn[i]));
|
|
}
|
|
|
|
stream.Write<uint32_t>(0); // String length
|
|
stream.Write<uint32_t>(0); // String length
|
|
|
|
stream.Write<uint32_t>(0); // - duration type
|
|
stream.Write<uint32_t>(1);
|
|
stream.Write<uint32_t>(1);
|
|
|
|
stream.Write<char>(PrivacyOption);
|
|
|
|
stream.Write<uint64_t>(0);
|
|
|
|
if (rejectionReason != "") stream.Write<uint32_t>(2);
|
|
else if (moderatorRequested == true && rejectionReason == "") stream.Write<uint32_t>(0);
|
|
else stream.Write<uint32_t>(1);
|
|
|
|
const auto& rejectionReasonConverted = GeneralUtils::ASCIIToUTF16(rejectionReason);
|
|
stream.Write(uint32_t(rejectionReasonConverted.size()));
|
|
for (uint32_t i = 0; i < rejectionReasonConverted.size(); ++i) {
|
|
stream.Write(uint16_t(rejectionReasonConverted[i]));
|
|
std::cout << rejectionReason[i] << std::endl;
|
|
}
|
|
|
|
stream.Write<uint64_t>(0);
|
|
|
|
stream.Write<uint32_t>(1);
|
|
stream.Write<uint32_t>(1);
|
|
|
|
stream.Write<float>(ZonePosition.x);
|
|
stream.Write<float>(ZonePosition.y);
|
|
stream.Write<float>(ZonePosition.z);
|
|
|
|
stream.Write<float>(MaxBuildHeight);
|
|
|
|
stream.Write(ClaimedTime); // - timestamp
|
|
|
|
stream.Write<char>(PrivacyOption);
|
|
|
|
stream.Write(uint32_t(Paths.size()));
|
|
|
|
for (const auto& path : Paths)
|
|
{
|
|
stream.Write(path.x);
|
|
stream.Write(path.y);
|
|
stream.Write(path.z);
|
|
}
|
|
}
|
|
|
|
GameMessages::PropertyDataMessage::PropertyDataMessage(uint32_t mapID) {
|
|
const auto propertyTemplate = CDClientManager::Instance()->
|
|
GetTable<CDPropertyTemplateTable>("PropertyTemplate")->GetByMapID(mapID);
|
|
|
|
TemplateID = propertyTemplate.id;
|
|
ZoneId = propertyTemplate.mapID;
|
|
VendorMapId = propertyTemplate.vendorMapID;
|
|
SpawnName = propertyTemplate.spawnName;
|
|
}
|