台服dnf吧 关注:125,295贴子:2,087,442
  • 6回复贴,共1

【DXF】0725客户端插件(C--之路,借花献佛)

取消只看楼主收藏回复

1、启动动画;
2、四项评分;
3、基础功能修复;
xini_file写法优化(默认值写入):

四项评分:

基础功能修复(70S2开源插件里都有):


IP属地:广西1楼2025-02-24 01:40回复
    国际惯例


    IP属地:广西来自iPhone客户端2楼2025-02-24 01:41
    收起回复
      2026-02-26 16:51:08
      广告
      不感兴趣
      开通SVIP免广告
      - 自定义四项评分坐标(默认位置0,0)
      以下偏移(-100,-335)

      - 0725GM开启的功能


      IP属地:广西20楼2025-02-24 23:04
      回复
        强迫症小伙伴自行修改(未兼容宽屏)
        // 四项评分 xPos偏移 yPos偏移
        void SetRandView(std::string exeType, int xPos, int yPos) {
        if (exeType == "0725") {
        // 评分
        *(DWORD*)0x004C095B = 0x01010101;//从左到右每个字节分别是 伤害点数 技巧 操作 被击数(00关/01开)
        //*(DWORD*)0x004C095B = 0x00000000;
        //评分系统总体Y轴
        *(int*)0x008EC303 = -15;//有 支愿兵控件时
        *(int*)0x008EC329 = -15;//无 支愿兵控件时
        *(int*)0x008EC383 += xPos;//连击杀伤率 字 X轴 728
        *(int*)0x008EC3D9 += xPos;//连击杀伤率 次(%) X轴 711
        *(int*)0x008EC413 += xPos;//连击杀伤率 数 X轴 711
        *(int*)0x008EC371 += yPos;//连击杀伤率 总 Y轴 459
        *(int*)0x008EC471 += xPos;//评分 字 X轴 767
        *(int*)0x008EC45F += yPos;//评分 字 Y轴 479
        *(int*)0x008EC5DC += xPos;//评分 数 X轴 766
        *(int*)0x008EC603 += yPos;//评分 数 Y轴 479
        *(int*)0x008EC6A4 += xPos - 10 - 2;//伤害点数 字 X轴 737 -> 727
        *(int*)0x008EC6F9 += xPos - 2;//伤害点数 次 X轴 716
        *(int*)0x008EC725 += xPos - 2;//伤害点数 数 X轴 716
        *(int*)0x008EC684 += yPos;//伤害点数 总 Y轴 439
        *(DWORD*)0x008E7C0E = 300;//被伤害 字 Y轴 368
        *(DWORD*)0x008E7C94 = 300;//被伤害 数 Y轴 368
        *(int*)0x008ECB83 += xPos;//技巧 字 X轴 753
        *(int*)0x008ECBD9 += xPos;//技巧 次 X轴 736
        *(int*)0x008ECBF5 += xPos;//技巧 数 X轴 736
        *(int*)0x008ECB71 += yPos;//技巧 总 Y轴 439
        *(int*)0x008EC9B3 += xPos;//操作 字 X轴 753
        *(int*)0x008ECA09 += xPos;//操作 次(%) X轴 736
        *(int*)0x008ECA28 += xPos;//操作 数 X轴 736
        *(int*)0x008EC993 += yPos;//操作 总 Y轴 439
        //向上平移一栏(高度20)
        *(int*)0x008EC7C1 += xPos - 10 - 4;//被击数 字 X轴 765
        *(int*)0x008EC816 += xPos - 10 - 4;//被击数 次 X轴 744
        *(int*)0x008EC842 += xPos - 10 - 4;//被击数 数 X轴 744
        *(int*)0x008EC7A1 += yPos - 20;//被击数 总 Y轴 439
        //特效评分系统坐标
        *(int*)0x008E7A49 = 668 + xPos; //操作 字 X轴
        *(int*)0x008E7AB3 = 660 + xPos; //操作 字 X轴修正
        *(int*)0x008E7AF5 = 660 + xPos; //操作 数 X轴
        *(int*)0x008E7AD8 = 402 + yPos; //操作 字 Y轴
        *(int*)0x008E7B46 = 404 + yPos; //操作 数 Y轴
        *(int*)0x008E7909 = 678 + xPos; //技巧 字 X轴
        *(int*)0x008E7973 = 670 + xPos; //技巧 字 X轴修正
        *(int*)0x008E79B5 = 670 + xPos; //技巧 数 X轴
        *(int*)0x008E7998 = 423 + yPos; //技巧 字 Y轴
        *(int*)0x008E7A06 = 422 + yPos; //技巧 数 Y轴
        }
        }


        IP属地:广西21楼2025-02-24 23:08
        回复
          2025-02-26
          - extern定义全局变量
          - HookPacket、HookChat兼容0627、0725使用
          - 自定义信息窗口透明度(0725基础功能)
          - 自定义动画倍率
          - 0725免hosts
          - 增加0725基础功能修复



          IP属地:广西23楼2025-02-26 21:26
          回复
            2025-03-09更新记录
            - 自定义展示Name2
            - 自定义展示物品品级(S2插件GradeInfo品级)
            - 自定义展示物品图标(需要开启Name2)
            - 客户端角色等级上限(0725插件实现不完美、需要在frida中设置服务端等级上限,参考frida-project SetMaxLevel)
            - 关闭回购商店(0627/0725)
            - 引入frida-gum.h
            - 修改全局变量
            引入frida-gum.h(与其他项目平级):
            添加:$(SolutionDir)frida-gum


            源码:
            // 0725 Name2、图标、品级
            void ItemInfoWin(int ex_Name2, int ex_Icon, int ex_Grade) {
            GumInterceptor* v = gum_interceptor_obtain();
            if (ex_Grade) {
            gum_interceptor_replace_fast(v, (gpointer)0x7B4F80, (gpointer)hookGetEquimGradeColor_7B4F80, (gpointer*)&getEquimGradeColor_7B4F80);
            gum_interceptor_replace_fast(v, (gpointer)0xF44A30, (gpointer)hookDrawWeightInfoText_F44A30, (gpointer*)&drawWeightInfoText_F44A30);
            WriteJmpCode((void*)0x007888DB, hookGradeDecrypt);
            WriteJmpCode((void*)0x011F2B9A, hookColor1);
            }
            if (ex_Icon) {
            WriteJmpCode((void*)0x00F40006, drawIconV2);
            }
            if (ex_Name2) {
            *(BYTE*)0x011D25AE = 0xFF;
            *(WORD*)0x011D25AF = 0xCA89;
            std::vector<RelocatHookInfo>* hook = new std::vector<RelocatHookInfo>(32);
            auto b = hook->begin();
            int MaxLine = MaxItemInfoLine;
            hook->resize(2);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F6B6F8, MaxItemInfoLine);
            b++->setValue(H_DWORD, 0x00F6B6FF, (int)&MaxLine);
            cdeclCall my_F6B610 = (cdeclCall)tools_relocation_hook(0xF6B610, 0xF6B72F, hook);
            hook->resize(2);
            b = hook->begin();
            b++->setValue(H_DWORD, 0x00F6B5CA, MaxItemInfoLineValue); b++->setValue(H_BYTE, 0x00F6B5D2, MaxItemInfoLineValueP);
            cdeclCall1 my_F6B4C0 = (cdeclCall1)tools_relocation_hook(0xF6B4C0, 0xF6B601, hook);
            hook->resize(8);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F6B783, 3);
            b++->setValue(H_BYTE, 0x00F6B787, 3);
            b++->setValue(H_DWORD, 0x00F6B7BC, 0);
            b++->setValue(H_BYTE, 0x00F6B7EA, 0);
            b++->setValue(H_BYTE, 0x00F6B81E, 0);
            b++->setValue(H_BYTE, 0x00F6B7FC, 0);
            b++->setValue(H_CALL, 0x00F6B797, (int)my_F6B610);
            b++->setValue(H_CALL, 0x00F6B779, (int)my_F6B4C0);
            cdeclCall my_F6B730 = (cdeclCall)tools_relocation_hook(0xF6B730, 0xF6BB13, hook);
            hook->resize(3);
            b = hook->begin();
            b++->setValue(H_DWORD, 0x00F6CC69, MaxItemInfoLineValue); b++->setValue(H_BYTE, 0x00F6CC71, MaxItemInfoLineValueP);
            b++->setValue(H_BYTE, 0x00F6CB1B, 3);
            cdeclCall1 my_F6CAF0 = (cdeclCall1)tools_relocation_hook(0xF6CAF0, 0xF6CCC2, hook);
            hook->resize(1);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F6D615, MaxItemInfoLine - 3);
            cdeclCall1 my_F6D2A0 = (cdeclCall1)tools_relocation_hook(0xF6D2A0, 0x00F6D807, hook);
            hook->resize(1);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F6D132, MaxItemInfoLine - 3);
            cdeclCall my_F6CDE0 = (cdeclCall)tools_relocation_hook(0xF6CDE0, 0x00F6D296, hook);
            hook->resize(5);
            b = hook->begin();
            b++->setValue(H_CALL, 0x00F6DCE7, (int)my_F6B730);
            b++->setValue(H_CALL, 0x00F6DC3C, (int)my_F6CAF0);
            b++->setValue(H_CALL, 0x00F6DC42, (int)my_F6B4C0);
            b++->setValue(H_CALL, 0x00F6DCD6, (int)my_F6D2A0);
            b++->setValue(H_CALL, 0x00F6DCA6, (int)my_F6CDE0);
            cdeclCall my_F6DBF0 = (cdeclCall)tools_relocation_hook(0xF6DBF0, 0xF6DD49, hook);
            hook->resize(1);
            b = hook->begin();
            b++->setValue(H_CALL, 0x00F6EA45, (int)my_F6DBF0);
            my_F6E9A0 = (cdeclCall)tools_relocation_hook(0xF6E9A0, 0xF6EA9D, hook);
            gum_interceptor_replace_fast(v, (gpointer)0xF6E9A0, (gpointer)hook_F6E9A0, NULL);
            hook->resize(9);
            b = hook->begin();
            b++->setValue(H_DWORD, 0x00F5E6F3, MaxItemInfoLineValue); b++->setValue(H_BYTE, 0x00F5E6FB, MaxItemInfoLineValueP);
            b++->setValue(H_BYTE, 0x00F5E722, MaxItemInfoLine);
            b++->setValue(H_DWORD, 0x00F5E934, MaxItemInfoLineValue); b++->setValue(H_BYTE, 0x00F5E958, MaxItemInfoLineValueP);
            b++->setValue(H_BYTE, 0x00F5E95C, MaxItemInfoLine);
            b++->setValue(H_JUMP, 0x00F5E3B7, (int)drawName2);
            b++->setValue(H_WORD, 0x00F5E6DA, 0xB890);
            b++->setValue(H_WORD, 0x00F5E6DC, (int)hookDrawHeaderText);
            thisCall2Args2 drawItemInfoWinHeader_F5E200 = (thisCall2Args2)tools_relocation_hook(0xF5E200, 0xF5EDC1, hook);
            hook->resize(3);
            b = hook->begin();
            b++->setValue(H_DWORD, 0x00F60310, MaxItemInfoLineValue); b++->setValue(H_BYTE, 0x00F60318, MaxItemInfoLineValueP);
            b++->setValue(H_CALL, 0x00F60205, (int)drawItemInfoWinHeader_F5E200);
            thisCall1Args2 myDrawItemInfoWin_F601F0 = (thisCall1Args2)tools_relocation_hook(0x00F601F0, 0x00F6032E, hook);
            b = hook->begin();
            b++->setValue(H_DWORD, 0x00F601C2, MaxItemInfoLineValue); b++->setValue(H_BYTE, 0x00F601CA, MaxItemInfoLineValueP);
            b++->setValue(H_CALL, 0x00F5FF1E, (int)drawItemInfoWinHeader_F5E200);
            thisCall1Args2 myDrawEquimInfoWin_F5FEE0 = (thisCall1Args2)tools_relocation_hook(0xF5FEE0, 0x00F601E2, hook);
            hook->resize(3);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F603F0, MaxItemInfoLine);
            b++->setValue(H_CALL, 0x00F60397, (int)myDrawItemInfoWin_F601F0);
            b++->setValue(H_CALL, 0x00F6037D, (int)myDrawEquimInfoWin_F5FEE0);
            myShowInfoWin_F60330 = (thisCall1Args2)tools_relocation_hook(0xF60330, 0xF60495, hook);
            gum_interceptor_replace_fast(v, (gpointer)0xF60330, (gpointer)hookShowInfoWin_F60330, NULL);
            hook->resize(1);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F45DBB, MaxItemInfoLine);
            my_F45CA0 = (thisCall1Args2)tools_relocation_hook(0xF45CA0, 0xF45F40, hook);
            gum_interceptor_replace_fast(v, (gpointer)0xF45CA0, (gpointer)hook_F45CA0, NULL);
            b = hook->begin();
            b++->setValue(H_BYTE, 0x00F6B36B, MaxItemInfoLine);
            my_F6B330 = (cdeclCall6)tools_relocation_hook(0xF6B330, 0xF6B445, hook);
            gum_interceptor_replace_fast(v, (gpointer)0xF6B330, (gpointer)hookSub_F6B330, NULL);
            delete hook;
            }


            IP属地:广西28楼2025-03-09 16:49
            回复
              2025-03-11
              - 自定义开启声音优化
              - 自定义开启镜头随动(Z轴最大限制30)
              - 自定义开启迷你地图
              效果图:


              IP属地:广西30楼2025-03-11 22:57
              回复