frida插件实现宠物装备附魔(@洛落菌)

frida插件实现宠物装备附魔(@洛落菌)

var CUserCharacInfo_getCurCharacInvenW = new NativeFunction(ptr(0x80DA28E), 'pointer', ['pointer'], {
	"abi": "sysv"
});
var CInventory_GetInvenRef = new NativeFunction(ptr(0x84FC1DE), 'pointer', ['pointer', 'int', 'int'], {
	"abi": "sysv"
});
var Inven_Item_isEmpty = new NativeFunction(ptr(0x811ED66), 'int', ['pointer'], {
	"abi": "sysv"
});
var CUser_send_itemspace = new NativeFunction(ptr(0x865DB6C), 'int', ['pointer', 'int'], {
	"abi": "sysv"
});

//2550098改自己需要的卡片或者徽章的ID,注意不是宝珠
//记得去重复,可以用指令触发该函数, 或者和任务完成券一样, 指定消耗品来触发。用数组或者随机数可以进行随机附魔。宠物虽然也可以附魔,但是重新登录会消失。
function CreatureEh(user) {
	var CreatureEqu = CUserCharacInfo_getCurCharacInvenW(user); //获取背包
	var CreatureEquZero = CInventory_GetInvenRef(CreatureEqu, 3, 140); //获取宠物栏宠物装备第一个格子
	if (Inven_Item_isEmpty(CreatureEquZero)) //检查格子中的部位是否是空的
	{
		api_CUser_SendNotiPacketMessage(user, "附魔失败, 缺少适合条件的装备", 3);
	} else {
		CreatureEquZero.add(13).writeU32(2550098); //附魔的卡片ID(徽章ID同样适用)
		api_CUser_SendNotiPacketMessage(user, "附魔成功。", 3);
	}
	CUser_send_itemspace(user, 7); //更新背包
}

失败返还道具问题,看下你的插件是否有函数api_CUser_AddItem(user, item_id, item_cnt),有的话,在判断为失败的地方附加添加道具代码。比如附魔失败这里:

if (Inven_Item_isEmpty(CreatureEquZero)) //检查格子中的部位是否是空的
{
	api_CUser_SendNotiPacketMessage(user, "附魔失败, 缺少适合条件的装备", 3);
	api_CUser_AddItem(user, 3300, 1); //发放1个编号3300道具
}

跨界石那些自己找找判断为失败的地方添加就行

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容