脚本综合 (搬运)多选框脚本multichoice解析及扩展

离个海0vo

天王
2022-08-05
20
17
1,369
16
搬运的N_ightind大佬的帖子
原帖内容:

在学习对话脚本 msgbox 的时候就接触到
29FDC97084DDEE57321DFC8B710A3D09.jpg

如果将对话类型的字节改成0x5,就会执行yes/no类型的选择性对话。
F3BF441AA6784E1A3B2B7CA5444251A3.jpg
这也是最简单的多项选择,但只有默认yes/no选项,且选框的位置固定在对话框的右上方。
有时也需要更多项的自定义选择,需要用的脚本是multichoice
D7CCD5A0EFCA90A35CB45219AF75975D.png
multichoice所必要的参数有4个
分别是:
1,选框横坐标
2,选框纵坐标
3,选项列表ID
4,是否可以按B键关闭
选框坐标很容易理解,就是显示选框在屏幕上的位置
以屏幕左上顶点为圆心,参考选框的左上角位置,8像素为1单位。
但如果写入的坐标值会超出屏幕,则系统会保持选框至多紧贴屏幕右下角。
选项列表ID每个选框的内容都是预先写好在ROM中了,系统也给每套选项指定了ID
在写脚本的时候只要调用这个ID即可。游戏中目前可用0x0~0x71。
是否可以按B键关闭
0x0可以按B键关闭选框,并取消选择0x1按B键无效
33B9482D2890D6D56D58E6388E5EB238.jpg
玩家在选择一个选项后,都会将对应的一个值存入变量0x800D
选项1 0x0
选项2 0x1
选项3 0x2
...
以此类推
B键取消时 0x7F
通过比较变量 0x800D的值,就可以作出不同的分支了。
用到的脚本是 compare
4EDCE98E63D54323B54395581E50BE47.jpg
实例
#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项参数)。
242CD67FBCA2D05A7FE7DCD456F44B38.jpg
multichoice3
拥有multichoice 的所有功能,另可让选框内一行上排列指定数量的选项
(第4个参数,共5项参数)。
4965E211C2315D69A70C8ABF7CDFE0C1.jpg
407D160D4B78A852D9767A364732AADE.jpg
如何修改或新增选项表
因为是预先写进ROM的,要修改的话只能通过修改数据
用WinHex打开ROM
地址跳转到
0x58B760
这个地址开始每8个字节就是一套选项
每套选项包含两个信息:
项目文本指针的指针,项目数量。
这个地址开始也就是所谓的选项表了。
ID则依次从0x0开始往下排

呃,一次只能发10张图┐(´-`)┌先接着看楼下
 

附件

  • 4EDCE98E63D54323B54395581E50BE47.jpg
    4EDCE98E63D54323B54395581E50BE47.jpg
    28.6 KB · 查看: 5
  • 7089F204E3A8361A0777C0B4E462AEB1.jpg
    7089F204E3A8361A0777C0B4E462AEB1.jpg
    43.9 KB · 查看: 5

离个海0vo

天王
2022-08-05
20
17
1,369
16
B70021C428EC0264142CC602731C76C7.jpg
如第一套选项D8AB5808 这个指针下可以找到对应文本的指针,文本的指针是紧密排列的。0x03就是说有3个项目,也就告诉前面一个指针要读取3个文本
如下图,红色区域就是第一套选项指针所指针的内容,和其中的3项内容的文本指针。
B46983F9CBEFBC521056E1F7C641637E.jpg

了解了以上结构就可以修改一套选项的项目数量,文本指针了
如果要扩展选项表,也就只需把0x58B760 到0x58BAEF的数据复制,然后找一个空位粘帖,然后再搜索原来表的指针 60B75808,修改成新的指针就可以了。
另外因为multichoice脚本中选项ID的参数只有1字节,最大也只能读取到第FF套选项。

搬运到此结束|•'-'•)و✧
 

在线成员

论坛统计

主题
339
消息
1,552
会员
2,302
最新会员
可乐不可爱

关于我们

  • 宝可梦以及其他相关名称是任天堂的商标,版权归宝可梦公司所有。宝可饭堂是一个同人游戏中文社区,不隶属于宝可梦公司。在宝可饭堂上的粉丝游戏亦未获得其授权,请支持正版游戏。
© 2022- pokefans.cn
点此延长宝可饭堂生命