/BlazingSails_SDK

SDK for the game BlazingSails

Primary LanguageC++

BlazingSails_SDK

SDK for the game BlazingSails

Useful game info:

Objects:
4C 8B 15 ? ? ? ? 8D 43 01
\x4C\x8B\x15\x00\x00\x00\x00\x8D\x43\x01 xxx????xxx

GNames:
48 8B 05 ? ? ? ? 48 85 C0 75 5F
\x48\x8B\x05\x00\x00\x00\x00\x48\x85\xC0\x75\x5F xxx????xxxxx

GWorld:
48 8B 1D ? ? ? ? 48 85 DB 74 3B
\x48\x8B\x1D\x00\x00\x00\x00\x48\x85\xDB\x74\x3B xxx????xxxxx

GetObjectName:
40 53 48 83 EC 20 48 8B D9 48 85 D2 75 30
\x40\x53\x48\x83\xEC\x20\x48\x8B\xD9\x48\x85\xD2\x75\x30 xxxxxxxxxxxxxx

ProjectWorldLocationToScreen:
48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 81 EC ? ? ? ? 41 0F
\x48\x89\x5C\x24\x00\x48\x89\x6C\x24\x00\x48\x89\x74\x24\x00\x57\x48\x81\xEC\x00\x00\x00\x00\x41\x0F xxxx?xxxx?xxxx?xxxx????xx

GetBoneMatrix:
48 89 5C 24 ? 48 89 74 24 ? 57 48 81 EC ? ? ? ? F6 81
\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x57\x48\x81\xEC\x00\x00\x00\x00\xF6\x81 xxxx?xxxx?xxxx????xx

LineOfSightTo:
40 55 53 56 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 48 8B 05 ? ? ? ? 48 33 C4 48 89 45 E0
\x40\x55\x53\x56\x57\x48\x8D\x6C\x24\x00\x48\x81\xEC\x00\x00\x00\x00\x48\x8B\x05\x00\x00\x00\x00\x48\x33\xC4\x48\x89\x45\xE0 xxxxxxxxx?xxx????xxx????xxxxxxx

ProcessEvent: 64
CreateDefaultObject: 103

void init_sdk()
{
	const auto gname_addr = utils::find_pattern("48 8B 05 ? ? ? ? 48 85 C0 75 5F");
	auto offset = *(uint32_t*)(gname_addr + 3);
	SDK::FName::GNames = (SDK::TNameEntryArray*)(*(uintptr_t*)(gname_addr + 7 + offset));

	const auto objects_addr = utils::find_pattern("4C 8B 15 ? ? ? ? 8D 43 01");
	offset = *(int32_t*)(objects_addr + 3);
	SDK::TUObjectArray::g_objects = (uintptr_t)(objects_addr + 7 + offset) - (uintptr_t)GetModuleHandleA(0);
}

Loop actors like so:
auto actors = GWorld->PersistentLevel->GetActors();
for (size_t i = 0; i < actors.Num(); ++i)
{
	SDK::AActor* actor = actors[i];
}

Useful files:

  • BZ_Basic.cpp
  • BZ_Basic.hpp
  • BZ_CoreUObject_classes.hpp
  • BZ_CoreUObject_functions.cpp
  • BZ_Engine_classes.hpp
  • BZ_Engine_functions.cpp