爆率卡.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]