脚本元数据
每个脚本都应该在文件开头包含元数据注释,用于在脚本管理器中显示信息。
必需的元数据
Description(描述)
# Description: 脚本的简要说明
- 支持中文:现在可以在描述中使用中文
- 显示格式:会根据界面语言自动添加前缀(中文界面显示"简介:",英文界面显示"Description:")
- 位置要求:必须在文件开头
示例:
# Description: 统计并显示各类型Note数量
可选的元数据
Args(参数说明)
# Args: 参数说明,例如:起始时间(ms) 结束时间(ms)
用于说明脚本需要的参数,会在脚本管理器中显示。
示例:
# Description: 将所有Note时间平移
# Args: 偏移量(ms) - 正数延后,负数提前
UI(自定义界面)
# UI: {"fields":[...]}
定义自定义输入对话框,详见自定义UI对话框章节。
示例:
# Description: 删除指定类型的Note
# UI: {"fields":[{"name":"note_type","field_type":"select","label":"Note类型:","default_value":"bomb","options":["tap","flick","slide","bomb"]}]}
完整示例
简单脚本
# Description: 打印谱面信息
from rct_api import get_current_chart
def main():
chart = get_current_chart()
if chart:
print(f"Note数量: {len(chart.notes)}")
if __name__ == "__main__":
main()
带参数的脚本
# Description: Note时间平移工具
# Args: 偏移量(ms)
import sys
from rct_api import get_current_chart, save_current_chart
def main():
if len(sys.argv) < 2:
print("错误:请提供偏移量参数")
return
offset = float(sys.argv[1])
chart = get_current_chart()
if chart:
chart.shift_time(offset)
save_current_chart(chart)
print(f"时间平移 {offset}ms 完成")
if __name__ == "__main__":
main()
带自定义UI的脚本
# Description: 按类型删除Note
# UI: {"fields":[{"name":"note_type","field_type":"select","label":"要删除的类型:","default_value":"bomb","options":["tap","flick","bomb"]}]}
import sys
import json
from rct_api import get_current_chart, save_current_chart, Note
def main():
if len(sys.argv) < 2:
return
params = json.loads(sys.argv[1])
note_type = params.get('note_type')
# 处理逻辑...
print(f"删除 {note_type} 类型Note")
if __name__ == "__main__":
main()
注意事项
- 编码:文件必须使用 UTF-8 编码
- 位置:元数据注释必须在文件开头
- 格式:严格遵循
# Key: Value的格式 - 必需性:
Description是必需的,其他可选