OldSchoolHack

Register / Login English

RocketLeague SDK

  • Category: Sourcecode
  • Developer:
  • Uploaded by: System
  • Uploaded at:
  • System: Windows
Download (1.79 MB)

VirusTotal Result: 0/53

virustotal

Description

REVERSED CLASSES FOR UE3
CPP Code:
  1. template< class T > struct TArray
  2. {
  3. public:
  4. T* Data;
  5. int Count;
  6. int Max;
  7.  
  8. public:
  9. TArray()
  10. {
  11. Data = NULL;
  12. Count = Max = 0;
  13. };
  14.  
  15. public:
  16. int Num()
  17. {
  18. return this->Count;
  19. };
  20.  
  21. T& operator() (int i)
  22. {
  23. return this->Data[i];
  24. };
  25.  
  26. const T& operator() (int i) const
  27. {
  28. return this->Data[i];
  29. };
  30.  
  31. void Add(T InputData)
  32. {
  33. Data = (T*)realloc(Data, sizeof(T) * (Count + 1));
  34. Data[Count++] = InputData;
  35. Max = Count;
  36. };
  37.  
  38. void Clear()
  39. {
  40. free(Data);
  41. Count = Max = 0;
  42. };
  43. };
  44.  
  45. struct FNameEntry
  46. {
  47. unsigned char UnknownData00[0x10];
  48. char Name[0x10];
  49. };
  50.  
  51. struct FName
  52. {
  53. int Index;
  54. unsigned char unknownData00[0x4];
  55.  
  56. FName() : Index(0) {};
  57.  
  58. FName(int i) : Index(i) {};
  59.  
  60. ~FName() {};
  61.  
  62. FName(char* FindName)
  63. {
  64. static TArray< int > NameCache;
  65.  
  66. for (int i = 0; i < NameCache.Count; ++i)
  67. {
  68. if (!strcmp(this->Names()->Data[NameCache(i)]->Name, FindName))
  69. {
  70. Index = NameCache(i);
  71. return;
  72. }
  73. }
  74.  
  75. for (int i = 0; i < this->Names()->Count; ++i)
  76. {
  77. if (this->Names()->Data[i])
  78. {
  79. if (!strcmp(this->Names()->Data[i]->Name, FindName))
  80. {
  81. NameCache.Add(i);
  82. Index = i;
  83. }
  84. }
  85. }
  86. };
  87.  
  88. static TArray< FNameEntry* >* Names()
  89. {
  90. return (TArray< FNameEntry* >*) GNames;
  91. };
  92.  
  93. char* GetName()
  94. {
  95. if (Index < 0 || Index > this->Names()->Num())
  96. return "UnknownName";
  97. else
  98. return this->Names()->Data[Index]->Name;
  99. };
  100.  
  101. bool operator == (const FName& A) const
  102. {
  103. return (Index == A.Index);
  104. };
  105. };
  106.  
  107. struct FString : public TArray< wchar_t >
  108. {
  109. FString() {};
  110.  
  111. FString(wchar_t* Other)
  112. {
  113. this->Max = this->Count = *Other ? (wcslen(Other) + 1) : 0;
  114.  
  115. if (this->Count)
  116. this->Data = Other;
  117. };
  118.  
  119. ~FString() {};
  120.  
  121. FString operator = (wchar_t* Other)
  122. {
  123. if (this->Data != Other)
  124. {
  125. this->Max = this->Count = *Other ? (wcslen(Other) + 1) : 0;
  126.  
  127. if (this->Count)
  128. this->Data = Other;
  129. }
  130.  
  131. return *this;
  132. };
  133. };
  134.  
  135. struct FScriptDelegate
  136. {
  137. unsigned char UnknownData00[0xC];
  138. };
  139.  
  140. struct FPointer
  141. {
  142. int Dummy;
  143. };
  144.  
  145. struct FQWord
  146. {
  147. int A;
  148. int B;
  149. };
  150.  
  151. /*
  152. # ========================================================================================= #
  153. # Classes
  154. # ========================================================================================= #
  155. */
  156.  
  157. // (0x0000 - 0x003C)
  158. class UObject
  159. {
  160. public:
  161. struct FPointer VfTableObject;
  162. struct FPointer         HashNext;                                        
  163. unsigned char           UnknownData00[0x8];                            
  164. struct FPointer         HashOuterNext;                                    
  165. struct FPointer         StateFrame;                                      
  166. class UObject*          Linker;                                          
  167. struct FPointer         LinkerIndex;
  168. int ObjectInternalInteger; //0x0020
  169. int                                                NetIndex;
  170. class UObject* Outer; //0x0028
  171. struct FName Name; //0x002C
  172. class UClass* Class; //0x0034
  173. class UObject* ObjectArchetype; //0x0038
  174.  
  175. private:
  176. static UClass* pClassPointer;
  177.  
  178. public:
  179. static TArray< UObject* >* GObjObjects();
  180.  
  181. char* GetName();
  182. char* GetNameCPP();
  183. char* GetFullName();
  184. char* GetPackageName();
  185. UObject* GetPackageObj();
  186.  
  187. template< class T > static T* FindObject(char* ObjectFullName);
  188. template< class T > static unsigned int CountObject(char* ObjectName);
  189. static UClass* FindClass(char* ClassFullName);
  190.  
  191. bool IsA(UClass* pClass);
  192.  
  193. static UClass* StaticClass()
  194. {
  195. if (!pClassPointer)
  196. pClassPointer = UObject::FindClass("Class Core.Object");
  197.  
  198. return pClassPointer;
  199. };
  200. };
  201.  
  202. // (0x003C - 0x0040)
  203. class UField : public UObject
  204. {
  205. public:
  206. class UField* Next; // 0x003C (0x04)
  207.  
  208. private:
  209. static UClass* pClassPointer;
  210.  
  211. public:
  212. static UClass* StaticClass()
  213. {
  214. if (!pClassPointer)
  215. pClassPointer = UObject::FindClass("Class Core.Field");
  216.  
  217. return pClassPointer;
  218. };
  219. };
  220.  
  221. // (0x0040 - 0x004C)
  222. class UEnum : public UField
  223. {
  224. public:
  225. TArray< FName > Names; // 0x0040 (0x0C)
  226.  
  227. private:
  228. static UClass* pClassPointer;
  229.  
  230. public:
  231. static UClass* StaticClass()
  232. {
  233. if (!pClassPointer)
  234. pClassPointer = UObject::FindClass("Class Core.Enum");
  235.  
  236. return pClassPointer;
  237. };
  238. };
  239.  
  240. // (0x0040 - 0x004C)
  241. class UConst : public UField
  242. {
  243. public:
  244. struct FString Value; // 0x0040 (0x0C)
  245.  
  246. private:
  247. static UClass* pClassPointer;
  248.  
  249. public:
  250. static UClass* StaticClass()
  251. {
  252. if (!pClassPointer)
  253. pClassPointer = UObject::FindClass("Class Core.Const");
  254.  
  255. return pClassPointer;
  256. };
  257. };
  258.  
  259. // (0x0040 - 0x0084)
  260. class UStruct : public UField
  261. {
  262. public:
  263. unsigned char UnknownData00[0x8]; // 0x0040 (0x08)
  264. class UField* SuperField; // 0x0048 (0x04)
  265. class UField* Children; // 0x004C (0x04)
  266. unsigned long PropertySize; // 0x0050 (0x04)
  267. unsigned char UnknownData01[0x30]; // 0x0054 (0x30)
  268.  
  269. private:
  270. static UClass* pClassPointer;
  271.  
  272. public:
  273. static UClass* StaticClass()
  274. {
  275. if (!pClassPointer)
  276. pClassPointer = UObject::FindClass("Class Core.Struct");
  277.  
  278. return pClassPointer;
  279. };
  280. };
  281.  
  282. // (0x0084 - 0x00A0)
  283. class UScriptStruct : public UStruct
  284. {
  285. public:
  286. unsigned char UnknownData00[0x1C]; // 0x0084 (0x1C)
  287.  
  288. private:
  289. static UClass* pClassPointer;
  290.  
  291. public:
  292. static UClass* StaticClass()
  293. {
  294. if (!pClassPointer)
  295. pClassPointer = UObject::FindClass("Class Core.ScriptStruct");
  296.  
  297. return pClassPointer;
  298. };
  299. };
  300.  
  301. // (0x0084 - 0x00A4)
  302. class UFunction : public UStruct
  303. {
  304. public:
  305. unsigned long FunctionFlags; // 0x0084 (0x04)
  306. unsigned short iNative; // 0x0088 (0x02)
  307. unsigned short RepOffset; // 0x008A (0x02)
  308. struct FName FriendlyName; // 0x008C (0x08)
  309. unsigned short NumParms; // 0x0094 (0x02)
  310. unsigned short ParmsSize; // 0x0096 (0x02)
  311. unsigned long ReturnValueOffset; // 0x0098 (0x04)
  312. unsigned char UnknownData00[0x4]; // 0x009C (0x04)
  313. void* Func; // 0x00A0 (0x04)
  314.  
  315. private:
  316. static UClass* pClassPointer;
  317.  
  318. public:
  319. static UClass* StaticClass()
  320. {
  321. if (!pClassPointer)
  322. pClassPointer = UObject::FindClass("Class Core.Function");
  323.  
  324. return pClassPointer;
  325. };
  326. };
  327.  
  328. // (0x0084 - 0x00CC)
  329. class UState : public UStruct
  330. {
  331. public:
  332. unsigned char UnknownData00[0x48]; // 0x0084 (0x48)
  333.  
  334. private:
  335. static UClass* pClassPointer;
  336.  
  337. public:
  338. static UClass* StaticClass()
  339. {
  340. if (!pClassPointer)
  341. pClassPointer = UObject::FindClass("Class Core.State");
  342.  
  343. return pClassPointer;
  344. };
  345. };
  346.  
  347. // (0x00CC - 0x0244)
  348. class UClass : public UState
  349. {
  350. public:
  351. unsigned char UnknownData00[0x178]; // 0x00CC (0x178)
  352.  
  353. private:
  354. static UClass* pClassPointer;
  355.  
  356. public:
  357. static UClass* StaticClass()
  358. {
  359. if (!pClassPointer)
  360. pClassPointer = UObject::FindClass("Class Core.Class");
  361.  
  362. return pClassPointer;
  363. };
  364. };
  365.  
  366. // (0x0040 - 0x007C)
  367. class UProperty : public UField
  368. {
  369. public:
  370. unsigned long ArrayDim; // 0x0040 (0x04)
  371. unsigned long ElementSize; // 0x0044 (0x04)
  372. FQWord PropertyFlags; // 0x0048 (0x08)
  373. unsigned long PropertySize; // 0x0050 (0x04)
  374. unsigned char UnknownData00[0xC]; // 0x0054 (0x10)
  375. unsigned long Offset; // 0x0060 (0x04)
  376. unsigned char UnknownData01[0x18]; // 0x0064 (0x18)
  377.  
  378. private:
  379. static UClass* pClassPointer;
  380.  
  381. public:
  382. static UClass* StaticClass()
  383. {
  384. if (!pClassPointer)
  385. pClassPointer = UObject::FindClass("Class Core.Property");
  386.  
  387. return pClassPointer;
  388. };
  389. };
  390.  
  391. // (0x007C - 0x0080)
  392. class UByteProperty : public UProperty
  393. {
  394. public:
  395. class UEnum* Enum; // 0x007C (0x04)
  396.  
  397. private:
  398. static UClass* pClassPointer;
  399.  
  400. public:
  401. static UClass* StaticClass()
  402. {
  403. if (!pClassPointer)
  404. pClassPointer = UObject::FindClass("Class Core.ByteProperty");
  405.  
  406. return pClassPointer;
  407. };
  408. };
  409.  
  410. // (0x007C - 0x007C)
  411. class UIntProperty : public UProperty
  412. {
  413. public:
  414.  
  415. private:
  416. static UClass* pClassPointer;
  417.  
  418. public:
  419. static UClass* StaticClass()
  420. {
  421. if (!pClassPointer)
  422. pClassPointer = UObject::FindClass("Class Core.IntProperty");
  423.  
  424. return pClassPointer;
  425. };
  426. };
  427.  
  428. // (0x007C - 0x007C)
  429. class UFloatProperty : public UProperty
  430. {
  431. public:
  432.  
  433. private:
  434. static UClass* pClassPointer;
  435.  
  436. public:
  437. static UClass* StaticClass()
  438. {
  439. if (!pClassPointer)
  440. pClassPointer = UObject::FindClass("Class Core.FloatProperty");
  441.  
  442. return pClassPointer;
  443. };
  444. };
  445.  
  446. // (0x007C - 0x0080)
  447. class UBoolProperty : public UProperty
  448. {
  449. public:
  450. unsigned long BitMask; // 0x007C (0x04)
  451.  
  452. private:
  453. static UClass* pClassPointer;
  454.  
  455. public:
  456. static UClass* StaticClass()
  457. {
  458. if (!pClassPointer)
  459. pClassPointer = UObject::FindClass("Class Core.BoolProperty");
  460.  
  461. return pClassPointer;
  462. };
  463. };
  464.  
  465. // (0x007C - 0x007C)
  466. class UStrProperty : public UProperty
  467. {
  468. public:
  469.  
  470. private:
  471. static UClass* pClassPointer;
  472.  
  473. public:
  474. static UClass* StaticClass()
  475. {
  476. if (!pClassPointer)
  477. pClassPointer = UObject::FindClass("Class Core.StrProperty");
  478.  
  479. return pClassPointer;
  480. };
  481. };
  482.  
  483. // (0x007C - 0x007C)
  484. class UNameProperty : public UProperty
  485. {
  486. public:
  487.  
  488. private:
  489. static UClass* pClassPointer;
  490.  
  491. public:
  492. static UClass* StaticClass()
  493. {
  494. if (!pClassPointer)
  495. pClassPointer = UObject::FindClass("Class Core.NameProperty");
  496.  
  497. return pClassPointer;
  498. };
  499. };
  500.  
  501. // (0x007C - 0x0084)
  502. class UDelegateProperty : public UProperty
  503. {
  504. public:
  505. unsigned char UnknownData00[0x8]; // 0x007C (0x08)
  506.  
  507. private:
  508. static UClass* pClassPointer;
  509.  
  510. public:
  511. static UClass* StaticClass()
  512. {
  513. if (!pClassPointer)
  514. pClassPointer = UObject::FindClass("Class Core.DelegateProperty");
  515.  
  516. return pClassPointer;
  517. };
  518. };
  519.  
  520. // (0x007C - 0x0080)
  521. class UObjectProperty : public UProperty
  522. {
  523. public:
  524. class UClass* PropertyClass; // 0x007C (0x04)
  525.  
  526. private:
  527. static UClass* pClassPointer;
  528.  
  529. public:
  530. static UClass* StaticClass()
  531. {
  532. if (!pClassPointer)
  533. pClassPointer = UObject::FindClass("Class Core.ObjectProperty");
  534.  
  535. return pClassPointer;
  536. };
  537. };
  538.  
  539. // (0x0080 - 0x0084)
  540. class UClassProperty : public UObjectProperty
  541. {
  542. public:
  543. class UClass* MetaClass; // 0x0080 (0x04)
  544.  
  545. private:
  546. static UClass* pClassPointer;
  547.  
  548. public:
  549. static UClass* StaticClass()
  550. {
  551. if (!pClassPointer)
  552. pClassPointer = UObject::FindClass("Class Core.ClassProperty");
  553.  
  554. return pClassPointer;
  555. };
  556. };
  557.  
  558. // (0x007C - 0x0080)
  559. class UInterfaceProperty : public UProperty
  560. {
  561. public:
  562. class UClass* InterfaceClass; // 0x007C (0x04)
  563.  
  564. private:
  565. static UClass* pClassPointer;
  566.  
  567. public:
  568. static UClass* StaticClass()
  569. {
  570. if (!pClassPointer)
  571. pClassPointer = UObject::FindClass("Class Core.InterfaceProperty");
  572.  
  573. return pClassPointer;
  574. };
  575. };
  576.  
  577. // (0x007C - 0x0080)
  578. class UStructProperty : public UProperty
  579. {
  580. public:
  581. class UStruct* Struct; // 0x007C (0x04)
  582.  
  583. private:
  584. static UClass* pClassPointer;
  585.  
  586. public:
  587. static UClass* StaticClass()
  588. {
  589. if (!pClassPointer)
  590. pClassPointer = UObject::FindClass("Class Core.StructProperty");
  591.  
  592. return pClassPointer;
  593. };
  594. };
  595.  
  596. // (0x007C - 0x0080)
  597. class UArrayProperty : public UProperty
  598. {
  599. public:
  600. class UProperty* Inner; // 0x007C (0x04)
  601.  
  602. private:
  603. static UClass* pClassPointer;
  604.  
  605. public:
  606. static UClass* StaticClass()
  607. {
  608. if (!pClassPointer)
  609. pClassPointer = UObject::FindClass("Class Core.ArrayProperty");
  610.  
  611. return pClassPointer;
  612. };
  613. };
  614.  
  615. // (0x007C - 0x0084)
  616. class UMapProperty : public UProperty
  617. {
  618. public:
  619. class UProperty* Key; // 0x007C (0x04)
  620. class UProperty* Value; // 0x0080 (0x04)
  621.  
  622. private:
  623. static UClass* pClassPointer;
  624.  
  625. public:
  626. static UClass* StaticClass()
  627. {
  628. if (!pClassPointer)
  629. pClassPointer = UObject::FindClass("Class Core.MapProperty");
  630.  
  631. return pClassPointer;
  632. };
  633. };

non generated code:
CPP Code:
  1. #define CLASS_PROPERTIES_UFIELD "\
  2.  class UField*                                      Next;                                             // NOT AUTO-GENERATED PROPERTY \n"
  3.  
  4. #define CLASS_PROPERTIES_UFUNCTION "\
  5.  unsigned long                                      FunctionFlags;                                            // NOT AUTO-GENERATED PROPERTY \n\
  6.  unsigned short                                     iNative;                                                  // NOT AUTO-GENERATED PROPERTY \n\
  7.  unsigned short                                     RepOffset;                                                // NOT AUTO-GENERATED PROPERTY \n\
  8.  struct FName                                       FriendlyName;                                             // NOT AUTO-GENERATED PROPERTY \n\
  9.  unsigned short                                     NumParms;                                                 // NOT AUTO-GENERATED PROPERTY \n\
  10.  unsigned short                                     ParmsSize;                                                // NOT AUTO-GENERATED PROPERTY \n\
  11.  unsigned long                                      ReturnValueOffset;                                        // NOT AUTO-GENERATED PROPERTY \n\
  12.  unsigned char                                      UnknownData00[ 0x4 ];                                     // NOT AUTO-GENERATED PROPERTY \n\
  13.  void*                                              Func;                                                     // NOT AUTO-GENERATED PROPERTY \n"
  14.  
  15. #define CLASS_PROPERTIES_USTRUCT "\
  16.  unsigned char                                      UnknownData00[ 0x8 ];                                    // NOT AUTO-GENERATED PROPERTY \n\
  17.  class UField*                                      SuperField;                                              // NOT AUTO-GENERATED PROPERTY \n\
  18.  class UField*                                      Children;                                                // NOT AUTO-GENERATED PROPERTY \n\
  19.  unsigned long                                      PropertySize;                                            // NOT AUTO-GENERATED PROPERTY \n\
  20.  unsigned char                                      UnknownData01[ 0x30 ];                                   // NOT AUTO-GENERATED PROPERTY \n"



HOW TO USE SDK:
Here is some basic stuff you can use:
CPP Code:
  1. UGameEngine* pGameEngine = UObject::FindObject<UGameEngine>("GameEngine_TA Transient.GameEngine_TA");
  2. if (!pGameEngine) {
  3. printf("[ERROR] pGameEngine NULL!\n");
  4. return;
  5. }
  6. ULocalPlayer* pLocalPlayer = pGameEngine->GamePlayers.Data[0];
  7. if (!pLocalPlayer) {
  8. printf("[ERROR] pLocalPlayer NULL!\n");
  9. return;
  10. }
  11. //APlayerController* pPlayerController = reinterpret_cast<APlayerController*>(pLocalPlayer->Actor); //PlayerController_TA TheWorld.PersistentLevel.PlayerController_TA
  12. APlayerController* pPlayerController = UObject::FindObject<APlayerController>("PlayerController_TA TheWorld.PersistentLevel.PlayerController_TA");
  13. if (!pPlayerController) {
  14. printf("[ERROR] pPlayerController NULL!\n");
  15. return;
  16. }
  17.  
  18. UConsole *pConsole = reinterpret_cast<UConsole*>(UConsole::StaticClass());
  19. if (!pConsole) {
  20. printf("[ERROR] pConsole NULL!\n");
  21. return;
  22. }

local view pos:
CPP Code:
  1. printf("X: %.3f Y: %.3f Z: %.3f\n", pLocalPlayer->LastViewLocation.X, pLocalPlayer->LastViewLocation.Y, pLocalPlayer->LastViewLocation.Z);
local pos:
CPP Code:
  1. printf("X: %.3f Y: %.3f Z: %.3f\n", pPlayerController->Pawn->Location.X, pPlayerController->Pawn->Location.Y, pPlayerController->Pawn->Location.Z);
Boost pads:
CPP Code:
  1. if (strcmp(pObject->GetFullName(), "VehiclePickup_Boost_TA TheWorld.PersistentLevel.VehiclePickup_Boost_TA") == 0)
  2. {
  3. AVehiclePickup_Boost_TA* pVehiclePickupPill = reinterpret_cast<AVehiclePickup_Boost_TA*>(pObject);
Boost cooldowns:
CPP Code:
  1. AVehiclePickup_Boost_TA *pBoost = (AVehiclePickup_Boost_TA*)pObject;
  2. if(!pBoost){ continue;}
  3. for (int i = 0; i < pBoost->Timers.Count; i++) {
  4. char buffer[50];
  5. sprintf(buffer, "Cooldown: %d", abs(int(pBoost->RespawnDelay - pBoost->Timers.Data[i].Count)));
  6. if(WorldToScreen(pBoost->Location &vOut))
  7.    g_pRenderer->DrawString(vOut.X, vOut.Y, D3DCOLOR_ARGB(255, 255, 0, 0), buffer);
  8. }
Boost picked already:
CPP Code:
  1. pBoost->bPickedUp // 0-> not picked, 1->picked
Ball:
CPP Code:
  1.  
  2. ABall_TA* pBall = UObject::FindObject<AActor>("Ball_TA TheWorld.PersistentLevel.Ball_TA");
  3.  
  4. //Check if the ball is valid
  5. if(! pBall->bDeleteMe ) {
  6.    pBall->PredictPosition(pBall->LastPredictionTime, &predictedPosOut, &predictedVelOut);
  7.    for (int i = 0; i < pBall->PredictedPositions.Count; i++) {
  8.  
  9. }
  10. }

Iterate through all relevant actors:
CPP Code:
  1. for (int j = 0; j < pWorld->Levels.Count; j++) {
  2. ULevel* pLevel = pWorld->Levels.Data[j];
  3. if (pLevel) {
  4. for (int i = 0; i < pLevel->Actors.Count; i++) AActor*
  5.    pActor = pLevel->Actors.Data[i];

Team:
CPP Code:
  1. pPlayerController->GetTeamNum()

ADDITIONAL INFORMATION
DirectX9 Vtable: "RocketLeague.exe+1706A8C" double pointer (Current version, this might change next time, so here is a sig for you:
CPP Code:
  1. 89 15 ? ? ? ? 33 FF 39 6E 30 7E 1C 8B 1D ? ? ? ?    +0x0002

UWorld sig:
CPP Code:
  1. A3 ? ? ? ? E8 ? ? ? ? 8B 0D ? ? ? ? E8 ? ? ? ? A1 ? ? ? ? 39

ULevel and UWorld classes, for iterating through all relevant AActors (ball, players, boostpads, start positions, goals, ...:
CPP Code:
  1. class UWorld : public UObject
  2. {
  3. public:
  4. unsigned char                                      UnknownData00[ 0xC ];                           // 0x003C (0x000C)
  5. TArray<ULevel*> Levels; // 0x0048 (0x000C)
  6. unsigned char                                      UnknownData01[ 0x258 ];                           // 0x0048 (0x0258)
  7.  
  8. private:
  9. static UClass* pClassPointer;
  10.  
  11. public:
  12. static UClass* StaticClass()
  13. {
  14. if ( ! pClassPointer )
  15. pClassPointer = (UClass*) UObject::GObjObjects()->Data[ 866 ];
  16.  
  17. return pClassPointer;
  18. };
  19.  
  20. };
  21.  
  22. class ULevelBase : public UObject
  23. {
  24. public:
  25. TArray<AActor*> Actors; // 0X003C (0X000C)
  26. unsigned char UnknownData00[ 0xC ];                             // 0x0048 (0x0054)
  27.  
  28. private:
  29. static UClass* pClassPointer;
  30.  
  31. public:
  32. static UClass* StaticClass()
  33. {
  34. if ( ! pClassPointer )
  35. pClassPointer = (UClass*) UObject::GObjObjects()->Data[ 575 ];
  36.  
  37. return pClassPointer;
  38. };
  39.  
  40. };
  41.  
  42. class ULevel : public ULevelBase
  43. {
  44. public:
  45. unsigned char                                      UnknownData00[ 0x114 ];                             // 0x0054 (0x0114)
  46. float                                              LightmapTotalSize;                                 // 0x0168 (0x0004) [0x0000000000020002]              ( CPF_Const | CPF_EditConst )
  47. float                                              ShadowmapTotalSize;                               // 0x016C (0x0004) [0x0000000000020002]              ( CPF_Const | CPF_EditConst )
  48. unsigned char                                      UnknownData01[ 0x1B8 ];                           // 0x0170 (0x01B8)
  49.  
  50. private:
  51. static UClass* pClassPointer;
  52.  
  53. public:
  54. static UClass* StaticClass()
  55. {
  56. if ( ! pClassPointer )
  57. pClassPointer = (UClass*) UObject::GObjObjects()->Data[ 577 ];
  58.  
  59. return pClassPointer;
  60. };
  61.  
  62. };

Download RocketLeague SDK