QQ群

爆率卡.js

[复制链接]
查看37 | 回复0 | 2026-2-2 20:59:32 | 显示全部楼层 |阅读模式
修改自用版


通过网盘分享的文件:爆率卡.txt
链接: https://pan.baidu.com/s/1uJy3RlP0YSkJT30O-xj6fQ?pwd=j6md 提取码: j6md 复制这段内容后打开百度网盘手机App,操作更方便哦

  1. // ------------------ 爆率卡设置------------------


  2. /**
  3. * 全局变量,用于标记玩家是否拥有幸运装备
  4. * true表示拥有幸运装备,false表示没有
  5. */
  6. var hasLuckyEquip = false;
  7. var multiplier = 1; // 全局深渊倍率变量,初始值为1
  8. var isInDungeon = false; // 全局变量,用于标记玩家是否在副本中
  9. var monsterType = 0; // 怪物类型,0普通怪 1精英怪  3boss


  10. /**
  11. * 掉落倍率配置
  12. */
  13. var dropConfig = {
  14.     normal: 1,      // 普通怪物默认倍率
  15.     luckyNormal: 5, // 拥有幸运装备时普通怪物倍率
  16.     boss: 1,        // BOSS默认倍率
  17.     luckyBoss: 10,   // 拥有幸运装备时BOSS倍率
  18.     luckyElite: 8    // 拥有幸运装备时深渊倍率
  19. };
  20. Interceptor.attach(ptr(0x08537070), {//掉落次数
  21.     onEnter: function (args) {
  22.         var dorpcount = args[1].add(61).readU8();//获取深渊掉落次数
  23.         var isHellMode = args[1].add(65).readU8();   // 偏移65:地狱模式标志
  24.         var dungeonType = args[1].add(60).readU8();  // 偏移60:怪物类型


  25.         // 更新怪物类型
  26.         if (dungeonType == 3) {  //boss   0普通怪 1精英怪  3boss
  27.             monsterType = 3;
  28.         } else {
  29.             monsterType = dungeonType;
  30.         }


  31.         // 根据玩家状态和怪物类型计算倍率
  32.         var currentMultiplier = 1;
  33.         if (isInDungeon && hasLuckyEquip) {
  34.             if (monsterType == 3) {
  35.                 currentMultiplier = dropConfig.luckyBoss;
  36.             } else {
  37.                 currentMultiplier = dropConfig.luckyElite;
  38.             }
  39.         }
  40.         if (dorpcount * currentMultiplier > 255) {
  41.             args[1].add(61).writeU8(255); // 掉落次数不能超过255
  42.         } else {
  43.             args[1].add(61).writeU8(dorpcount * currentMultiplier);
  44.         }
  45.         // 应用倍率
  46.         args[1].add(61).writeU8(dorpcount * currentMultiplier);
  47.         multiplier = currentMultiplier;
  48.         console.log("[模式标志] : " + (isHellMode));
  49.         console.log("[怪物类型] : " + (dungeonType));
  50.         console.log("[掉落数量] 原始次数: " + dorpcount + ", 倍率: " + currentMultiplier + ", 最终次数: " + (dorpcount * currentMultiplier));
  51.     }
  52. });
  53. Interceptor.attach(ptr(0x08511FB8), {
  54.     onEnter: function (args) {
  55.         // 根据玩家状态和怪物类型计算倍率
  56.         var currentMultiplier = 1;
  57.         if (isInDungeon && hasLuckyEquip) {
  58.             if (monsterType == 3) { //boss
  59.                 currentMultiplier = dropConfig.luckyBoss;
  60.             } else {
  61.                 currentMultiplier = dropConfig.luckyNormal;
  62.             }
  63.         }


  64.         // 应用倍率
  65.         args[3] = ptr(currentMultiplier);
  66.         multiplier = currentMultiplier;


  67.         console.log("掉落倍率: " + currentMultiplier);
  68.     }
  69. });
  70. /**
  71. * 检查玩家背包中是否拥有幸运装备的函数
  72. * @param {Object} user - 用户对象,用于获取玩家背包信息
  73. * @returns {Boolean} 检查结果
  74. */
  75. function get_user_itmen_recycle(user) { //这个放在进入副本的hook中
  76.     try {
  77.         // 获取玩家当前角色的背包信息
  78.         const inven = CUserCharacInfo_getCurCharacInvenW(user);


  79.         // 如果无法获取背包信息,则输出错误日志并返回false
  80.         if (!inven) {
  81.             console.log("错误:无法获取角色背包");
  82.             return false;
  83.         }


  84.         // 定义物品栏类型常量(1表示物品栏)
  85.         var INVENTORY_TYPE_BODY = 0;            //身上穿的装备(0-26)
  86.         var INVENTORY_TYPE_ITEM = 1;            //物品栏(0-311)
  87.         var INVENTORY_TYPE_AVARTAR = 2;         //时装栏(0-104)
  88.         var INVENTORY_TYPE_CREATURE = 3;        //宠物装备(0-241)


  89.         // 重置幸运装备状态为false
  90.         hasLuckyEquip = false;
  91.         isInDungeon = true; // 设置副本状态,在进入副本次数检查时再设置


  92.         // 遍历物品栏槽位9到56,检查是否拥有幸运装备
  93.         // 槽位范围基于游戏实际结构定义,避免错误分割
  94.         for (let slot = 9; slot <= 56; slot++) {
  95.             // 获取指定槽位的物品引用
  96.             const itemRef = CInventory_GetInvenRef(inven, INVENTORY_TYPE_ITEM, slot);


  97.             // 如果槽位为空或者物品引用无效,则跳过
  98.             if (!itemRef || Inven_Item_isEmpty(itemRef)) continue;


  99.             // 获取物品ID
  100.             const itemId = Inven_Item_getKey(itemRef);


  101.             // 如果物品ID无效,则跳过
  102.             if (!itemId) continue;


  103.             // 检查是否为幸运装备(ID为27600)
  104.             if (itemId == '27600') {
  105.                 // 发现幸运装备,设置全局标志为true
  106.                 hasLuckyEquip = true;
  107.                 // 输出日志信息
  108.                 console.log("检测到幸运装备");


  109.                 // 向玩家发送通知消息,告知爆率状态
  110.                 try {
  111.                     if (isInDungeon) {
  112.                         api_CUser_SendNotiPacketMessage(user, '检测到幸运装备,副本中怪物爆率提升!', 0);
  113.                     } else {
  114.                         api_CUser_SendNotiPacketMessage(user, '检测到幸运装备,请进入副本以享受爆率加成', 0);
  115.                     }
  116.                 } catch (e) {
  117.                     console.log("发送通知消息时出错: " + e.message);
  118.                 }
  119.                 // 找到幸运装备后可以提前退出循环,提高效率
  120.                 break;
  121.             }
  122.         }


  123.         // 如果没有找到幸运装备,则输出相应日志
  124.         if (!hasLuckyEquip) {
  125.             console.log("未检测到幸运装备");
  126.             try {
  127.                 if (isInDungeon) {
  128.                     api_CUser_SendNotiPacketMessage(user, '未检测到幸运装备,副本中为默认爆率', 0);
  129.                 }
  130.             } catch (e) {
  131.                 console.log("发送通知消息时出错: " + e.message);
  132.             }
  133.         }


  134.         // 返回检查结果
  135.         return hasLuckyEquip;
  136.     } catch (e) {
  137.         console.log("检查幸运装备时发生错误: " + e.message);
  138.         return false;
  139.     }
  140. }</b></font>
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则