Skip to content

高级配置指南

字数
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)

属性名类型说明典型值范围
WeapTypestring武器类型"rifle", "pistol", "bullpup" 等
Ergonomicsnumber人体工程学50-100
VerticalRecoilnumber垂直后坐力50-200
HorizontalRecoilnumber水平后坐力100-500
Dispersionnumber散布2-10
CameraRecoilnumber镜头后坐0.02-0.15
BaseMalfunctionChancenumber基础故障率0.001-0.01
AutoROFnumber自动射速 (发/分)300-1000
SemiROFnumber半自动射速200-500
Weightnumber重量 (kg)0.5-5.0
DurabilityBurnRationumber耐久消耗比率0.1-2.0
RecoilDampingnumber后坐力阻尼0.5-1.0
HasShoulderContactboolean是否有肩部接触true/false
AllowOverheatboolean是否允许过热true/false

配件属性 (WeaponMod)

属性名类型说明典型值范围
ModTypestring配件类型"sight", "barrel", "" 等
Ergonomicsnumber人体工程学修正-30 到 +30
VerticalRecoilnumber垂直后坐力修正-30 到 +30
HorizontalRecoilnumber水平后坐力修正-30 到 +30
Accuracynumber精度修正-20 到 +40
AimSpeednumber瞄准速度修正-30 到 +10
Weightnumber重量 (kg)0.01-2.0
ReloadSpeednumber装弹速度修正-10 到 +10
MalfunctionChancenumber故障率修正-0.5 到 +0.5

手动调整生成的补丁

场景1: 调整特定武器的属性

  1. 打开 output/weapons_realism_patch.json
  2. 找到需要修改的武器ID
  3. 修改相应属性值

例如,降低某把武器的后坐力:

json
{
    "武器ID": {
        "$type": "RealismMod.Gun, RealismMod",
        "ItemID": "武器ID",
        "VerticalRecoil": 50,      // 从65改为50
        "HorizontalRecoil": 120,   // 从160改为120
        // ... 其他属性
    }
}

场景2: 调整特定配件的属性

  1. 打开 output/attachments_realism_patch.json
  2. 找到需要修改的配件ID
  3. 修改相应属性值

例如,提高某个瞄准镜的瞄准速度:

json
{
    "配件ID": {
        "$type": "RealismMod.WeaponMod, RealismMod",
        "ItemID": "配件ID",
        "ModType": "sight",
        "AimSpeed": -8,            // 从-12改为-8(数值越小越快)
        // ... 其他属性
    }
}

场景3: 批量调整

如果需要批量调整多个物品,可以:

  1. 使用文本编辑器的查找替换功能
  2. 或编写简单的Python脚本进行批处理
  3. 或使用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)

模板文件的使用

创建新模板

如果要为新的武器/配件类型创建模板:

  1. 在相应文件夹(weapons/ 或 attatchments/)创建新的JSON文件
  2. 文件名格式:新类型Templates.json
  3. 文件内容格式:
json
{
    "物品ID1": {
        "$type": "RealismMod.Gun, RealismMod",  // 或 "RealismMod.WeaponMod, RealismMod"
        "ItemID": "物品ID1",
        // ... 属性
    },
    "物品ID2": {
        "$type": "RealismMod.Gun, RealismMod",
        "ItemID": "物品ID2",
        // ... 属性
    }
}

从现有物品复制模板

  1. 找到现有的相似物品
  2. 复制其配置作为基础
  3. 修改ItemID和其他需要调整的属性

常见问题解决

Q: 如何让脚本为特定物品使用特定的模板?

A: 在模板文件中添加与该物品相同ItemID的条目,脚本会优先使用精确匹配的模板。

例如,在 weapons/AssaultRifleTemplates.json 中:

json
{
    "你的武器ID": {
        "$type": "RealismMod.Gun, RealismMod",
        "ItemID": "你的武器ID",
        "Name": "weapon_custom_ar",
        // ... 自定义属性
    }
}

Q: 如何禁止某些物品生成补丁?

A: 目前脚本会自动跳过无法识别parentId的物品。如果要手动跳过特定物品,可以:

  1. 将其移到Items文件夹外
  2. 或修改脚本添加黑名单功能

黑名单实现示例:

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:

  1. 检查JSON格式是否有效(使用在线JSON验证工具)
  2. 确认所有必需字段都存在
  3. 检查属性值是否在合理范围内
  4. 在游戏中测试实际效果

性能优化

大量物品处理

如果需要处理数千个物品,可以:

  1. 分批处理不同类型的物品
  2. 使用更快的JSON解析库(如orjson)
  3. 启用并行处理(需修改脚本)

备份和版本控制

建议:

  1. 每次生成前备份旧的补丁文件
  2. 使用Git等版本控制工具跟踪变更
  3. 记录每次修改的原因和日期

联系和反馈

如有问题或建议,请参考主README文件。

贡献者

The avatar of contributor named as SamuelNOTCuriousMeow SamuelNOTCuriousMeow

文件历史

撰写