暗黑mod吧 关注:5,850贴子:52,690

冷雨整合大背包(纯净,限制护符区域)

只看楼主收藏回复

最近,我整合制作了一版大背包。
发布一下,本贴共包含三个内容:
1、10×8版大背包。
2、16×10版大背包。
3、快速存取补丁计算器Excel。
适用1.13c和各种分辨率。(16×10版要求至少1024×768)


IP属地:山东1楼2021-05-08 17:47回复
    先上图,10×8版



    IP属地:山东3楼2021-05-08 17:48
    回复
      16×10版



      IP属地:山东4楼2021-05-08 17:49
      回复
        先说大背包,
        特点有:
        1、纯净,除大背包,大方块(10×8)外,不含其他任何东西。
        2、划定了护符生效区(8×4),区域外的护符全部无效(但不会变红)。
        这个区域就是原版背包留两列捡东西。
        3、对以下分辨率制作了快速存取补丁。
        640 × 480
        800 × 600
        1024 × 768
        1280 × 720
        1440 × 900
        1600 × 900
        1920 × 1080
        未在列的分辨率可以用 快速存取补丁计算器Excel,自己改。


        IP属地:山东5楼2021-05-08 17:50
        收起回复
          然后说 快速存取补丁计算器Excel,这个工具可以配合UE修复快速存取失效,简单易用,小白可用。不仅限于我发布的大背包,原版和其他版本也能用。
          提供【10×8】,【16×10】,【原版背包+大箱子PlugY】三个已经填好数据的版本。
          比如我现在要做一个10×8版1600×900的快速存取补丁。
          第一步,打开对应excel,填入分辨率。


          计算结果就出来了。

          第二步,用UE打开d2hackmap.dll,转到地址 0x2b4a0h (CTRL+G),把上面数据一股脑填进去保存就完事。

          如果是装了其他大背包/大盒子的,请参阅Excel中关于数据来源的说明。


          IP属地:山东6楼2021-05-08 17:52
          收起回复
            最后说说这两个版本的来源。
            10×8版是在d2mods网站上的一版修改而来。
            16×10版是基于这个帖子修改的:
            暗黑破坏神吧-【超大型物品栏】顶 风 作 案
            作者:@慕雨昭夕
            发布贴完。


            IP属地:山东7楼2021-05-08 18:00
            回复
              赞 大佬牛逼


              IP属地:广东8楼2021-05-08 19:08
              回复
                然后讨论下技术,目前我能想到三个需要改进的点。
                第一点,护符区域移动到上方更加合理。切换原版背包 / 大背包更方便些。
                但是目前会产生一个BUG:

                大板子可以通过蹭边的方式生效。这是因为暗黑2的物品坐标是第一个格子的坐标。下面贴出我用(Chao)的代码:
                D2Common.dll
                Address Hex dump Command Comments
                6FD78843F7D8NEG EAX
                6FD788455EPOP ESI
                6FD78846E9 A2390400JMP 6FDBC1ED ;|Jump to custom code
                Address Hex dump Command Comments
                6FDBC1ED 85C0 TEST EAX,EAX
                6FDBC1EF 75 03 JNE SHORT 6FDBC1F4
                6FDBC1F1 C2 0800 RETN 8
                6FDBC1F4 8B44E4 04 MOV EAX,DWORD PTR SS:[ESP+4]
                6FDBC1F8 8B40 2C MOV EAX,DWORD PTR DS:[EAX+2C]
                6FDBC1FB 8378 0C 00 CMP DWORD PTR DS:[EAX+0C],0
                6FDBC1FF 72 1A JB SHORT 6FDBC21B
                6FDBC201 8378 0C 07 CMP DWORD PTR DS:[EAX+0C],7
                6FDBC205 77 14 JA SHORT 6FDBC21B
                6FDBC207 8378 10 04 CMP DWORD PTR DS:[EAX+10],4
                6FDBC20B 72 0E JB SHORT 6FDBC21B
                6FDBC20D 8378 10 07 CMP DWORD PTR DS:[EAX+10],7
                6FDBC211 77 08 JA SHORT 6FDBC21B
                6FDBC213 B8 01000000 MOV EAX,1
                6FDBC218 C2 0800 RETN 8
                6FDBC21B 31C0 XOR EAX,EAX
                6FDBC21D C2 0800 RETN 8
                这段代码是参考的 The Phrozen Keep 和 snej 上的帖子得到。
                查阅资料得知 6FD787D0 处的函数应该是这样的:
                __stdcall AreCharmReqsMet(struct Unit *pItem, struct Unit *pUnit)
                而 6FDBC1FB 处 CMP 指令 EAX 寄存器存的显然是 某个结构体基址指针。看前面的代码可以知道, MOV EAX,DWORD PTR SS:[ESP+4] 得到的是 struct Unit pItem 的基址, MOV EAX,DWORD PTR DS:[EAX+2C] 得到 Path 结构体基址(DWORD),然后 EAX+0C 得到X坐标(DWORD),EAX+10 得到Y坐标(DWORD)。
                这两个结构体的结构应该是:
                struct Unit {
                ...
                Path * path // 0x2C
                ....
                }
                Path {
                ...
                x // 0x0C
                y // 0x10
                ...
                }
                Unit结构体里面应该会有物品信息,只要能找到物品类型,就能判断是否为大板子,后面的程序就好写了。
                目前我正在翻 PlugY 大箱子的源代码 ,The Phrozen Keep 还有 d2Common.dll 的汇编代码。争取解决这个问题。


                IP属地:山东9楼2021-05-08 20:34
                收起回复
                  先顶
                  收集起来再说
                  “已收藏”,关注后续发展


                  IP属地:湖北10楼2021-05-08 21:29
                  收起回复
                    特来支持,作者辛苦,已收藏。


                    IP属地:辽宁来自iPhone客户端11楼2021-05-08 22:44
                    收起回复
                      目测不会用,但给楼主技术流点赞……拾荒者有救了hhhhh


                      IP属地:北京12楼2021-05-08 23:01
                      收起回复
                        有的MOD用计算器算好了,用UE修改了没效果不知道是怎么回事。。。


                        IP属地:北京来自iPhone客户端13楼2021-05-09 00:04
                        收起回复
                          建议护符生效区用在最上面10*8,毕竟有些build是需要放满板子的,这样就不用纠结把板子放上面蹭边的问题了吧?


                          IP属地:湖南来自Android客户端15楼2021-05-09 04:08
                          收起回复
                            感谢大佬分享。


                            IP属地:宁夏来自iPhone客户端16楼2021-05-09 06:59
                            回复
                              大佬🐮🍺!支持


                              IP属地:重庆来自iPhone客户端17楼2021-05-09 12:30
                              回复