查看“︁工程参考/配置文件/Public/RecycleItem.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/RecycleItem.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/RecycleItem.txt</span>}} __NOTOC__ <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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] RecycleItem.txt 是玩家商店的收购目录:店主从客户端菜单选择物品,服务端再按本表第四列检查是否允许新增该物品的收购订单。它不是 NPC 出售商店表,也不是把物品分解成材料的配方。添加一行只是允许申请收购,仍须通过物品类型、数量、摊位状态和资金检查。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 项目 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 说明 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 运行文件 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">../Public/Config/RecycleItem.txt</code>,相对于 Server 工作目录。客户端另从 General 资源组加载同名文件,不直接读取服务端目录。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 加载第四列白名单;客户端加载四列用于选择收购物品 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 正常保存并停服,备份实际 Public 副本并修改,再重启 Server。同步客户端实际加载的 RecycleItem.txt,重启 Game.exe 并重新打开玩家商店收购物品选择窗口。当前检索范围未发现此表独立重载入口。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本格式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">GB18030-compatible</code>,<code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>。保留原编码;源码读取器不会自动把中文转为 UTF-8。 |} 样本 462 行,index 从 0 到 461,每行 4 个整数。Server 将第四列载入白名单,客户端用前面三列组织“分类 → 子类 → 物品”菜单。 === 三张表如何对应 === {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 文件 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 在此处的作用 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | RecycleItemClass.txt | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第一列 ID 是大类号;例如1=铸造材料。当前客户端界面按1..分类数量请求名称,不能任意跳号。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | RecycleItemType.txt | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 第一列index为记录号,第二列classID与第三列typeID组成子类身份。例如记录0、classID=1、typeID=1,对应矿石。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | RecycleItem.txt | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 每行第二、三列选择上述分类组合;第四列才是 CommonItem 的物品模板号。同一模板可以在多个分类出现。 |} 服务端现有分类表加载函数未在当前检索范围找到启动调用;已确认启动调用的是 InitAllowableItemTable,只读 RecycleItem 第四列。不能把 classID/typeID 当作服务端准入条件。分类字段与改名方法见本页末尾两张关联配置页,不依据函数名称宣称服务端已启用。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT INT INT INT</code>;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。 == 字段详解 == 列号从 1 开始,源码列下标从 0 开始。 {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:34%;text-align:left;background:#edf3f2;padding:8px;" | 字段与类型 ! scope="col" style="width:42%;text-align:left;background:#edf3f2;padding:8px;" | 含义与修改要点 ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 缺项或特殊值 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 1 列</code><br>INT:index | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 从0开始连续编号,保持等于有效数据行的零基位置。客户端先保存行位置,随后又以这个数做首列键查找;两者不同可能选错物品或查不到。不是物品ID、GUID、背包位置或商店格号。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server仅使用DBC首列唯一索引,不验证连续性;客户端正确显示要求连续。空首列整行跳过,重复键报错。添加应追加并取下一个编号;删除中间行必须重排后续编号并同步客户端。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>INT:classID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端大类编号,关联 RecycleItemClass 第一列。例如1是铸造材料、5是工艺材料,属于界面分类,不是 CommonItem 的class字段。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server白名单加载不消费本列;0、负数或未知类号不能当作停用。无对应客户端分类可能看不到,但第四列仍可能被服务端允许。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:typeID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 与classID组成一对,关联 RecycleItemType 第二、三列。不是该表首列index;例如不同大类都可以使用typeID=1。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server白名单加载不消费本列。未知组合可能不能在菜单选到,但不会据此撤销白名单资格。保留已经存在的合法组合。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 4 列</code><br>INT:物品id(commonitem表的id) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 实际物品模板编号,Server存入UINT白名单;新增订单还要求模板有效、编号大类为材料(2)且CommonItem能查到。客户端按该编号到自己的CommonItem取名称和图标。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 缺少行尾值、空值或非数字可为0,触发服务端断言。负数会转无符号值,不是安全禁用。不得超过1024条;重复物品号允许在不同分类出现,但同一白名单身份不叠加权限。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件为 ASCII/CRLF,列名用英文便于核对分隔符。 === 在铸造材料的矿石目录追加白铅矿石 === 修改前: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT INT INT INT index classID typeID itemID 461 2 6 20102039</pre> 修改后: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT INT INT INT index classID typeID itemID 461 2 6 20102039 462 1 1 20103013</pre> 先核对完整表末行仍是461、2、6、20102039,且没有20103013;本批样本满足这两个条件。保留全部462行,仅在末尾追加新行462、1、1、20103013。这里展示最后一行和追加行用于定位,不要把片段覆盖整表,也不要把片段的两行英文表头插到原表末尾。若运行配置已有人追加过内容,应重新检查下一个编号和既有物品,不机械使用462。 20103013在当前CommonItem为“白铅矿石”,材料大类2、堆叠上限40;classID=1、typeID=1的“铸造材料 → 矿石”已经存在,无须改分类表。它原本未在白名单中,追加后原始加载和订单函数隔离测试确认可以通过白名单检查;客户端分类查询新增一个候选并能找到物品模板。 两端同步后,以有权限的玩家商店店主在空闲收购位尝试数量1、单价1(角色金钱最小单位),商店可用资金至少1。原始订单逻辑通过后从商店资金预留1,并记录目标模板20103013;不是立即从其他玩家背包扣走材料,也不是使用NPC回收价。正式收购的窗口刷新、交付、扣款和库存需要实测。 == 验证与排查 == 重启后检查 Load RecycleItem.txt ... OK!,确认463行、index为0..462,前三列分类引用及两端CommonItem模板存在。先打开“铸造材料 → 矿石”确认白铅矿石可选,再以数量1、单价1测试新增订单,核对商店资金和收购条目。能在客户端看到不等于Server允许,Server允许也不保证分类能显示。失败时依次检查实际路径、资源包、连续编号、材料类型、堆叠上限、空位与序列号、权限和资金;不要仅改客户端绕过限制。 === 新增订单仍有哪些限制 === 服务端检查白名单后,还核对物品编号有效且为材料、数量不超过物品堆叠上限及订单数量上限、单价范围、商店资金、目标空位与当前序列号。单价和数量来自店主操作,不来自本文件;本表没有价格或收购数量列。只添加装备或不存在的编号不能启用其收购。玩家实际出售时,还检查物品GUID、绑定与锁定、交换规则、目标模板和剩余收购数量,本表不解除这些限制。 === 移除目录不等于取消已有订单 === 当前白名单检查在店主新增订单时;已存在订单的出售处理按订单模板与物品状态检查,未重新查询本表。因此删除行并重启不能承诺取消所有已有收购。回退新示例前,应通过正常商店操作处理该物品的未完成订单,再恢复两端备份并重启;不要改数据库强制清除。已成交物品、资金和库存不会随配置恢复自动回滚。 === 两端同步与重复模板 === 客户端检查实际 Client/Bin/FairyResources.cfg 的 General 资源映射:FileSystem=*../Data/Config 对应 Client/Data/Config/RecycleItem.txt;AxpFileSystem=../Data/Config.axp 则更新包内同名成员,其他映射以实际配置为准。新增物品还须确认客户端CommonItem有同一模板。 样本20103001既在index=0的铸造矿石,也在index=217的工艺矿石出现,这是不同菜单中的同一模板,不是首列重复错误。仅删其中一行不能把20103001移出白名单。 本页不提供服务端Lua修改白名单的调用;客户端PlayerShop菜单方法属于客户端脚本,不能当作服务端Lua注册函数使用。 == 关联与依据 == [[工程参考/配置文件/Public/CommonItem.txt|Public/CommonItem.txt]] · [[工程参考/配置文件/Public/RecycleItemClass.txt|Public/RecycleItemClass.txt]] · [[工程参考/配置文件/Public/RecycleItemType.txt|Public/RecycleItemType.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGPlayerShopSaleShopOptHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Other/PlayerShopBuyShopStallBox.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/GameDefine_Item.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/DataBase/TLBB_DBC.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DataPool/GMDataPool.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/Interface/GMInterface_Script_PlayerShop.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/Script/GMScriptSystm.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Common/TDDBC_Struct.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DBC/GMDataBase.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Render/ResourceProvider.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Render/RenderSystem.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Core/Core/FairySystem.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Bin/FairyResources.cfg</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Interface/SelectRecycleItem/SelectRecycleItem.lua</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/RecycleItemClass.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/RecycleItemType.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/CommonItem.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/RecycleItemClass.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/RecycleItemType.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/RecycleItem.txt</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Client/Data/Config/CommonItem.txt</code>:实际加载、解析、字段使用或示例关联依据 原始DBC、白名单加载和Contains、完整新增订单函数、客户端分类与物品选择方法在独立夹具验证。商店资金、物品模板和网络发送为测试替身;未启动游戏、数据库,未执行真实交易。分类和模板引用核对不等同于游戏实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/RecycleItem.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息