// this file wasn't fun #pragma once #include "reboot.h" struct FUniqueNetIdRepl // : public FUniqueNetIdWrapper { static UStruct* GetStruct() { static auto Struct = FindObject(L"/Script/Engine.UniqueNetIdRepl"); return Struct; } static int GetSizeOfStruct() { static auto Size = GetStruct()->GetPropertiesSize(); return Size; } TArray& GetReplicationBytes() { static auto ReplicationBytesOffset = FindOffsetStruct("/Script/Engine.UniqueNetIdRepl", "ReplicationBytes"); return *(TArray*)(__int64(this) + ReplicationBytesOffset); } bool IsIdentical(FUniqueNetIdRepl* OtherUniqueId) { // idk if this is right but whatever bool bTest = true; if (this->GetReplicationBytes().Num() >= OtherUniqueId->GetReplicationBytes().Num()) { for (int i = 0; i < this->GetReplicationBytes().Num(); i++) { if (this->GetReplicationBytes().at(i) != OtherUniqueId->GetReplicationBytes().at(i)) { bTest = false; break; } } } else { bTest = false; } // LOG_INFO(LogDev, "btest: {}", bTest); return bTest; } void CopyFromAnotherUniqueId(FUniqueNetIdRepl* OtherUniqueId) { CopyStruct(this, OtherUniqueId, GetSizeOfStruct(), GetStruct()); return; auto& ReplicationBytes = GetReplicationBytes(); ReplicationBytes.Free(); // Now this is what we call 1 to 1 array copying. for (int i = 0; i < OtherUniqueId->GetReplicationBytes().Num(); i++) { ReplicationBytes.Add(OtherUniqueId->GetReplicationBytes().at(i)); } } /* bool IsEqual(FUniqueNetIdRepl* Other) */ };