在观看完《赛博朋克:边缘行者》之后,《I Really Want to Stay At Your House》一直萦绕于心中,无法散去。
可是在游戏中想要通过电台播放到该歌曲的随机性太大。然而今日无意中在Github看到一个可以在
(封面图链接:https://steamcommunity.com/sharedfiles/filedetails/?id=3049230855)
(B站专栏文章链接:https://www.bilibili.com/read/cv27067780)
项目地址:https://github.com/justarandomguyintheinternet/CP77_radioExt
项目下载地址:https://github.com/justarandomguyintheinternet/CP77_radioExt/releases
所需前置
CyberEngineTweaks:CyberEngineTweaks是一个框架,它可以为模组制作者提供了一种使用Lua脚本的方式,可以访问所有内部脚本功能。
RED4ext:RED4ext是一个扩展REDengine 4的库。它将允许模组制作者在自己的插件中添加新功能,修改游戏行为,添加新的脚本功能或调用已存在的脚本功能。
CET模组下载地址:https://github.com/maximegmd/CyberEngineTweaks/releases
RED4ext模组下载地址:https://github.com/WopsS/RED4ext/releases
模组安装
通过以上下载地址下载到最新版模组后,目前所有的最新版模组都已经支持2.01版本。
获取到三个模组后将它们解压到游戏根目录中,解压成功后即安装模组成功
游戏根目录相对路径为:
SteamLibrary\steamapps\common\Cyberpunk 2077
模组使用
如果模组安装成功,可直接来到CP77_radioExt的路径。
具体相对路径为:
Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\radioExt
该路径下您将会看到这样的文件夹结构:
文件夹结构
每个广播电台都是位于"radios"文件夹内的一个文件夹,包含一个"metadata.json"文件,其中包含有关该广播电台的信息。因此,要创建一个新的广播电台,首先在"radios"文件夹内创建一个新的文件夹,并为其取一个独特的名称(比如您的电台的名称)。
接下来,将模组根文件夹内的"metadata.json"模板文件复制并粘贴到您为电台创建的文件夹内(即您在上一步中创建的文件夹)。
因此完整的文件夹结构应该为:
添加歌曲
要将歌曲添加到您的广播电台,只需将歌曲文件复制到您的电台文件夹内。
支持的格式包括:.mp3、.wav、.ogg、.flac、.mp2、.wax、.wma。
游戏中会使用歌曲文件名作为歌曲名称
歌曲名称请严格遵守以下格式并保证歌曲名使用英文,中文概率导致模组导入失败
格式
数据文件
广播电台的metadata.json文件定义了其属性,如名称、图标等。 使用任何支持JSON文件语法高亮显示的文本编辑器打开它,千万不要忽略这一步,因为与创建电台有关的大多数问题都源于JSON文件的不正确编辑。(如果对JSON文件很熟悉的朋友用记事本编辑也无所谓。)
如果您的metadata.json文件缺少在模组更新中添加的任何属性,只需在安装了更新版本的模组的情况下运行游戏一次,系统会自动添加缺少的字段。
对于使用字符串的属性(比如displayName),需要正确转义任何保留字符,任何稍微像样的文本编辑器都会提醒您是否漏掉了任何字符。
基本属性
displayName:控制在游戏中显示的电台名称。
fm:一个数字(不要加引号),用于将电台放在电台列表中的适当位置。如果displayName有一个FM数字,它应该是相同的。
volume:电台的整体音量倍增器(也是一个数字),确保所有歌曲的音量相同,然后使用此值调整电台的整体音量以与原始电台相匹配。
icon:电台的图标,如果您不使用自定义图标,它可以是任何UIIcon记录。要查看所有记录的列表,请打开CET控制台的TweakDB Editor选项卡,并在搜索栏中输入UIIcon。(确保您已将tweakdb.str文件放置在Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks文件夹中)。
tweakdb.str文件下载地址:https://cdn-l-cyberpunk.cdprojektred.com/metadata-1.5.2.zip
自定义图标
所有与自定义图标相关的设置都在电台metadata.json文件的customIcon部分内。
useCustom:如果将其设置为false,将使用icon内指定的图标。如果设置为true,将使用自定义图标。
inkAtlasPath指向包含图标纹理的.inkatlas文件,例如base\\gameplay\\gui\\world\\vending_machines\\atlas_roach_race.inkatlas(路径需要双反斜杠\)。
inkAtlasPart指定应使用图标的.inkatlas的哪个部分,例如gryphon_5。
要创建自己的.inkatlas文件,请使用WolvenKit。WolvenKit地址:https://github.com/WolvenKit/WolvenKit
网络流
您可以使用放置在电台文件夹中的歌曲文件以外的任何网络音频流(以如.mp3结尾的URL,并在打开时显示默认音频播放器,例如https://radio.garden/api/ara/content/listen/TP8NDBv7/channel.mp3)。可以在此处找到一些示例,但也可以使用来自此处的大多数电台。
isStream:必须设置为true,以便尝试从指定的URL流式传输。
streamURL:流的URL。
歌曲排序
order字段可用于指定应播放歌曲的顺序。 它不必包含电台的所有歌曲,没有在顺序中指定的歌曲将在顺序段之前/之后随机播放。 只需将您想要按顺序排列的所有歌曲文件名添加到字段中,每个都是其自己的字符串,并以逗号分隔。
歌曲快速转换为英文
如果您的文件夹中的音乐已经整理为歌曲作者 - 歌曲名.文件后缀格式,只是缺乏转换为英文,可调用网易翻译的api完成自动翻译。
API调用Python示例
(因小黑盒不支持代码块输入,可进入开头B站专栏文章链接查看。)
最终效果
周杰伦 - 彩虹