[分享]frida史诗药剂写法
记得马服的史诗药剂只增加深渊的史诗级别道具的掉落率,目前幸运值增加掉率的那套写法不仅对所有品级的装备掉率都提高了,而且同时作用于普通怪物掉落、深渊怪物掉落、翻牌奖励。这里提供一个新的写法,只对增加深渊怪物的史诗品级装备的掉落率(当然也可以增加其他品级的,自行修改)。 第一步,修改pvf中深渊掉落配置文件,etc/itemdropinfo_monster_hell.etc原本只有2行,第一行是非常困难的掉落率,第二行是困难掉落率。
2
0 506000 700000 970000 1000000 1000001
0 608000 750000 975000 1000001 1000002
现在新增2行,用于分别对应2种深渊史诗药剂生效后的爆率
4
0 506000 700000 970000 1000000 1000001
0 608000 750000 975000 1000001 1000002
0 506000 700000 750000 1000000 1000001
0 608000 750000 800000 1000001 1000002
这里第三行和第四行分别代表药剂生效后的史诗掉落25%和20% 第二步,frida执行以下函数,药剂ID自行定义
function epicPotion(){
const potion_id = 25102001;//史诗爆率药剂ID
const expert_job_CAlchemist_IsExistContinuousEffectItem = new NativeFunction(ptr(0x085D121E), 'int', ['pointer', 'int'], "sysv");
const CParty_checkValidUser = new NativeFunction(ptr(0x085B4D12), 'pointer', ['pointer', 'int'], "sysv");
const CParty_get_member_count = new NativeFunction(ptr(0x0859A16A), 'int', ['pointer'], "sysv");
Interceptor.attach(ptr(0x08535726), {
onEnter: function (args) {
if(this.returnAddress == 0x8535ce0){
const a2 = args; //stGenerateRefData_t
const isKilledAllHellGruoups = a2.add(64).readU8(); //isKilledAllHellGruoups
const hellparty_diff = a2.add(66).readU8(); // 1非常困难2困难
//最后深渊APC死亡
if (isKilledAllHellGruoups){
const battle_field = this.context.ebp.readPointer().readPointer().add(8).readPointer();
const party = battle_field.readPointer();
const member_cnt = CParty_get_member_count(party);//只希望单人生效判断用
for (let i = 0; i < 4; i++) {
const user = CParty_get_user(party, i);
if (CParty_checkValidUser(party, i).toInt32() && expert_job_CAlchemist_IsExistContinuousEffectItem(user,potion_id)) {
if (hellparty_diff == 1)
a2.add(66).writeU8(3); //调用pvf爆率权重对应行
else if (hellparty_diff == 2)
a2.add(66).writeU8(4);
}
}
}
}
},
onLeave: function (retval) {}
});
} 我就会复制粘贴 太酷了 666 大佬666 牛牛牛 谢谢大佬,大佬大方,万多个婆娘 感谢分享 l厉害厉害 学习学习
页:
[1]