工程参考/配置文件/Public/ResearchItem.txt
ResearchItem.txt 是城市 / 帮会建筑的研究集合表。第 1 列是集合编号,第 2 列是本集合的研究项组数,从第 3 列起每 7 列为一组:物品索引、贡献度、最大数量、价格、条件编号、票券价格、是否预置。样本 106 个集合、246 列,单集合最多 34 组。
这张表只定义「某个研究集合里有哪些物品、各自什么价」,不包含建筑等级与解锁关系;后者在 Public/CityBuilding.txt 的 ResearchItem 列里按等级指向这里的集合号。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ../Public/Config/ResearchItem.txt,路径写死在加载函数里,相对于 World 工作目录;客户端从资源目录按同名文件加载。Server(GameServer)进程不读本表。
|
| 读取程序 | World 进程:TableInit::Init_ResearchItemTable 用 DBCFile::OpenFromTXT 打开 "../Public/ResearchItem.txt";客户端 GMDataBase.cpp 以 DBC_RESEARCH_ITEM(id 141)注册同名文件,不限列数 |
| 生效方法 | 正常保存并停 World 后重启 World;客户端一侧需要随资源更新并重启客户端。当前检索未发现单独重载本文件的可用入口。 |
| 样本格式 | ASCII,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。
|
服务端 Init_ResearchItemTable 先取行数作为集合数(上限 MAX_RESEARCH_TYPE = 512),逐行读入 m_iNum(第 2 列),再 for j 从 0 到 m_iNum-1 按 column = 2 + j * 7 的 0 基列号读 7 个整数。也就是说第 1 列只用于建 DBC 索引,真正的集合定位靠行号。
| 列 | 字段 | 含义 |
|---|---|---|
第 3 列起,每组 +7
|
ItemIndex
|
物品索引(必须 > 0) |
第 4 列起,每组 +7
|
Contribution
|
贡献度 |
第 5 列起,每组 +7
|
MaxNum
|
最大数量 |
第 6 列起,每组 +7
|
Price
|
价格 |
第 7 列起,每组 +7
|
Condition
|
条件编号(引 Condition.txt,1 起) |
第 8 列起,每组 +7
|
TicketPrice
|
票券价格(>= 0) |
第 9 列起,每组 +7
|
AlreadyIn
|
是否预置(>= 0) |
| 检查项 | 结论 |
|---|---|
| 集合编号怎么定位 | m_Table[ResearchSet - 1],ResearchSet 是 1 起的行号,来自 CityBuilding.txt 的 ResearchItem 列。
|
| 一组几列 | 7 列。第 j 组占第 3 + 7j 到 9 + 7j 列(j 从 0 起)。
|
| 最多几组 | 数组容量 100,但本文件 246 列只放得下 34 组完整数据;第 241 到 246 列是残缺的第 35 组。 |
| 建筑等级与集合的关系 | 代码对 Level 从 0 到建筑当前等级逐个取集合,等级越高叠加的集合越多,不是只取最高等级那一个。 |
| AlreadyIn 两端相反 | 服务端非 0 会自动预置进建筑列表;客户端等于 1 反而跳过、不显示为可研究项。 |
文件格式
首行是类型行:INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。
字段详解
列号从 1 开始,源码列下标从 0 开始。
| 字段与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
第 1 列INT:ID |
研究集合编号,同时是 DBC 索引列。消费方按 g_ResearchItemTbl.m_Table[ResearchSet - 1] 取用,ResearchSet 来自 CityBuilding.txt 的 ResearchItem 列,因此这一列必须等于本行的行号(1 起)。样本 106 行的 ID 正好是 1 到 106。
|
必须唯一且非空。重复编号触发 DBC 重复索引错误;空首列使整行被跳过,该集合在全部建筑上都取不到。 |
第 2 列INT:NUM |
本行的研究项组数,决定后面读几组(每组 7 列)。数组容量是 MAX_RESEARCH_ITEM_PER_BUILDING = 100,但本文件只有 246 列,最多放得下 34 组完整数据。样本取值是 18、6、2、3。 | 必填。填 0 或留空表示本集合没有研究项;填到 35 会让代码去读第 247 列,超出本文件列数,不要这么做。 |
第 3 列INT:ItemIndex |
第 1 组研究项(列 3 到 9)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 4 列INT:Contribution |
第 1 组研究项(列 3 到 9)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 5 列INT:MaxNum |
第 1 组研究项(列 3 到 9)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 6 列INT:Price |
第 1 组研究项(列 3 到 9)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 7 列INT:Condition |
第 1 组研究项(列 3 到 9)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 8 列INT:TicketPrice |
第 1 组研究项(列 3 到 9)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 9 列INT:AlreadyIn |
第 1 组研究项(列 3 到 9)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 10 列INT:ItemIndex |
第 2 组研究项(列 10 到 16)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 11 列INT:Contribution |
第 2 组研究项(列 10 到 16)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 12 列INT:MaxNum |
第 2 组研究项(列 10 到 16)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 13 列INT:Price |
第 2 组研究项(列 10 到 16)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 14 列INT:Condition |
第 2 组研究项(列 10 到 16)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 15 列INT:TicketPrice |
第 2 组研究项(列 10 到 16)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 16 列INT:AlreadyIn |
第 2 组研究项(列 10 到 16)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 17 列INT:ItemIndex |
第 3 组研究项(列 17 到 23)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 18 列INT:Contribution |
第 3 组研究项(列 17 到 23)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 19 列INT:MaxNum |
第 3 组研究项(列 17 到 23)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 20 列INT:Price |
第 3 组研究项(列 17 到 23)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 21 列INT:Condition |
第 3 组研究项(列 17 到 23)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 22 列INT:TicketPrice |
第 3 组研究项(列 17 到 23)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 23 列INT:AlreadyIn |
第 3 组研究项(列 17 到 23)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 24 列INT:ItemIndex |
第 4 组研究项(列 24 到 30)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 25 列INT:Contribution |
第 4 组研究项(列 24 到 30)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 26 列INT:MaxNum |
第 4 组研究项(列 24 到 30)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 27 列INT:Price |
第 4 组研究项(列 24 到 30)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 28 列INT:Condition |
第 4 组研究项(列 24 到 30)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 29 列INT:TicketPrice |
第 4 组研究项(列 24 到 30)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 30 列INT:AlreadyIn |
第 4 组研究项(列 24 到 30)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 31 列INT:ItemIndex |
第 5 组研究项(列 31 到 37)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 32 列INT:Contribution |
第 5 组研究项(列 31 到 37)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 33 列INT:MaxNum |
第 5 组研究项(列 31 到 37)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 34 列INT:Price |
第 5 组研究项(列 31 到 37)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 35 列INT:Condition |
第 5 组研究项(列 31 到 37)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 36 列INT:TicketPrice |
第 5 组研究项(列 31 到 37)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 37 列INT:AlreadyIn |
第 5 组研究项(列 31 到 37)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 38 列INT:ItemIndex |
第 6 组研究项(列 38 到 44)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 39 列INT:Contribution |
第 6 组研究项(列 38 到 44)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 40 列INT:MaxNum |
第 6 组研究项(列 38 到 44)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 41 列INT:Price |
第 6 组研究项(列 38 到 44)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 42 列INT:Condition |
第 6 组研究项(列 38 到 44)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 43 列INT:TicketPrice |
第 6 组研究项(列 38 到 44)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 44 列INT:AlreadyIn |
第 6 组研究项(列 38 到 44)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 45 列INT:ItemIndex |
第 7 组研究项(列 45 到 51)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 46 列INT:Contribution |
第 7 组研究项(列 45 到 51)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 47 列INT:MaxNum |
第 7 组研究项(列 45 到 51)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 48 列INT:Price |
第 7 组研究项(列 45 到 51)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 49 列INT:Condition |
第 7 组研究项(列 45 到 51)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 50 列INT:TicketPrice |
第 7 组研究项(列 45 到 51)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 51 列INT:AlreadyIn |
第 7 组研究项(列 45 到 51)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 52 列INT:ItemIndex |
第 8 组研究项(列 52 到 58)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 53 列INT:Contribution |
第 8 组研究项(列 52 到 58)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 54 列INT:MaxNum |
第 8 组研究项(列 52 到 58)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 55 列INT:Price |
第 8 组研究项(列 52 到 58)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 56 列INT:Condition |
第 8 组研究项(列 52 到 58)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 57 列INT:TicketPrice |
第 8 组研究项(列 52 到 58)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 58 列INT:AlreadyIn |
第 8 组研究项(列 52 到 58)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 59 列INT:ItemIndex |
第 9 组研究项(列 59 到 65)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 60 列INT:Contribution |
第 9 组研究项(列 59 到 65)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 61 列INT:MaxNum |
第 9 组研究项(列 59 到 65)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 62 列INT:Price |
第 9 组研究项(列 59 到 65)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 63 列INT:Condition |
第 9 组研究项(列 59 到 65)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 64 列INT:TicketPrice |
第 9 组研究项(列 59 到 65)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 65 列INT:AlreadyIn |
第 9 组研究项(列 59 到 65)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 66 列INT:ItemIndex |
第 10 组研究项(列 66 到 72)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 67 列INT:Contribution |
第 10 组研究项(列 66 到 72)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 68 列INT:MaxNum |
第 10 组研究项(列 66 到 72)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 69 列INT:Price |
第 10 组研究项(列 66 到 72)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 70 列INT:Condition |
第 10 组研究项(列 66 到 72)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 71 列INT:TicketPrice |
第 10 组研究项(列 66 到 72)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 72 列INT:AlreadyIn |
第 10 组研究项(列 66 到 72)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 73 列INT:ItemIndex |
第 11 组研究项(列 73 到 79)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 74 列INT:Contribution |
第 11 组研究项(列 73 到 79)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 75 列INT:MaxNum |
第 11 组研究项(列 73 到 79)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 76 列INT:Price |
第 11 组研究项(列 73 到 79)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 77 列INT:Condition |
第 11 组研究项(列 73 到 79)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 78 列INT:TicketPrice |
第 11 组研究项(列 73 到 79)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 79 列INT:AlreadyIn |
第 11 组研究项(列 73 到 79)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 80 列INT:ItemIndex |
第 12 组研究项(列 80 到 86)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 81 列INT:Contribution |
第 12 组研究项(列 80 到 86)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 82 列INT:MaxNum |
第 12 组研究项(列 80 到 86)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 83 列INT:Price |
第 12 组研究项(列 80 到 86)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 84 列INT:Condition |
第 12 组研究项(列 80 到 86)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 85 列INT:TicketPrice |
第 12 组研究项(列 80 到 86)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 86 列INT:AlreadyIn |
第 12 组研究项(列 80 到 86)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 87 列INT:ItemIndex |
第 13 组研究项(列 87 到 93)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 88 列INT:Contribution |
第 13 组研究项(列 87 到 93)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 89 列INT:MaxNum |
第 13 组研究项(列 87 到 93)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 90 列INT:Price |
第 13 组研究项(列 87 到 93)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 91 列INT:Condition |
第 13 组研究项(列 87 到 93)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 92 列INT:TicketPrice |
第 13 组研究项(列 87 到 93)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 93 列INT:AlreadyIn |
第 13 组研究项(列 87 到 93)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 94 列INT:ItemIndex |
第 14 组研究项(列 94 到 100)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 95 列INT:Contribution |
第 14 组研究项(列 94 到 100)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 96 列INT:MaxNum |
第 14 组研究项(列 94 到 100)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 97 列INT:Price |
第 14 组研究项(列 94 到 100)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 98 列INT:Condition |
第 14 组研究项(列 94 到 100)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 99 列INT:TicketPrice |
第 14 组研究项(列 94 到 100)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 100 列INT:AlreadyIn |
第 14 组研究项(列 94 到 100)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 101 列INT:ItemIndex |
第 15 组研究项(列 101 到 107)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 102 列INT:Contribution |
第 15 组研究项(列 101 到 107)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 103 列INT:MaxNum |
第 15 组研究项(列 101 到 107)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 104 列INT:Price |
第 15 组研究项(列 101 到 107)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 105 列INT:Condition |
第 15 组研究项(列 101 到 107)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 106 列INT:TicketPrice |
第 15 组研究项(列 101 到 107)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 107 列INT:AlreadyIn |
第 15 组研究项(列 101 到 107)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 108 列INT:ItemIndex |
第 16 组研究项(列 108 到 114)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 109 列INT:Contribution |
第 16 组研究项(列 108 到 114)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 110 列INT:MaxNum |
第 16 组研究项(列 108 到 114)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 111 列INT:Price |
第 16 组研究项(列 108 到 114)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 112 列INT:Condition |
第 16 组研究项(列 108 到 114)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 113 列INT:TicketPrice |
第 16 组研究项(列 108 到 114)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 114 列INT:AlreadyIn |
第 16 组研究项(列 108 到 114)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 115 列INT:ItemIndex |
第 17 组研究项(列 115 到 121)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 116 列INT:Contribution |
第 17 组研究项(列 115 到 121)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 117 列INT:MaxNum |
第 17 组研究项(列 115 到 121)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 118 列INT:Price |
第 17 组研究项(列 115 到 121)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 119 列INT:Condition |
第 17 组研究项(列 115 到 121)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 120 列INT:TicketPrice |
第 17 组研究项(列 115 到 121)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 121 列INT:AlreadyIn |
第 17 组研究项(列 115 到 121)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 122 列INT:ItemIndex |
第 18 组研究项(列 122 到 128)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 123 列INT:Contribution |
第 18 组研究项(列 122 到 128)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 124 列INT:MaxNum |
第 18 组研究项(列 122 到 128)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 125 列INT:Price |
第 18 组研究项(列 122 到 128)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 126 列INT:Condition |
第 18 组研究项(列 122 到 128)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 127 列INT:TicketPrice |
第 18 组研究项(列 122 到 128)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 128 列INT:AlreadyIn |
第 18 组研究项(列 122 到 128)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 129 列INT:ItemIndex |
第 19 组研究项(列 129 到 135)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 130 列INT:Contribution |
第 19 组研究项(列 129 到 135)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 131 列INT:MaxNum |
第 19 组研究项(列 129 到 135)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 132 列INT:Price |
第 19 组研究项(列 129 到 135)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 133 列INT:Condition |
第 19 组研究项(列 129 到 135)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 134 列INT:TicketPrice |
第 19 组研究项(列 129 到 135)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 135 列INT:AlreadyIn |
第 19 组研究项(列 129 到 135)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 136 列INT:ItemIndex |
第 20 组研究项(列 136 到 142)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 137 列INT:Contribution |
第 20 组研究项(列 136 到 142)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 138 列INT:MaxNum |
第 20 组研究项(列 136 到 142)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 139 列INT:Price |
第 20 组研究项(列 136 到 142)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 140 列INT:Condition |
第 20 组研究项(列 136 到 142)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 141 列INT:TicketPrice |
第 20 组研究项(列 136 到 142)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 142 列INT:AlreadyIn |
第 20 组研究项(列 136 到 142)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 143 列INT:ItemIndex |
第 21 组研究项(列 143 到 149)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 144 列INT:Contribution |
第 21 组研究项(列 143 到 149)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 145 列INT:MaxNum |
第 21 组研究项(列 143 到 149)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 146 列INT:Price |
第 21 组研究项(列 143 到 149)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 147 列INT:Condition |
第 21 组研究项(列 143 到 149)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 148 列INT:TicketPrice |
第 21 组研究项(列 143 到 149)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 149 列INT:AlreadyIn |
第 21 组研究项(列 143 到 149)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 150 列INT:ItemIndex |
第 22 组研究项(列 150 到 156)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 151 列INT:Contribution |
第 22 组研究项(列 150 到 156)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 152 列INT:MaxNum |
第 22 组研究项(列 150 到 156)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 153 列INT:Price |
第 22 组研究项(列 150 到 156)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 154 列INT:Condition |
第 22 组研究项(列 150 到 156)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 155 列INT:TicketPrice |
第 22 组研究项(列 150 到 156)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 156 列INT:AlreadyIn |
第 22 组研究项(列 150 到 156)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 157 列INT:ItemIndex |
第 23 组研究项(列 157 到 163)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 158 列INT:Contribution |
第 23 组研究项(列 157 到 163)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 159 列INT:MaxNum |
第 23 组研究项(列 157 到 163)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 160 列INT:Price |
第 23 组研究项(列 157 到 163)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 161 列INT:Condition |
第 23 组研究项(列 157 到 163)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 162 列INT:TicketPrice |
第 23 组研究项(列 157 到 163)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 163 列INT:AlreadyIn |
第 23 组研究项(列 157 到 163)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 164 列INT:ItemIndex |
第 24 组研究项(列 164 到 170)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 165 列INT:Contribution |
第 24 组研究项(列 164 到 170)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 166 列INT:MaxNum |
第 24 组研究项(列 164 到 170)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 167 列INT:Price |
第 24 组研究项(列 164 到 170)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 168 列INT:Condition |
第 24 组研究项(列 164 到 170)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 169 列INT:TicketPrice |
第 24 组研究项(列 164 到 170)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 170 列INT:AlreadyIn |
第 24 组研究项(列 164 到 170)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 171 列INT:ItemIndex |
第 25 组研究项(列 171 到 177)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 172 列INT:Contribution |
第 25 组研究项(列 171 到 177)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 173 列INT:MaxNum |
第 25 组研究项(列 171 到 177)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 174 列INT:Price |
第 25 组研究项(列 171 到 177)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 175 列INT:Condition |
第 25 组研究项(列 171 到 177)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 176 列INT:TicketPrice |
第 25 组研究项(列 171 到 177)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 177 列INT:AlreadyIn |
第 25 组研究项(列 171 到 177)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 178 列INT:ItemIndex |
第 26 组研究项(列 178 到 184)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 179 列INT:Contribution |
第 26 组研究项(列 178 到 184)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 180 列INT:MaxNum |
第 26 组研究项(列 178 到 184)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 181 列INT:Price |
第 26 组研究项(列 178 到 184)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 182 列INT:Condition |
第 26 组研究项(列 178 到 184)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 183 列INT:TicketPrice |
第 26 组研究项(列 178 到 184)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 184 列INT:AlreadyIn |
第 26 组研究项(列 178 到 184)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 185 列INT:ItemIndex |
第 27 组研究项(列 185 到 191)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 186 列INT:Contribution |
第 27 组研究项(列 185 到 191)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 187 列INT:MaxNum |
第 27 组研究项(列 185 到 191)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 188 列INT:Price |
第 27 组研究项(列 185 到 191)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 189 列INT:Condition |
第 27 组研究项(列 185 到 191)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 190 列INT:TicketPrice |
第 27 组研究项(列 185 到 191)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 191 列INT:AlreadyIn |
第 27 组研究项(列 185 到 191)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 192 列INT:ItemIndex |
第 28 组研究项(列 192 到 198)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 193 列INT:Contribution |
第 28 组研究项(列 192 到 198)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 194 列INT:MaxNum |
第 28 组研究项(列 192 到 198)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 195 列INT:Price |
第 28 组研究项(列 192 到 198)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 196 列INT:Condition |
第 28 组研究项(列 192 到 198)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 197 列INT:TicketPrice |
第 28 组研究项(列 192 到 198)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 198 列INT:AlreadyIn |
第 28 组研究项(列 192 到 198)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 199 列INT:ItemIndex |
第 29 组研究项(列 199 到 205)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 200 列INT:Contribution |
第 29 组研究项(列 199 到 205)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 201 列INT:MaxNum |
第 29 组研究项(列 199 到 205)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 202 列INT:Price |
第 29 组研究项(列 199 到 205)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 203 列INT:Condition |
第 29 组研究项(列 199 到 205)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 204 列INT:TicketPrice |
第 29 组研究项(列 199 到 205)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 205 列INT:AlreadyIn |
第 29 组研究项(列 199 到 205)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 206 列INT:ItemIndex |
第 30 组研究项(列 206 到 212)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 207 列INT:Contribution |
第 30 组研究项(列 206 到 212)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 208 列INT:MaxNum |
第 30 组研究项(列 206 到 212)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 209 列INT:Price |
第 30 组研究项(列 206 到 212)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 210 列INT:Condition |
第 30 组研究项(列 206 到 212)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 211 列INT:TicketPrice |
第 30 组研究项(列 206 到 212)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 212 列INT:AlreadyIn |
第 30 组研究项(列 206 到 212)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 213 列INT:ItemIndex |
第 31 组研究项(列 213 到 219)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 214 列INT:Contribution |
第 31 组研究项(列 213 到 219)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 215 列INT:MaxNum |
第 31 组研究项(列 213 到 219)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 216 列INT:Price |
第 31 组研究项(列 213 到 219)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 217 列INT:Condition |
第 31 组研究项(列 213 到 219)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 218 列INT:TicketPrice |
第 31 组研究项(列 213 到 219)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 219 列INT:AlreadyIn |
第 31 组研究项(列 213 到 219)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 220 列INT:ItemIndex |
第 32 组研究项(列 220 到 226)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 221 列INT:Contribution |
第 32 组研究项(列 220 到 226)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 222 列INT:MaxNum |
第 32 组研究项(列 220 到 226)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 223 列INT:Price |
第 32 组研究项(列 220 到 226)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 224 列INT:Condition |
第 32 组研究项(列 220 到 226)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 225 列INT:TicketPrice |
第 32 组研究项(列 220 到 226)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 226 列INT:AlreadyIn |
第 32 组研究项(列 220 到 226)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 227 列INT:ItemIndex |
第 33 组研究项(列 227 到 233)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 228 列INT:Contribution |
第 33 组研究项(列 227 到 233)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 229 列INT:MaxNum |
第 33 组研究项(列 227 到 233)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 230 列INT:Price |
第 33 组研究项(列 227 到 233)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 231 列INT:Condition |
第 33 组研究项(列 227 到 233)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 232 列INT:TicketPrice |
第 33 组研究项(列 227 到 233)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 233 列INT:AlreadyIn |
第 33 组研究项(列 227 到 233)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 234 列INT:ItemIndex |
第 34 组研究项(列 234 到 240)的物品索引。由 City.cpp 与 IBuilding.cpp 按它匹配建筑研究列表里的物品,是这一组的主键。 | 必须大于 0,否则加载期断言。超出 NUM 的组不会被读取,填了也不生效。 |
第 235 列INT:Contribution |
第 34 组研究项(列 234 到 240)的贡献度。加入建筑研究列表后存为 m_ResearchItemContri。 | 缺失经 atoi 视为 0。 |
第 236 列INT:MaxNum |
第 34 组研究项(列 234 到 240)的最大数量。建筑刷新商店时用它覆盖 m_ResearchItemMaxNum。 | 缺失经 atoi 视为 0,等于禁止购买。 |
第 237 列INT:Price |
第 34 组研究项(列 234 到 240)的价格。加入建筑研究列表后存为 m_ResearchItemPrice。 | 缺失经 atoi 视为 0,等于免费。 |
第 238 列INT:Condition |
第 34 组研究项(列 234 到 240)的条件编号,指向 Public/Condition.txt 的第 1 列,1 起。研究升级时由 BuildingCore::ConditionTest 校验并扣除消耗。 | 加载时只断言非负;实际研究时要求落在 1 到 Condition.txt 行数之间,否则日志出现 condition illegal 并失败。 |
第 239 列INT:TicketPrice |
第 34 组研究项(列 234 到 240)的票券价格。加入建筑研究列表后存为 m_ResearchItemTicketValue。 | 加载时断言非负。 |
第 240 列INT:AlreadyIn |
第 34 组研究项(列 234 到 240)的是否预置标记。非 0 时服务端 City::AddAlreadyInResearchItem 会把这一项自动加进建筑的研究列表;而客户端 GMInterface_Script_City.cpp 遇到这一列等于 1 会直接 continue,不再把它显示为可选研究项。两端对同一个值的处理是相反的。
|
加载时断言非负。样本全部为 0;置 1 会同时改变服务端预置行为与客户端显示,改前先想清楚要哪一边。 |
第 241 列INT:ItemIndex |
第 35 组研究项的残缺列(列名 ItemIndex)。本文件到第 246 列就结束了,这一组缺了最后的 AlreadyIn,服务端也不会读它——因为读满 34 组后就已经到列数上限。 | 不属于受支持的用法。想再加一组就必须同时在类型行、列名行和所有数据行末尾补列,不能只改 NUM。 |
第 242 列INT:Contribution |
第 35 组研究项的残缺列(列名 Contribution)。本文件到第 246 列就结束了,这一组缺了最后的 AlreadyIn,服务端也不会读它——因为读满 34 组后就已经到列数上限。 | 不属于受支持的用法。想再加一组就必须同时在类型行、列名行和所有数据行末尾补列,不能只改 NUM。 |
第 243 列INT:MaxNum |
第 35 组研究项的残缺列(列名 MaxNum)。本文件到第 246 列就结束了,这一组缺了最后的 AlreadyIn,服务端也不会读它——因为读满 34 组后就已经到列数上限。 | 不属于受支持的用法。想再加一组就必须同时在类型行、列名行和所有数据行末尾补列,不能只改 NUM。 |
第 244 列INT:Price |
第 35 组研究项的残缺列(列名 Price)。本文件到第 246 列就结束了,这一组缺了最后的 AlreadyIn,服务端也不会读它——因为读满 34 组后就已经到列数上限。 | 不属于受支持的用法。想再加一组就必须同时在类型行、列名行和所有数据行末尾补列,不能只改 NUM。 |
第 245 列INT:Condition |
第 35 组研究项的残缺列(列名 Condition)。本文件到第 246 列就结束了,这一组缺了最后的 AlreadyIn,服务端也不会读它——因为读满 34 组后就已经到列数上限。 | 不属于受支持的用法。想再加一组就必须同时在类型行、列名行和所有数据行末尾补列,不能只改 NUM。 |
第 246 列INT:TicketPrice |
第 35 组研究项的残缺列(列名 TicketPrice)。本文件到第 246 列就结束了,这一组缺了最后的 AlreadyIn,服务端也不会读它——因为读满 34 组后就已经到列数上限。 | 不属于受支持的用法。想再加一组就必须同时在类型行、列名行和所有数据行末尾补列,不能只改 NUM。 |
常用修改实例
示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。
把 1 号集合第 1 项研究的售价从 3000 改为 3500
修改前:
INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT ID NUM ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice 1 18 30302006 30 1 3000 56 0 0 30302016 30 1 3000 56 0 0 30302026 30 1 3000 56 0 0 30301006 30 1 3000 56 0 0 30301016 30 1 3000 56 0 0 30301026 30 1 3000 56 0 0 30301036 30 1 3000 56 0 0 30301046 30 1 3000 56 0 0 30301056 30 1 3000 56 0 0 30301066 30 1 3000 56 0 0 30301076 30 1 3000 56 0 0 30301086 30 1 3000 56 0 0 30301096 30 1 3000 56 0 0 30301106 30 1 3000 56 0 0 30301116 30 1 3000 56 0 0 30301126 30 1 3000 56 0 0 30301136 30 1 3000 56 0 0 30301146 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0
修改后:
INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT ID NUM ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice AlreadyIn ItemIndex Contribution MaxNum Price Condition TicketPrice 1 18 30302006 30 1 3500 56 0 0 30302016 30 1 3000 56 0 0 30302026 30 1 3000 56 0 0 30301006 30 1 3000 56 0 0 30301016 30 1 3000 56 0 0 30301026 30 1 3000 56 0 0 30301036 30 1 3000 56 0 0 30301046 30 1 3000 56 0 0 30301056 30 1 3000 56 0 0 30301066 30 1 3000 56 0 0 30301076 30 1 3000 56 0 0 30301086 30 1 3000 56 0 0 30301096 30 1 3000 56 0 0 30301106 30 1 3000 56 0 0 30301116 30 1 3000 56 0 0 30301126 30 1 3000 56 0 0 30301136 30 1 3000 56 0 0 30301146 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0 0 0 30 1 3000 56 0
按第 1 列定位 1 号集合。它的第 1 组占第 3 到 9 列:物品 30302006、贡献度 30、最大数量 1、价格 3000、条件 56、票券 0、预置 0。这里只把第 6 列(价格)改成 3500,其余 245 列与 NUM=18 全部保留。
改价格不需要动其它列:本表没有「合计必须等于某值」的校验,每组彼此独立。但改第 2 列 NUM 会让后面多读或少读整组,改第 7 列条件时要先确认 Condition.txt 里确实有那一号。
示例块含类型行、列名行与该行原文,不能覆盖整张表。改完需要重启 World。
验证与排查
World 启动日志里 Init_ResearchItemTable 会打印 “Load ResearchItem.txt ... OK!”;物品索引非正或条件、票券、预置为负会在加载期断言。改动后重启 World,在城市建筑界面打开研究列表,核对物品、价格、数量与票券价,再实际发起一次研究,确认进度条上限来自 Condition.txt 的任务数、消耗按 Condition.txt 扣除。失败时恢复备份并重启。
ID 必须等于行号
消费方是 m_Table[ResearchSet - 1],用的是行下标而不是第 1 列的值。样本 106 行的 ID 正好是 1 到 106,说明二者必须一致;只改第 1 列而不挪行会让引用错位。
建筑等级会叠加多个集合
for(Level = 0; Level <= BuildingLevel; ++Level) 逐级取 CityBuilding.txt 的 ResearchItem 集合,等级 3 的建筑会依次应用 0、1、2、3 四个集合。想让某项在高等级才出现,就把它放到后面等级对应的集合里。
AlreadyIn 的两端行为相反
服务端 AddAlreadyInResearchItem 见到非 0 就把该项自动加进建筑的研究列表;客户端 GMInterface_Script_City.cpp 见到 1 则是 continue,不把它显示成可研究项。这不是 bug 而是「预置项由服务端直接下发、界面不再列出」的设计,但改这个值时必须同时考虑两端。
只有 34 组能放满
246 列 = 2 + 34×7 + 6。第 241 到 246 列是残缺的第 35 组(缺 AlreadyIn)。把 NUM 填到 35 会让代码读第 247 列,超出本文件列数。要突破就得同时给类型行、列名行和所有数据行补列。
条件编号是 1 起
第 7 列写的是 Condition.txt 的编号,使用时是 m_Table[ConditionIndex - 1],编号必须落在 1 到 Condition.txt 行数之间。
关联与依据
Public/Condition.txt · Public/CityBuilding.txt
其他配置及整理状态 · 服务端外网设置 · Lua 接口索引
Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据Common/DataBase/TLBB_DBC.h:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/Main/WorldTable.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/Main/WorldTable.h:实际加载、解析、字段使用或示例关联依据Common/GameDefine_City.h:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/WorldData/City.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/WorldData/IBuilding.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/WorldData/BuildingCore.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/WorldData/exe/ExeCityResearchLevelUp.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/WorldServer/World/WorldData/exe/ExeCityBuildingLevelUp.cpp:实际加载、解析、字段使用或示例关联依据Client/Client/Common/TDDBC_Struct.h:实际加载、解析、字段使用或示例关联依据Client/Client/Game/DBC/GMDataBase.cpp:实际加载、解析、字段使用或示例关联依据Client/Client/Game/Interface/GMInterface_Script_City.cpp:实际加载、解析、字段使用或示例关联依据resources/Public/Config/ResearchItem.txt:实际加载、解析、字段使用或示例关联依据
本页核对 Init_ResearchItemTable 的 7 列循环与 0 基列号、MAX_RESEARCH_TYPE=512 与 MAX_RESEARCH_ITEM_PER_BUILDING=100 两个上限、各字段的断言范围,以及 City.cpp / IBuilding.cpp / ExeCityResearchLevelUp.cpp 的消费路径、ConditionTest 的 1 起编号、客户端 _DBC_RESEARCH_ITEM 的全 246 整数结构与 AlreadyIn 的跳过分支;样本 106 行的 ID 与行号一致性、列数与组数边界经脚本核算。未启动服务端与游戏,研究流程的实际表现需要实测。