-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathSSS.txt
244 lines (230 loc) · 7.31 KB
/
SSS.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
用DEMKF.EXE解开sss.mkf文件,得5个文件
第1个文件:共170624字节,事件索引,直接写入存档3240H处
每个事件占32字节,共5332个事件。至于格式嘛,里面有坐标、图层、事件代号、物品图动画代号、事件触发方式等,没有细看。
32字节分布:
1111 2222 3333 4444 5555 6666 7777 8888
9999 aaaa bbbb cccc dddd eeee ffff 0000
2222和3333是坐标(2222处的数值减去A0H和3333处的数值减去70H,再把得到的2个数值写入存档开头的第个3字节处,读回存档逍遥就会到达事件触发物处了,查找物品坐标就用这个方法)
4444好象是图层
5555事件代号,6666也是事件代号(专用来放动画,如人物行走等)
7777事件是否触发了,8888触发方式,9999触发物图象
aaaa和bbbb图象参数
第2个文件:共2352字节,可能和场景安排有关,也调用到事件,直接写入存档。
第3个文件:共6780字节,物品人物仙术等定义,其中一部分请参看rpg.txt,有调用到事件,直接写入存档。
第4个文件:共51524字节,对话索引,请参看整理好的m.txt。
第5个文件:共338336字节,这是sss文件的主要组成部分,是核心。事件控制部分大都在这里了。接着看吧~
仙剑奇侠传DOS版脚本指令集:
(我好累,只整理了一部分,一个人做太辛苦了,本想快点公布的,但一来资料不全,二来资料太乱了,我现在也是匆忙整理,很多资料我也只是大概知道它是做什么的。)
每8个字节为一个有效指令。头2个字节为指令代码:
格式:指令代码 参数1 参数2 参数3
举例:灵葫咒(请用UltraEdit打开DOS版没有修改过的sss.mkf文件,去到0x0008AC10处)
8ac10h:6400 1900 68A4 0000
8ac18h:0600 3C00 68A4 0000
8ac20h:3300 68A4 0000 0000
8ac28h:6000 0000 0000 0000
8ac30h:0000 0000 0000 0000
说明:
6400指令作用是检测敌人的血是否少于一个百分数(参数1)。少于就跳到参数2的地址,不少于就跳到参数3的地址。
0600指令到现在还不知道它是用来检测什么条件的,不清楚它的参数1数值代表什么。有时参数1也作跳事件用。B1A4飞龙
3200指令为灵葫咒,参数1表示灵葫咒不成功就跳到第几个事件(68A4),这个68A4即A468,因为每个指令为8字节,所以第A468个事件的地址是A4B1*8=52340H,52340H再加上偏移量38788H(在文件头可看到),得8AAC8H,用Ctrl + G去到这个地址看看可知道这里是显示“失敗 沒有效果”的。可以把68A4改为93A4,从而跳到8ac20h处执行灵葫咒,但因为灵葫值为0的敌人是没有效果的,所以3300后面的68A4不要改动,否则死循环。
6000指令作用是秒杀敌人,没有参数。
0000指令为结束指令,用它来判断一个事件或指令是否结束,每一个完整事件都要用它,是事件是否结束的标志。
可见,灵葫咒真正起作用的是3300这个指令。但3300这个指令它做了什么就不知道了。
以下是我整理的指令,很乱,有?号的是指还不怎么明白。
目前功能模糊/不明白/不确定的用●标明
空出来的是我没时间测试的部分。
指令参数我没有仔细试过,不列出来了,只列指令。
0000:结束指令
0100:回合●
0200:无条件跳
0300:也是无条件跳●
0400:改变前面物品形状,如打开箱子。●
0500:中断返回●
0600:判断,成功率有关,不成就跳●
0700:战斗,参看team.txt
0800:把下一指令写入当前
0900:禁止移动n秒
0A00:选择
1500:脸向何方
1600:站立人物动画(一张图)●
1700:装备的附加属性
1800:装备
1900:加屬性(以下是参数1值,00~05是我测试出来的,括号里的1fc是指DOS存档里的地址。改变参数1还可把仙术代码+n)
00换人像(1fc)
01战斗时我方人像(20a)
02换行走时的人像(214)
03换名字(220)
04(22c)
05(238)
06等级
07体力最大值
08体力
09真气最大值
0a真气
0b~10装备,无增加
11武
12灵
13防
14身
15吉
...
...
1A00:换马甲(就是换装啦,如逍遥变苗人青年,也可换其它,如姥姥,这个指令要配合其它指令,具体请看调用它的地方是怎么用的)
1B00:回复生命
1C00:回复真气
1D00:回复生命、真气
1E00:金钱(也可用来判断金钱数)
1F00:物品
2000:检查物品是否存在
2300:解除装备
2600:店铺,参看shop.txt
2700:当铺
2800:中毒
2900:平时中毒●
2E00:巫术类仙术
3200:等待一会●
3300:灵葫咒
3400:靈葫
3500:震一会
3800:没有任何效果●仙术
3B00:中间黄字
3C00:左上图
3D00:右下图
3E00:框架
3F00:移动到某坐标
4300:播放背景音乐
4400:滑动到某坐标
4600:方位
4700:音效
4B00:退出战场
4C00:退出战场?乱●
4D00:剧终时用过下啦~●
4E00:读回刚才存档
4F00:败阵时慢慢变红
5000:明黑转换
5500:学得仙术
5700:真气降到1
5900:场景
5A00:生命减少
5D00:三尸虫毒
5F00:生命0
6000:秒杀
6100:生命0
6400:百分几条件
6700:使用武功
6800:使用毒?●
6900:敌退
6A00:飞龙探云手(仙术及物品部分参看rpg.txt)
6B00:风卷残云/风神
6C00:控制图层?●
6D00:检测场景?跳●
6E00:方位块?●
7000:走动
7100:视觉效果
7300:消失方式?
7400:检查我方是否受伤
7500:队伍调整
7600:显示最后画面
7700:背景音乐消失
7900:检测队伍中是否有某人:25灵儿,26??女飞?,27阿奴,
7A00:走动
7B00:走动
8000:夜晚
8100:没有效果●
8400:此处无法放置
8600:阴气扑脸而来
8B00:视觉效果
8C00:控制黑白●
8D00:吃王升级
8F00:金钱少一半
9300:黑变白
9600:灵儿飞上天
9700:移动
9900:跳场景●
9B00:场景渐渐隐去
9C00:分身(如红史莱姆、血云雾)
9E00:召唤
9F00:变身(把自己替换掉如小土鬼,都是设定好的)
A000:退出游戏
A100:几人挤在一起
A200:跳!最后动画
A400:教主蛇,最后动画
A500:脚印,最后动画
FFFF:对话索引,请参看m.txt文件
0B00:
0C00:
0D00:
0E00:
0F00:
1000:
1100:
1200:
1300:
1400:
2100:
2200:
2400:
2500:
2A00:
2B00:
2C00:
2D00:
2F00:
3000:
3100:
3600:
3700:
3900:
3A00:
4000:
4100:
4200:
4500:
4900:
4A00:
5100:
5200:
5300:
5400:
5600:
5800:
5B00:
5C00:
5E00:
6200:
6300:
6500:
6600:
6F00:
7800:
7C00:
7D00:
7E00:
7F00:
8200:
8300:
8500:
8700:
8800:
8900:
8A00:
8E00:
9000:
9100:
9200:
9400:
9500:
9800:
9A00:
A300:
A600:
DOS版指令从0000到A600,还有FFFF,但有几个是没有用到的:
3200:
4800:
7200:
9D00:
win版还有A700指令
我曾经给sss.mkf增加内容,但加料过多时有时会出错退出,有时敌人只能使用data.mkf里定义的武功,而不能使用sss.mkf里增加的武功,如拜月,他只能使用一只攻击单人的魔爪,其他仙术不能用。不知道是什么原因。可能是重复了。
呼~整理完了,和未整理前差不多一样乱。这些数据最好能写个程序来分析。
不过很多还是要用到人手来分析的,如场景代号、事件触发物图象代号,还有哪些不知道作什么的指令参数。
data.mkf部分我还未研究,等BSPAL的YJ_1解码