Jump to content

EliotVU

Members
  • Posts

    61
  • Joined

  • Last visited

Posts posted by EliotVU

  1. Hey guys, been a while you may have seen a post from me here but I have recently released the source code of my Unreal Library that is part of UE Explorer and is what makes up the whole UnrealScript part of the program(basically anything but its interface).

     

    You can fork the source code is released under MIT at https://github.com/EliotVU/Unreal-Library It is bigger than you might think! Although not the most clean code (:

     

    Files of interest:

     

    What can I do with the Unreal Library?:

    • Add custom games support for UE Explorer and other tools.
    • Build your own tools for .upk files.
    • Enhance the code output in the way that you may like it.
    • The Eliot.UELib.dll can be replaced by your custom one, so long as it doesn't break compatibility.

     

    If you got a question or suggestion please do it here :smile: thanks!

  2. Interesting find on the enums :smile:

     

    We've found that at the hex-editing level, we can pretty much just ignore the enums, as they've already been compiled out of the bytecode itself. The only way that enums manifest themselves is when setting up the configuration file, as they allow you to use the enum names instead of just numbers (I suspect that this is the only reason why the enums get separate objects baked into the upk).

     

    In our EW LW development, we've simply extended the localization array size and stripped off the enum association, which has proven sufficient to allow the addition of more localization variables in the .int files. This has allowed us to (so far) expand the number of foundry projects, techs, and soldier names (since there are going to be effectively 16 subclasses in EW LW).

     

    One of many reasons.

     

    For example it can be used at runtime in UnrealScript through the help of casting and native functions.

    Secondly it is also usable by the engine's console commands such as "EditObj" "EditActor" "EditDefault" (might contain typos), and "Set", "Get". And then the Unreal Editor.

  3. Just FYI UDefaultProperty is quite made up by my library it's not really a thing ;D Also Version and LicenseeVersion are written as one packet of 4 bytes(Little/Big Endian matter). There's a lot more but hey, good enough I guess.

  4. I don't understand how to apply those flags - where it starts. From test in UE Explorer, I got this result:

     

    native static final function bool

    01 24 02 00

     

    0x00000001 Final

    0x00000400 Native

    0x00002000 Static

     

    Are only three 00 needed? Like 01 24 02.

     

    Here's an article explaining this: http://www.cplusplus.com/forum/general/1590/

     

    in UE Explorer I call them Flags, but in Computer Science they're usually referred as Bitmasks of bit flags.

  5. http://www.gildor.org/smf/index.php/topic,297.msg2873.html#msg2873 has some information on it. There's a lot more on Google, UE Explorer also knows its structure but I disabled it as it keeps throwing math overflow errors so I must have done something wrong, but I never bothered investigating it and just went with Gildor's tool instead (I could give my work but it might be partially wrong).

  6. Seems, I found the meaning of "junk" at the end of function (after 0x53 token).

    53 — end of function
    00 00 00 — zeros
    XX XX XX XX — function flags
    YY YY YY YY — function name (index to namelist table)
    00 00 00 00 — zeros
    
    According to UE Explorer, 0x00000400 flag is Native function flag. So, theoretically, if we switch this flag off, we will be able to re-write native function...

     

     

    Shouldn't work because there are thousands of bytecodes still assuming its a Native function.

  7. I've been called for help, although I'm not a fan of re-doing what's already done. Not sure what exactly is needing my help but nonetheless I noticed and agree that my library lacks documentation. So I have started abit of documentation on its API, you can read about it on github

  8. I suspect most people don't know that UE Explorer does accept some quick-shortcut commandline arguments for common tasks.

     

    Arguments:

    • <file_path> (Optional)
    • -console : Launches UE Explorer as a console window displaying its live-log.
      • -silent : The console window will automatically close when the task completes.
      • -export=classes or scripts : Exports all classes or scripts from the specified package.
    • -newwindow : Open the file in a new UE Explorer window.

    An Example:

    "C:\Program Files (x86)\UE Explorer\UE Explorer.exe" "C:\UT2004\System\Core.u" -console -export=classes

     

     

    Copied from: http://eliotvu.com/forum/showthread.php?tid=81&pid=394#pid394

  9.  

    You're right XCOM is indeed not working oh god... seems like percentage of the supported games don't work.

     

    No worries ... I just rolled back to 1.2.3 and everything is fine.

     

    Figured I'd post this up so you'd be aware of the situation and so others can hold off on the update until you have an update for us to test :smile:

     

     

    It has already been fixed. Thanks btw :)

     

  10. Okay guys, sorry for the inconvenience, but I have fixed the issue, luckily it only took me a couple minutes to spot it and few a dozen more minutes to build another release(god I wish this was easier...). An auto-update popup should appear but if not, just find the link in the thread.

     

    (You can blame Bioshock Infinite for the issue, I left something uncommented for testing purposes and apparently forgot about it and by some coincidence the games I tested really didn't care about the line of code :pirate:

  11. I have the new 1.2.3.0 beta installed and am kicking the tires.

     

    I really, really love the new token view.

    -- The included hex will drastically speed up the rate at which I can make changes

    -- The inclusion of the line/token memory/file sizes is a really nice bonus

     

    I've also verified that the incorrect memory size for the "@=" string-concat-and-assign-with-space operator has been fixed. The functions that had been decompiling incorrectly with v1.2.2.1 are now decompiling correctly with v1.2.3.0.

     

    One issue I'd recently noticed in 1.2.2.1 and is still present in 1.2.3.0: When I do a "Find in Classes..." operation with more than one unreal package open, it always searches the first opened package instead of the currently active one.

     

    Example:

    1) Open XComGame.upk

    2) Open XComStrategyGame.upk, have this package in foreground

    3) Press "Ctrl-Shift-F" and search for string

    4) The search will be conducted on XComGame.upk, not XComStrategyGame.upk

     

    This isn't a huge issue -- the workaround is to only have one package open when using the search function.

     

    --------------

     

    The new hex-editing in the View Buffer / Hex Viewer is great. It will allow for much simpler editing of individual values.

     

    One small issue I've noticed is that the only number keys recognized are on my keyboard's num-pad. The number keys on the regular part of the keyboard do not register when editing hex values in the Hex Viewer.

     

    I'm glad you like it!

     

    Search:

    I can reproduce your search issue, additionally I also discovered it crashes UE Explorer when doing it on a UT3 package(Core in this particular test). I'll have a fix for this in the next version(Ain't begun yet).

     

    Hex-Viewer:

    Didn't know, thanks, I have the habit of using the numpad numbers so absolutely didn't think of the other way of entering numbers!

     

  12. I have also implemented another useful feature you guys might like a lot, unless you use another Hex Editor than Hex Workshop :P

     

    http://img854.imageshack.us/img854/8541/lgt27f7.png
    When clicked it will open Hex Workshop automatically with the file that's open in UE Explorer, additionally it will also scroll to the part of the buffer and select its size as well in Hex Workshop :smile:

     

    And another useful feature:

     

    http://i.imgur.com/CYmc2PN.png

  13. Oh nice, I didn't realise I'd be able to use Intelisense with it. I'm sure I'll be able to experiment and find my way with it now, thanks for your pointers and of course, for the library too :smile:

     

    I can't help out with the translations I'm afraid; I can barely just about manage with English ;P

     

    Let me know if you finish anything with it, I'd love to see my library get used elsewhere other than UE Explorer and Unreal Dependencies.

     

    Also, I've done your request. Implemented the -silent argument.

     


  14. I have question for you guys. Do any of you guys know a language other than English or Dutch? If anyone is interested in translating UE Explorer to other languages, feel free to ask me, then I can send you the English language files :cool:

  15. Great stuff, thanks for implementing the other suggestions too! :smile:

     

    I have another suggestion regarding the command line usage, which I have also submitted on bitbucket. When exporting scripts via the command line, it would be good if there was a "silent" switch to suppress the popup dialog box with the result, or perhaps even better would be to display the result in the command console instead of a popup. I had an issue when trying to export scripts from a large number of UPKs via a batch file and I had to close the new window for each one, which took quite a while.

     

    Is there any documentation for UE Library on what functions there are and their usage?

     

    While you're here, would you be able to lend your expertise to briefly enlighten me in this thread about native tables? :smile:

     

    Thanks! :smile:

    Thanks, I've responded to your issue.

     

    There's unfortunately zero documentation for UE Library, but I can give you a starting point.

    • Get the Library from UE Explorer's installation
    • Have a C# IDE
    • Add a library reference to UE Library
    • Try out the code below :)

    In your program start code...

    (at the top add "using Eliot.UELib;")

    var package = UnrealLoader.LoadPackage( "C:/PATH" );

    Console.WriteLine( package.Version.ToString() );

     

    that'll load the package and print out its version, now you can ask further questions or put Visual Studio's awesome Intellisense to use by simply writing package. and see what all possiblities popup ;)

     

    Also have a look at the UnrealPackage class: http://pastebin.com/EmmM9hWm

×
×
  • Create New...