Caiman Posted October 20, 2012 Share Posted October 20, 2012 2nded. I wouldn´t have been able to do it, if it wasn´t for that tutorial & the other threads I read(and understood... parts :P ). Link to comment Share on other sites More sharing options...
Daemonjax Posted October 20, 2012 Share Posted October 20, 2012 (edited) Scraped straight from UE Explorer's Native Tables (NativesTableList_UDK-2011-08.NTL): ! 81 == F2 != F3 && 82 ^^ 83 || 84 *= 85 *= C6 /= 86 += 87 -= 88 ++ 89 -- 8A ++ 8B -- 8C ~ 8D - 8F * 90 / 91 % FD + 92 - 93 << 94 >> 95 >>> C4 < 96 > 97 <= 98 >= 99 == 9A != 9B & 9C ^ 9D | 9E *= 9F /= A0 += A1 -= A2 ++ A3 -- A4 ++ A5 -- A6 Rand A7 Min F9 Max FA Clamp FB - A9 ** AA * AB / AC % AD + AE - AF < B0 > B1 <= B2 >= B3 == B4 ~= D2 != B5 *= B6 /= B7 += B8 -= B9 Abs BA Sin BB Cos BC Tan BD Atan BE Exp BF Loge C0 Sqrt C1 Square C2 FRand C3 FMin F4 FMax F5 FClamp F6 Lerp F7 Round C7 - D3 * D4 * D5 * 28 / D6 + D7 - D8 << 13 >> 14 == D9 != DA Dot DB Cross DC *= DD *= 29 /= DE += DF -= E0 VSize E1 VSizeSq E4 Normal E2 VRand FC MirrorVectorByNormal 2C ProjectOnTo DC IsZero DD == 8E != CB * 1F * 20 / 21 *= 22 /= 23 + 3C - 3D += 3E -= 3F GetAxes E5 GetUnAxes E6 RotRand 40 $ 70 @ A8 < 73 > 74 <= 78 >= 79 == 7A != 7B ~= 7C $= 42 @= 43 -= 44 Len 7D InStr 7E Mid 7F Left 80 Right EA Caps EB Locs EE Chr EC Asc ED Repl C9 == 72 != 77 ClassIsChildOf 02 IsA C5 == FE != FF + 0E - 0F LogInternal E7 WarnInternal E8 GotoState 71 IsInState 19 GetStateName 1C Enable 75 Disable 76 SaveConfig 18 Sleep 00 FinishAnim 05 SetCollision 06 SetCollisionSize 1B Move 0A SetLocation 0B SetRotation 2B MoveSmooth 81 AutonomousPhysics 83 SetBase 2A SetOwner 10 SetPhysics 82 Trace 15 FastTrace 24 Destroy 17 SetTimer 18 MakeNoise 00 PlayerCanSeeMe 14 GetURLMap 23 AllActors 30 DynamicActors 39 ChildActors 31 BasedActors 32 TouchingActors 33 TraceActors 35 VisibleActors 37 VisibleCollidingActors 38 CollidingActors 41 LineOfSightTo 02 CanSee 15 CanSeeByPoints 19 PickTarget 13 MoveTo F4 MoveToward F6 FinishRotation FC FindPathTo 06 FindPathToward 05 FindRandomDest 0D PointReachable 09 ActorReachable 08 PickWallAdjust 0E WaitForLanding 0F UpdateURL 22 FindStairRotation 0C IsSeatControllerReplicationViewer E7 Here's a direct link: http://dl.dropbox.com/u/32777109/Games/XCOM%202012/output.txt ^ then you can just hit F3 in your browser and search that way. Hope that helps :D UPDATE: Fixed zero paddings. Edited October 20, 2012 by Daemonjax Link to comment Share on other sites More sharing options...
dreadylein Posted October 20, 2012 Author Share Posted October 20, 2012 nice work as every time :) Link to comment Share on other sites More sharing options...
Caiman Posted October 20, 2012 Share Posted October 20, 2012 (edited) Of course! :D The files already showed me however, that it aint as easy as I thought... -.- I followed your example and studied on... in XCOMGAME.upk i found the class XGTacticalGameCoreNativeBase, in which I found line 62: const BASE_NUM_ROCKETS = 1; -> I wanted to have my heavies start with 2 rockets(and later do the same for grenades ^_^) So I used that online converter, got 1=0x3f800000 and went on to search for "80 3F" in BASE_NUM_ROCKETS.Const which I had already unpacked... I can´t even find a single "80" or "3F" in that file though... what am I doing wrong? :wacko: EDIT:Can I just change the "1" on the right to "2"?I noticed that for Critwound_Will_Penalty the "15" also shows up on the right instead of appearing as "70 41". Edited October 20, 2012 by Caiman Link to comment Share on other sites More sharing options...
kanet32 Posted October 20, 2012 Share Posted October 20, 2012 (edited) Well, first of all, I'm not sure how you got 1 = 0x3f800000... 1 is 0x1. I'm honestly a bit bewildered about this. Second, unfortunately, there's special bytecodes for constant 0 and 1 in UnrealScript. You're looking for 0x25 for 0, 0x26 for 1. So you'd need to search for 0x26. The reason this is a problem is because if you want to change it to 2, you're going to need to change it from 26 to 2C 02, because any constant other than 0 or 1 has to be preceeded by 2C (or a different code, for different types). And as we just learned a few minutes ago, you can't change the lengths of functions. Changing 26 to 2C 02 would add one byte to the function's length, causing the altered script to be rejected. This specific change is going to have to wait until we know how to alter the object lengths in the UPK files. Edited October 20, 2012 by kanet32 Link to comment Share on other sites More sharing options...
dreadylein Posted October 20, 2012 Author Share Posted October 20, 2012 (edited) kanet32 he tried to convert to float i guess well so we can choose now i guess, heavly messing around with the upk , including readjusting the tables or trying to get the binarie to cook us proper things, right ? Edited October 20, 2012 by dreadylein Link to comment Share on other sites More sharing options...
Caiman Posted October 20, 2012 Share Posted October 20, 2012 (edited) Thanks a lot for that insight, kanet.I just tried altering it on the right from 1 to 4 and nothing changed(no crash no nothing, at least on a save). @dreadylein: Exactly. :laugh: EDIT:Interestingly enough, the 1 on the right on that rocket constant corresponds with a 31 in hex(in that file). Edited October 20, 2012 by Caiman Link to comment Share on other sites More sharing options...
kanet32 Posted October 20, 2012 Share Posted October 20, 2012 Ahh, yeah, definitely the float thing. Just double-checked. Yeah, for converting integer values to hex, use Google. A constant will only be stored as a float value if it's got a fractional component to it, otherwise it'll be stored as an integer. And, what do you mean, changing it from 1 to 4? You mean, in the decompiled source that UE Explorer shows? Link to comment Share on other sites More sharing options...
dreadylein Posted October 20, 2012 Author Share Posted October 20, 2012 @CaimanAre you sure the const is even used ?Daemonjax stumbeld across some const yesterday which didnt do anything :Dthey just used magic numbers at the place the const should have been used :o Link to comment Share on other sites More sharing options...
Daemonjax Posted October 20, 2012 Share Posted October 20, 2012 (edited) Second, unfortunately, there's special bytecodes for constant 0 and 1 in UnrealScript. You're looking for 0x25 for 0, 0x26 for 1. So you'd need to search for 0x26. The reason this is a problem is because if you want to change it to 2, you're going to need to change it from 26 to 2C 02, because any constant other than 0 or 1 has to be preceeded by 2C (or a different code, for different types). And as we just learned a few minutes ago, you can't change the lengths of functions. Changing 26 to 2C 02 would add one byte to the function's length, causing the altered script to be rejected. Good info... When you change the length of a function, when does it fail? When the game launches? Is it a catastrophic failure, or is it something more subtle? If it's on repacking, I can (maybe) easily get around that. Also, where did you get that information regarding special bytecodes for constants? It would be useful to be able to compute the bytecode for any constant. EDIT: So, anyone know why some bytecodes are missing from the file I scraped? Off the top of me head, 0x06 and 0x07 aren't in there (actually 0x06 is there, but it's SetCollision in the file. But that's not correct afaik).EDIT2: There may be a problem with how I formatted the output... 0x60 came up twice. Looking into it. EDIT3: Yeah, I padded the zeros incorrectly. ;) Fixed. Now FindPathTo 0x06 comes up twice. heh... so does 0x00. I double checked the ntl file, and that's how it is in there. Edited October 21, 2012 by Daemonjax Link to comment Share on other sites More sharing options...
Recommended Posts