工程参考/配置文件/Public/ItemRecycle.txt:修订间差异

来自雪舞天龙知识库
跳到导航跳到搜索
Waylee​(留言 | 贡献)
新增回收系统说明:两张配置表、报价与结算事务、每日额度、结果状态与踩坑
 
Waylee​(留言 | 贡献)
新增回收系统说明:两张配置表、报价与结算事务、每日额度、结果状态与踩坑
 
第1行: 第1行:
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/ItemRecycle.txt</span>}}
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/ItemRecycle.txt</span>}}
__NOTOC__
__NOTOC__
<div class="config-file-reference">
<div class="config-file-reference" style="max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;overflow-wrap:anywhere;">
[[首页|首页]] · [[工程参考/回收系统|回收系统]] · [[工程参考/配置文件索引|配置文件索引]]
[[首页|首页]] · [[工程参考/回收系统|回收系统]] · [[工程参考/配置文件索引|配置文件索引]]



2026年11月14日 (六) 21:36的最新版本


首页 · 回收系统 · 配置文件索引

ItemRecycle.txt 是物品回收的价目表:一个物品编号对应一个元宝单价。玩家在回收界面选中背包物品时,服务端按本表取价,再乘格子数量算出本次收益。它不是商店表,不是分解配方,也不决定哪些物品能收——能不能收由物品状态(任务、绑定、加锁、交易中)决定,本表只给价。

位置与生效 · 文件格式 · 字段详解 · 校验与失败后果 · 修改实例

文件位置与生效

项目 说明
运行文件 ../Public/Config/ItemRecycle.txt,相对于 Server 工作目录
读取程序 GameServer 启动时由 TableInit::Init() 读入,交给 ItemRecycle::Config().Load()
客户端 不读取本表。回收界面显示的价格由服务端随报价下发,改表不需要更新客户端
生效方法 停服、替换实际 Public 副本、重启 Server。没有热重载入口
样本格式 纯 ASCII 无 BOM、CRLF,Tab 分隔

当前样本 214 条数据,物品编号 20109001 到 50613006,价格 2 到 25000 元宝。

文件格式

首行是类型行,两列都写 INT;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,不用空格代替。不足的尾列补空,多余列不参与读取;空值与非法整数在严格整数模式下直接解析失败。

字段详解

列号 字段与类型 含义与修改要点 缺项或特殊值
第 1 列 INT:ItemID 物品模板编号,对应 CommonItem 的编号。必须严格大于上一行,不是背包位置,也不是实例 GUID。 空行跳过;小于等于上一行、重复、非正整数都让整表加载失败
第 2 列 INT:YuanBao 该物品每回收一件返还的元宝数。单格收益 = 本列 × 格子数量。 必须 1 到 2000000000;写 0 或负数让整表加载失败

价格不是「一口价」:回收按格子数量乘算,10 个堆叠就是 10 份。服务端不做买卖差价、不看杀气、不看等级。

校验与失败后果

ItemRecycle::Config().Load() 会检查:

  • 两张表都恰好 2 列、两列都是 INT,且物品表至少 1 条记录;
  • 每条 ItemID 大于 0 且严格大于上一条;
  • 每条价格在 1 到 2000000000 之间;
  • 额度表恰好 1 行、第一列为 1、第二列在 1 到 2000000000 之间。

任一条件不满足,价格表被整体清空并返回失败,TableInit::Init() 随之返回 FALSE,Server.cpp 的 Assert(ret) 会让服务端起不来。改这张表前先备份,改错不是功能失效,是停服。

修改实例

追加一件可回收物品

在文件末尾追加一行。第一列必须是 CommonItem 里真实存在的物品编号,并且大于当前最后一条;第二列填价格:

50613007	500

(50613007 只是格式示例,实际必须换成 CommonItem 里存在的编号。)

重启后新物品出现在回收列表里。插到中间会破坏递增顺序,必须同时重排后面所有行的编号——但编号就是物品编号,不能随意改,所以只能追加。

改某件物品的回收价

只改第二列,例如把 30308002 的 490 改成 450:

30308002	450

改价在重启后生效。重启会中断所有会话,重启前的报价自然作废,玩家重新打开界面报价即可。