凯恩酒馆吧 关注:1,033贴子:5,852

回复:【1.13c】自适应分辨率快速移动物品MAP测试

只看楼主收藏回复

风大,这个补丁和 D2DX 一起用时,只有 scale=1 的时候快速存取有效


IP属地:北京19楼2021-05-28 21:08
收起回复
    风大,想请教您个问题,因为你不接受私信,故留言此贴,还望指教。
    你好,大佬,请教个d2的问题!我想给亚马逊修改下无限标枪和箭矢,尝试修改了skill.txt 的decquant参数noammo参数,对应技能的decquant改为0,可实现技能不消耗标枪和箭矢。但普通的投掷和射箭,都会消耗,而且炮轰技能也消耗箭矢。百度了好几天还没有么有解决。另外我修改普通throw和attact的decquant为非零值时,箭矢和标枪在普通射箭和投掷时消耗变成一次2个,不知道什么原因。,还请大佬赐教,不胜感激。谢谢!!


    IP属地:陕西20楼2021-05-30 00:09
    收起回复
      2026-04-20 19:42:20
      广告
      不感兴趣
      开通SVIP免广告
      啊哈哈哈哈,能出1.13d上能用的版本吗?


      IP属地:上海21楼2021-05-31 16:27
      回复
        前几天看到了一个d2hackmap的源代码,好像背包上点击交换物品时通过发送窗口消息实现的
        https://gitee.com/andersgong/d2hackmap/blob/master/d2hackmap/QuickSwapItem.cpp
        SendMessage(pMsg->hwnd, WM_MOUSEMOVE, pMsg->wParam, MAKELONG(xpos, ypos));D2CheckInvLocation(PLAYER->pInventory, pItem, *p_D2CursorInvGridX, *p_D2CursorInvGridY, dwBoxType, &gridcount, &itemcount, pInvType->invType);
        if ( itemcount==0 ) {
        SendMessage(pMsg->hwnd, WM_LBUTTONDOWN, pMsg->wParam, MAKELONG(xpos, ypos));
        SendMessage(pMsg->hwnd, WM_LBUTTONUP, pMsg->wParam, MAKELONG(xpos, ypos));
        但scale不等于1时,d2dx里面会把鼠标的坐标乘以一个值。是不是这里也乘以这个值就行了?
        不知道楼主方不方便发一份代码,我试试改改这个值看看?或者方便在d2hackmap.cfg加个配置的吗?


        IP属地:北京23楼2021-06-10 20:38
        收起回复
          今天试了一下,大概知道问题在哪了。
          D2DX采用了一种什么subclassing的技术,大概原理是它会截获所有消息,通过它的d2dxSubclassWndProc;在这个函数里它会把鼠标的坐标除以scale的值,再发回给diablo的处理函数。
          d2hackmap是按照800x600的计算出来的发送消息,被d2dx除以scale后,数值全错了。
          我把那3个 SendMessage 改成下面的就可以了。
          CallWindowProc(origProc, pMsg->hwnd, WM_MOUSEMOVE, pMsg->wParam, MAKELONG(xpos, ypos));
          CallWindowProc(origProc, pMsg->hwnd, WM_LBUTTONDOWN, pMsg->wParam, MAKELONG(xpos, ypos));
          CallWindowProc(origProc, pMsg->hwnd, WM_LBUTTONUP, pMsg->wParam, MAKELONG(xpos, ypos));
          origProc是我在没有d2dx时通过: (WNDPROC)GetWindowLong(pMsg->hwnd, GWL_WNDPROC); 获取的,然后写死了。在我的版本1.13c是这个
          static WNDPROC origProc = (WNDPROC)0x6F8F7740;


          IP属地:北京24楼2021-06-12 22:47
          收起回复
            找了半天,找到下面的代码,可以获取原始的proc地址。
            一共有四个SendMessage,把前面三个SendMessage改成handleMessage后,所有的插件都能用了。
            实际就是消息不发到d2dx插件里了,省的它们干扰了实际的鼠标位置。
            我试了cnc-ddraw的全屏、窗口, d2dx的全屏、窗口和各种scale,都能用了。
            馆主能否帮忙集成到你的插件里?或者方便发一份代码给我,我改改试试?
            我用的这个版本只能支持800x600,而且小地图掉落东西都显示成五角星,很不方便
            static BOOL getOrigProc(HWND hwnd, WNDPROC *origProc)
            {
            TCHAR className[64];
            int classNameLen;
            WNDCLASS classInfo;
            HINSTANCE hInst = GetModuleHandle(NULL);
            *origProc = NULL;
            if (hInst == NULL) {
            return FALSE;
            }
            // Get "Diablo II" class name
            classNameLen = GetClassName(hwnd, &className[0], sizeof(className));
            if (classNameLen == 0) {
            return FALSE;
            }
            if (!GetClassInfo(hInst, className, &classInfo)) {
            return FALSE;
            }
            *origProc = classInfo.lpfnWndProc;
            return TRUE;
            }
            static void handleMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
            {
            static BOOL gotProc;
            static WNDPROC origProc;
            if (!gotProc) {
            getOrigProc(hwnd, &origProc);
            gotProc = TRUE;
            }
            if (origProc != NULL) {
            CallWindowProcA(origProc, hwnd, msg, wParam, lParam);
            } else {
            SendMessageA(hwnd, msg, wParam, lParam);
            }
            }


            IP属地:北京25楼2021-06-13 11:27
            收起回复
              这个版本腰带里有法力药剂时,自动填药到腰带就不起作用了


              IP属地:北京26楼2021-06-20 10:24
              回复
                战网能自动喝药吗?如果可以的话,应该怎么设置


                来自iPhone客户端27楼2021-06-22 08:41
                回复
                  2026-04-20 19:36:20
                  广告
                  不感兴趣
                  开通SVIP免广告
                  还真是。。。这个版本腰带自动添药,时灵时不灵。。。


                  IP属地:北京28楼2021-06-23 08:39
                  回复
                    我下载为什么说内容违法啊


                    IP属地:新疆来自Android客户端29楼2021-06-26 00:21
                    回复
                      楼主看看,链接没了


                      IP属地:新疆来自Android客户端30楼2021-06-26 15:47
                      收起回复
                        奇怪,我这里自动ob会失效…


                        IP属地:广西来自Android客户端32楼2021-07-02 23:34
                        回复
                          这个真的太厉害了。感谢风大,我需要的所有功能这里都全了~!!!!


                          IP属地:上海33楼2021-07-07 12:22
                          收起回复
                            感谢风大的分享。顺带问问这个自动拾取功能有调整拾取范围的功能没,拾取范围太小了,基本上只有站在物品上面才能拾取的到,有什么解决办法没?


                            IP属地:湖南34楼2021-07-13 12:06
                            回复
                              2026-04-20 19:30:20
                              广告
                              不感兴趣
                              开通SVIP免广告
                              @等风来Lietome
                              今天刚注意到,自动BO的顺序是 大叫 战斗体质 战斗指挥
                              不应该是先战斗指挥吗,这个怎么改


                              IP属地:河南35楼2021-07-14 18:07
                              收起回复