我是大宝贝啊 发表于 2026-2-2 20:59:32

爆率卡.js

修改自用版


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

// ------------------ 爆率卡设置------------------


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


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


      // 更新怪物类型
      if (dungeonType == 3) {//boss   0普通怪 1精英怪3boss
            monsterType = 3;
      } else {
            monsterType = dungeonType;
      }


      // 根据玩家状态和怪物类型计算倍率
      var currentMultiplier = 1;
      if (isInDungeon && hasLuckyEquip) {
            if (monsterType == 3) {
                currentMultiplier = dropConfig.luckyBoss;
            } else {
                currentMultiplier = dropConfig.luckyElite;
            }
      }
      if (dorpcount * currentMultiplier > 255) {
            args.add(61).writeU8(255); // 掉落次数不能超过255
      } else {
            args.add(61).writeU8(dorpcount * currentMultiplier);
      }
      // 应用倍率
      args.add(61).writeU8(dorpcount * currentMultiplier);
      multiplier = currentMultiplier;
      console.log("[模式标志] : " + (isHellMode));
      console.log("[怪物类型] : " + (dungeonType));
      console.log("[掉落数量] 原始次数: " + dorpcount + ", 倍率: " + currentMultiplier + ", 最终次数: " + (dorpcount * currentMultiplier));
    }
});
Interceptor.attach(ptr(0x08511FB8), {
    onEnter: function (args) {
      // 根据玩家状态和怪物类型计算倍率
      var currentMultiplier = 1;
      if (isInDungeon && hasLuckyEquip) {
            if (monsterType == 3) { //boss
                currentMultiplier = dropConfig.luckyBoss;
            } else {
                currentMultiplier = dropConfig.luckyNormal;
            }
      }


      // 应用倍率
      args = ptr(currentMultiplier);
      multiplier = currentMultiplier;


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


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


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


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


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


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


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


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


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


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


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


      // 返回检查结果
      return hasLuckyEquip;
    } catch (e) {
      console.log("检查幸运装备时发生错误: " + e.message);
      return false;
    }
}</b></font>
页: [1]
查看完整版本: 爆率卡.js