-
Notifications
You must be signed in to change notification settings - Fork 17
/
sssplusB.txt
928 lines (549 loc) · 17.9 KB
/
sssplusB.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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
仙剑奇侠传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指令为结束指令,用它来判断一个事件或指令是否结束,每一个完整事件都
要用它,是事件是否结束的标志。
”
指令、参数总表
FFFF 参数1
对话索引,请参看m.txt文件
参数1:对话索引地址
指向sss.mkf第4个子文件
指向的地址 = 参数1 * 4
参见sssplusA中关于sss.mkf字文件的说明
参见夜烟整理好的M.txt
作用
将参数1的文字显示在屏幕上
示例
FFFF 0000
文字显示:此门已上锁
提示
M.txt中有些特殊字符,在对白中不显示,但有其作用
" ":引号中的内容以黄色显示
~..:对话自动中断,不须按空格,..是一个数字,对话显示的时间
(:表情,汗滴
):表情,爱心
00
结束指令,相当于break
作用
脚本执行中,遇到00,则结束执行
示例
参见前面灵葫咒的例子
01
中断、继续指令,相当于continue
作用
脚本执行中,遇到01,则中断执行,并将01之后下一个指令地址写入调用该脚本
的地方
示例
众所周知的酒神只能使用9次的实现方法
rpg.txt中酒神的信息:
7201 酒神 (4B 00 00 00 9E A4 6B A4 00 00 1A 00)
它的后序脚本地址为9EA4,读入数据,为:
01
01
01
01
01
01
01
01
5600 7201
3B00
FFFF 2432
解释:
你可以找两个存档,第一个存档酒神没用过,第二个存档酒神用过一次
在存档的277CH这个地址,第一个存档数据为9EA4,第二个存档则为9FA4
原理:
刚开始,酒神的后序脚本地址为9EA4
第一次使用酒神,调用后序脚本,发现指令为01
然后中断执行,并将01之后下一个指令(也是01)的地址9FA4写入调用处
而调用处正是内存中对酒神这个对象的定义处
然后存档,就会把改动过的酒神定义(后序脚本为9FA4)写入存档
至于56、3B指令的作用,以后会提的
提示
怪物的脚本调用:
怪物的脚本不是直接从定义处调用的,而是每次和怪物战斗之前,内存中会开辟
一块新的地址,用于存放参战怪物的脚本,因此,如果遇到脚本改写,也不会改
写到怪物的定义处,而是改写到新开辟的地址
换句话说,怪物的脚本调用没有遗留性质,两场战斗毫不相干(因为定义永远不
变,每次新开辟时都是从定义处读取的)
02 参数1
中断、改写指令
参数1:脚本地址
指向sss.mkf的第5个子文件
指向的地址 = 参数1 * 8
作用
脚本执行中,遇到02,则中断执行,并将参数1写入调用该脚本的地方
示例
事件5325,无底深渊地图C的一个宝箱
触发脚本为8F07,读入数据,为:
0400 7303
3E
FFFF 8F00
1F00 6E00
0200 7703
解释:
0400 7303 在这里,作用是改变宝箱的形状
3E 作用是在屏幕中央创造一个框
FFFF 8F00 作用是在屏幕上显示“得到神仙茶”
1F00 6E00 作用是在物品栏里增加一个神仙茶
0200 7703
将7703写入调用该脚本的地方,即事件5325的触发脚本
之后,该事件的触发脚本变成7703(该脚本的作用为显示“一个空箱子”)
这样说大家明白了吧
提示
怪物脚本调用中,02也和01一样,不直接改写到定义处
03 参数1
跳转指令,相当于goto
参数1:脚本地址
指向sss.mkf的第5个子文件
指向的地址 = 参数1 * 8
作用
脚本执行中,遇到03,则跳转到参数1所指向的脚本地址,并继续执行该地址后续
内容
示例
这么易懂,应该不用了吧
04 参数1
跳转返回指令
参数1:脚本地址
指向sss.mkf的第5个子文件
指向的地址 = 参数1 * 8
作用
脚本执行中,遇到04,则跳转到参数1所指向的脚本地址,继续执行该地址后续内
容,直到遇到00、01或02等中断脚本,然后返回04处,继续执行04之后的内容
05 参数2
清屏指令
参数2:整数,作用不明
作用
脚本执行中,遇到05,则清除屏幕上的以下内容:FFFF指令显示的文字,3C、3D
指令显示的图片、3E指令显示的框、50指令造成的黑屏,等等
06 参数1 参数2
判断、跳转指令
参数1:整数
参数2:脚本地址(可以省略)
指向sss.mkf的第5个子文件
指向的地址 = 参数2 * 8
作用
脚本执行中,遇到06,则系统产生一个0到100的随机数,若该随机数不大于参数1
,则继续执行06之后的内容,否则:
若参数2被省略,则中断脚本执行,并将06指令所在的脚本地址写入脚本调用处
若参数2存在,则跳转参数2指向的脚本地址,继续执行该地址之后的内容
07 参数1 参数2 参数3
战斗指令
参数1:怪物组合地址
指向data.mkf的第3个子文件
指向的地址 = 参数1 * 10
参见team.txt
参数2:脚本地址(可以省略)
参数3:脚本地址(可以省略)
作用
脚本执行中,遇到07,则进入战斗画面,战斗的对象是参数1指向的地址所定义的
怪物组合
若战败,如果参数2存在,则跳转参数2指向的脚本地址,否则什么都不做
若战胜,如果参数3存在,则跳转参数3指向的脚本地址,否则什么都不做
08
改写指令
作用
脚本执行中,遇到08,继续执行,并将08之后下一个指令地址写入调用该脚本的
地方
09 参数1
禁止移动指令
参数1:整数(可以省略)
作用
脚本执行中,遇到09,则禁止主角移动
若参数1存在,则禁止移动的时间为参数1的数值
若参数1省略,则禁止移动的时间为1秒(猜测)
0A 参数1
对话框选择指令
参数1:脚本地址
作用
脚本执行中,遇到0A,则弹出一个是/否的对话框
若选择是,则继续执行0A之后的内容
若选择否,则跳转参数1指向的脚本地址
0B-0F:暂时不明,待补
10 参数1 参数2 参数3
事件移动指令
参数1:X位置
参数2:Y位置
参数3:半位置
作用
该事件直接移动到指定位置
指定位置:
X坐标 = 参数1*32 + 参数3*16
Y坐标 = 参数2*16 + 参数3*8
11 参数1 参数2 参数3
事件移动指令(猜测:不考虑地形影响,未经验证)
参数1:X位置
参数2:Y位置
参数3:半位置
作用
该事件直接移动到指定位置
指定位置:
X坐标 = 参数1*32 + 参数3*16
Y坐标 = 参数2*16 + 参数3*8
12 参数1 参数2 参数3
不明,难道是改变事件的图层?
参数1:事件地址
指向sss.mkf的第1个子文件
指向的地址 = 参数1 * 32
参数2:不明
参数3:不明
作用
只出现过1次,没有试验,不知道是干什么的
13 参数1 参数2 参数3
事件放置指令
参数1:事件地址
参数2:X坐标
参数3:Y坐标
作用
将参数1指向的事件放置在X坐标为参数2,Y坐标为参数3的地方(即将该事件的X
坐标改成参数2,Y坐标改成参数3)
14 参数1
改变形状指令
参数1:图像参数
作用
改变默认选定事件的图像(估计是事件的静态图像参数BBBB,见sssplusA)
15 参数1 参数2 参数3
不明
16 参数1 参数2 参数3
改变形状指令
参数1:事件地址
参数2:图像参数
参数3:图像参数
作用
估计是把参数1指向的地址的静态图像参数和动态图像参数改为参数2和参数3的值
17 参数1 参数2 参数3
装备引起的属性增加指令
参数1:主角属性地址——装备位置
0B:头部
0C:身体
0D:肩部
0E:武器
0F:脚部
10:配戴
参数2:主角属性地址——基本属性
00:状态表情图像
01:战斗模型
02:地图模型
03:名字
04:可否攻击全体
05:无效?
06:等级
07:体力最大值
08:真气最大值
09:体力
0A:真气
11:武术
12:灵力
13:防御
14:身法
15:吉运
16:毒抗
17:风抗
18:雷抗
19:水抗
1A:火抗
1B:土抗
......
41:合体法术
指向data.mkf的第4个子文件
指向的地址 = 该主角的地址偏移 + 参数2*12
主角地址偏移:
李逍遥 0 赵灵儿 2 林月如 4
巫后 6 阿奴 8 盖罗娇10
参数3:整数
作用
若该主角参数1的地址指向的位置没有装备东西,则将参数3的值增加到参数2指向
的地址
18 参数1 参数2
装备指令
参数1:主角属性地址——装备位置
参数2:装备代号
作用:
将参数2的装备装备到参数1指向的地址
19 参数1 参数2 参数3
属性增加指令
参数1:主角属性地址——基本属性
参数2:整数
参数3:对象主角(可省略)
01:李逍遥
02:赵灵儿
03:林月如
04:巫后
05:阿奴
06:盖罗娇
作用
将参数2的数值增加到参数3指向的主角或选定主角(参数3省略时)的参数1的位
置
1A 参数1 参数2 参数3
属性写入指令
参数1:主角属性地址
参数2:整数
参数3:对象主角(可省略)
作用
将参数2的数值直接写入参数3指向的主角或选定主角(参数3省略时)的参数1的
位置
1B 参数1 参数2
恢复体力指令
参数1:是否全体
0:单体
1:全体
参数2:整数
作用
给指定主角或全体恢复参数2大小的体力
1C 参数1 参数2
恢复真气指令
参数1:是否全体
参数2:整数
作用
给指定主角或全体恢复参数2大小的真气
1D 参数1 参数2 参数3
恢复体力和真气指令
参数1:是否全体
参数2:整数
参数3:整数(可省略)
作用
如参数3省略,则给给指定主角或全体恢复参数2大小的体力和真气
如参数3存在,则给指定主角或全体恢复参数2大小的体力和参数3大小的真气
1E 参数1 参数2
金钱改变指令
参数1:整数
参数2:指令地址(可省略)
作用
金钱改变参数1的数值(增加或减少)
若参数1为负数,并且钱不够,则跳转参数2指向的地址
1F 参数1 参数2
获得物品指令
参数1:物品代号
参数2:整数(可省略)
作用
物品栏里,参数1代表的物品增加参数2的数量(参数2省略则增加1)
20 参数1 参数2 参数3
失去物品指令
参数1:物品代号
参数2:整数(可省略)
参数3:指令地址(可省略)
作用
物品栏里,参数1代表的物品减少参数2的数量(参数2省略则减少1)
如数量不够,则跳转参数3指向的地址
21 参数1 参数2
伤敌指令
参数1:是否全体
参数2:整数
作用
对选定敌人或全体造成参数2数量的伤害
22 参数1 参数2
复活指令
参数1:是否全体
参数2:整数
作用
使选定对象或全体复活,并恢复生命至总生命10%*参数2
23 参数1 参数2
解除装备指令
参数1:对象主角
参数2:装备位置代号(可省略)
01:头部
02:身体
03:肩部
04:武器
05:脚部
06:配戴
作用
解除参数1指向的主角参数2位置的装备,放入物品栏(参数2省略则解除全部装备
)
24 参数1 参数2
更改自动脚本指令
参数1:事件地址
FFFF:默认事件(及正在调用触发脚本或自动脚本的事件)
参数2:脚本地址
作用
将参数1指向的事件的自动脚本(见sssplusA.txt)更改为参数2指向的脚本地址
25 参数1 参数2
更改触发脚本指令
参数1:事件地址
FFFF:默认事件(及正在调用触发脚本或自动脚本的事件)
参数2:脚本地址
作用
将参数1指向的事件的触发脚本(见sssplusA.txt)更改为参数2指向的脚本地址
26 参数1
进入商店指令
参数1:商店地址
指向data.mkf的第1个子文件
指向的地址 = 参数1*18
作用
立即进入参数1指向的商店
27
进入当铺指令
作用
立即进入当铺
28 参数1 参数2
敌方中毒指令
参数1 是否全体
参数2 中毒代号
作用
敌方选定对象或全体中参数2代表的毒
29 参数1 参数2
我方中毒指令
参数1 是否全体
参数2 中毒代号
作用
我方选定对象或全体中参数2代表的毒
2A 参数1 参数2
敌方解毒指令
参数1 是否全体
参数2 中毒代号
作用
敌方选定对象或全体解除参数2代表的毒
2B 参数1 参数2
我方解毒指令
参数1 是否全体
参数2 中毒代号
作用
我方选定对象或全体解除参数2代表的毒
2C 参数1 参数2
我方多重解毒指令
参数1 是否全体
参数2 整数
作用
我方选定对象或全体解除毒性不高于参数2的毒
2D 参数1 参数2
我方特殊状态指令
参数1 状态代号
00:疯魔
01:定身
02:昏睡
03:咒封
04:死者继续攻击
05:普通攻击加强
06:防御加强
07:身法加强
08:两次攻击
参数2 整数
作用
我方选定对象获得参数1代表特殊状态,持续参数2回合
2E 参数1 参数2 参数3
敌方特殊状态指令
参数1 状态代号
参数2 整数
参数3 脚本地址
作用
敌方选定对象获得参数1代表特殊状态,持续参数2回合,若不受该状态影响,则
跳转参数3指向的脚本地址
2F 参数1
我方解除特殊状态指令
参数1 状态代号
作用
我方选定对象解除参数1代表的特殊状态
30 参数1 参数2
临时增减属性指令
参数1 主角属性地址
参数2 整数
作用
我方选定对象的参数1代表的属性临时增减参数2*1%,战斗结束后恢复
31 参数1
临时改变战斗模型指令
参数1 战斗模型代号
见sssplusA.txt
作用
战斗中临时把我方选定对象的战斗模型改变成参数1代表的战斗模型
32
未出现
33 参数1
吸取灵葫值指令
参数1:脚本地址
作用
将选定对象的灵葫值吸收到紫金葫芦中,如没有灵葫值,则跳转参数1指向的脚本
地址
34 参数1
灵葫炼丹指令
参数1:脚本地址
作用
调用灵葫炼丹程序,根据现有灵葫值,从data.mkf第1个子文件的第一组数据中随
机炼成一种物品,如灵葫值为0,则跳转参数1指向的脚本地址
35 参数1 参数2 @
画面抖动指令
参数1:整数
参数2整数
作用
画面抖动一会,似乎参数1决定抖动的幅度,参数2决定抖动的时间
36 参数1
动画选择指令
参数1:动画地址
指向RNG.mkf中第参数1个子文件
作用
当前默认播放的动画更改为参数1指向的动画
37 参数1 参数2 参数3
动画播放指令
参数1:动画祯数
参数2:动画祯数
参数3:整数
作用
播放当前默认动画,从第参数1祯播放到第参数2祯,持续参数3时间
38 参数1
脱离迷宫指令
参数1:脚本地址
作用
脱离迷宫,即调用目前所在场景的迷宫脱离脚本(参见sssplusA.txt有关场景部
分),若没有该脚本,则跳转参数1指向的脚本地址
39 参数1
吸取生命指令
参数1:整数
作用
吸取选定对象参数1点生命,用于补充动作对象的体力
3A 参数1
脱离战斗指令
参数1:脚本地址
作用
立即从战斗中脱离(逃跑),即调用该战斗指令07的第3个参数指向的脚本,如果
该战斗不能脱离,即战斗指令07的第3个参数为0,则跳转参数1指向的脚本地址
3B
中央显示文字指令
作用
将文字输出位置改到画面中央
3C 参数1 参数3 @
上方显示文字指令
参数1:头像地址
指向RGM.mkf的第参数1个子文件
参数3:整数,出现过-1
作用
在画面左上方显示参数1指向的头像,并将文字输出位置改到画面右上方
调整文字显示速度为参数3?
3D 参数1 参数3 @
下方显示文字指令
参数1:头像地址
指向RGM.mkf的第参数1个子文件
参数3:整数,出现过-1
作用
在画面右下方显示参数1指向的头像,并将文字输出位置改到画面左下方
调整文字显示速度为参数3?
3E
中央文本框显示文字指令
作用
将文字输出位置改到画面中央,并在该位置生成一个文本框
3F 参数1 参数2 参数3 @
暂时不明
参数1:事件地址
参数2:X坐标
参数3:Y坐标