Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arrays Data Structure
#1
Hey Eliot, do you have any information on the structure of arrays?

I'm working on a project and need to modify an array to change the flight characteristics for an aircraft in this game. I used UE Explorer to view the actor class in the .u file, and pull the array from the default properties.


Array=(Points=/* Array type was not detected. */,InVal=0,OutVal=0,ArriveTangent=0,LeaveTangent=0,InterpMode=0)

I used UE Explorer's Default Properties table buffer and Hex Workshop to extract the raw binary for the array. 

(Formatted in 32 bit chunks so it's readable. Almost certainly NOT the correct formatting.)

4F 3A 00 00    00 00 00 00    ED 40 00 00    00 00 00 00
D7 01 00 00    00 00 00 00    E9 23 00 00    00 00 00 00 
01 37 00 00    00 00 00 00    23 02 00 00    00 00 00 00   
B7 01 00 00    00 00 00 00    03 00 00 00    F6 23 00 00   
00 00 00 00    94 17 00 00    00 00 00 00    04 00 00 00   
00 00 00 00    00 00 00 00    FC 34 00 00    00 00 00 00   
94 17 00 00    00 00 00 00    04 00 00 00    00 00 00 00   
00 00 00 00    24 02 00 00    00 00 00 00    94 17 00 00   
00 00 00 00    04 00 00 00    00 00 00 00    00 00 00 00   
BD 25 00 00    00 00 00 00    94 17 00 00    00 00 00 00   
04 00 00 00    00 00 00 00    00 00 00 00    EB 23 00 00   
00 00 00 00    C0 07 00 00    00 00 00 00    01 00 00 00   
00 00 00 00    00 BC 32 00    00 00 00 00    00 F6 23 00   
00 00 00 00    00 94 17 00    00 00 00 00    00 04 00 00   
00 00 00 00    00 00 00 7A    44 FC 34 00    00 00 00 00   
00 94 17 00    00 00 00 00    00 04 00 00    00 00 00 00   
00 00 00 80    3E 24 02 00    00 00 00 00    00 94 17 00   
00 00 00 00    00 04 00 00    00 00 00 00    00 00 00 00   
00 BD 25 00    00 00 00 00    00 94 17 00    00 00 00 00   
00 04 00 00    00 00 00 00    00 00 00 00    00 EB 23 00   
00 00 00 00    00 C0 07 00    00 00 00 00    00 01 00 00   
00 00 00 00    00 00 BC 32    00 00 00 00    00 00 F6 23   
00 00 00 00    00 00 94 17    00 00 00 00    00 00 04 00   
00 00 00 00    00 00 00 A0    8C 45 FC 34    00 00 00 00   
00 00 94 17    00 00 00 00    00 00 04 00    00 00 00 00   
00 00 00 00    80 3F 24 02    00 00 00 00    00 00 94 17   
00 00 00 00    00 00 04 00    00 00 00 00    00 00 00 00   
00 00 BD 25    00 00 00 00    00 00 94 17    00 00 00 00   
00 00 04 00    00 00 00 00    00 00 00 00    00 00 EB 23   
00 00 00 00    00 00 C0 07    00 00 00 00    00 00 01 00   
00 00 00 00    00 00 00 BC    32 00 00 00    00 00 00 BC   
32 00 00 00    00 00 00



My next step is just brute force it by searching for known values, and trying to put the pieces together. I figured I'd ask if you had any information on the structure of the compiled arrays to make the process of bashing my head into my keyboard a little bit less headachey. Big Grin Any and all info on the matter is greatly appreciated.
Reply
#2
Hey,

You can find these data structures at Core.upk/Object.InterpCurvePoint*.

Also this might be an easy fix by configuring an array's type in UE Explorer, see: https://github.com/UE-Explorer/UE-Explor...t-detected-

I wish you good luck Smile
Reply
#3
(12-07-2022, 09:26 AM)eliot Wrote: Hey,

You can find these data structures at Core.upk/Object.InterpCurvePoint*.

Also this might be an easy fix by configuring an array's type in UE Explorer, see: https://github.com/UE-Explorer/UE-Explor...t-detected-

I wish you good luck Smile

Hey, thanks for the pointers. Configuring the array type was the first thing I tried, and I did eventually get it working, but trying to configure the array type for the variable as listed in the actor class does jack all. The problem ended up being that the array was embedded in a struct, because (?).

For anyone else running into similar problems: The problem is that the array is embedded in a struct. Trying to declare the array properties using the variable name displayed in the .u won't work. You need to open the included buffer/hex editor, and get the name of the array embedded within the struct. In this case the variable name as displayed in the actor class was "PitchVsSpeedCurve", but the name of the array that was embedded in the struct was "Points".

So the solution is rather than configuring it as listed in the actor class as: 
Package.Class.PitchvsSpeedCurve:FloatProperty

you instead have to configure it as:

Package.Class.Points:FloatProperty

(Use whatever Package.Class is appropriate for your game)

Cheers
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)