UndertaleModTool介绍&使用 #6 (UT常用Scripts分析)
为避免在修改过程中摸不到头绪,了解ut中常用的script非常有用,本篇截取其中关键的部分进行说明

一.肮脏黑客 attention_hackerz_no_2
一个写着toby对拆包修改者的留言的script,在1.00版本中,它是这样的
二.SCR_TEXT
一个包含游戏大多数对话的script,里面是一个巨大的switch结构,你可以在一个对话obj里这样使用
如果你输入的数字是1,那么会显示标志性的错误文本

如果你的游戏版本是1.05以上及ps4版/switch版,SCR_TEXT里面不会包含对话,而是起到了一个指向性作用。由于toby在1.00/1.001里把对话写死了,因此后续增加日语翻译时,把对话集中在textdata_en和textdata_ja里,游戏开始时,英语对话和日语对话被使用ds_map系列函数进行储存,你可以理解为给每个对话都编了一个编号,写对话时使用scr_gettext(编号)来读取对应对话,scr_gettext会根据语言设置自动调节读取到的是日语还是英语。
三.snd系列
toby用来播放音效用的,有snd_play,snd_stop,snd_isplaying,分别用来播放,暂停,检测。
四.caster系列
这是个历史遗留问题,toby在把ut移植到gms上发布之前,使用gm8上的caster插件进行播放ogg格式音频,而gms原生支持。移植到gms后toby写了caster系列来避免要一个个改代码替换掉原本caster插件函数的麻烦
五.scr_dogcheck
读档时用于检测你是否处于正常的房间,若不正常则dogcheck为0,此时会被传送到坏档狗房间
六.scr_namingscreen
绘制并控制给玩家命名的界面,在这里我进行了修改,将命名为gaster设为被允许的,删去“game_restart()”,加入一个文本


七.scr_roomname
提供保存时显示的地点名称,这个Script在新旧版本里差别很大,在旧版中以这种形式进行硬编码
而在新版中考虑到双语互换问题,改成了从textdata_en和textdata_ja定义的映射里获取文本
这里我们对新版进行修改(以我自制的史莱姆房间为例)
效果如下

八.scr_levelup
升级方面的计算与定义
九.scr_saveprocess
保存游戏的相关代码,本script负责file文件部分,而.ini文件部分由scr_save负责,后者也起到了引用scr_saveprocess的作用
十.SCR_GAMESTART
游戏启动时的初始化设置,把这里面的global.debug=0改成global.debug=1可以打开debug模式
十一.物品相关的script
scr_itemdesc:储存物品的说明文本内容
scr_itemuseb:物品的使用相关代码
scr_itemnamelist:物品名称清单
scr_itemnameb:物品名称显示
scr_recoitem:治疗类物品实现
scr_itemname:获取物品名称
scr_itemget:获得物品
十二.scr_shake
实现一些屏幕晃动的场景使用
十三.scr_steps
玩家运动步数与遭遇战斗的计算
十四.文本相关script
scr_textskip:跳过文本
SCR_TEXTTYPE:根据对话object的alarm事件中设置的global.typer值进行匹配字体,对话音效等等,其中,设置为666就是gaster
SCR_TEXTSETUP:配合上一个script使用
十五.scr_battlegroup
匹配战斗,设置战斗音乐,创建战斗所需怪物object,通过pcy.ulyssis.be/undertale/battles这个网站可以查到对应的情况
十六.scr_gameoverb
进行玩家死亡方面的操作