找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1031|回复: 14

[转载] 转发一个大佬分享的fr一键入库功能

[复制链接]
发表于 2025-4-8 21:51:15 | 显示全部楼层 |阅读模式
本来想问大佬要控制仓库的接口,没想到大佬直接整个功能丢出来了

经过大佬同意,今天转发出来,祝大家元旦愉快!

感谢开源和造轮子的大佬们,希望台服环境越来越好!
ps:亲测可用。不知道大佬名号,只知道QQ昵称 “挺迷的”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

 楼主| 发表于 2025-4-8 21:51:44 | 显示全部楼层
//获取角色仓库
var CUserCharacInfo_getCurCharacCargoW = new NativeFunction(ptr(0x008151A94), 'pointer', ['pointer'], {"abi":"sysv"});
//获取角色背包
var CUserCharacInfo_getCurCharacInvenW = new NativeFunction(ptr(0x80DA28E), 'pointer', ['pointer'], {"abi":"sysv"});
//获取背包槽中的道具
var CInventory_getInvenRef = new NativeFunction(ptr(0x84FC1DE), 'pointer', ['pointer', 'int', 'int'], {"abi":"sysv"});
//获取背包中道具item_id
var Inven_Item_getKey = new NativeFunction(ptr(0x850D14E), 'int', ['pointer'], {"abi":"sysv"});
//检查仓库是否存在物品
var CCargo_check_item_exist = new NativeFunction(ptr(0x0850BC14), 'int', ['pointer', 'int'], {"abi":"sysv"});
//获取道具附加信息
var Inven_Item_get_add_info = new NativeFunction(ptr(0x80F783A), 'int', ['pointer'], {"abi":"sysv"});
var Inven_Item_set_add_info = new NativeFunction(ptr(0x80CB884), 'int', ['pointer', 'int'], {"abi":"sysv"});
//检查物品堆叠上限
var checkStackableLimit = new NativeFunction(ptr(0x08501A79), 'int', ['int', 'int'], {"abi":"sysv"});
//将物品存入仓库
var CCargo_insert_item = new NativeFunction(ptr(0x0850B400), 'int', ['pointer', 'pointer'], {"abi":"sysv"});
//删除背包槽中的道具
var Inven_Item_reset = new NativeFunction(ptr(0x080CB7D8), 'int', ['pointer'], {"abi":"sysv"});
//通知客户端道具更新(客户端指针, 通知方式[仅客户端=1, 世界广播=0, 小队=2, war room=3], itemSpace[装备=0, 时装=1], 道具所在的背包槽)
var CUser_SendUpdateItemList = new NativeFunction(ptr(0x867C65A), 'int', ['pointer', 'int', 'int', 'int'], {"abi":"sysv"});
// 通知客户端更新背包栏
var CUser_send_itemspace = new NativeFunction(ptr(0x865DB6C), 'int', ['pointer', 'int'], {"abi":"sysv"});
// 一键入库
function moveToCargo(user) {
const cargo = CUserCharacInfo_getCurCharacCargoW(user);
const inven = CUserCharacInfo_getCurCharacInvenW(user);
// 物品槽范围: 57-152 (材料、消耗品栏)
const INVENTORY_SLOT_START = 57;
const INVENTORY_SLOT_END = 152;
for (var slot = INVENTORY_SLOT_START; slot <= INVENTORY_SLOT_END; slot++) {
const inventoryItem = CInventory_getInvenRef(inven, INVENTORY_TYPE_ITEM, slot);
const itemId = Inven_Item_getKey(inventoryItem); // 获取物品ID
// 如果物品ID无效,跳过当前循环
if (itemId <= 0) continue;
const itemExistsInCargo = CCargo_check_item_exist(cargo, itemId);
// 如果仓库中没有该物品,跳过
if (itemExistsInCargo == -1) continue;
// 获取仓库中对应物品的指针和数量
const cargoItemPointer = cargo.add(4).readPointer().add(61 * itemExistsInCargo);
const cargoItemId = cargo.add(4).readPointer().add(61 * itemExistsInCargo + 2).readU32();
const cargoItemCount = Inven_Item_get_add_info(cargoItemPointer);
const inventoryItemCount = Inven_Item_get_add_info(inventoryItem);
// 检查物品堆叠是否超过上限
const canStack = checkStackableLimit(cargoItemId, cargoItemCount + inventoryItemCount);
// 如果超过堆叠上限,提示并跳过
if (canStack == 0) {
const itemName = api_CItem_GetItemName(cargoItemId);
api_CUser_SendNotiPacketMessage(user, `${itemName} 超过堆叠上限,无法放入!`, 1);
continue;
}
// 将物品存入仓库
const insertResult = CCargo_insert_item(cargo, inventoryItem);
// 如果存入成功,更新背包和仓库
if (insertResult >= 0) {
Inven_Item_reset(inventoryItem); // 重置背包物品
CUser_SendUpdateItemList(user, 1, 0, slot); // 更新背包
CUser_send_itemspace(user, 2); // 更新仓库
}
}
}
回复

使用道具 举报

 楼主| 发表于 2025-4-8 21:52:05 | 显示全部楼层
感谢大佬的分享
回复

使用道具 举报

1447

主题

1万

回帖

4万

积分

登峰造极

积分
47929
发表于 2025-4-8 21:52:36 | 显示全部楼层
感谢大佬

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

2072

主题

1万

回帖

6万

积分

出神入化

积分
61142
发表于 2025-4-8 21:52:53 | 显示全部楼层
真要来了啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

 楼主| 发表于 2025-4-8 21:53:20 | 显示全部楼层
感谢大佬感谢楼主

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

2139

主题

1万

回帖

6万

积分

出神入化

积分
60837
发表于 2025-4-8 21:53:30 | 显示全部楼层
感谢两位大佬
回复

使用道具 举报

1980

主题

1万

回帖

5万

积分

管理员

积分
57204
发表于 2025-4-8 21:54:07 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1517

主题

1万

回帖

4万

积分

登峰造极

积分
49106
发表于 2025-4-8 21:54:23 | 显示全部楼层
顶帖
回复

使用道具 举报

2153

主题

1万

回帖

6万

积分

出神入化

积分
61652
发表于 2025-4-8 21:54:44 | 显示全部楼层
大佬,复制进去fr之后怎么用这个功能
回复

使用道具 举报

1980

主题

1万

回帖

5万

积分

管理员

积分
57204
发表于 2025-4-8 21:55:13 | 显示全部楼层
怎么设置gm命令啊
回复

使用道具 举报

1980

主题

1万

回帖

5万

积分

管理员

积分
57204
发表于 2025-4-8 21:55:18 | 显示全部楼层
没加过gm命令
回复

使用道具 举报

1980

主题

1万

回帖

5万

积分

管理员

积分
57204
发表于 2025-4-8 21:55:31 | 显示全部楼层
大佬

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1980

主题

1万

回帖

5万

积分

管理员

积分
57204
发表于 2025-4-8 21:56:14 | 显示全部楼层
感谢大佬分享
回复

使用道具 举报

2163

主题

1万

回帖

6万

积分

出神入化

积分
61782
发表于 2025-4-8 21:56:53 | 显示全部楼层
感谢感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表