查看“︁工程参考/配置文件/Public/EquipExtraAttr.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/EquipExtraAttr.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/EquipExtraAttr.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;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] EquipExtraAttr.txt 为既有物品模板增加有效期、交易币种等信息。虽然文件名含 Equip,服务端有效期与交易查询也可按非装备的物品编号查这张表。它不创建物品,不决定掉落,也不替代装备或普通物品的基础表。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| 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/EquipExtraAttr.txt</code>,相对于 Server 工作目录;玩家电脑另有自己的客户端资源。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 游戏进程和 Game.exe 客户端资源 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 正常保存并停服,更新各 Server 实际使用的文件后重启 Server;客户端同步同名资源后重启 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。 |} 本表共 7 列。服务端加载第 1、2、6、7 列;客户端按同一编号读取有效期、附加说明与币种。第 3、5 列仍须保留,当前检索未发现其实际消费位置,不能仅凭表头解释为已生效的颜色或显示开关。 === 两端各改哪里 === Server 从工作目录的 ../Public/Config 读取。玩家电脑按 Client/Bin/FairyResources.cfg 的 [General] 更新资源:FileSystem=*../Data/Config 对应 Client/Data/Config 中的同名文件;AxpFileSystem=../Data/Config.axp 对应包内同名成员。使用已有资源打包流程,随后重启 Game.exe。只修改源码 resources 样本或只改一端不会完成部署。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT INT INT STRING 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;" | 与 EquipBase.txt、CommonItem.txt 等基础表中的物品编号对应。表按本列数值严格递增且唯一;不要求连续。不是行号、装备格、场景对象 ID 或物品 GUID。 | 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;">第 2 列</code><br>INT:有效期(小时) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 以整小时保存创建时间并比较经过小时数;例如教学值 168 为 7*24 小时。该时间包含离线经过的时间,不是累计在线时间。负数跳过到期判断,建议沿用 -1 表示永久。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空值读为 0;0 不是永久,有创建时间的物品会判到期。没有创建时间时首次检查先初始化并放行。边界和旧物品影响见下方,不直接在正式服试填 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:传输颜色 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端结构中保存为 nReserve2,服务端本表加载器未读取。当前检索范围未发现本字段的实际消费依据;不能据 2005 等样本值承诺改变名称颜色或传输效果。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 保留原行值。空整数变成 0;这不是已确认的默认颜色编号。需要实测,并在改此列前补齐使用依据。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 4 列</code><br>STRING:附加属性描述$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端装备提示将本列附加到说明中;空字符串或文本 -1 不附加。描述中的数值不会成为实际属性、期限或伤害。当前已确认的是装备提示入口。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 保留原编码、已有文本格式;不要插入实际 Tab 或换行拆开数据行。服务端没有读取此列,不要依靠描述文字实施限制。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>INT:是否显示 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 客户端结构中为 nReserve4;当前检索未发现其实际消费依据。已核对的附加说明入口依据第 4 列是否为空或 -1 判断,没有查询本列。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 示例原行此处为空,必须保留两个相邻 Tab,不能删列。不把 0/1 写成已核实的整体显示开关。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 6 列</code><br>INT:元宝交易类型 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 0:当前摆摊检查允许元宝币种、禁止金币币种;1:禁止元宝、允许金币;2:两者均允许。仍受绑定、密码锁、交易规则、价格上限及商店类型等检查;不是无条件可交易。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 缺整条记录时查询返回 1;存在行但空值读为 0。服务端先转 BYTE 再把大于 2 的值归为 1,客户端直接保留整数。只填 0/1/2,避免 256 等造成两端分歧。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 7 列</code><br>INT:卖店是否获得交子 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 普通 NPC 卖店结算中,1 发交子,0 发金币;服务端和客户端已核对的判断都是“是否等于 1”。不改变卖价数额,也不设置玩家间交易币种。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 缺整条记录时材料大类 2 默认交子,其余金币;有记录时以本列为准,空值为 0。服务端存 BYTE,禁止使用 -1、256、257 等代替有效枚举。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 允许既有时装使用两种摆摊币种 === 修改前: <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 STRING INT INT INT Index 有效期(小时) 传输颜色 附加属性描述$1$ 是否显示 元宝交易类型:0可元宝交易,1不可元宝交易,2即可元宝交易也可金币交易 卖店是否获得交子,1获得交子,0获得金币 10124009 -1 2005 -1 1 0</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 STRING INT INT INT Index 有效期(小时) 传输颜色 附加属性描述$1$ 是否显示 元宝交易类型:0可元宝交易,1不可元宝交易,2即可元宝交易也可金币交易 卖店是否获得交子,1获得交子,0获得金币 10124009 -1 2005 -1 2 0</pre> 在原表第一列定位 10124009(EquipBase.txt 中的紫色时装),把第 6 列从 1 改为 2。保留第 2 列 -1、第 3 列 2005、第 4 列 -1、第 5 列空值、第 7 列 0,以及整表其他行。同步客户端同一行。找一件该模板、未绑定且未加锁的测试物品,分别验证金币摊和元宝摊的上架检查;实际交易仍须满足正常玩法限制。本例不改 ItemRule,不改变卖给 NPC 的结算币种。三行文件只表示局部修改,不能替换整表。 == 验证与排查 == 先检查 Server 日志 InitEquipExtraAttrTable() Ok!,确认 7 列、ID 排序、示例仅第 6 列改变,并核对客户端同名资源。交易例子需分别检查两类摊位、被绑定或加锁时的拒绝、重登后的状态。恢复时停服并还原两端表格备份、重新启动;恢复配置不能逆转已发生的交易,也不能恢复已经清理的过期物品。 === 改有效期前先分清这些情况 === {| 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;" | 第 2 列沿用 -1。一般负数都跳过到期判断,但不建议创造额外负数约定。时装可仍记录创建时间,记录时间不等于开启过期。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 限时 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 例如 168 表示按小时刻度比较:当前 Unix 小时数减创建 Unix 小时数小于 168 才有效;等于 168 已到期。时间在除以 3600 时取整,不保证从发放时刻起精确满 168 小时。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 改已有物品 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 如果物品已有创建时间,会按原时间与新期限比较,缩短期限可能立即判到期。旧物品没有创建时间时,首次检查会补上当前小时并暂时通过;重启不代表统一从零计时。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 到期清理 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 已核对的触发点包括角色查询自身装备列表时的检查,检查范围含普通、材料、任务背包、已穿装备和银行;玩家商店购买也有到期检查。不能据此承诺每秒定时删除。具体界面触发时机需要实测。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 时钟回退 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务器当前小时早于记录的创建小时,服务端可判无效;客户端显示却会把负的经过时间按 0 算。因此不要以客户端剩余时间提示代替服务端判断。 |} === 缺行不等于空字段 === 没有某个编号的记录时,元宝交易查询采用 1,卖店币种采用物品大类规则。新增一行后留空,第 2、6、7 列都会成为 0,会同时改变有效期、交易类型和卖店币种。只想改其中一项,也要明确填写其余已核对字段。 === 与其他规则的关系 === [[工程参考/配置文件/Public/CommonItem.txt|CommonItem.txt]] 的末列也叫“是否元宝交易”,但已核对的统一交易查询实际取本表。[[工程参考/配置文件/Public/ItemRule.txt|ItemRule.txt]] 的规则标志以及物品已绑定、已锁定状态仍单独起作用;不能靠把第 6 列改为 2 解除这些限制。 == 关联与依据 == [[工程参考/配置文件/Public/CommonItem.txt|Public/CommonItem.txt]] · [[工程参考/配置文件/Public/ItemRule.txt|Public/ItemRule.txt]] · [[工程参考/配置文件/Public/ItemAptRate.txt|Public/ItemAptRate.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <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;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/ItemTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/ItemTable.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/GameStruct_Item.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/Common/TDDBC_Struct.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/Interface/GMInterface_Script_Tooltip.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/Bin/FairyResources正式服.cfg</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/ItemRuler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Item/Item.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGStallAddItemHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGPlayerShopOnSaleHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGPlayerShopBuyItemHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Packets/CGShopSellHandler.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Obj/Obj_Human.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Obj/Obj_Human_AttrRefesh.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/Object/Item/Obj_Item.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/EquipBase.txt</code>:实际加载、解析、字段使用或示例关联依据 使用原始 DBC、附加表加载/查询与有效期函数做隔离测试,检查空字段、负数、零、BYTE 截断及时间边界;交易和界面入口经源码核对。未启动游戏或数据库,实际交易、提示和过期清理仍需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/EquipExtraAttr.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息