Jump to content
⚠ Known Issue: Media on User Profiles ×

R&D Inventory, Items & Weapons Overhaul


anUser

Recommended Posts

Good news, after Amineri pointed me towards modifying sprite defintions to add more stuff to the squad select UI (again, thanks for that, you rock :thumbsup:) it occurred to me that this might be the missing link in getting a scrollbar in the inventory list. I've tinkered around with the DefineSprite parts of the loadout flash file (as well as 'borrowing' a few ActionScript commands found inside the LockerList class and putting them into the InventoryList script) and lo and behold, a functional scrollbar and masking rectangle appeared! :smile:

 

http://i.imgur.com/XvFxyps.jpg

 

Originally I've simply copied the object definitions from the lockerList sprite, but have since modified them a bit to correct the placement of the masking rectangle and moved the scrollbar to the left-hand side of the item list. There are still a few kinks to iron out, e.g. I'd like to add a margin on the left edge of the loadout sprite where the scrollbar will be placed and the selection indicator is misbehaving, as usual :rolleyes:

Will report back when those issues have been dealt with :thumbsup:

 

In general, I very much prefer this solution to the grid-based one as the scrollbar behavior is much more dynamic and independent of the number of items you specify. As with the locker list no scrollbar will be displayed when the item sprites don't exceed the space defined by the masking rectangle, so some measure of backwards-compatibility for vanilla-like configurations with only 2 small items is maintained :smile:

Link to comment
Share on other sites

  • Replies 129
  • Created
  • Last Reply

Top Posters In This Topic

Good news, after Amineri pointed me towards modifying sprite defintions to add more stuff to the squad select UI (again, thanks for that, you rock :thumbsup:) it occurred to me that this might be the missing link in getting a scrollbar in the inventory list. I've tinkered around with the DefineSprite parts of the loadout flash file<snip>

http://justwalkwithme.files.wordpress.com/2011/12/head-slap-emoticon.gif?w=21

 

In my defense I am trained in using Adobe Flash witch would have fixed the sprite definitions for reused sprites on recompile.

 

Edit: What decompiler/editor are you using? I can't get JPEXS to let me do anything with DefineSprite.

Link to comment
Share on other sites

This looks great!

 

To be honest, I didn't think about the scrollbar being placed as a part of the sprite definition -- I'm glad you made that connection. I probably would have struggled fruitlessly for days trying to work that out.

 

I knew that it had to be possible to add the scrollbar, as both the inventorylist and the lockerlist extend the same base ItemList class (which includes the XComScrollbar functionality), but I just couldn't get it to work out.

 

Kudos!

Link to comment
Share on other sites

  • 2 weeks later...

So, after tinkering around with the loadout screen for what feels like an eternity I've finally got it to a point worth releasing :smile:

 

Behold the modified screen featuring a properly placed and fully functional scrollbar for the inventory list:

http://i.imgur.com/WcPve65.jpg

 

To achieve this I've basically enlarged the background of the loadout panel, moved a few components of it to the right and copied the scrollbar objects from the locker list into the inventory list sprite as mentioned in my previous post. Add to that further adjustments made to the InventoryList ActionScript class to make item focus behavior work properly and to free up some space for the new sprite objects.

 

I've added my notes containing the necessary changes below:

 

Warning, wall of text ahead:

* sprite '_inventory list'
    - add new objects (+98 bytes total)
        + 'theMask', cloned from 'lockerList' sprite,
          position changed to [-425,-775] (+28 bytes)
            BF 06 16 00 00 00 26 04 00 50 00 C9 08 1C 4C 08 8A 00 23 40 74 68 65 4D 61 73 6B 00
        + 'myScrollbar', cloned from 'lockerList' sprite,
          position changed to [-150,-768] (+33 bytes)
            BF 06 1B 00 00 00 26 06 00 51 00 CC 80 00 37 83 43 95 49 F8 EC 6D 79 53 63 72 6F 6C 6C 62 61 72 00
        + 'selectionIndicatorMC', cloned from 'SoldierLoadoutScreen' sprite,
          position changed to [256.25, 0.0] (+37 bytes)
            BF 06 1F 00 00 00 26 05 00 5B 00 1C A0 28 00 00 73 65 6C 65 63 74 69 6F 6E 49 6E 64 69 63 61 74 6F 72 4D 43 00
    - modify existing objects (move to the right by 14 px [280 twips]) (+0 bytes)
        + 'theItems', position changed to [1080,0]
            BF 06 12 00 00 00 26 01 00 4E 00 16 C8 00 00 74 68 65 49 74 65 6D 73 00
            to                                  ! !!
            BF 06 12 00 00 00 26 01 00 4E 00 18 87 00 00 74 68 65 49 74 65 6D 73 00
    - modify sprite header to account for changed size
    - complete hex change:
        + header before
            FF 09 20 00 00 00 53 00 01 00    [+ 54 (0x36) tail bytes, 64 (0x40) bytes total]
        + new data, 162 (0xA2) bytes
            FF 09 82 00 00 00 53 00 01 00 BF 06 12 00 00 00 26 01 00 4E 00 18 87 00 00 74 68 65 49 74 65 6D 73 00 BF 06 1F 00 00 00 26 05 00 5B 00 1C A0 28 00 00 73 65 6C 65 63 74 69 6F 6E 49 6E 64 69 63 61 74 6F 72 4D 43 00 BF 06 16 00 00 00 26 04 00 50 00 C9 08 1C 4C 08 8B CA F3 E0 74 68 65 4D 61 73 6B 00 BF 06 1B 00 00 00 26 06 00 51 00 CC 80 00 37 83 43 BF 6A F4 00 6D 79 53 63 72 6F 6C 6C 62 61 72 00 40 00 00 00 3F 0E 14 00 00 00 01 00 53 00 5F 69 6E 76 65 6E 74 6F 72 79 20 6C 69 73 74 00
 * shape 0084 (background of loadout panel)
    - modify shape records (increase/decrease x deltas by 14 px [280 twips])
        + record 1 (moveTo), 'MoveDeltaX' set to 575.7 px
            EA F8 81
            to
            EB 3E 81
        + record 5 (horz lineTo), 'DeltaX' set to -264.75 px
            85 8D 3E
            to
            85 6A 3E
        + record 15 (horz lineTo), 'DeltaX' set to 137.35 px
            F6 26 8F
            to
            F6 2A EF
        + record 19 (moveTo), 'MoveDeltaX' set to 533.45 px
            EA 25 40
            to
            EA 6B 40
        + record 32 (horz lineTo), 'DeltaX' set to 137.35 px
            7B 13 46 4B
            to
            7B 15 76 4B
        + record 38 (moveTo), 'MoveDeltaX' set to 575.45 px
            EA F7 5B
            to
            EB 3D 5B
        + record 41 (horz lineTo), 'DeltaX' set to -499.05 px
            DD A1 B0
            to
            DD 90 30
        + record 43 (moveTo), 'MoveDeltaX' set to 558.25 px
            15 EA A1 40
            to
            15 EA E7 40
        + record 62 (moveTo), 'MoveDeltaX' set to 557.65 px
            BD 53 C8
            to
            BD 5C 88
        + record 81 (moveTo), 'MoveDeltaX' set to 557.05 px
            1D EA 9B 40
            to
            1D EA E1 40
        + record 226 (moveTo), 'MoveDeltaX' set to 578.95 px
            47 7A C2 36
            to
            47 7A D3 B6
        + record 243 (moveTo), 'MoveDeltaX' set to 578.40 px
            87 7A C1 86
            to
            87 7A D3 06
        + record 260 (moveTo), 'MoveDeltaX' set to 549.15 px
            7A 9C F6
            to
            7A AE 76
    - complete hex change:
        + header before
            FF 14 77 03 00 00 54 00    [+885 (0x375) tail bytes, 893 (0x37D) bytes total]
        + new data, 893 (0x37D) bytes
            FF 14 77 03 00 00 54 00 78 08 E5 86 40 11 9B 33 80 78 08 E5 86 40 11 9B 33 80 01 01 00 00 00 00 D8 00 10 15 EB 3E 81 C5 78 5A 9F 55 E6 5C 2D 97 85 6A 3E 6B BE 00 33 82 51 E3 41 D0 7C 32 DF AC F0 CE 1A 23 C1 B0 8E 2B 42 D1 C0 D2 F6 2A EF 81 C0 E2 C6 B1 AF 84 00 00 02 14 00 A0 02 00 03 67 E8 ED 7F 3C 00 A0 02 00 03 67 E8 ED FF 02 25 EA 6B 40 FE DC 0E 07 16 35 8D E1 6A 48 7C 54 8E F1 4C 2F A5 E6 48 B8 5B 20 56 37 50 6F 0D 11 E0 D8 47 15 A1 68 E0 69 48 7B 15 76 4B C2 04 B6 17 B8 25 1E 34 1D 07 C3 2D 90 FA CF 18 25 EB 3D 5B 0B DB 94 BE 0B 54 87 DD 90 30 00 4F 84 00 03 00 67 E8 ED 16 00 67 E8 ED 07 00 67 E8 ED 11 00 20 15 EA E7 40 DE 5C 59 E6 7E 43 CE 01 5E 17 4E 40 15 C4 E9 32 3E B0 35 22 49 58 19 63 26 59 01 5F 0C B5 C6 A2 A8 B8 24 29 2B 03 2C 64 CB 20 2B D5 89 20 15 9D 94 87 64 A8 1C 0F 5C 8A 00 79 C3 BD 5C 88 1C 8B E2 CF B3 D1 A5 40 77 0B A7 18 1D 75 47 64 C8 1A 91 23 90 2F 78 ED 60 4B 86 53 E3 4C 53 1C 11 E4 72 05 EF 1D AC 09 6A C4 8C 12 55 E3 4D 9C 0E 07 AE 36 81 4A 1D EA E1 40 EA 6F 16 7D 9E CE 56 70 BA 79 F6 CC F4 2E A4 4C F5 DE 7D D3 86 4C E3 47 D1 FC 11 A6 7A EF 3E E9 AB 12 20 95 C8 92 DC 38 1E BC EB 28 2E 7C 84 1D FD 57 99 F6 CC F4 2F 04 63 9E 9B E3 4F 53 BE 12 9C F0 AC F9 F6 CC F4 2E A4 48 A7 F3 33 EE 9C 32 64 41 2B 91 25 B8 78 36 67 9D 65 E2 B1 AC 7C 0D 84 4E 0A B9 CA B1 DC F9 40 39 17 1A 52 07 6A BC 8C 0E BA A3 B2 64 0E 08 C7 4D 1B F1 A8 AA 1F 09 54 78 55 78 C0 EB AA 3B 26 40 D4 89 1C 81 7B C7 6B 02 5C 32 64 60 92 AF 1A 6C E0 78 36 67 1B 40 A5 71 57 95 EE 06 A6 37 01 4A 1D CF 99 83 78 52 1E 70 0A EA BC 90 05 71 3A 4C 8F AC 0E 08 C6 4A C0 CB 1E 35 3D 4F E1 2B 47 0A 8D 20 0A E2 74 99 1F 58 1A 91 24 AC 0C B1 93 2C 80 AF 86 4C 90 0A CE CA 43 B2 54 0F 06 CC E4 53 F3 CF E2 AC AB 5C 0D 14 8A 80 71 C0 BC 09 6B 2D 7E 16 8F 8A 9C A7 70 35 92 2A 01 C7 48 79 C0 2B AA F2 40 16 C4 D9 33 3E A0 38 22 79 2B 03 2C 78 CE 33 94 99 60 05 BC 31 84 80 56 76 52 1D 92 A0 6A 3C 91 50 0E 3A 43 CE 01 51 DE 04 4D 96 05 C6 94 81 DC 2D 4F 15 61 58 E0 6C E3 70 14 A8 D2 90 3B 55 E6 9D D8 8E C9 90 38 22 78 E6 0A DF 8C E5 38 C7 6B 02 7C 31 84 60 92 AF 1A 6C E0 6A 3C 8D C0 52 87 78 10 76 59 9B 9C AB E1 6C 78 AC 2B 0F 03 75 9D 85 CE 55 EA BC CF B6 67 A1 78 22 7C F4 DF 19 CA 71 CF BA F0 C6 19 CB 58 96 D8 35 1E 67 61 47 7A D3 B6 84 85 21 E7 00 AF 0B DD 20 0A E2 74 99 1F 58 1C 97 6A 4A C0 CB 19 32 C8 0A F5 62 48 05 67 65 21 D9 2A 07 03 73 C3 3F C8 05 67 65 21 D9 2A 06 A3 C9 15 00 E3 87 7A D3 06 86 17 1A 52 07 70 BD D1 81 D7 54 76 4C 81 C9 76 A3 90 2F 78 ED 60 4B 56 24 60 92 AF 1A 6C E0 70 39 3C 33 7C 60 92 AF 1A 6C E0 6A 3C 8D C0 52 87 7A AE 76 BD DB 12 DB 07 03 B5 C3 2F 44 12 B9 12 5B 86 A3 C8 9C 15 73 95 7C 2F 76 7D B3 3D 0B C9 76 B3 D7 79 F7 4D 58 91 05 2D 80
 * shape 0092 (horizontal line at the top of loadout panel)
    - modify shape records (increase/decrease x deltas by 14 px [280 twips])
        + record 2 (horz lineTo), 'DeltaX' set to 450.65 px
            DF 44 43 BD
            to
            DF 44 66 BD
    - complete hex change:
        + header before
            FF 14 2D 00 00 00 5C 00    [+43 (0x2B) tail bytes, 51 (0x33) bytes total]
        + new data, 51 (0x33) bytes
            FF 14 2D 00 00 00 5C 00 78 13 A5 4D E1 2C 42 65 80 78 14 75 4C 41 2F 82 5F 00 01 00 01 14 00 A0 02 00 03 67 E8 ED B1 01 25 82 8E 97 DF 44 66 BD 0D FC 00
 * sprite 'SoldierLoadoutScreen'
    - modify existing objects (move to the right by 14 px [280 twips]) (+0 bytes)
        + 'lockerListMC', position changed to [-425,-775] (+0 bytes)
            BF 06 1C 00 00 00 26 07 00 52 00 C8 DB 6E 40 00 0E 51 5C A1 00 6C 6F 63 6B 65 72 4C 69 73 74 4D 43 00
            to                                                    ! !
            BF 06 1C 00 00 00 26 07 00 52 00 C8 DB 6E 40 00 0E 55 BC A1 00 6C 6F 63 6B 65 72 4C 69 73 74 4D 43 00
        + unnamed object (id 0089, bracket between lists), position changed to [309.4,104.65] (+0 bytes)
            8A 06 06 0E 00 59 00 1C B8 A1 05 A0
            to                        !! !
            8A 06 06 0E 00 59 00 1C C1 61 05 A0
        + 'inventoryLabel', position changed to [279.4,67.45] (+0 bytes)
            BF 06 19 00 00 00 26 17 00 5F 00 1C A5 E0 A8 A0 69 6E 76 65 6E 74 6F 72 79 4C 61 62 65 6C 00
            to                                     ! !
            BF 06 19 00 00 00 26 17 00 5F 00 1C AE A0 A8 A0 69 6E 76 65 6E 74 6F 72 79 4C 61 62 65 6C 00
        + 'lockerLabel', position changed to [560,67.45] (+0 bytes)
            BF 06 16 00 00 00 26 19 00 61 00 1E AA A0 2A 28 6C 6F 63 6B 65 72 4C 61 62 65 6C 00
            to                                     ! !
            BF 06 16 00 00 00 26 19 00 61 00 1E AF 00 2A 28 6C 6F 63 6B 65 72 4C 61 62 65 6C 00
    - remove existing objects (-37 bytes)
        * 'selectionIndicatorMC' (-37 bytes)
    - modify sprite header to account for changed size
    - complete hex change:
        + header before
            FF 09 49 01 00 00 65 00 01 00    [+ 356 (0x164) tail bytes, 366 (0x16E) bytes total]
        + new data, 329 (0x149) bytes
            FF 09 24 01 00 00 65 00 01 00 8D 06 06 01 00 55 00 C9 00 00 42 0B C8 82 F1 BF 06 1A 00 00 00 26 05 00 53 00 1A 17 85 A1 00 69 6E 76 65 6E 74 6F 72 79 4C 69 73 74 4D 43 00 BF 06 1C 00 00 00 26 07 00 52 00 C8 DB 6E 40 00 0E 55 BC A1 00 6C 6F 63 6B 65 72 4C 69 73 74 4D 43 00 8A 06 06 0E 00 59 00 1C C1 61 05 A0 86 06 06 15 00 5C 00 00 BF 06 14 00 00 00 26 16 00 5D 00 14 A1 31 80 74 69 74 6C 65 46 69 65 6C 64 00 BF 06 19 00 00 00 26 17 00 5F 00 1C AE A0 A8 A0 69 6E 76 65 6E 74 6F 72 79 4C 61 62 65 6C 00 BF 06 16 00 00 00 26 19 00 61 00 1E AF 00 2A 28 6C 6F 63 6B 65 72 4C 61 62 65 6C 00 BF 06 1F 00 00 00 26 1B 00 62 00 20 B7 E4 33 F6 73 6F 6C 64 69 65 72 41 62 69 6C 69 74 79 4C 69 73 74 4D 43 00 BF 06 19 00 00 00 26 1C 00 63 00 20 E3 74 1F 5A 73 6F 6C 64 69 65 72 53 74 61 74 73 4D 43 00 BF 06 18 00 00 00 26 1D 00 64 00 20 C7 06 03 F2 73 6F 6C 64 69 65 72 49 6E 66 6F 4D 43 00 40 00 00 00 3F 0E 19 00 00 00 01 00 65 00 53 6F 6C 64 69 65 72 4C 6F 61 64 6F 75 74 53 63 72 65 65 6E 00
 * class 'InventoryList' (-61 bytes total)
    - modify methods
        + 'onLoad()', add scrollbar initialization
        + 'GetYPosOfItem()' method, add padding to calculation in inner loop
    - add (override) methods
        + 'realizePositons()', calculate and set selection indicator y position and visibility
        + 'setFocus()', based on method in 'LockerList' class, modify to account for differently-sized item boxes
    - remove various lines of code to clear up space for other additions (e.g. new objects in sprite definitions)
        + 'onPopulateDebugData()', debugging-related method
        + 'prevItem()', 'nextItem()', obsolete after moving selection indicator from loadout screen to inventory list
        + remove various debugging-related 'trace()' calls
    - remove all strings corresponding to removed lines of code from constant pool
    - add strings corresponding to added lines of code to constant pool
    - pad constant pool with dummy string (e.g. "1234567890123" and so forth) to maintain total file size
    - complete hex change:
        + header before (not an actual swf header)
            5F 5F 50 61 63 6B 61 67 65 73 2E 49 6E 76 65 6E 74 6F 72 79 4C 69 73 74 00 FF 0E 04 0D 00 00    [3329 (0xD01) tail bytes, 3360 (0xD20) bytes total]
        + new data, 3299 (0xCE3) bytes
            5F 5F 50 61 63 6B 61 67 65 73 2E 49 6E 76 65 6E 74 6F 72 79 4C 69 73 74 00 FF 0E C7 0C 00 00 88 00 88 1F 04 48 00 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 00 73 65 6C 65 63 74 69 6F 6E 49 6E 64 69 63 61 74 6F 72 4D 43 00 5F 79 00 66 6F 63 75 73 43 61 63 68 65 49 64 00 6E 61 76 69 67 61 74 6F 72 00 73 65 74 53 65 6C 65 63 74 65 64 00 67 65 74 54 6F 74 61 6C 48 65 69 67 68 74 00 73 63 72 6F 6C 6C 62 61 72 00 6D 79 53 63 72 6F 6C 6C 62 61 72 00 53 65 74 54 61 72 67 65 74 4C 69 73 74 00 73 65 74 46 6F 63 75 73 00 67 65 74 49 6E 64 65 78 00 64 69 73 70 6C 61 79 48 65 69 67 68 74 00 30 00 4E 6F 74 69 66 79 53 65 6C 65 63 74 65 64 49 6E 64 65 78 43 68 61 6E 67 65 64 00 72 65 61 6C 69 7A 65 50 6F 73 69 74 69 6F 6E 73 00 73 74 61 72 74 50 61 64 64 69 6E 67 00 73 65 6C 65 63 74 6F 72 4D 43 00 5F 76 69 73 69 62 6C 65 00 5F 67 6C 6F 62 61 6C 00 49 6E 76 65 6E 74 6F 72 79 4C 69 73 74 00 70 61 64 64 69 6E 67 00 58 43 6F 6D 4C 69 73 74 00 70 72 6F 74 6F 74 79 70 65 00 49 43 6F 6E 74 61 69 6E 65 72 49 74 65 6D 00 6F 6E 4C 6F 61 64 00 41 64 64 49 6E 76 65 6E 74 6F 72 79 49 74 65 6D 00 4F 62 6A 65 63 74 00 49 54 45 4D 5F 54 59 50 45 5F 41 52 4D 4F 52 00 49 54 45 4D 5F 54 59 50 45 5F 57 45 41 50 4F 4E 00 49 54 45 4D 5F 54 59 50 45 5F 53 4D 41 4C 4C 5F 49 54 45 4D 00 6C 69 73 74 49 74 65 6D 49 64 65 6E 74 69 66 69 65 72 00 53 4C 5F 61 72 6D 6F 72 5F 69 6E 76 65 6E 74 6F 72 79 5F 73 6C 6F 74 00 53 4C 5F 77 65 61 70 6F 6E 5F 69 6E 76 65 6E 74 6F 72 79 5F 73 6C 6F 74 00 53 4C 5F 69 74 65 6D 5F 69 6E 76 65 6E 74 6F 72 79 5F 73 6C 6F 74 00 69 6E 69 74 49 74 65 6D 54 79 70 65 00 69 6E 69 74 49 74 65 6D 49 6D 67 00 6F 77 6E 65 72 53 63 72 65 65 6E 00 5F 70 61 72 65 6E 74 00 69 6E 69 74 4E 75 6D 49 74 65 6D 73 00 67 65 74 53 69 7A 65 00 41 64 64 4C 69 73 74 49 74 65 6D 00 6F 6E 49 74 65 6D 4C 6F 61 64 00 6C 65 66 74 54 6F 4C 6F 61 64 43 6F 75 6E 74 00 49 6E 76 65 6E 74 6F 72 79 49 74 65 6D 73 4C 6F 61 64 65 64 00 46 6C 61 73 68 52 61 69 73 65 43 6F 6D 6D 61 6E 64 00 66 6C 61 73 68 00 65 78 74 65 72 6E 61 6C 00 45 78 74 65 72 6E 61 6C 49 6E 74 65 72 66 61 63 65 00 63 61 6C 6C 00 53 6F 6C 64 69 65 72 4C 6F 61 64 6F 75 74 00 49 6E 76 65 6E 74 6F 72 79 4C 69 73 74 46 69 6E 69 73 68 65 64 4C 6F 61 64 69 6E 67 00 6F 6E 4C 6F 73 65 46 6F 63 75 73 00 45 6E 76 69 72 6F 6E 6D 65 6E 74 00 69 6E 73 74 61 6E 63 65 00 49 73 4D 6F 75 73 65 41 63 74 69 76 65 00 67 65 74 53 65 6C 65 63 74 65 64 49 6E 64 65 78 00 49 6E 76 65 6E 74 6F 72 79 4C 69 73 74 49 74 65 6D 00 67 65 74 49 74 65 6D 00 66 6F 63 75 73 00 5F 61 6C 70 68 61 00 69 6E 76 65 6E 74 6F 72 79 4C 61 62 65 6C 00 69 6E 76 65 6E 74 6F 72 79 54 69 74 6C 65 00 6F 6E 52 65 63 65 69 76 65 46 6F 63 75 73 00 70 72 65 76 49 74 65 6D 00 52 65 66 72 65 73 68 53 65 6C 65 63 74 6F 72 49 63 6F 6E 00 6E 65 78 74 49 74 65 6D 00 47 65 74 59 50 6F 73 4F 66 49 74 65 6D 00 67 65 74 48 65 69 67 68 74 00 64 69 73 70 6F 73 65 00 69 6E 70 75 74 00 41 53 53 65 74 50 72 6F 70 46 6C 61 67 73 00 96 02 00 08 13 1C 96 02 00 08 14 4E 12 12 9D 02 00 8E 08 96 02 00 08 13 1C 96 02 00 08 14 8E 08 00 00 00 00 03 19 00 1E 00 96 0C 00 06 00 00 00 00 00 00 00 00 04 02 03 52 17 96 09 00 04 01 08 15 07 05 00 00 00 4F 87 01 00 01 4F 96 02 00 08 13 1C 96 02 00 08 14 4E 96 02 00 08 16 1C 69 96 04 00 04 01 08 17 4E 87 01 00 02 17 96 02 00 08 13 1C 96 02 00 08 18 4E 96 07 00 07 01 00 00 00 08 13 1C 96 02 00 08 14 4E 2C 96 04 00 04 02 08 19 8E 08 00 00 00 00 03 19 00 35 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 19 52 17 96 08 00 04 01 08 07 04 01 08 08 4E 4F 96 0B 00 04 01 07 01 00 00 00 04 01 08 07 4E 96 02 00 08 09 52 17 4F 96 04 00 04 02 08 1A 8E 32 00 00 04 00 08 29 00 03 74 79 70 65 00 05 74 69 74 6C 65 00 06 69 6D 67 4C 61 62 65 6C 00 04 6E 75 6D 45 71 75 69 70 61 62 6C 65 49 74 65 6D 73 00 FE 00 96 0B 00 06 00 00 00 00 00 00 00 00 08 1B 40 87 01 00 02 17 96 01 00 03 87 01 00 07 17 96 02 00 04 03 87 01 00 00 96 02 00 08 14 1C 96 02 00 08 1C 4E 66 9D 02 00 2D 00 96 04 00 04 00 08 14 1C 96 02 00 08 1D 4E 66 9D 02 00 28 00 96 04 00 04 00 08 14 1C 96 02 00 08 1E 4E 66 9D 02 00 23 00 99 02 00 2D 00 96 06 00 04 01 08 1F 08 20 4F 99 02 00 23 00 96 06 00 04 01 08 1F 08 21 4F 99 02 00 14 00 96 06 00 04 01 08 1F 08 22 4F 99 02 00 05 00 96 01 00 03 3E 96 06 00 04 02 08 23 04 03 4F 96 06 00 04 02 08 24 04 06 4F 96 08 00 04 02 08 25 04 01 08 26 4E 4F 96 04 00 04 03 08 14 1C 96 02 00 08 1E 4E 49 12 9D 02 00 0A 00 96 06 00 04 02 08 27 04 04 4F 96 15 00 04 02 05 00 05 01 04 05 06 00 00 00 00 00 00 00 00 04 01 08 28 52 96 09 00 07 05 00 00 00 04 01 08 29 52 17 4F 96 04 00 04 02 08 2A 8E 0E 00 00 01 00 04 19 00 03 69 74 65 6D 00 75 00 96 0B 00 04 03 07 01 00 00 00 04 02 08 2A 52 17 96 04 00 04 01 08 2B 4E 96 09 00 06 00 00 00 00 00 00 00 00 49 12 9D 02 00 4A 00 96 06 00 08 2C 04 01 08 26 4E 4B 96 09 00 08 2D 07 03 00 00 00 08 2E 1C 96 02 00 08 2F 4E 96 02 00 08 30 4E 96 02 00 08 31 52 17 96 0B 00 06 00 00 00 00 00 00 00 00 08 32 1C 96 04 00 04 01 08 26 4E 2B 96 02 00 08 33 52 17 4F 96 04 00 04 02 08 34 8E 08 00 00 00 00 08 19 00 42 01 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 34 52 17 96 14 00 06 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 08 35 1C 96 02 00 08 36 52 96 02 00 08 37 52 87 01 00 05 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 28 52 87 01 00 06 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 38 52 87 01 00 07 17 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 04 17 96 04 00 04 04 04 06 48 12 9D 02 00 91 00 96 02 00 08 39 1C 96 02 00 04 04 4B 96 09 00 07 01 00 00 00 04 01 08 3A 52 2B 87 01 00 03 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 03 08 34 52 17 96 04 00 04 04 04 07 49 12 4C 12 9D 02 00 0D 00 17 96 06 00 04 03 04 01 08 3B 4E 49 12 4C 12 9D 02 00 07 00 17 96 02 00 04 05 12 12 9D 02 00 12 00 96 09 00 04 03 08 3C 07 32 00 00 00 4F 99 02 00 0D 00 96 09 00 04 03 08 3C 07 64 00 00 00 4F 96 02 00 04 04 50 87 01 00 04 17 99 02 00 61 FF 96 02 00 04 05 12 12 9D 02 00 1F 00 96 04 00 04 01 08 26 4E 96 02 00 08 3D 4E 96 02 00 08 3E 4E 96 07 00 08 3C 07 28 00 00 00 4F 4F 96 04 00 04 02 08 3F 8E 08 00 00 00 00 05 19 00 94 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 3F 52 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 28 52 87 01 00 04 17 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 03 17 96 04 00 04 03 04 04 48 12 9D 02 00 2E 00 96 02 00 04 03 4B 96 09 00 07 01 00 00 00 04 01 08 3A 52 96 07 00 08 3C 07 64 00 00 00 4F 96 02 00 04 03 50 87 01 00 03 17 99 02 00 C4 FF 96 04 00 04 01 08 26 4E 96 02 00 08 3D 4E 96 02 00 08 3E 4E 96 07 00 08 3C 07 64 00 00 00 4F 4F 96 04 00 04 02 08 0A 8E 0C 00 00 01 00 09 29 00 02 69 64 00 24 02 96 06 00 04 01 08 03 04 02 4F 96 0B 00 04 02 07 01 00 00 00 04 01 08 3A 52 87 01 00 03 17 96 03 00 04 03 03 49 12 9D 02 00 34 00 96 04 00 04 01 08 3B 4E 96 01 00 03 49 4C 9D 02 00 0C 00 17 96 06 00 04 02 00 2D 31 00 49 12 12 9D 02 00 0A 00 96 06 00 04 01 08 03 04 02 4F 96 01 00 03 3E 96 04 00 04 01 08 3B 4E 96 02 00 08 18 1C 96 02 00 04 03 2B 49 12 12 9D 02 00 7C 01 96 0B 00 04 02 07 01 00 00 00 04 01 08 04 4E 96 02 00 08 0B 52 96 09 00 07 01 00 00 00 04 01 08 04 4E 96 02 00 08 05 52 17 96 04 00 04 01 08 3B 4E 96 01 00 03 49 12 12 9D 02 00 18 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 3B 4E 96 02 00 08 34 52 17 96 06 00 04 01 08 3B 08 18 1C 96 02 00 04 03 2B 4F 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 3B 4E 96 02 00 08 3F 52 17 96 0B 00 04 02 07 01 00 00 00 04 01 08 04 4E 96 02 00 08 0B 52 87 01 00 07 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 3B 4E 96 02 00 08 44 52 87 01 00 04 17 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 06 52 87 01 00 08 17 96 0B 00 04 07 07 01 00 00 00 04 01 08 43 52 87 01 00 05 17 96 06 00 04 05 04 01 08 10 4E 47 87 01 00 06 17 96 06 00 04 08 04 01 08 0C 4E 67 12 9D 02 00 65 00 96 0B 00 04 06 06 00 00 00 00 00 00 00 00 48 12 9D 02 00 19 00 96 0F 00 04 01 08 10 06 00 00 00 00 00 00 00 00 04 05 0B 4F 99 02 00 37 00 96 04 00 04 06 04 04 47 96 04 00 04 01 08 0C 4E 67 12 9D 02 00 20 00 96 11 00 04 01 08 10 06 00 00 00 00 00 00 00 00 04 05 04 04 47 96 04 00 04 01 08 0C 4E 0B 0B 4F 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 07 4E 96 02 00 08 0E 52 17 96 04 00 04 01 08 2B 4E 96 09 00 06 00 00 00 00 00 00 00 00 49 12 9D 02 00 12 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 01 08 0F 52 17 4F 96 04 00 04 02 08 0F 8E 08 00 00 00 00 03 19 00 75 00 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 0F 52 17 96 09 00 07 00 00 00 00 04 01 08 38 52 96 09 00 07 01 00 00 00 04 01 08 43 52 96 04 00 04 01 08 10 4E 47 96 05 00 07 00 00 00 00 47 87 01 00 03 17 96 04 00 04 01 08 01 4E 96 04 00 08 02 04 03 4F 96 04 00 04 01 08 01 4E 96 09 00 08 12 04 03 07 C0 FF FF FF 67 96 07 00 04 03 07 E3 01 00 00 48 10 4F 4F 96 04 00 04 02 08 43 8E 0F 00 00 01 00 05 29 00 04 69 6E 64 65 78 00 B5 00 96 0B 00 04 04 06 00 00 00 00 00 00 00 00 48 12 4C 12 9D 02 00 16 00 17 96 0F 00 04 04 06 00 00 00 00 00 00 00 00 04 01 08 28 52 67 12 12 9D 02 00 79 00 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 03 17 96 09 00 06 00 00 00 00 00 00 00 00 87 01 00 02 17 96 04 00 04 02 04 04 48 12 9D 02 00 43 00 96 0D 00 04 03 06 00 00 00 00 00 00 00 00 04 02 4B 96 09 00 07 01 00 00 00 04 01 08 3A 52 96 02 00 08 44 52 47 96 04 00 04 01 08 15 4E 47 87 01 00 03 17 96 02 00 04 02 50 87 01 00 02 17 99 02 00 AF FF 96 02 00 04 03 3E 96 05 00 07 9C FF FF FF 3E 4F 96 04 00 04 02 08 45 8E 08 00 00 00 00 03 19 00 1B 00 96 05 00 04 01 08 46 03 4F 96 0D 00 06 00 00 00 00 00 00 00 00 04 02 08 45 52 17 4F 96 09 00 04 01 08 1C 07 01 00 00 00 4F 96 09 00 04 01 08 1D 07 02 00 00 00 4F 96 09 00 04 01 08 1E 07 03 00 00 00 4F 96 08 00 07 01 00 00 00 02 08 13 1C 96 02 00 08 14 4E 96 02 00 08 17 4E 96 07 00 07 03 00 00 00 08 47

Tools used

  • Notepad++ with Hex-Editor plugin
  • HxD hex editor
  • JPEXS Free Flash Decompiler (for editing ActionScript classes)
  • Sothink SWF Decompiler (can view hex of swf tags, useful for tracking down specific locations)
  • SWFTools (in particular swfdump.exe to list shape-/sprite-related tag information to help finding specific position offsets)

 

 

 

For those that don't want to bother with several smaller hex edits, here's the complete flash file:

Simply copy its contents [142,189 (0x22B6D) bytes] into the command1.upk file starting at offset 0x2D73D87 :smile:

 

Enjoy!

Edited by XMarksTheSpot
Link to comment
Share on other sites

Impressive work. :thumbsup: Any chance we might talk you into a Wiki article on how you did this? Sprite editing is pretty much a 'black art' around here at the moment. I'll be happy to rough up a page or simply convert your article to Wiki format myself it that will help.

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

Impressive work. :thumbsup: Any chance we might talk you into a Wiki article on how you did this?

I suppose I could be persuaded into doing that - what exactly do you have in mind? With regards to sprite definition edits there's already the Launch sprite change article which did a good job of pointing me in the right directions in the beginning, the rest was done via careful study of the SWF File Format Specification to get the hang of decoding and modifying all those bit-packed swf tags.

Link to comment
Share on other sites

What *I* think is needed is a tutorial that spells out the basic steps to get to the point where the modder can then make the changes they want. An example of how you found and then copied the scroll bar from an existing sprite and grafted it into the Loadout sprite should be sufficient to get the idea across. Certainly feel free to point people to existing articles such as those you just mentioned at appropriate places (please include links) and perhaps some descriptions of particular elements applicable to your example. And end with any cautions or advice to finish the package for whatever install method will be needed. Whether it should be considered a Beginner, Intermediate, or Advanced tutorial would be up to you, but usually that is based upon how much prior knowledge you assume in your audience when writing the article and how much detail you are willing to provide. It's always reasonable to point people to other articles where they can gain the required prerequisite knowledge. (No need to re-write material available elsewhere.)

 

Certainly others who are more directly interested may better ideas as to what they would like to see. But something along the lines of the 'Hex editing UPK files' Wiki article. There is a 'Modding Subject' template available to use as the basic article framework.

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

I found a very minor bug with the added scrollbar that in no way breaks things. If you use the mouse wheel to scroll the inventory the locker also scrolls. Works fine for scrolling the locker by itself.

Yeah, that and the focus system is a bit messed up, haven't noticed that behavior in my initial testing, thanks for pointing it out.

Maybe I'll get around to fixing that, but it might not be worth the trouble :wink: Feel free to take a stab at it though.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...