UndertaleModTool介紹&使用 #6 (UT常用Scripts分析)
????為避免在修改過程中摸不到頭緒,了解ut中常用的script非常有用,本篇截取其中關(guān)鍵的部分進(jìn)行說明

一.骯臟黑客 attention_hackerz_no_2
????一個(gè)寫著toby對(duì)拆包修改者的留言的script,在1.00版本中,它是這樣的
二.SCR_TEXT
????一個(gè)包含游戲大多數(shù)對(duì)話的script,里面是一個(gè)巨大的switch結(jié)構(gòu),你可以在一個(gè)對(duì)話obj里這樣使用
如果你輸入的數(shù)字是1,那么會(huì)顯示標(biāo)志性的錯(cuò)誤文本

如果你的游戲版本是1.05以上及ps4版/switch版,SCR_TEXT里面不會(huì)包含對(duì)話,而是起到了一個(gè)指向性作用。由于toby在1.00/1.001里把對(duì)話寫死了,因此后續(xù)增加日語翻譯時(shí),把對(duì)話集中在textdata_en和textdata_ja里,游戲開始時(shí),英語對(duì)話和日語對(duì)話被使用ds_map系列函數(shù)進(jìn)行儲(chǔ)存,你可以理解為給每個(gè)對(duì)話都編了一個(gè)編號(hào),寫對(duì)話時(shí)使用scr_gettext(編號(hào))來讀取對(duì)應(yīng)對(duì)話,scr_gettext會(huì)根據(jù)語言設(shè)置自動(dòng)調(diào)節(jié)讀取到的是日語還是英語。
三.snd系列
????toby用來播放音效用的,有snd_play,snd_stop,snd_isplaying,分別用來播放,暫停,檢測。
四.caster系列
????這是個(gè)歷史遺留問題,toby在把ut移植到gms上發(fā)布之前,使用gm8上的caster插件進(jìn)行播放ogg格式音頻,而gms原生支持。移植到gms后toby寫了caster系列來避免要一個(gè)個(gè)改代碼替換掉原本caster插件函數(shù)的麻煩
五.scr_dogcheck
讀檔時(shí)用于檢測你是否處于正常的房間,若不正常則dogcheck為0,此時(shí)會(huì)被傳送到壞檔狗房間
六.scr_namingscreen
????繪制并控制給玩家命名的界面,在這里我進(jìn)行了修改,將命名為gaster設(shè)為被允許的,刪去“game_restart()”,加入一個(gè)文本


七.scr_roomname
????提供保存時(shí)顯示的地點(diǎn)名稱,這個(gè)Script在新舊版本里差別很大,在舊版中以這種形式進(jìn)行硬編碼
而在新版中考慮到雙語互換問題,改成了從textdata_en和textdata_ja定義的映射里獲取文本
這里我們對(duì)新版進(jìn)行修改(以我自制的史萊姆房間為例)
效果如下

八.scr_levelup
????升級(jí)方面的計(jì)算與定義
九.scr_saveprocess
????保存游戲的相關(guān)代碼,本script負(fù)責(zé)file文件部分,而.ini文件部分由scr_save負(fù)責(zé),后者也起到了引用scr_saveprocess的作用
十.SCR_GAMESTART
????游戲啟動(dòng)時(shí)的初始化設(shè)置,把這里面的global.debug=0改成global.debug=1可以打開debug模式
十一.物品相關(guān)的script
????scr_itemdesc:儲(chǔ)存物品的說明文本內(nèi)容
????scr_itemuseb:物品的使用相關(guān)代碼
????scr_itemnamelist:物品名稱清單
????scr_itemnameb:物品名稱顯示
????scr_recoitem:治療類物品實(shí)現(xiàn)
????scr_itemname:獲取物品名稱
????scr_itemget:獲得物品
十二.scr_shake
????實(shí)現(xiàn)一些屏幕晃動(dòng)的場景使用
十三.scr_steps
玩家運(yùn)動(dòng)步數(shù)與遭遇戰(zhàn)斗的計(jì)算
十四.文本相關(guān)script
????scr_textskip:跳過文本
????SCR_TEXTTYPE:根據(jù)對(duì)話object的alarm事件中設(shè)置的global.typer值進(jìn)行匹配字體,對(duì)話音效等等,其中,設(shè)置為666就是gaster
????SCR_TEXTSETUP:配合上一個(gè)script使用
十五.scr_battlegroup
????匹配戰(zhàn)斗,設(shè)置戰(zhàn)斗音樂,創(chuàng)建戰(zhàn)斗所需怪物object,通過pcy.ulyssis.be/undertale/battles這個(gè)網(wǎng)站可以查到對(duì)應(yīng)的情況
十六.scr_gameoverb
????進(jìn)行玩家死亡方面的操作