高级配置指南
字数
1555 字
阅读时间
7 分钟
脚本自定义配置
1. 添加新的武器/配件类型支持
如果MOD中引入了新的物品类型,您需要:
步骤1: 确定物品的ParentID
查看Items文件夹中的JSON文件,找到对应物品的 parentId 字段。
例如:
json
{
"新物品ID": {
"parentId": "新的ParentID",
...
}
}步骤2: 在脚本中添加映射
打开 generate_realism_patch.py,找到 PARENT_ID_TO_TEMPLATE 字典,添加新的映射:
python
PARENT_ID_TO_TEMPLATE = {
# 现有映射...
# 添加新的映射
"新的ParentID": "weapons/新武器类型Templates.json", # 或 attatchments/新配件类型Templates.json
}2. 修改默认武器配置
找到脚本中的 DEFAULT_WEAPON_TEMPLATE 字典,修改默认值:
python
DEFAULT_WEAPON_TEMPLATE = {
"$type": "RealismMod.Gun, RealismMod",
"WeapType": "rifle", # 武器类型
"Ergonomics": 85, # 人体工程学
"VerticalRecoil": 65, # 垂直后坐力
"HorizontalRecoil": 160, # 水平后坐力
"BaseMalfunctionChance": 0.0012, # 基础故障率
"AutoROF": 600, # 自动射速
# ... 更多属性
}3. 修改默认配件配置
找到脚本中的 DEFAULT_MOD_TEMPLATE 字典:
python
DEFAULT_MOD_TEMPLATE = {
"$type": "RealismMod.WeaponMod, RealismMod",
"ModType": "", # 配件类型
"Ergonomics": 0, # 人体工程学影响
"VerticalRecoil": 0, # 垂直后坐力影响
"HorizontalRecoil": 0, # 水平后坐力影响
# ... 更多属性
}属性说明
武器属性 (Gun)
| 属性名 | 类型 | 说明 | 典型值范围 |
|---|---|---|---|
| WeapType | string | 武器类型 | "rifle", "pistol", "bullpup" 等 |
| Ergonomics | number | 人体工程学 | 50-100 |
| VerticalRecoil | number | 垂直后坐力 | 50-200 |
| HorizontalRecoil | number | 水平后坐力 | 100-500 |
| Dispersion | number | 散布 | 2-10 |
| CameraRecoil | number | 镜头后坐 | 0.02-0.15 |
| BaseMalfunctionChance | number | 基础故障率 | 0.001-0.01 |
| AutoROF | number | 自动射速 (发/分) | 300-1000 |
| SemiROF | number | 半自动射速 | 200-500 |
| Weight | number | 重量 (kg) | 0.5-5.0 |
| DurabilityBurnRatio | number | 耐久消耗比率 | 0.1-2.0 |
| RecoilDamping | number | 后坐力阻尼 | 0.5-1.0 |
| HasShoulderContact | boolean | 是否有肩部接触 | true/false |
| AllowOverheat | boolean | 是否允许过热 | true/false |
配件属性 (WeaponMod)
| 属性名 | 类型 | 说明 | 典型值范围 |
|---|---|---|---|
| ModType | string | 配件类型 | "sight", "barrel", "" 等 |
| Ergonomics | number | 人体工程学修正 | -30 到 +30 |
| VerticalRecoil | number | 垂直后坐力修正 | -30 到 +30 |
| HorizontalRecoil | number | 水平后坐力修正 | -30 到 +30 |
| Accuracy | number | 精度修正 | -20 到 +40 |
| AimSpeed | number | 瞄准速度修正 | -30 到 +10 |
| Weight | number | 重量 (kg) | 0.01-2.0 |
| ReloadSpeed | number | 装弹速度修正 | -10 到 +10 |
| MalfunctionChance | number | 故障率修正 | -0.5 到 +0.5 |
手动调整生成的补丁
场景1: 调整特定武器的属性
- 打开
output/weapons_realism_patch.json - 找到需要修改的武器ID
- 修改相应属性值
例如,降低某把武器的后坐力:
json
{
"武器ID": {
"$type": "RealismMod.Gun, RealismMod",
"ItemID": "武器ID",
"VerticalRecoil": 50, // 从65改为50
"HorizontalRecoil": 120, // 从160改为120
// ... 其他属性
}
}场景2: 调整特定配件的属性
- 打开
output/attachments_realism_patch.json - 找到需要修改的配件ID
- 修改相应属性值
例如,提高某个瞄准镜的瞄准速度:
json
{
"配件ID": {
"$type": "RealismMod.WeaponMod, RealismMod",
"ItemID": "配件ID",
"ModType": "sight",
"AimSpeed": -8, // 从-12改为-8(数值越小越快)
// ... 其他属性
}
}场景3: 批量调整
如果需要批量调整多个物品,可以:
- 使用文本编辑器的查找替换功能
- 或编写简单的Python脚本进行批处理
- 或使用JSON编辑工具
示例批量调整脚本:
python
import json
# 读取补丁文件
with open('output/weapons_realism_patch.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 批量调整所有武器的故障率
for item_id, item_data in data.items():
if "BaseMalfunctionChance" in item_data:
item_data["BaseMalfunctionChance"] *= 0.8 # 降低20%
# 保存修改
with open('output/weapons_realism_patch_modified.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)模板文件的使用
创建新模板
如果要为新的武器/配件类型创建模板:
- 在相应文件夹(weapons/ 或 attatchments/)创建新的JSON文件
- 文件名格式:
新类型Templates.json - 文件内容格式:
json
{
"物品ID1": {
"$type": "RealismMod.Gun, RealismMod", // 或 "RealismMod.WeaponMod, RealismMod"
"ItemID": "物品ID1",
// ... 属性
},
"物品ID2": {
"$type": "RealismMod.Gun, RealismMod",
"ItemID": "物品ID2",
// ... 属性
}
}从现有物品复制模板
- 找到现有的相似物品
- 复制其配置作为基础
- 修改ItemID和其他需要调整的属性
常见问题解决
Q: 如何让脚本为特定物品使用特定的模板?
A: 在模板文件中添加与该物品相同ItemID的条目,脚本会优先使用精确匹配的模板。
例如,在 weapons/AssaultRifleTemplates.json 中:
json
{
"你的武器ID": {
"$type": "RealismMod.Gun, RealismMod",
"ItemID": "你的武器ID",
"Name": "weapon_custom_ar",
// ... 自定义属性
}
}Q: 如何禁止某些物品生成补丁?
A: 目前脚本会自动跳过无法识别parentId的物品。如果要手动跳过特定物品,可以:
- 将其移到Items文件夹外
- 或修改脚本添加黑名单功能
黑名单实现示例:
python
# 在脚本开头添加
ITEM_BLACKLIST = [
"要跳过的物品ID1",
"要跳过的物品ID2",
]
# 在 process_item_file 方法中添加检查
def process_item_file(self, item_file: Path):
# ...
for item_id, item_data in items_data.items():
if item_id in ITEM_BLACKLIST: # 添加这个检查
print(f" 跳过 {item_id}: 在黑名单中")
continue
# ... 继续处理Q: 如何验证生成的补丁是否正确?
A:
- 检查JSON格式是否有效(使用在线JSON验证工具)
- 确认所有必需字段都存在
- 检查属性值是否在合理范围内
- 在游戏中测试实际效果
性能优化
大量物品处理
如果需要处理数千个物品,可以:
- 分批处理不同类型的物品
- 使用更快的JSON解析库(如orjson)
- 启用并行处理(需修改脚本)
备份和版本控制
建议:
- 每次生成前备份旧的补丁文件
- 使用Git等版本控制工具跟踪变更
- 记录每次修改的原因和日期
联系和反馈
如有问题或建议,请参考主README文件。