搬运的N_ightind大佬的帖子
原帖内容:
在学习对话脚本 msgbox 的时候就接触到
如果将对话类型的字节改成0x5,就会执行yes/no类型的选择性对话。
这也是最简单的多项选择,但只有默认yes/no选项,且选框的位置固定在对话框的右上方。
有时也需要更多项的自定义选择,需要用的脚本是multichoice
multichoice所必要的参数有4个
分别是:
1,选框横坐标
2,选框纵坐标
3,选项列表ID
4,是否可以按B键关闭
选框坐标很容易理解,就是显示选框在屏幕上的位置
以屏幕左上顶点为圆心,参考选框的左上角位置,8像素为1单位。
但如果写入的坐标值会超出屏幕,则系统会保持选框至多紧贴屏幕右下角。
选项列表ID每个选框的内容都是预先写好在ROM中了,系统也给每套选项指定了ID
在写脚本的时候只要调用这个ID即可。游戏中目前可用0x0~0x71。
是否可以按B键关闭
0x0可以按B键关闭选框,并取消选择0x1按B键无效
玩家在选择一个选项后,都会将对应的一个值存入变量0x800D
选项1 0x0
选项2 0x1
选项3 0x2
...
以此类推
B键取消时 0x7F
通过比较变量 0x800D的值,就可以作出不同的分支了。
用到的脚本是 compare
实例
#org@start
msgbox @say MSG_FACE
multichoice 0x5 0x5 0x71 0x0
compare LASTRESULT 0x0
if 0x1 goto@one
compare LASTRESULT 0x1
if 0x1 goto@two
compare LASTRESULT 0x2
if 0x1 goto@three
compare LASTRESULT 0x7F
if 0x1 goto@exit
end
另外扩展脚本
multichoice2
拥有multichoice 的所有功能,另可在选框打开时指针默认选在指定的选项上
(第4个参数,共5项参数)。
multichoice3
拥有multichoice 的所有功能,另可让选框内一行上排列指定数量的选项
(第4个参数,共5项参数)。
如何修改或新增选项表
因为是预先写进ROM的,要修改的话只能通过修改数据
用WinHex打开ROM
地址跳转到
0x58B760
这个地址开始每8个字节就是一套选项
每套选项包含两个信息:
项目文本指针的指针,项目数量。
这个地址开始也就是所谓的选项表了。
ID则依次从0x0开始往下排
呃,一次只能发10张图┐(´-`)┌先接着看楼下
原帖内容:
在学习对话脚本 msgbox 的时候就接触到
如果将对话类型的字节改成0x5,就会执行yes/no类型的选择性对话。
这也是最简单的多项选择,但只有默认yes/no选项,且选框的位置固定在对话框的右上方。
有时也需要更多项的自定义选择,需要用的脚本是multichoice
multichoice所必要的参数有4个
分别是:
1,选框横坐标
2,选框纵坐标
3,选项列表ID
4,是否可以按B键关闭
选框坐标很容易理解,就是显示选框在屏幕上的位置
以屏幕左上顶点为圆心,参考选框的左上角位置,8像素为1单位。
但如果写入的坐标值会超出屏幕,则系统会保持选框至多紧贴屏幕右下角。
选项列表ID每个选框的内容都是预先写好在ROM中了,系统也给每套选项指定了ID
在写脚本的时候只要调用这个ID即可。游戏中目前可用0x0~0x71。
是否可以按B键关闭
0x0可以按B键关闭选框,并取消选择0x1按B键无效
玩家在选择一个选项后,都会将对应的一个值存入变量0x800D
选项1 0x0
选项2 0x1
选项3 0x2
...
以此类推
B键取消时 0x7F
通过比较变量 0x800D的值,就可以作出不同的分支了。
用到的脚本是 compare
实例
#org@start
msgbox @say MSG_FACE
multichoice 0x5 0x5 0x71 0x0
compare LASTRESULT 0x0
if 0x1 goto@one
compare LASTRESULT 0x1
if 0x1 goto@two
compare LASTRESULT 0x2
if 0x1 goto@three
compare LASTRESULT 0x7F
if 0x1 goto@exit
end
另外扩展脚本
multichoice2
拥有multichoice 的所有功能,另可在选框打开时指针默认选在指定的选项上
(第4个参数,共5项参数)。
multichoice3
拥有multichoice 的所有功能,另可让选框内一行上排列指定数量的选项
(第4个参数,共5项参数)。
如何修改或新增选项表
因为是预先写进ROM的,要修改的话只能通过修改数据
用WinHex打开ROM
地址跳转到
0x58B760
这个地址开始每8个字节就是一套选项
每套选项包含两个信息:
项目文本指针的指针,项目数量。
这个地址开始也就是所谓的选项表了。
ID则依次从0x0开始往下排
呃,一次只能发10张图┐(´-`)┌先接着看楼下