骑马与砍杀战团本地配置修改:用 Python 批量调整参数
很多设置型修改并不需要接触游戏进程,只要处理本地配置文件即可。本文用一个 Python 小工具演示:读取、备份、修改、查看和恢复一份与骑马与砍杀战团设置结构类似的 INI 文件。它只操作本地文本,不注入、不读内存,适合想用脚本整理游戏设置的玩家。
一、这个小工具做什么
- 第一次运行
--show时,如果配置文件不存在,会自动生成warband_config.ini。 --show按分区打印当前配置。--set修改指定分区下的键值,写入前自动备份。--reset恢复默认配置,恢复前也会备份。- 备份文件保存在
warband_backup目录,文件名带时间戳。
二、完整示例代码
#!/usr/bin/env python3
# coding: utf-8
'''骑马与砍杀战团本地配置修改示例。只处理本地 INI 文本。'''
import configparser
import shutil
import sys
from datetime import datetime
from pathlib import Path
CONFIG = Path('warband_config.ini')
BACKUP = Path('warband_backup')
DEFAULT = {
'display': {
'resolution_width': '1280', 'resolution_height': '720', 'windowed': '1'},
'audio': {
'master_volume': '0.80', 'music_volume': '0.65'},
'gameplay': {
'battle_size': '100', 'difficulty': 'normal', 'auto_save': '1'},
}
def create(path=CONFIG):
parser = configparser.ConfigParser()
parser.read_dict(DEFAULT)
with path.open('w', encoding='utf-8') as f:
parser.write(f)
print(f'已生成: {path}')
def ensure(path=CONFIG):
if not path.exists():
create(path)
return path
def backup(path=CONFIG):
BACKUP.mkdir(exist_ok=True)
stamp = datetime.now().strftime('%Y%m%d_%H%M%S')
target = BACKUP / f'{path.stem}_{stamp}{path.suffix}'
shutil.copy2(path, target)
print(f'已备份: {target}')
def load(path=CONFIG):
parser = configparser.ConfigParser()
parser.read(path, encoding='utf-8')
return parser
def show(parser):
print('\n当前配置:')
for section in parser.sections():
print(f'[{section}]')
for key, value in parser.items(section):
print(f' {key} = {value}')
def set_value(section, key, value, path=CONFIG):
parser = load(path)
if not parser.has_section(section):
parser.add_section(section)
parser.set(section, key, value)
backup(path)
with path.open('w', encoding='utf-8') as f:
parser.write(f)
print(f'已修改: [{section}] {key} = {value}')
show(load(path))
def reset(path=CONFIG):
if path.exists():
backup(path)
create(path)
def usage():
print('用法:')
print(' python warband_config_tool.py --show')
print(' python warband_config_tool.py --set <section> <key> <value>')
print(' python warband_config_tool.py --reset')
print('示例:')
print(' python warband_config_tool.py --set gameplay battle_size 150')
def main():
args = sys.argv[1:]
path = ensure()
if not args or args[0] in ('-h', '--help'):
usage()
elif args[0] == '--show':
show(load(path))
elif args[0] == '--reset':
reset(path)
elif args[0] == '--set' and len(args) == 4:
set_value(args[1], args[2], args[3], path)
else:
print('参数错误。')
usage()
if __name__ == '__main__':
main()
三、操作步骤
- 将代码保存为
warband_config_tool.py。 - 在脚本所在目录打开终端。
- 查看当前配置:
python warband_config_tool.py --show
- 修改战斗规模为 150:
python warband_config_tool.py --set gameplay battle_size 150
- 改成全屏或窗口模式(示例中 0 表示关闭窗口模式,具体以你的配置文件含义为准):
python warband_config_tool.py --set display windowed 0
- 恢复默认:
python warband_config_tool.py --reset
四、想接入真实配置时怎么改
如果你已经有游戏生成的配置文件,把 CONFIG = Path('warband_config.ini') 改成实际路径即可。不同版本和 MOD 的键名可能不同,建议先复制一份备份,再只修改你确认含义的键。脚本按 INI 分区读写,适合 [display]、[audio]、[gameplay] 这类结构;如果实际文件没有分区,可以先统一加一个 [gameplay] 分区,或者改写 load、set_value 的解析方式。
五、注意事项
- 修改前保留备份。
- 不要在游戏运行中同时写入同一个配置文件。
- 如果改错了,把
warband_backup里的备份文件复制回去即可。 - 本文示例只处理本地文本配置,不涉及进程内存、注入或外挂行为。