Jump to content

Deobfuscate the .swf files aka UI modding...a start


Mofakin

Recommended Posts

Any one of you want to make a small mod that moves the compass to center top instead of the bottom? Power armor can stay where it is because you get a new hud but I always find a compass works better at the top of the screen than the bottom. Something you could do if you get frustrated with trying to figure out the rest of the .swf if you want.

 

That's possible, yes. Problem is, there are so many people with so many different ideas, you'd need to make a customized HUDmenu.swf for every single of them. Ruling out all configurable options isn't possible right now. But yes, I'm thinking about a small makeshift UI hack to remove certain things, like the obnoxious "hidden" bar, enemy blibs on the compass and other stuff. However, my style of HUD will put all elements to the lower center, so it wouldn't meet your criterias at all.

 

The best option you're having is to learn the tools and hack the .swf files yourself. Will take you ~ 30 minutes to google the necessary information.

Link to comment
Share on other sites

  • Replies 64
  • Created
  • Last Reply

Top Posters In This Topic

Has anyone had any success with the Favorites menu? I'm using Eltima to decompile the SWF files, but some of them appear to be corrupted.

 

Use JPEXS in combination with Sothink to decompile. Sothink only for .swf's that do not contain .as scripts like f.e. the Cursormenu.swf. When trying to recompile you will get certain error messages telling you what's missing or going wrong. I'm at that stage right now. Then you want to search the internets for matching tween and other ressource files. Recompiling files with .as should be done with CS4, but for files without .as scripts it worked with CS6 as well. However, as mentioned before, it reveals they've seemed to compile files with CS4, though I'm not sure about that.

 

Once you got the files recompiled, you'd need to test them in game, if they crash the game, or do not show anything at all, then it's likely you'd need to recompile them with another version of CS or any future Adobe flash creating tool. Looking at the scripts it seems to be as3, I'm not sure about the scaleform yet.

Link to comment
Share on other sites

Hi. Has anyone of the UI modders know where is a compass source code? I found its' spawn code in hudmenu.swf, I can move, scale and rotate it now. But I can't find how to move up the direction letters to the location icons bar. There is simply no right "define" and ac3 code to tweak it. Not in the interface/ swf files at least.

 

Nvm, found it. It's sprite 255.

 

A part of my problem is in scaling behaviour of the location marker. I want to disable it, script path needed. Any advise?

Edited by ImBlindMG
Link to comment
Share on other sites

I haven't had a much time on this and I'm anxious to see what the upcoming patch next week holds. However, I'm not holding my breath that they will fix this right away so I'm playing with this a bit more and have found the following..

 

So after modifying the BSButtonHintData data in my 7 or so SWF files it does in fact change the hint key on the UI, but the button itself isn't changed. The parameters of the function are:

 

BSButtonHintData(astrButtonText:String, astrPCKey:String, astrPSNButton:String, astrXenonButton:String, auiJustification:uint, aFunction:Function)

 

And I was wrong before, the only parameter I should have to change here is 2nd one (astrPCKey:String), the others are for PC gamepads, XBOX, and PS4 platforms. So, the next step is delving into the Shared/AS3/BSButtonHintXXX classes...

 

I somehow need to force this to rebind in game it seems, there are dirty flags in the code which are the obvious way to make these settings stick, but I'm not sure how to invoke them in-game as I'm not an ActionScript / Papyrus guy. Is there some simple command to disable / enable this component? Or is there something else here I'm missing?

 

Thanks!

Link to comment
Share on other sites

I haven't had a much time on this and I'm anxious to see what the upcoming patch next week holds. However, I'm not holding my breath that they will fix this right away so I'm playing with this a bit more and have found the following..

 

So after modifying the BSButtonHintData data in my 7 or so SWF files it does in fact change the hint key on the UI, but the button itself isn't changed. The parameters of the function are:

 

BSButtonHintData(astrButtonText:String, astrPCKey:String, astrPSNButton:String, astrXenonButton:String, auiJustification:uint, aFunction:Function)

 

And I was wrong before, the only parameter I should have to change here is 2nd one (astrPCKey:String), the others are for PC gamepads, XBOX, and PS4 platforms. So, the next step is delving into the Shared/AS3/BSButtonHintXXX classes...

 

I somehow need to force this to rebind in game it seems, there are dirty flags in the code which are the obvious way to make these settings stick, but I'm not sure how to invoke them in-game as I'm not an ActionScript / Papyrus guy. Is there some simple command to disable / enable this component? Or is there something else here I'm missing?

 

Thanks!

 

Appearantly what you did does work, but for the number keys 1-0 and the arrow keys up, down, left, right only. There might be other keys, but I haven't found them. None of the letters seems to work. INS, DEL, HOME, END does not work.

 

I have no clue why? Obviously it's pushing a string, but I haven't found any list of strings that could be modified in order to allow letters. I'm guessing that this code inside the MultiActivateMenu.swf is doing exactly what restricts the whole script to certain keys. But I could be wrong...

  public function SetButtonData(param1:uint, param2:String, param3:Boolean) : *
      {
         var _loc4_:* = NaN;
         this.ButtonData[param1].ButtonText = param2.toUpperCase();
         this.ButtonData[param1].ButtonDisabled = !param3;
         if(!this.visible && param1 == 3)
         {
            _loc4_ = 0;
            while(_loc4_ < this.Buttons.length)
            {
               this.Buttons[_loc4_].bButtonPressed = false;
               this.ButtonAnimators[_loc4_].gotoAndPlay("showButton");
               _loc4_++;
            }
            this.visible = true;
         }
      }

Edit: Ok, now I get why number keys are working. Because they are preset by the vanilla game to be used as alternative to arrow keys when inside dialogue menus.

 

Edit2: And yes, given my findings this evening I can now 100% say, the whole key binding mess is because of console port. PC keys are tied to PS4 keys, you can't correctly forward key changes to dialogue options when not changing the corresponding PS4 keys...they really did it...they literally dropped us for consolers. And we're as stupid as to modifie and fix their broken game...it's a disgrace, honestly, it's a disgrace...-.-

 

Gopher kept it kind in his rant video about keys, right now I do not share this notion...Oh Bethesda where are thou... :nuke:

Link to comment
Share on other sites

When I saw the dialogue wheel I knew this was going to be more console than PC. With PC the ability to rebind keys is not an option, it is a requirement that all keys can be rebound. You have different keyboards, left and right hand players, and disabilities. Key rebinding was never about personal options, it was because there are left handed players that use their right hand for the keyboard, there are more than just QWERTY keyboards, like DVORAK and AZERTY as well as quite a few lesser known. Keybinding was so those people could also play the games. By locking the keys down Bethesda just said "go f*#@ yourself" to their customers.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...