Version 1.4.2
Offsets
Code:
Code:
Code:
Get Name From Actor ID
Code:
Code:
World To Screen / Matrix
Code:
SDK
https://github.com/pubgsdk/SoT-SDK
SDK Guide
https://github.com/igromanru/SoT-SDK-Guide
PM me if you have questions
Offsets
Code:
[LIST=1] [*]UWorld: 0x519d350 [*]GNames: 0x50e21d0 [*]GObjects: 0x50e6850 [/LIST] [*]
Code:
[LIST=1] [*]GNames [*]IDA/CE style: [*]48 8B 3D ? ? ? ? 48 85 FF 75 ? B9 ? ? ? ? E8 ? ? ? ? 48 8B F8 48 89 44 [*] [*]Code: [*]\x48\x8B\x3D\x00\x00\x00\x00\x48\x85\xFF\x75\x00\xB9\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x48\x8B\xF8\x48\x89\x44 [*]xxx????xxxx?x????x????xxxxxx [*] [*]UWorld: [*]IDA/CE style: [*]48 8B 0D ? ? ? ? 48 8B 01 FF 90 ? ? ? ? 48 8B F8 33 D2 48 8D 4E [*] [*]Code: [*]\x48\x8B\x0D\x00\x00\x00\x00\x48\x8B\x01\xFF\x90\x00\x00\x00\x00\x48\x8B\xF8\x33\xD2\x48\x8D\x4E [*]xxx????xxxxx????xxxxxxxx [*] [*]GObjects [*]IDA/CE style: [*]89 0D ? ? ? ? 48 8B DF 48 C1 E3 04 33 D2 [*] [*]Code: [*]\x89\x0D\x00\x00\x00\x00\x48\x8B\xDF\x48\xC1\xE3\x04\x33\xD2 [*]xx????xxxxxxxxx [/LIST] [*]
Code:
[LIST=1] [*]GNames/ UWORLD (obviously change sig) [*]const auto address = FindPattern(baseAddress, reinterpret_cast<const unsigned char*>( [*] "\x48\x8B\x3D\x00\x00\x00\x00\x48\x85\xFF\x75\x00\xB9\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x48\x8B\xF8\x48\x89\x44"), "xxx????xxxx?x????x????xxxxxx"); [*]const auto offset = *reinterpret_cast<uint32_t*>(address + 3); [*]GlobalNames = reinterpret_cast<decltype(GlobalNames)>(*reinterpret_cast<uintptr_t*>(address + 7 + offset)); [*] [*]GObjects [*]const auto address = FindPattern(baseAddress, reinterpret_cast<const unsigned char*>("\x89\x1D\x00\x00\x00\x00\x48\x8B\xDF\x48\xC1\xE3\x04\x33\xD2"), "xx????xxxxxxxxx"); [*]const auto offset = *reinterpret_cast<uint32_t*>(address + 2); [*]GlobalObjects = reinterpret_cast<decltype(GlobalObjects)>(address + 6 + offset); [/LIST] [*]
Get Name From Actor ID
Code:
[LIST=1] [*]string getNameFromID(int ID) { [*] try { [*] DWORD_PTR fNamePtr = MemoryM.read<DWORD_PTR>(GName_PTR + int(ID / 0x4000) * 0x8); [*] DWORD_PTR fName = MemoryM.read<DWORD_PTR>(fNamePtr + 0x8 * int(ID % 0x4000)); [*] return MemoryM.readStringUnformated(fName + 0x10, 256); [*] } [*] catch (int e) { return string(""); } [*] [*]} [/LIST] [*]
Code:
- vector<string> valid_ActorNames{
- "BP_PlayerPirate_C",
- "BP_Mermaid_C",
- "BP_Shark_C",
- //Esqueletos
- "BP_SkeletonUnarmedCombatPawn_C",
- "BP_SkeletonAllWeaponsPawn_C",
- "BP_SkeletonCutlassPawn_C",
- "BP_SkeletonPistolPawn_C",
- "BP_SkeletonBlunderbussPawn_C",
- "BP_SkeletonPawnBase_C",
- "BP_Rank1_MetalForm_SkeletonUnarmed_C",
- "BP_Rank1_PlantForm_SkeletonUnarmed_C",
- "BP_Rank1_ShadowForm_SkeletonUnarmed_C",
- "BP_Rank1_SkeletonUnarmedCombatPawn_C",
- "BP_Rank1_SkeletonPistolPawn_C",
- "BP_Rank1_SkeletonBlunderbussPawn_C",
- "BP_Rank1_SkeletonCutlassPawn_C",
- "BP_Rank2_SkeletonUnarmedCombatPawn_C",
- "BP_Rank2_SkeletonPistolPawn_C",
- "BP_Rank2_SkeletonBlunderbussPawnLevel_C",
- "BP_Rank2_SkeletonCutlassPawn_C",
- "BP_Rank3_SkeletonUnarmedCombatPawn_C",
- "BP_Rank3_SkeletonPistolPawnLevel_C",
- "BP_Rank3_SkeletonBlunderbussPawnLevel_C",
- "BP_Rank3_SkeletonCutlassPawn_C",
- //Mercante
- "BP_MerchantCrate_GunpowderBarrel_C", // Pólvora
- "BP_MerchantCrate_GunpowderBarrelProxy_C", // Pólvora
- "BP_MerchantCrate_Commodity_TeaCrate_Proxy_C", // Caixa de Chá
- "BP_MerchantCrate_Commodity_SugarCrate_Proxy_C",// Caixa de Açúcar
- "BP_MerchantCrate_Commodity_SilkCrate_Proxy_C", // Caida de Sedas
- "BP_MerchantCrate_Commodity_SpiceCrate_Proxy_C",// Caixa de Especiarias
- "BP_MerchantCrate_ChickenCrateProxy_C", // Gaiola de frango
- "BP_MerchantCrate_PigCrateProxy_C", // Gaiola de Porco
- "BP_MerchantCrate_SnakeBasketProxy_C", // Cesta de Cobra
- "BP_MerchantCrate_BananaCrateProxy_C", // Caixa de Bananas
- "BP_MerchantCrate_WoodCrateProxy_C", // Caixa de Madeiras
- "BP_MerchantCrate_CannonballCrateProxy", // Caixa de Balas de Canhão
- //-------------------------------- Acumuladores de Ouro --------------------------------
- "BP_ShipwreckTreasureChest_Wieldable_Common_C", // ??
- "BP_TreasureChest_Proxy_Common_C", // Baú ??
- "BP_ShipwreckTreasureChest_Proxy_Common_C",
- "BP_TreasureChest_Wieldable_Rare_C", // Baú do Navegador (Segurando)
- "BP_TreasureChest_Proxy_Rare_C", // Baú do Navegador
- "BP_ShipwreckTreasureChest_Proxy_Rare",
- "BP_TreasureChest_Wieldable_Legendary_C", // Báu Salteador (Segurando)
- "BP_TreasureChest_Proxy_Legendary_C", // Báu Salteador
- "BP_TreasureChest_Wieldable_Mythical_C", // Baú do Capitão (Segurando)
- "BP_TreasureChest_Proxy_Mythical_C", // Baú do Capitão
- "BP_ShipwreckTreasureChest_Proxy_Mythical",
- "BP_TreasureChest_Wieldable_Drunken_C", // Baú do Grogs (Segurando)
- "BP_TreasureChest_Proxy_Drunken_C", // Baú do Grogs
- "BP_TreasureChest_Wieldable_Weeping_C" // Baú Chorando (Segurando)
- "BP_TreasureChest_Proxy_Weeping_C", // Baú Chorando
- "BP_TreasureChest_Wieldable_Fort_C", // Baú do Fort (Segurando)
- "BP_TreasureChest_Proxy_Fort_C", // Baú do Fort
- "BP_TreasureChest_PirateLegend", // Baú Legend
- "BP_TreasureChest_Wieldable_PirateLegend_C", // Baú Legend
- "BP_TreasureChest_Proxy_PirateLegend_C", // Baú Legend
- "BP_TreasureChest_Legendary",
- "BP_TreasureChest_Legendary_C",
- "BP_TreasureChest_Proxy_Legendary",
- "BP_TreasureChest_Proxy_Legendary_C",
- "BP_ShipwreckTreasureChest_Proxy_Legendary_C",
- "BP_Treasure_Artifact_Proxy_box_01_a_C",
- "BP_Treasure_Artifact_Proxy_box_02_a_C",
- "BP_Treasure_Artifact_Proxy_box_03_a_C",
- "BP_Treasure_Artifact_Proxy_goblet_01_a_C",
- "BP_Treasure_Artifact_Proxy_goblet_02_a_C",
- "BP_Treasure_Artifact_Proxy_goblet_03_a_C",
- "BP_Treasure_Artifact_Proxy_impressive_01_a_C",
- "BP_Treasure_Artifact_Proxy_impressive_02_a_C",
- "BP_Treasure_Artifact_Proxy_impressive_03_a_C",
- "BP_Treasure_Artifact_Proxy_vase_01_a_C",
- "BP_Treasure_Artifact_Proxy_vase_02_a_C",
- "BP_Treasure_Artifact_Proxy_vase_03_a_C",
- "BP_TreasureArtifact_Wieldable_box_01_a_C",
- "BP_TreasureArtifact_Wieldable_box_02_a_C",
- "BP_TreasureArtifact_Wieldable_box_03_a_C",
- "BP_TreasureArtifact_Wieldable_goblet_01_a_C",
- "BP_TreasureArtifact_Wieldable_goblet_02_a_C",
- "BP_TreasureArtifact_Wieldable_goblet_03_a_C",
- "BP_TreasureArtifact_Wieldable_impressive_01_a_C",
- "BP_TreasureArtifact_Wieldable_impressive_02_a_C",
- "BP_TreasureArtifact_Wieldable_impressive_03_a_C",
- "BP_TreasureArtifact_Wieldable_vase_01_a_C",
- "BP_TreasureArtifact_Wieldable_vase_02_a_C",
- "BP_TreasureArtifact_Wieldable_vase_03_a_C",
- "BP_TreasureArtifact_Wieldable_Base_C",
- //Livros
- "BP_LoreBook_02_Bosun_C",
- "BP_LoreBook_03_Pirate_Lord_C",
- "BP_LoreBook_04_LuckySailor_C",
- "BP_LoreBook_05_Becalmed_C",
- "BP_LoreBook_06_SailTogether_C",
- "BP_LoreBook_07_Rubbish_C",
- "BP_LoreBook_08_MysteriousJournal01_C",
- "BP_LoreBook_09_MysteriousJournal02_C",
- "BP_LoreBook_10_MysteriousJournal03_C",
- "BP_LoreBook_11_MysteriousJournal04_C",
- "BP_LoreBook_12_MysteriousJournal05_C",
- "BP_LoreBook_13_MysteriousJournal06_C",
- "BP_LoreBook_14_MysteriousJournal07_C",
- "BP_LoreBook_15_MysteriousJournal08_C",
- "BP_LoreBook_16_MysteriousJournal09_C",
- "BP_LoreBook_17_MysteriousJournal10_C",
- "BP_LoreBook_18_MysteriousJournal11_C",
- "BP_LoreBook_19_MysteriousJournal12_C",
- "BP_LoreBook_20_MysteriousJournal13_C",
- "BP_LoreBook_21_MysteriousJournal14_C",
- "BP_LoreBook_22_MysteriousJournal15_C",
- "BP_LoreBook_23_MysteriousJournal16_C",
- "BP_LoreBook_24_MysteriousJournal17_C",
- //Caveiras
- "BP_BountyRewardSkull_Proxy_C", // Caveira
- "BP_BountyRewardSkull_Proxy_Common_C", // Caveira
- "BP_BountyRewardSkull_Rare_C", // Caveira Desgraçada (Segurando)
- "BP_BountyRewardSkull_Proxy_Rare_C", // Caveira Desgraçada
- "BP_BountyRewardSkull_Legendary_C", // Caveira
- "BP_BountyRewardSkull_Proxy_Legendary_C", // Caveira
- "BP_BountyRewardSkull_Mythical_C", // Caveira
- "BP_BountyRewardSkull_Proxy_Mythical_C", // Caveira
- "BP_BountyRewardSkull_Proxy_Fort_C", // Caveira do Fort
- "BP_BountyRewardSkull_Proxy_Legendary",
- //Outros itens
- "BP_StrongholdKey_C", // Chave Fo Fort
- "BP_StrongholdKey_Proxy_C", // Chave Fo Fort
- "BP_MessageInABottleProxy_C", // Garrafa
- "BP_SkellyFort_SkullCloud_C" // Nuvem Caveria do Fort
- };
World To Screen / Matrix
Code:
- #define Assert( _exp ) ((void)0)
- struct vMatrix
- {
- vMatrix() {}
- vMatrix(
- float m00, float m01, float m02, float m03,
- float m10, float m11, float m12, float m13,
- float m20, float m21, float m22, float m23)
- {
- m_flMatVal[0][0] = m00; m_flMatVal[0][1] = m01; m_flMatVal[0][2] = m02; m_flMatVal[0][3] = m03;
- m_flMatVal[1][0] = m10; m_flMatVal[1][1] = m11; m_flMatVal[1][2] = m12; m_flMatVal[1][3] = m13;
- m_flMatVal[2][0] = m20; m_flMatVal[2][1] = m21; m_flMatVal[2][2] = m22; m_flMatVal[2][3] = m23;
- }
- float *operator[](int i) { Assert((i >= 0) && (i < 3)); return m_flMatVal; }
[*] const float *operator[](int i) const { Assert((i >= 0) && (i < 3)); return m_flMatVal; }
[*] float *Base() { return &m_flMatVal[0][0]; }
[*] const float *Base() const { return &m_flMatVal[0][0]; }
[*]
[*] float m_flMatVal[3][4];
[*]};
[*]
[*]vMatrix Matrix(Vector3 rot, Vector3 origin)
[*]{
[*] origin = Vector3(0, 0, 0);
[*] float radPitch = (rot.x * float(PI) / 180.f);
[*] float radYaw = (rot.y * float(PI) / 180.f);
[*] float radRoll = (rot.z * float(PI) / 180.f);
[*]
[*] float SP = sinf(radPitch);
[*] float CP = cosf(radPitch);
[*] float SY = sinf(radYaw);
[*] float CY = cosf(radYaw);
[*] float SR = sinf(radRoll);
[*] float CR = cosf(radRoll);
[*]
[*] vMatrix matrix;
[*] matrix[0][0] = CP * CY;
[*] matrix[0][1] = CP * SY;
[*] matrix[0][2] = SP;
[*] matrix[0][3] = 0.f;
[*]
[*] matrix[1][0] = SR * SP * CY - CR * SY;
[*] matrix[1][1] = SR * SP * SY + CR * CY;
[*] matrix[1][2] = -SR * CP;
[*] matrix[1][3] = 0.f;
[*]
[*] matrix[2][0] = -(CR * SP * CY + SR * SY);
[*] matrix[2][1] = CY * SR - CR * SP * SY;
[*] matrix[2][2] = CR * CP;
[*] matrix[2][3] = 0.f;
[*]
[*] matrix[3][0] = origin.x;
[*] matrix[3][1] = origin.y;
[*] matrix[3][2] = origin.z;
[*] matrix[3][3] = 1.f;
[*]
[*] return matrix;
[*]}
[*]bool WorldToScreen(Vector3 origin, Vector2 * out) {
[*] Vector3 Screenlocation = Vector3(0, 0, 0);
[*] Vector3 Rotation = myAngles; // FRotator
[*]
[*] vMatrix tempMatrix = Matrix(Rotation, Vector3(0, 0, 0)); // Matrix
[*]
[*] Vector3 vAxisX, vAxisY, vAxisZ;
[*]
[*] vAxisX = Vector3(tempMatrix[0][0], tempMatrix[0][1], tempMatrix[0][2]);
[*] vAxisY = Vector3(tempMatrix[1][0], tempMatrix[1][1], tempMatrix[1][2]);
[*] vAxisZ = Vector3(tempMatrix[2][0], tempMatrix[2][1], tempMatrix[2][2]);
[*]
[*] Vector3 vDelta = origin - Cameralocation;
[*] Vector3 vTransformed = Vector3(vDelta.Dot(vAxisY), vDelta.Dot(vAxisZ), vDelta.Dot(vAxisX));
[*]
[*] if (vTransformed.z < 1.f)
[*] vTransformed.z = 1.f;
[*]
[*] float FovAngle = CameraFov + 22;
[*] float ScreenCenterX = Width / 2.0f;
[*] float ScreenCenterY = Height / 2.0f;
[*]
[*] out->x = ScreenCenterX + vTransformed.x * (ScreenCenterX / tanf(FovAngle * (float)PI / 360.f)) / vTransformed.z;
[*] out->y = ScreenCenterY - vTransformed.y * (ScreenCenterX / tanf(FovAngle * (float)PI / 360.f)) / vTransformed.z;
[*]
[*]
[*] return true;
[*]}
SDK
https://github.com/pubgsdk/SoT-SDK
SDK Guide
https://github.com/igromanru/SoT-SDK-Guide
PM me if you have questions