修改自用版
通过网盘分享的文件:爆率卡.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[1].add(61).readU8();//获取深渊掉落次数
- var isHellMode = args[1].add(65).readU8(); // 偏移65:地狱模式标志
- var dungeonType = args[1].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[1].add(61).writeU8(255); // 掉落次数不能超过255
- } else {
- args[1].add(61).writeU8(dorpcount * currentMultiplier);
- }
- // 应用倍率
- args[1].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[3] = 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>
复制代码
|