摘要:《セヴンデイズ あなたとすごす七日間》的主机版本包含多张PC版所缺失的CG,导致PC玩家体验不全。目前,该移植工作缺乏现成的技术方案。本研究旨在探索一种可行的移植方法,通过解包主机资源、解析KiriKiri2引擎脚本结构并修改相关指令,成功将NS版新增CG整合至Steam版游戏中。实践表明,即便不具备深入的编程知识,爱好者也可通过利用开源工具与脚本分析完成此项工作。本文完整阐述了移植流程,为同类游戏的内容移植提供了切实参考。通过这些内容,读者可以学习到将七日间主机版CG移植到PC版上的全步骤,并进行实际尝试。
关键词:与你共度的七日间;资源提取;游戏资源移植;KiriKiri2
一、前言
《セヴンデイズ あなたとすごす七日間》(常用译名:7days-与你共度的七日间,下文简称为“七日间”)是以“不忘初心进行创作”(原文“原点を忘れないものづくり”)为理念[1]的合同会社LIFE0(下称LIFE0)创作的“给已逝女主角以幸福结局的超自然恋爱ADV”(原文:“死んでるヒロインを幸せに終わらせるオカルティック恋愛ADV”)[2],在2017年9月29日正式发售,并于2018年7月5日加入PlayStation Vita(下称PSV)平台[3]、于2020年8月26日在steam上架包含额外内容“紫色的信封”篇的完整英日双语版本[4]、于2024年6月6日正式推出Nintendo Switch(下称NS)版。[5]
在PSV版的游戏中,有若干新增的CG内容,这些新增的CG也一并加入到NS版中。然而,PC端的玩家却无法直接在PC端游戏内看到那些CG,只能设法使用相关模拟器,而模拟器的性能始终稍逊一筹。那么还有什么好方法能直接在PC端看到这些CG呢?可行方法之一是等待技术人员实现移植。坏消息是,直到现在为止也还没有技术人员去做,或是已经做好了但不打算发布;好消息是,进行这一步需要的相关知识并不复杂,甚至对KiriKiri2(PC版七日间使用的游戏引擎)语言一窍不通的小白,也可以摸索出CG移植的方法。笔者正是这样的小白,通过最基本的方法慢慢找到了一些可行的方法。那么,我们就从头开始,一步步达成最终目的吧。
二、具体步骤
(一)获得新CG的原图
1.NS版游戏资源文件的解包
显而易见,要进行CG移植,就得首先拿到需要移植的CG的原图,也就是说我们至少得先找到PSV版或NS版的资源文件并尝试解包。这里我们选择NS版,主要是出于以下考虑:
图1.NS版七日间的官方介绍网页(部分)
图片来源:https://www.prot.co.jp/switch/7days/index.html
首先,NS版使用了高清CG,这与steam版的游戏分辨率相符;其次NS版是双语版本,支持语言随时切换,这样我们对脚本进行检索时不必切换到不那么常用日语输入法。
基于这些优势,笔者找到了对应的游戏资源文件。获取游戏资源文件的方法不在本文讨论范围内。笔者的建议是,在二手市场或其他地方找到游戏卡带,然后用工具提取出游戏的xci文件①,这样最能确保安全性。不论如何,总之我们就这样拿到了游戏的xci文件。
xci文件包含了游戏资源文件,也就是游戏脚本、CG、背景、语音等等诸多内容。那么怎么把它们提取出来呢?我们可以直接在GitHub上检索对应的工具,也可以找找有没有相关的贴子。好消息是,Switch毕竟还是个热门平台,所以相关内容检索起来不难。这里我们找到了一个讲解解包xci文件的贴子,如图2所示:
图2.贴吧处找到的XCI文件提取资源流程讲解贴
图片来源:https://tieba.baidu.com/p/7409095483
大致总结一下其中内容:可以使用开源工具hactool对xci文件进行解包,解包时需要事先获取keys,然后按步骤操作即可。[6]依照贴子中讲述的方法,我们就得到了游戏资源文件。稍作推理,我们就能知道EVENTCG.PAK里的正是我们需要的CG。那么我们可以把它单独复制出来处理。
2.从PAK文件中提取出需要的图片文件
接下来是一个较为困难的点,此处游戏资源文件是以.PAK为后缀的。虽然常用的开源解包工具GARbro能打开看到里面都有什么文件,但无法将其直接转换为png图片,或是从中提取出png:
图3.使用GARbro尝试直接解析内部文件时,出现的失败提示
怎么办呢?注意到在此界面双击打开EVENTCG.PAK时左下角会显示这样的文字:
图4.使用GARbro打开游戏资源文件时,出现的文件类型提示
提示说这个文件属于Key resource archive(Key的游戏资源归档文件),看来这个资源文件被识别成了Key社游戏的资源文件,也就是说,它使用的引擎与Key的游戏(更具体地说,应该是Key的NS版的游戏)用的一致。那么Key的NS版的游戏用的又是什么引擎呢?这时候我们可以直接去VNDB查看相关信息:
图5.VNDB上NS版KANON的详细信息
注意到Engine(游戏引擎)一栏中,显示为Luca System。再找到其他作品的相关信息:
图6.VNDB上NS版AIR的详细信息
Engine一栏处的内容也是Luca System。据此,我们就直接推定NS版的七日间使用的游戏引擎为Luca System。
知道了引擎信息之后,我们就可以再去GitHub找对应的解包工具:
图7.GitHub上对“Luca System”的检索结果(部分)
图8.GitHub上的工具LucaSystemTools
使用该工具,我们就能把我们需要的这些主机版新增的CG提取出来了。当然,这里我们获取到的图片有些只是差分部分,这就需要慢慢用Photoshop或者类似的工具进行拼图了。由于这只是重复性工作,此处略去不讲。
图9.最终获得的主机版新增CG及工程文件
(二)观察原脚本并理解控制CG显示的具体语句
1.认识KiriKiri2
KiriKiri是一款由日本开发者W.Dee(しんぷる)主导设计的开源游戏引擎,其核心是TJS(Text JavaScript)和KS之类的脚本的脚本语言的解释器,而KiriKiri2则是这一引擎的核心升级版本。[7]换言之,实际上是TJS和KS脚本文件在控制游戏演出、资源调用、剧本显示等。那么,我们只需要对游戏的一些TJS或KS文件进行修改,即可达成我们的目的。
2.观察了解脚本中控制CG显示隐藏的语句
我们首先了解一个基本事实:对steam版的七日间,其游戏资源文件储存在游戏目录下的若干个xp3文件中,这些xp3文件中的具体内容可以通过开源工具GARbro查看、提取及重封装。我们首先用GARbro打开data.xp3,并在“压缩文件参数”处选择“没有加密。”:
图10.游戏目录下data.xp3包含的文件/文件夹一览
接下来我们找到TJS及KS文件并提取出来,不过在此之前回顾一下一些基本的英语单词[8]:
BGM
是“background music”的缩写,意为“背景音乐”。
scenario
n. a written outline of what happens in a film/movie or play (电影或戏剧的)剧情梗概
(注:此词可理解为记录游戏走向的剧情脚本)
sound
n. someting that you can hear 声音;响声
我们可以大概猜到,scenario文件夹里的KS文件就是控制游戏剧情的脚本,也就是我们需要修改的文件。不过我们还是把其他暂不清楚用途的文件都一起提取。接下来,对已有的文件名稍作观察:
图11.scenario文件夹中KS脚本文件(部分)
“プロローグ”即序幕;“サクラ”是“樱”,也就是第一章的主角。在使用十六进制编辑器wxMEdit打开“00-プロローグ.ks”之前,我们可以发现:
图12.00-プロローグ.ks的内容(部分,以UTF-16 Little Endian编码查看)
我们回顾一下游戏从头开始时的演出。先是全黑,然后是名为“???”的角色的第一句台词:
图13. 英文版七日间游戏内第一句台词
再之后对话框隐藏,有落水声,接下来显示一个白色的标题logo,暗转后进入下方旁白“7月19日 星期三”。结合上方脚本内容及基本的英语知识,我们大概可以做出判断:
bg相关指令用于设置背景图(BackGround),将背景设定为文件名为“st=”后字符串的图;另有变量time设定进入时长,且其单位应该是毫秒;msg显示对话框,与之相对的是hiademsg,隐藏对话框;se的设定大概是音效;wait的设定则是等待时长……最重要的一点是,这些指令要么以@开头,要么用半角双括号括起。注意到脚本中的非空行里,除去指令和台词部分,还有以半角分号及星号开头的一些内容。这些内容又是什么情况呢?不妨继续观察:
图14.00-プロローグ.ks的内容(部分,以UTF-16 Little Endian编码查看)
此处有一个控制跳转的jump指令,相关参数有storage(存储,可以理解为target所在的脚本文件)与target(目标)。可以推测以星号开头的内容属于“标签”,且有效部分是“|”之前的内容。
接着看半角分号的情况:
图15.00-プロローグ.ks的内容(部分,以UTF-16 Little Endian编码查看)
图16.英文版七日间游戏序章内容(部分)
如果没有半角分号,则按理来说在“Does she actually find school fun, or something?”与“It sounded like she was just introducing herself, but I was too lazy to even bother listening.”之间会有一句带语音的台词,而实际上没有。可见半角分号的作用是“使其后的语句无效”②。
我们可以在voice.xp3里找到名为cha001的语音文件,正好就是此处调用的语音。据此我们可以判断形如“[ps n=’charactername’ v=’voicefilename’]”的结构是用于控制显示的发言角色名及语音的。不过这就与我们的目的有些差异,所以一下不详细说明了。
不过这里还没有我们需要的指令,也就是cg相关的那些。我们直接跳转到第一张CG出现时的场面:
图17.英文版七日间游戏内第一张CG出现时的下一句台词
提示:若出现CG时的那一句仍难以确定位置,则可以考虑下一句或上一句,只要能用于锚定确切位置即可。那么这一句又出现在哪一个脚本文件里呢?一个个找未免太麻烦,我们直接让AI帮忙写一个快捷查找的脚本工具。此处笔者使用python,给DeepSeek输入“设计一个py脚本,要求:遍历当前目录下所有子文件夹及当前文件夹中的ks及tjs文件,用utf16le读取,并检索每一行是否有待检索的字符串。若有,print输出文件相对路径及该行行数”后即可得到所需工具。读者可以根据自己的实际情况调整,或参考文末附录中的示例代码。
借助这个小工具,我们可以找到上图台词所处的位置:“scenario/00-プロローグ4.ks,第1510行”,如下图所示:
图18.七日间游戏内第一张CG前后脚本内容
从图里我们可以看到,控制CG显示的语句格式是这样的:[cg st=’cgimage’ time=n]。那么,要把我们得到的主机版新增CG移植进去,我们首先要确定CG的名字及出现位置,然后照猫画虎即可。在此之前再留意一下[clearsg time=n]的指令作用。clear是清除,sg设定在图里最上方有,根据“私服”“眉”“目”“颊”等关键词,很显然其为立绘图的设定,那么我们就要记得引入CG前最后先设定一步clearsg。同理,如果引入CG的位置之后还有立绘出现,在确定不需要立绘图出现的情况下,最好还是预先将其用半角分号注释掉。
不过我们还要注意一点,CG既要加入也要消除。这一点,我们不妨直接看看游戏里是在哪一处消去CG的:
图19.英文版七日间游戏内第一处CG消除处的台词
然后调出wxMEdit的检索功能,我们就能发现:
图20.检索到的七日间脚本中第一处CG消除处的台词
仔细看看上面用到的指令,“[clearig]”,也就是说,在需要消去CG的时候,加上一个“[clearig]”就好了。
通过以上观察,我们就大致了解了CG显示及隐藏的指令。如有需要,各位读者可前往附录查看部分可用的指令及其基本用法。接下来,我们就能把这些经验用在实际工作中了。
3.在合适位置插入CG并更新CG鉴赏功能
要在“合适位置”插入CG,我们就得首先知道哪个位置是“合适”的。所以我们有必要实际体验一下NS版的游戏。笔者没有游戏主机,所以就用了名为“Eden”的NS模拟器。下载安装包并配置好keys(我们之前解包时用到的那个)和固件,导入游戏xci文件即可[9]。我们直接快进到新CG出现的位置:
图21.NS版七日间第一处新增CG出现位置
由于我们已经知道这里是樱的章节,而该章节仅有两个ks脚本文件,所以就不需要动那个检索全体的小工具了。于是我们在“01-サクラ.ks”里找到了那一句:
图22.七日间第一处新增CG在steam版脚本中的出现位置
稍作观察,不难发现这里调用的CG是我们之前解包得到的“ev101_a.png”。那么我们就可以在上方添加这样的一行“[cg st=ev101_a time=200]”,这样就算完成了CG移植工作最重要的一步——毕竟万事开头难嘛。接下来的工作都是类似的,只要找准新CG出现及消去位置,及时添加对应指令即可。
脚本文件编辑好了,但怎么让游戏读取它们呢?不用担心,KiriKiri引擎会优先读取xp3文件中的游戏资源,而且以patch.xp3中的部分为最优先③。那么怎么获得xp3文件呢?实际上GARbro就有这个功能:
图23.GARbro的创建压缩文件功能
我们把我们修改后的脚本文件和图片文件丢到同一个文件夹里,全选后点击“创建压缩文件”,选定压缩文件格式为“xp3”,版本为“2”,加密方式为“没有加密。”,之后按下确定键即可。
且慢,是不是漏掉了什么重要的内容?虽然把CG添加到了游戏内,但我们现在还没有修改过游戏的鉴赏功能。为了确保体验,这一步还是很有必要的。不过接下来的问题是,控制鉴赏功能的脚本文件是哪一个呢?我们可以进行简单的推理:
大前提:在游戏中,所有图片按钮都与其对应功能挂钩,这意味着控制该功能的脚本文件必然会引用图片按钮的图片名。
小前提:如果控制功能的脚本文件引用了图片按钮的图片名,那么通过对所有脚本检索该图片名,就能顺藤摸瓜发现该脚本文件。
结论:因此,只要对所有脚本检索某个图片按钮的图片名,即可顺藤摸瓜发现控制该功能的脚本文件。
那么事情就变得简单了,我们首先看看鉴赏功能对应的图片按钮图片名:
图24.鉴赏功能图片按钮图片名
图片名是“title@extra%button.png”,用上之前那个小工具一键检索,发现这个字符串在“gsys/SystemConfig.tjs”的第68行出现:
图25.SystemConfig.tjs中与鉴赏功能有关的句段
按下按钮后,会跳转到脚本文件“extra.ks”中的标签“*to_extra”处。不过直接读extra.ks就不那么基础了,所以直接交给AI分析即可。我们得到的结论是,如果要添加新的CG,则需要修改cglist.txt及额外加入页码图片按钮对应的图片,且把CG预览图裁剪到合适尺寸后一起加入进去。这一步对大家的PS能力有比较基础的要求。如果觉得自己确实欠缺相关知识,则考虑暂且搁置也并无不可。
(三)总结与展望
那么,进行到这一步,我们就基本上把主机版CG移植的工作做完了。不过这只是理论上的完成,实际表现如何,还是需要我们亲自测试一下。
三、运行测试
(一)方便测试特定内容的快捷跳转功能实现
要实现一个新功能,最后的测试步骤必不可少。只有在我们的工作经得住测试的情况下,才可以说“确实完成了”。不过这些新CG的出现位置多少有些偏后,即使是快进也要花不少时间。怎么办呢?我们可以利用前面观察得到的相关知识。
首先,根据SystemConfig.tjs中内容,“新的开始”跳转到“title.ks”脚本里的标签“*to_game”,直接让AI解释脚本具体做了什么。结论是,最后会跳转到“startscenario.ks”这个脚本文件里。那么“startscenario.ks”又做了什么呢?我们直接打开看看:
图26.startscenario.ks中内容(以UTF-16 Little Endian编码查看)
开头是半角分号的行是无效行。简言之这个脚本总共就干了这些工作:初始化场景,预设全局变量“体验版”为0(即告诉主程序,现在运行的是正式版),调试模式下该怎么做,跳转到“00-プロローグ.ks”。对我们来说最重要的是最后一个跳转,只要把这一行改成我们需要跳转的那些标签,也就是新增CG出现时或之前的任意一个标签(实际上我建议跳转到bg和bgm都设定好了的标签),就能快速测试新增的CG是否安排合理、是否有意料之外的异常了。
为了确保BGM、背景图之类的都没问题,同时为了快速跳转到需要测试的位置,首先,检索我们新增的内容,这里直接检索CG名“ev101_a”即可;然后,在该处输入“bg”并点击“查找上一个”,直到找到bgm和bg都设定过的标签。以修改后的“01-サクラ.ks”为例:
图27.修改后的01-サクラ.ks内容(部分,以UTF-16 Little Endian编码查看)
确定我们要跳转的标签是“*寄り道”。然后我们修改一下startscenario.ks,去掉无用行,大概改成这样即可:
图28.修改后的startscenario.ks(以UTF-16 Little Endian编码查看)
然后把startscenario.ks单独打包成patch2.xp3,放到游戏根目录,之后打开游戏点击新的开始:
图29.第一次运行测试
可以看到,我们很快就跳转到需要测试的内容,而且现在在steam版上也可以看到主机版新增的CG了。
(二)预期外问题的遭遇与解决
1.预设变量相关问题
但接下来我们就遇到了一个问题,按理来说这段剧情之后应该是还有一处选项【马上放开--揉揉看】才对,为什么这里无法显示呢?回到脚本里一探究竟:
图30.01-サクラ.ks内容(部分,以UTF-16 Little Endian编码查看)
原来这里有一个if语句,如果变量“f.変態”为0,则直接默认我们选择了“马上放开”。那么这个变量又是怎么回事呢?往上再找找,原来是这样:
图31.01-サクラ.ks内容(部分,以UTF-16 Little Endian编码查看)
在上方有一个选项【想一些色情的事--脑中想「我喜欢千夜子」】,该处选择“想一些色情的事”后,变量“f.変態”会被设为1,然后在刚才的位置就能出现我们需要的那一个选项了。也就是说,关键在于进行到那一段之前,先执行一次“[好感度設定 name="変態" flag=1]”
题外话:此处的“好感度設定”指令是自定义指令,具体作用是这样:
图32.macro.ks内容(部分,以UTF-16 Little Endian编码查看)
自定义指令“好感度設定”,输入参数为字符串name及整数flag,具体作用是为“f.name”这个变量增加flag点。在原内容处,指令“[好感度設定 name="変態" flag=1]”的功效相当于“[eval exp="f.変態 = f.変態 + 1"]”。
我们把这一句也复制到startscnario.ks里的jump指令上方,然后再打包并启动。这回可以了:
图33.第二次运行测试
2.ig与CG冲突的解决
选择下方选项继续进行,然后很快就遇到了新的问题,如图所示:
图34.第二次运行测试时选择“Try squeezing”后的情况
这里我们用NS版的同一句做个对比:
图35.NS版七日间在选择“Try squeezing”后的情况
可见,NS版在选择之后仍保留CG,而我们修改脚本后该处却只显示了上下黑边。仍然回到脚本中看看什么情况:
图36.修改后的01-サクラ.ks内容(部分,以UTF-16 Little Endian编码查看)
唯一的线索是该处的“[ig st="frame"]”,结合之前隐去CG使用的语句是“[clearig]”,我们不妨就先假定ig图和CG的图层是同一个。问题随之而来,要实现NS版中的效果,可以怎么做?我们注意到,ig图和bg图是不冲突的,所以这里只要把这张cg设定为背景图,即可达到同样的效果。不过我们还要记得隐去CG之前,先把背景图的设定改回去。
图37.修改后的01-サクラ.ks内容(部分,以UTF-16 Little Endian编码查看)
图38.修改后的01-サクラ.ks内容(部分,以UTF-16 Little Endian编码查看)
图39.第三次运行测试
可以看到,最终的效果虽不能说百分百复刻原场景,但也八九不离十了。接下来的几处CG的插入也是同理,此处不再赘述。
(三)总结
至此,我们经过测试,确定了我们进行的工作是可行的。虽然就现有情况而言不能算“完美”,但至少是“可用”的。
四、结语
综上所述,本文详细介绍了将七日间主机版新增CG移植至Steam版的全过程,涵盖从资源提取、脚本解析到实际修改与测试的完整流程。通过利用开源工具、观察脚本结构、理解游戏引擎的基本逻辑,即使是缺乏编程基础的爱好者,也能逐步实现CG的移植与功能完善。这一过程不仅体现了对游戏内容的热爱与执着,也展示了普通玩家通过自主学习与实践,突破技术壁垒的可能性。
尽管最终的实现方案在细节上仍有优化空间,例如图层控制的精细化、鉴赏功能的完整适配等,但整体上已达成“可用”与“可体验”的基本目标。希望本文能为有志于进行类似修改的玩家提供参考,也期待未来有更多爱好者参与到游戏内容的二次创作与优化中,共同丰富游戏的可玩性与艺术价值。
五、参考文献及注释
(一)参考文献
[1]LIFE0.会社情報[EB/OL].[2025-11-05].https://life0.info/company/infomation
[2]life0info.【ついに明日!】死んでるヒロインを幸せに終わらせるオカルティック恋愛ADV 「セヴンデイズ あなたとすごす七日間」[EB/OL].(2017-07-20)[2025-11-05]https://x.com/life0info/status/888020655903350784
[3]PS Vita.セヴンデイズ あなたとすごす七日間[EB/OL].[2025-11-05].https://www.prot.co.jp/psv/7days/index.html
[4]VNDB.セヴンデイズ あなたとすごす七日間[EB/OL].(2025-09-07)[2025-11-05]https://vndb.org/v19654
[5]Nintendo.SEVEN DAYS[EB/OL].[2025-11-05]https://www.nintendo.com/us/store/products/seven-days-switch/
[6]lwyx2014.【教程】XCI和NSP提取资源简单流程[EB/OL].(2021-06-17)[2025-11-04].https://tieba.baidu.com/p/7409095483
[7]Dir-A.[Gal汉化入门教程]#1 基础知识部分[EB/OL].(2021-07-29)[2025-11-05].https://www.bilibili.com/opus/552429542701336284
[8]huohua_离民.Galgame游玩前必学的英语(v1.1版本)[EB/OL].(2025-08-28)[2025-11-05].https://tieba.baidu.com/p/9991418573
[9]一花の一界.最新最强Eden switch模拟器安装使用说明 windows 安卓 mac[EB/OL].(2025-09-15)[2025-11-05].https://www.bilibili.com/opus/1112527221244821506
(二)注释
①XCI的全称是 NX Card Image(NX是Switch开发时的代号),是Switch游戏卡带(Game Card)的镜像文件。相关信息,可参考科技数码阿伟的文章《XCI是什么文件格式?Switch玩家必看,一文读懂游戏ROM的秘密!》。(https://www.sohu.com/a/892562722_100262162)
②实际上,半角分号的作用是添加注释,在一个语句前添加半角分号可称为“将其注释”。注释是给编辑人员而非游戏引擎看的,所以游戏会自动忽略这些注释内容。
③KiriKiri引擎具体会优先读取的xp3文件名通常写在Initialize.tjs中,虽然大部分时候是以patch系列xp3文件中序号最大的那个为最优先,但也可能要使用其它文件名,譬如同样使用KiriKiri引擎的《月下之煌》(https://vndb.org/v12724)最优先读取的xp3文件名是“gekka_patch.xp3”而非“patch.xp3”。
六、附录
(一)相关工具
1.游戏资源提取工具
hactool: 用于解包NS的XCI/NSP文件。相关链接:https://github.com/SciresM/hactool
LucaSystemTools: 用于解包Luca System引擎的.PAK文件并从CZ4文件提取png图片。相关链接:https://github.com/wetor/LucaSystemTools
GARbro: 用于查看、提取和打包KiriKiri2的.xp3文件。相关链接:https://github.com/morkt/GARbro
2.脚本编辑工具
wxMEdit : 支持多种编码(特别是UTF-16 LE)的文本编辑器。相关链接:https://wxmedit.github.io/
3.图像处理工具
Adobe Photoshop: 商业软件,用于拼接CG差分。
4.模拟器
Eden: 用于运行NS版游戏以确定CG出现位置。相关链接:https://github.com/eden-emulator/Releases/releases
5.相关网站
VNDB: 查询游戏引擎等信息。相关链接:https://vndb.org
GitHub: 寻找开源工具。相关链接:https://github.com/
(二)适用于七日间的相关KiriKiri2指令及作用
| 指令 | 语法示例 | 功能说明 | 备注 |
|---|---|---|---|
| cg | [cg st="ev02b" time=100] | 在100毫秒内显示CG“ev02b.png” | 图片需放入游戏路径 |
| clearig | [clearig] | 清除当前显示的ig图层 | |
| bg | [bg st="bg_黒" time=1500] | 在1500毫秒内显示背景图“bg_黒.png” | |
| msg | [msg] | 显示对话框 | |
| hidemsg | [hidemsg] | 隐藏对话框 | |
| se | [se st=自動ドア] | 播放音效文件 | 可添加loop以循环播放 |
| jump | [jump storage="01-サクラ.ks" target="*寄り道"] | 跳转到指定脚本的指定标签 | |
| * | *寄り道 | 定义一个跳转目标 | |
| ; | ;[ps n=千夜子/実習生 v="cha10001"] | 游戏引擎会忽略这行 | 用于临时禁用指令或做笔记 |
| eval | [eval exp="f.変態 = 1"] | 执行TJS表达式,用于设置变量 | |
| ig | [ig st="frame"] | 设定ig图层为图片“frame.png” | ig图层与CG图层实际上是同一个图层 |
| ps | [ps n=??? v="cha001"] | 对话框显示人名“???”,同时播放语音“cha001.ogg” | 若存在n=a/b的结构,则实际显示为b |
| sg | [sg st=c/サクラ/A/私服/基本/眉悲しい/目閉じ(哀)/口笑顔/頬赤面/汗/なし/] | 控制立绘图具体使用的差分 | |
| if | [if exp="f.変態==0"][c][jump target="*すぐ離す"][endif] | 若变量“f.変態”满足“f.変態==0”,则执行跳转指令 | [endif]用于中止条件判断,此处的“[c]”多余。if与具体执行的指令及endif及else(若有)不必出现在同一行 |
| macro | @macro name="好感度設定" @eval exp="f[mp.name] += +mp.flag" @endmacro | 自定义指令名“好感度設定”,具体作用是将f.name视为整数变量并加上flag点 | 需要使用@endmacro声明结束自定义指令的定义 |
| setsel | [setsel text="Let go immediately" storage="01-サクラ.ks" target="*すぐ離す"] | 新建一个选项,其文本为“Let go immediately”,选择该选项后跳转到脚本"01-サクラ.ks"的标签"*すぐ離す" | 需要在所有选项定义语句之后加入[select],否则选项显示异常 |
| @ | @wait time="2000" | 执行指令“wait time="2000"” | 效果等同于用半角中括号括起整个指令行,在ks脚本里可混用 |
表1.适用于七日间的部分KiriKiri2指令及其作用说明
(三)基于Python的检索脚本完整代码(来自DeepSeek,供参考)
import os
import sys
#输入待查找字符串
str_to_be_found=''''
def search_in_file(file_path):
try:
with open(file_path, 'r', encoding='utf-16-le') as file:
content=file.readlines()
for line_num, line in enumerate(content):
if str_to_be_found in line:
print(f"在 {os.path.basename(file_path)} 中第 {line_num+1} 行发现 {str_to_be_found}")
#return # 找到后立即返回(如需查找多次出现,注释此return)
except UnicodeError:
print(f"警告: 文件 {os.path.basename(file_path)} 解码失败(非UTF-16-LE编码)", file=sys.stderr)
except Exception as e:
print(f"处理文件 {os.path.basename(file_path)} 时出错: {str(e)}", file=sys.stderr)
def main():
script_dir = os.path.dirname(os.path.abspath(__file__))
for root, _, files in os.walk(script_dir):
for file in files:
if file.lower().endswith(('.ks', '.tjs')):
file_path = os.path.join(root, file)
search_in_file(file_path)
if __name__ == "__main__":
main()