欢迎来到THBWiki!
如果您是第一次来到这里,请点击右上角注册一个帐户
有任何意见、建议、求助、反馈都可以在
讨论板
提出
THBWiki以专业性和准确性为目标,如果你发现了任何确定的错误或疏漏,可在登录后直接进行改正
查看“︁脚本对照表/其他”︁的源代码
←
脚本对照表/其他
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
少女
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
{{资料头部}} ===概述=== ZUN的dat包解包后除了ECL脚本以及ANM贴图文件以外还有几种重要的文件 下面就是这些文件内容的分析 ===MSG文件=== MSG文件是对话剧情相关,格式例子如下 entry 0 (256) ' @34 10;1 29;0 28;112.0f;270.0f 17;HEY,how are you 11;600 最开始的entry x(256) 代表 该文件的x号对话,对应ECL读取对话文件ins的序号(如XLC中为ins_418(x).神开始为ins_518(x)) @后面的数字为时间值 ";" 前边的是instruction号, 后面的是改instruction的参数 下面是 目前发现的ins表,此表暂时只对关卡内对话有效,可能对ed以及staff无效 城: 0() 结束对话 1(int a) a=0时自机立绘登场 1() 绀珠传之后为开始对话 2(int a) a号boss立绘登场 号码a与立绘的对应关系储存位置未知。一般情况下均为0,城ex道中双boss时为1和2 3() xlc里显示文本的框 4() player立绘淡出(对话结束时用) 5(int a) a号boss立绘淡出(对话结束时用) 6() 删除对话框(对话结束时用) 7() 将player立绘浮上来(其他在场立绘加阴影) 8(int a) a号时boss立绘浮上来(其他在场立绘加阴影) 9() (地灵殿)将增援人物立绘浮上来{{黑幕|(增援人物有立绘吗?)}}(其他在场立绘加阴影){{黑幕|<s>这才是真正的作用</s>}} 10(int a) a=1时可以ctrl跳,a=0时不可ctrl跳 11(int a) 等待a帧,可以跳过 12() 继续执行ins_519()后面的ecl内容直到下一个ins_519()。一般用于城里boss的登场。 13(int a) 选择player 立绘的表情 14(int a,int b) 选择b号boss 立绘的表情为a(这个表情的顺序可以直接查阅description文件得到,按照ENTRY的顺序,第一个表情为0号,从上往下递增,dummy为空白表情,占位用) 17(Ctring x) 对话内容 ,可以使用 |起始位置,字距,文本 来插入一行上标(小型)文本 18() ???可能和对话框和内部文字的位置兼容有关 19() 切换为boss BGM 20(int a) 浮现出a号boss的名字称号等的那个ename01.png 21() 进入下一面 22() boss BGM淡出(当面结束时用) 25(int a) (地灵殿)选择增援人物立绘的表情 {{黑幕|然而增援并没有立绘,更别说表情了}} 27(float t) 在星莲船三面出现,有淡出当前BGM的效果,附带的参数是淡出过程持续的秒数 28(float x,float y) 对话框位置 29(int a) 选择对话框样式。0为正常的圆角矩形,1为带尖刺的矩形,2为浅灰色云朵状思考框,3为类似云朵的说话框。4-7在鬼形兽中是自机被动物灵附身后的红色对话框,样式与一般对话框相同,例如4与0均为圆角矩形 30() ???(当面结束时用) 32(int a) a=0时使对话框向右,a=1时使对话框向左(一般boss对话框向左,自机对话框向右) 36() (虹龙洞)显示商店界面 42() (兽王园) 对战结束后胜者立绘浮上来 43() (兽王园) 对战结束后败者立绘浮上来 50() (兽王园) 自机立绘提前淡出 51() (兽王园) 敌机立绘提前淡出 55 (兽王园) 敌机点阵图出现 56 (兽王园) 背景逐渐变黑 ===SHT文件=== SHT是储存机体火力数据的文件,此文件单纯储存数据.不包含命令 这部分各版本差异较大,下方结构定义并无代表性,建议参考sht-webedit的代码:[https://github.com/Priw8/sht-webedit/tree/master/js/struct struct],以下内容保留展示。 文件开头 header typedef struct { WORD unknown1; WORD unknown2 float unknown3; float unknown4; float unknown5; float horizontal_vertical_speed;//高速 速度 float horizontal_vertical_focused_speed;//低速速度 float unknown6; float unknown7; WORD unknown8; WORD Maxpower;//单发子弹最高伤害 float thsht_option_positions[];//1-4p 子机的坐标 UNKNOWN //地开始子机位置和offset之间间有大片无用数据 thsht_offset_t offsets[];//火力的offset thsht_shot_type_t shots[];//具体每一way火力的数据 } thsht_header_t; 火力 typedef struct { BYTE rate;//发弹间隔 BYTE delay;//发弹时间点 WORD power;//每发子弹的威力 float x; float y;//发弹点相对坐标 float hitbox_x; float hitbox_y;//子弹判定的长和宽 float angle;//发射方向 float speed;//发射速度 BYTE Option;//子机号, 0即为主炮 BYTE Unknown;// WORD ANM1; //子弹贴图 WORD ANM2;. //击中贴图 DWORD Nothing; //分割用 ,一般是0xFFFFFFFF WORD flags[8];//一些flag, 设置是否为诱导什么的, } thsht_shot_type_t; ===POS文件=== POS 文件是仅在红魔乡中使用的用来记录bgm循环点的文件。<br> 文件结构以C语言结构体表示为: typedef struct { DWORD loopStartSample; // 循环开始点 DWORD loopEndSample; // 循环结束点,也是曲目结束点 } th06_pos_t; 两个循环点的取值为 对应时间点*采样率。 ===FMT文件=== FMT 文件是从妖妖梦起用来记录bgm的文件名、开始点、循环点以及fmtChunk的文件。<br> 比如妖妖梦的<br> th07_01.wav 16 27028956 1217280 16545568 1 2 44100 176400 4 16<br> th07_02.wav 16545584 30733968 2858880 15499264 1 2 44100 176400 4 16<br> ...<br> 文件结构: typedef struct { thfmt_t fmtList[]; ... //无用bytes,一般共17字节,均填充为0 } thfmt_body_t; 其中thfmt_t为: typedef struct { char fileName[16]; //文件名,例如th08_09.wav,多余部分填充为0 unsigned startOffsetInBytes; //PCM开始在thbgm.dat的偏移量 unsigned unknown1; //th13及以后与`loopEndOffsetInBytes`恒等,以往前作意义不明 unsigned loopStartOffsetInBytes; //循环开始相对于startOffset的偏移量 unsigned loopEndOffsetInBytes; //循环结束相对于startOffset的偏移量,也就是一首完整bgm的PCM长度 /*以下结构即为对应wav文件fmt chunk*/ unsigned short format; //1为PCM unsigned short channels; //声道 unsigned sampleRate; //一般是44100,神灵庙部分有改变。 unsigned bytesPerSecend; //frameSize*sampleRate; unsigned short frameSize; //一般为4, (bitsPerSample/8)*channels unsigned short bitsPerSample; //一般为16。 int zero; //无用,填充为0 } thfmt_t; ===STD文件=== STD文件是控制3d背景的文件 =====结构===== STD文件头: word data_count word 就是参数第二个是0x1c(28)的那个语句的数量 dword address_moredata (打包器自动计算) dword address_script (打包器自动计算) dword unknown string anm (进单面时重载) data地址(从90开始): dword data_address_01 dword data_address_02 ……(个数以实际为准) data(即std中的object)(从anm中使用script号在std创建对象): [data 0](script空间) word std_object_id(一般和data号一样) word anm_script_id(应该不是anm编号,很迷) float x float y float z float width float height float depth 以下紧跟上段(每句长32),且有时以下这段(每句长28)会在同一data中出现多次(script分布) word 0(0 means a quad, 0xffff means the end {{黑幕|不是很懂.jpg}}) word 1Ch dword anm_script_id float x float y float z(均为左上角坐标) float width float height(如果不为0,将覆盖anm中贴图的长宽,否则使用anm中的信息) …… dword FFFF 0400 [data 1] …… more data(将data中设置好的对象放到整个空间对应的位置): [more data] word std_object_id word 100h float x float y float z ……(每句长) script(指令区): …… FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF =====std script指令===== {| class="wikitable" |- ! 指令名 !! 指令码(ins号+指令长度) !! 参数 !! 作用 |- | jump || 0100 1000(16) || dword 字节数, dword 时间值 || 跳转到某个时间的某个字节处 |- | setCamPos || 0200 1400(20) || float x, float y, float z || 设置相机坐标 |- | moveCamPos || 0300 1C00(28) || dword time, dword mode, float x, float y, float z || 变化setCamPos |- | setCamTarget || 0400 1400(20) || float x, float y, float z || 设置相机所对目标点相对于相机的坐标 |- | moveCamTarget || 0500 1C00(28) || dword time, dword mode, float x, float y, float z || 变化setCamTarget |- | setCamForward || 0600 1400(20) || float x, float y, float z || 设置相机方向(通常为(0.0f,1.0f,0.0f)) |- | setCamFOV || 0700 0C00(12) || float angle || 设置视场大小 |- | setFog || 0800 1400(20) || [byte R, byte G, byte B], byte alpha, float start_z, float end_z || 在start_z~end_z区域内设置指定颜色和alpha值的迷雾 |- | changeFog || 0900 1C00(28) || dword time, dword mode, [byte R, byte G, byte B], byte alpha, float start_z, float end_z || 变化setFog |- | setFlag || 0C00(12) 0C00(12) || dword flag || 根据flag给予背景一种效果,已知天空璋中1是相机位置左右横跳,2是背景从0.0f方向逆时针旋转(tkz6面),3是相机时高时低、方向时左时右,4是背景顺时针旋转 |- | 未知 || 0D00(13) 0C00(12) || dword unknown || 未知 |- | 未知 || 0E00(14) 1400(20) || dword unknown_00, dword unknown_01, dword unknown_02(fsl中为dword unknown_00, dword unknown_01) || 未知 |- | connectEcl || 1000(16) 0C00(12) || dword a || 配合ecl中的ins_630(int a)(第四世代,其它世代自己查)使用,当ins_630执行时,std将跳转到ins_16(即1000 0C00)(int a)处执行 |- | 未知 || 1100(17) 0C00(12) || dword unknown || tkz一面使用,参数为1,屏幕下方会扭曲 |- | moveCamForward || 1200(18) 1C00(28) || dword time, dword mode, float x, float y, float z || setCamForward变化版 |- | 未知 || 1300(19) 0C00(12) || dword unknown || 未知 |}
该页面使用的模板:
脚本对照表
(
查看源代码
)
模板:头部设定
(
查看源代码
)(受保护)
模板:词条头部
(
查看源代码
)(受保护)
模板:资料头部
(
查看源代码
)(受保护)
模板:黑幕
(
查看源代码
)(受保护)
返回
脚本对照表/其他
。
分类
:
脚本对照表
导航菜单
个人工具
创建账号
登录
命名空间
页面
讨论
查看
阅读
源码
查看历史
更多
搜索
常用
首页
东方Project
上海爱丽丝幻乐团
ZUN
幻想乡
幻想乡年表
东方年表
东方同人规约
近期新闻
沙盒(建议使用)
讨论板
加入我们
官方作品
官方游戏
旧作
东方灵异传
东方封魔录
东方梦时空
东方幻想乡
东方怪绮谈
东方红魔乡
东方妖妖梦
东方永夜抄
东方花映塚
东方风神录
东方地灵殿
东方星莲船
东方神灵庙
东方辉针城
东方绀珠传
东方天空璋
东方鬼形兽
东方虹龙洞
东方兽王园
小数点射击游戏
东方文花帖
东方文花帖DS
妖精大战争
弹幕天邪鬼
秘封噩梦日记
弹幕狂们的黑市
黄昏边境合作游戏
东方萃梦想
东方绯想天
东方非想天则
东方心绮楼
东方深秘录
东方凭依华
东方刚欲异闻
官方音乐
原曲列表
非音乐CD音乐列表
音乐CD曲目列表
蓬莱人形
莲台野夜行
梦违科学世纪
卯酉东海道
大空魔术
未知之花 魅知之旅
鸟船遗迹
伊奘诺物质
燕石博物志
旧约酒馆
虹色的北斗七星
七夕坂梦幻能
幺乐团的历史系列
幺乐团的历史 vol.1
幺乐团的历史 vol.2
幺乐团的历史 vol.3
幺乐团的历史 vol.4
幺乐团的历史 vol.5
黄昏游戏OST
幻想曲拔萃
全人类的天乐录
核热造神非想天则
暗黑能乐集心绮楼
深秘乐曲集
深秘乐曲集·补
完全凭依唱片名录
贪欲之兽的音乐
商业出版物附带CD
官方书籍
东方香霖堂
东方三月精
第一季
月之妖精
第二季
第三季
第四季
东方文花帖
风之号外
东方紫香花
六十年不见的紫香花
东方儚月抄
漫画
小说
四格
东方茨歌仙
东方铃奈庵
东方醉蝶华
东方智灵奇传
东方求闻史纪
记忆幻想乡
东方求闻口授
魔理沙的魔法书
宇佐见的魔法书
东方外来韦编
东方文果真报
东方人妖名鉴
宵暗篇
常世篇
幻想Narrato Graph
官方角色
公式资料
附带文档
游戏对话
官方作品光盘信息
角色自称用词表
官作译名更改记录
原作物品列表
出典文献列表
其他ZUN参与的作品
西方Project
黄昏酒场
东方关联人物
游戏攻略
东方相关活动
从第二家开始的广播
东方STATION
数码游戏博览会
PoriPori☆Club
niconico超会议
斗会议
niconico原创游戏祭
枯萎Radio
GDGD
其他相关项目
东方我乐多丛志
东方四方山新闻
Play,Doujin!
东方电书流通
东方音乐流通
二次创作与活动
展会及活动导航
Comic Market
博丽神社例大祭
博丽神社例大祭SP
博丽神社秋季例大祭
博丽神社例大祭in台湾
海外博丽神社例大祭
博丽神社歌谣祭
博丽神社崇敬会相关活动
COMICUP
魅知幻想博览会
上海THONLY
东方Only活动
东方红楼梦
角色Only活动
作品Only活动
地区Only活动
其他地区举办的展会
其他展会
M3
COMIC1
展会作品列表
展会作品数量
展会同人志列表
展会专辑列表
展会软件列表
展会视频列表
商业二次创作
电脑游戏
东方月神夜
家用机游戏
Play,Doujin
手机游戏
东方大炮弹
东方LostWord
东方Dungeon Dive
东方弹幕神乐
东方幻想Eclipse
同人二次创作
同人社团列表
同人志分类
同人专辑分类
同人专辑搜索
原曲作品数量
同人软件列表
Steam游戏列表
同人角色列表
同人视频列表
其他形式同人
同人文章列表
同人画师列表
同人封面角色
东方相关周边
PVCFigure
GarageKit
小型物品
其他形式周边
MUGEN
THB相关项目
THB策划
中文东方人气投票
东深见讲坛
幻想乡柱状地图
THB衍生
同人专辑搜索
原曲认知测验
东方相关QQ群组列表
THB媒体
微博
Bilibili
直播间
GitHub
THB协力
博丽神主ZUN微博
东方我乐多丛志
MineCraft幻想乡
京都幻想剧团
幻奏盛宴
功能与帮助
最近更改
随机浏览
编写规范
收录方针
命名规范
同人社团
同人音乐
封面图片
二次设定
编辑帮助
基础帮助
常用模板
进阶代码
函数用法
编写翻译表
语义维基
样式类用法
颜色列表
工具
链入页面
相关更改
特殊页面
页面信息
其他
联系管理员
关于THBWiki
捐款支持
语言
English
italiano
日本語
中文