summaryrefslogtreecommitdiff
path: root/doc/script_ref.txt
blob: 3a0ccfeeb25dca779975d27dcb8be41ccccb398e (plain) (blame)
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
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
AthenaNPCScript

- Table of contents
	0. Introduction
	1. Definition of NPC
	2. Explanation of Script, and Fundamental Rule
	3. Imperative Sentence, Function, and Constant Label
	4. Error Message
	5. Postscript

0. Introduction
	The function and form which are contained in this text refer to npc_sample.txt contained in the newest snapshot, and are described.
	The convenience of the editor which shows this text is considered, <tab> is written and <n> etc. is written. [ a tab character ] [ arbitrary values ].
	Although it is a coordinate system, please make a lower figure reference.
	The increase in ?Y
	(  0,200)--(200,200)
	    |          |
	    |          |
	    |          |
	    |          |
	    |          |
	(  0,  0)--(200,  0)-> the increase in X

1. Definition of NPC
	if it is below an athena directory -- anywhere -- being good (if it being able to do below athena/npc) -- please create txt for the time being
	The NPC describes first what is shown (a way of speaking called NPC depending on the case is unsuitable).
	
	* Warp point : perform movement between MAP.
		<gatname>,<x>,<y><tab>warp<tab><displayname><tab><dx>,<dy>,<destination_gatname>,<destination_x>,<destination_y>
		
		gatname			The MAP file name on which a warp point is put is specified. Please do not forget gat.
		x			The horizontal coordinates on which a warp point is put are specified.
		y			The vertical coordinates on which a warp point is put are specified.
		displayname		It is a warp point discernment child. You may overlap. It uses by debugging.
		dx			It is the horizontal effect range of a warp point.
		dy			It is the vertical effect range of a warp point. Probably I do not write a circle but think that it is a region.
			Example of dx and dy (- is x and y) :
				0,0	1,0		2,2
				*@*-	*-*-*-*-*-	*-*-*-*-*-*-*-
				*-*?*-	*-*-*?*-*-	*-*-*-*-*-*-*-
				*@*-	*-*-*-*-*-	*-*-*-*-*-*-*-
				*@			*-*-*-*?*-*-*-
				*@			*-*-*-*-*-*-*-
				*@			*-*-*-*-*-*-*-
				*@			*-*-*-*-*-*-*-
				*@			
				* I hear that and it will leap if the cell of - is stepped on.
				*@			
		destination_gatname	It is a warp place. . Even if there is gat and there is not, don't care about it.
		destination_x		They are warp place horizontal coordinates.
		destination_y		They are warp place vertical coordinates.
		
		Notes :
		A warp point displays only that plurality is described to be at the end when located on this position.
		When the coordinates of a warp place are move prohibition cells, it leaps to somewhere in the MAP.
		
	* Monster : manage the spawning(aka apperance in japanese.) of a monster.
		<gatname>,<x>,<y>,<xs>,<ys><tab>monster<tab><displayname><tab><npcid>,<number>,<spawn_delay1>,<spawn_delay2>[,<event>]
		
		gatname			The appearing MAP file name is specified.
		x			The appearing horizontal coordinates are specified. Random at 0.
		y			The appearing vertical coordinates are specified. Random at 0.
		xs			The appearing horizontal range is specified.
		ys			The appearing vertical range is specified.
			Example of xs and ys (- is x and y) :
				0,0	2,1
				*@*?	*-*-*-*-*-
				*@	*-*-*?*-*-
				*@	*-*-*-*-*-
				*@	
				* And a monster appears from the cell of -.
				
		displayname		It is the display name of the appearing monster.
		npcid			Please refer to mob_db.txt. id of the monster made to appear is specified.
		number			It is the number of the maximum appearances in the MAP and the appearance range.
		spawn_delay1		After appearing, if specified the amount of time in milliseconds before it re-appears.
		spawn_delay2		After dying, if specified the amount of time in milliseconds before it re-appears.
		event			The specified event is generated. An abbreviation is possible.
		
		Notes:
		spawn_delay1 and spawn_delay2 judge and give priority to whether it re-appears having been based the latest [ direction ] on which as a result.
		
	* Store : sell an item.
		<gatname>,<x>,<y>,<direction><tab>shop<tab><displayname><tab><npcid>,<item_id>:<price>,<item_id>:<price>,<item_id>:<price>
		
		gatname			The MAP file name to arrange is specified.
		x			The horizontal coordinates to arrange are specified.
		y			The vertical coordinates to arrange are specified.
		direction		Direction is specified.
			Details of direction :
				7 0 1
				6    2
				5 4 3
				
		displayname		The display name of the store to arrange is specified.
		npcid			The display sprite ID of the store to arrange is specified.
		item_id			The item ID put on the store to arrange is specified. Please refer to item_db.
		price			The price of the item specified by item_id is set up.
			each <item_id>:<price> is divided by a comma (,), and more than one can be specified.
			example:
			item_id:price,item_id2,price2
			
	* Script : create NPC.
		<gatname>,<x>,<y>,<direction><tab>script<tab><displayname><tab><npcid>,<xs>,<ys>,{ <script> ... }
		
		gatname			The MAP file name to arrange is specified.
		x			The horizontal coordinates to arrange are specified.
		y			The vertical coordinates to arrange are specified.
		direction			Direction is specified.
		displayname		The display name of NPC to arrange is specified. It becomes an event name when npcid is -1.
					When making said display name another operation event, it can be described as a display name::discernment child.
		npcid			The display sprite ID of NPC to arrange is specified. If -1 is specified, it will become an event in map.
		xs			The horizontal range which performs a script automatically is specified.
		ys			The vertical range which performs a script automatically is specified. It is the same as a warp.
		
		Explanation about the inside of {} (inside parenthesis).
		Collecting by the party cannot recommend you. If it can do
		gatname etc,
		{
			//comment
			script;
		label:
			script;
		}
		Let's write by the said touch. Comment out is //and comment area is /* and */.
		The ? which does not leave; (semicolon) in the script ending.
	
		「<gatname>,<x>,<y>,<direction><tab>」の部分を、「-<tab>」とすることで、
		マップサーバー内には存在していても、実際のマップには配置されないNPCを作成できます。
		これは後述のデュプリケートスクリプトでコピー元として使用します。
	
	*デュプリケートスクリプト:既存のNPC(のスクリプト)をコピーします。
		<gatname>,<x>,<y>,<direction><tab>duplicate(<source>)<tab><displayname><tab><npcid>,<xs><ys>
		
		source以外のパラメータは通常のスクリプトと同じです。
		sourceにはコピー元となるNPCの識別名を入力します。
		
		コピー元のNPCがマップ上に配置されている場合、同じマップである必要があります。
		マップ上に配置されていない場合は、どのマップへもコピー可能です。
	
	*ユーザー定義関数スクリプト:スクリプトから呼び出されるユーザー定義関数を作成します。
		function<tab>script<tab><name><tab>{ <script> ... }
		
		callfunc命令で呼び出すことの出来る関数を作成します。
		関数の最後には必ずreturn命令を入れてください。
	
	*マップフラグ:MAPのルールを管理します。
		<gatname><tab>mapflag<tab><const>
		
		gatname			ルールを設定するMAPファイル名を指定します。
		const			ルールの内容を指定します。
		
		constの一覧。
			nosave<tab><gatname>,<x>,<y>
				リログインした際<gatname>の座標<x>,<y>に移動します。
			nomemo<tab>dummy
				メモを取ることを禁止します。
			notereport<tab>dummy
				SavePointまたはRandomを指定したwarp文、ワープポータル、テレポートを禁止します。
			nobranch<tab>dummy
				古木の枝の使用を禁止します。
			pvp<tab>dummy
				PVP可能MAPになります。
			nopenalty<tab>dummy
				デスペナルティ無しになります。
			pvp_noparty<tab>dummy
				PVPにおいて、同パーティー攻撃不可になります。
			pvp_noguild<tab>dummy
				PVPにおいて、同ギルド攻撃不可になります。
			gvg<tab>dummy
				シーズモードになります。
			gvg_noparty<tab>dummy
				シーズモードにおいて、同パーティー攻撃不可になります。
		
2.スクリプトの説明と基本的な規則
	*数字
		符号付の整数と16進数表記整数を使用することができます。
		符合付整数は半角数字で123456等と記述します。
		16進数表記整数は0x12等0xを付けて記述します。
		
	*文字列
		"(ダブルクォーテーション)で囲んだ文字は文字列として評価されます。
		"(ダブルクォーテーション)記号を扱いたい場合は\"と記述します。
		\記号を扱いたい場合は\\と記述します。
		なお表示関係の物に関しては^000000等の色変更を使うことができます。
		変数 + "文字列"といった文字列結合もできます。
	
	*単項演算子
		以下の数値専用の単項演算子が用意されています。
			-	符号逆転(2の補数)
			~	ビット論理否定(1の補数)
			!	論理否定
	
	*2項演算子
		以下2項演算子は数値と文字列で動作が異なります。
			+	加算/結合
			数値どうしの場合は加算します。
			それ以外の場合は文字列とみなして結合します。

		以下の2項演算子は数値専用です。
			-	減算
			*	乗算
			/	除算
			%	剰余
			&	ビット論理積
			|	ビット論理和
			^	ビット排他的論理和
			&&	論理積
			||	論理和

		以下の2項演算子は数値どうし、または文字列どうしの比較を行います。
		これらの関係演算子は関係が成り立つと1、成り立たないと0を返します。
			==	等しい
			!=	等しくない
			>	より大きい
			>=	より大きいか等しい(以上)
			<	より小さい(未満)
			<=	より小さいか等しい(以下)

	*変数
		半角英数字を使用することができます。
		変数のスコープとライフタイムはプレフィックスにより指定します。
		小文字のエルはプレフィックスとして扱われるので注意してください。
		(小文字のエルは今後の動作を保障されないので使用しないで下さい)

			プレフィックス	スコープ		ライフタイム
				(なし)	キャラクター		永続的
				@	キャラクター		一時的
				l	同上			同上(推奨されない)
				$	マップサーバー		永続的
				$@	マップサーバー		一時的
				#	アカウント		永続的
				##	アカウント(全ワールド)	永続的
		
		つまり、普通の一時的な変数は@, 保存する必要のある変数は
		プレフィックスなし、全てのキャラクターで共有すべき変数は $、
		同一アカウントで共有すべき変数は # や ## を使用することになります。

		また、変数の型はポストフィックスにより指定します。
		ただし、文字列型はキャラクター一時変数、および、
		永続的/一時的マップサーバー変数でのみ使用できます。
		(プレフィックス @、$、$@ )
		
			ポストフィックス	型
				(なし)		整数
				$		文字列
		
		<例>	@hoge$	文字列型一時的キャラクター変数
			hoge	数値型永続的キャラクター変数
			$hoge	数値型永続的全キャラクター共有変数

		一時的でない変数は多用すべきではありません。
		保存する必要のないものは極力一時変数で済ませるべきです。
		保存する必要があるのかないのかはよく考慮してください。
		特に永続的なキャラクター/アカウント変数は、数に制限があります。
		使用が終わって二度と使用することがないとわかっている変数は
		値を0に設定することで削除することが出来ます。
	
	*配列変数
		変数名の後に括弧 [ ] で括った式を指定することで配列変数になります。
		変数名と"["の間に空白文字を入れることはできません。

		<例>	hoge[10]	fuga[ @temp ]

		配列の要素番号は0〜127が指定できますが、番号0は同名の変数と
		値を共有します。たとえば、hoge[0] と hoge は同じ変数です。

		配列変数は一時的キャラクター変数、一時的/永続的マップサーバー変数で使用できます。
		変数の型は数値、文字列両方とも利用できます。

	*ラベル
		半角英数およびアンダーバーが使用できます。
		変数や命令などと区別するため L_ を先頭につけることが推奨されます。
		L_hoge: といった風に使用します。
		if文やmenu文のジャンプ先に指定されます。
		
	*定数
		athenaはdb/const.txtに準拠した定数を提供します。
		スクリプト内でのみ使用可能です。
		
	*埋め込み変数
		話かけたプレイヤーのステータスなどを参照できます。
		db/const.txtに記述されています。
		スクリプト内でのみ使用可能です。
		なお、一部を除いて値の代入はできません。
		
	*式
		命令文の引数が数値だった場合、そこで利用することができます。
		スペースは要らないようですがあった方が見易いです。
		比較演算子及び論理演算子は値が真であったとき数値の1、偽であったとき0を返します。
		
	*イベント
		形を持たないスクリプトです。
		タイムアタックなどの作成に使います。
		イベント名を記述する部分では、イベント名::ラベル名とすることでそのイベントの指定したラベルから
		スクリプトを開始させることができます。
		
	*命令構文
		引数は半角スペースを空けて記述してください。
		
3.命令文及び関数及び定数ラベル
	*命令文
		mes命令
			mes <string>;
			
			string		文字列
			
			<string>に記述された文字列をメッセージウィンドウに出力します。
			
		next命令
			next;
			
			メッセージウィンドウにnextボタンを表示し、待機します。
			
		close命令
			close;
			
			メッセージウィンドウにcloseボタンを表示し、スクリプトを終了します。
			
		menu命令
			menu <string1>,<label1>[,<stringN>,<labelN>...];
			
			stringN		文字列
			labelN		ラベル
			
			メニューを表示します。<stringN>に記述された文字列を選択すると<labelN>からスクリプトを開始します。
			また、選ばれたラベルの番号は変数@menuに代入されます。
			(l15にも代入されますが、こちらは今後動作が保障されないのでl15は使用しないで下さい)
			
		goto命令
			goto <label>;
			
			label		ラベル
			
			<label>からスクリプトを開始します。
			
		cutin命令
			cutin <filename>,<position>;
			
			filename	文字列
			position	数値
			
			カプラ職員などのカットインを表示します。<filename>は表示したいファイル名、<position>は表示位置を指定します。
			position:0,左下、1,中央下、2,右下、255,カットイン消去
			
		jobchange命令
			jobchange <job>[, <upper>];
			
			job		数値
			upper		数値
			
			職業を変更します。<job>はdb/const.txtを参照してください。
			<upper>は0=通常,1=転生,2=養子,-1 or 無し=現在の<upper>になります。
			jobLvは自動で1になります。
			バードとダンサーには注意してください。
			
		input命令
			input [<variable>];
			
			variable	変数、省略可
			
			入力ウィンドウを開き、入力データを<variable>に代入します。
			変数の型が文字列型のときは文字列入力ウィンドウ、整数型のときは数値入力ウィンドウになります。
			<variable>を省略した場合には数値入力ウィンドウを出し、データは変数l14 (小文字のエル+14)に代入されます。
			(l14は今後の動作が保障されないので、引数は省略しないで下さい)

		warp命令
			warp <gatname>,<x>,<y>;
			
			gatname		文字列
			x,y		数値
			
			<gatname>に指定されたMAPの座標<x>,<y>にワープします。
			<gatname>をSavePointにした場合、セーブポイントに移動します。
			Randomにした場合、そのMAP内のどこかに移動します。即ち<x><y>は無視。
			
		setlook命令
			setlook <n1>,<n2>;
			
			n1,n2		数値
			
			外見を変更します。<n1>は部品を、<n2>は種類を指定します。
			n1:1,髪型、2,武器、3,頭上段、4,頭中段、5,頭下段、6,髪色、7,服色、8,盾
			装備品は変更されません。アサシン男とローグ男に関しては服の色がありません。
			
		
		set命令
			set <variable>,<n>;
			
			variable	変数
			n		数値/文字列
			
			<variable>に<n>を代入します。
			文字列型を使用するときは変数名にポストフィックスを忘れないで下さい。
			
		setarray命令
			setarray <variable>[,<n0>[,<n1>…]];
		
			variable	変数
			nx		数値/文字列
		
			配列<variable>に値<n0>,<n1>,…のリストを代入します。
			<variable>は配列名を指定すると最初から、要素番号も指定すれば途中から代入できます。
			<例> setarray @hoge[2],16,24,32;  @hogeの要素2から4までを16,24,32にする。

		cleararray命令
			cleararray <variable>,<n>,<count>;
			
			variable	変数
			n		数値/文字列
			count		数値
			
			配列<variable>に値<n>を<count>個分代入します。
			<variable>は配列名を指定すると最初から、要素番号も指定すれば途中から代入できます。
			<例> cleararray @hoge[3],0,6;  @hogeの要素3から8までを0にセットする
		
		copyarray命令
			copyarray <var1>,<var2>,<n>;
			
			<var1>,<var2>	変数
			n		個数
			
			配列<var1>に配列<var2>の要素<n>個をコピーします。
			<var1>,<var2>は配列名を指定すると最初から、要素番号も指定すれば途中からコピーできます。

		deletearray命令
			
			deletearray <variable>,<n>;
			
			variable	変数
			n		数値
			
			配列<variable>から<n>個の要素を削除し、後ろの要素を前に詰める
			<variable>は配列名を指定すると最初から、要素番号も指定すれば途中から削除できます。
		
		if命令
			if (<cond>) goto <label>;
			
			cond		数値
			label		ラベル
			
			<cond>が0以外の場合、<label>からスクリプトを開始します。
			
		getitem命令
			getitem <itemid>,<num>;
			
			itemid		数値または文字列
			num		数値
			
			<itemid>に指定されたアイテムIDを持つアイテムを<num>個分入手します。
			<itemid>が文字列の場合、その名前(name,jname)を持つアイテムのIDを使用します。
			ただし、アイテム名はitem_db.txtなどに依存するため、テスト目的以外では使用すべきではありません。

		getitem2命令
			getitem <itemid>,<num>,<identify>,<refine>,<attribute>,<card1>,
			<card2>,<card3>,<card4>
			
			itemid		数値または文字列
			num,identify,refine,attribute,card1,card2,card3,card4	数値
			
			<itemid>に指定されたアイテムIDを持つアイテムを<num>個分入手します。
			<identify> 鑑定状態(0で未鑑定、1で鑑定)
			<refine> 精錬値
			<attribute> アイテムの状態
			<card1> 差さているカード、製造武器なら255で装備以外のアイテムでキャラの名前を入れたい時は254
			<card2> 差さているカード、製造武器なら属性と星のかけらの数を設定。星のかけらの数(範囲:0~3)*5*256 + 属性(無:0、火:3、水:1、風:4、土:2)
			<card3> 差さているカード、製造武器やキャラの名前が入るアイテムはキャラIDの下の2バイト
			<card4> 差さているカード、製造武器やキャラの名前が入るアイテムはキャラIDの上の2バイト

			<itemid>が文字列の場合、その名前(name,jname)を持つアイテムのIDを使用します。
			ただし、アイテム名はitem_db.txtなどに依存するため、テスト目的以外では使用すべきではありません。
			
		delitem命令
			delitem <itemid>,<num>;
			
			itemid_num	数値
			
			<itemid>に指定されたアイテムIDを持つアイテムを<num>個分失います。
			
		getexp命令
			getexp <base_exp>,<job_exp>;
			
			base_exp	数値
			job_exp		数値
			
			<base_exp>に指定された数だけBaseに経験値が入ります。
			<job_exp>に指定された数だけJobに経験値が入ります。
			マイナスの数字は適応されません。

		makepet命令
			makepet <petid>;
			
			petid	数値
			
			<petid>に指定されたアイテムIDを持つペットの卵を作成します。
			
		viewpoint命令
			viewpoint <type>,<x>,<y>,<id>,<color>;
			
			type,x,y,id	数値
			color		不明
			
			資料不足なので詳しい説明はできませんが、ミニMAPに点滅する点を表示、削除します。
			type:1,表示、2,削除
			
		heal命令
			heal <hp>,<sp>;
			
			hp,sp		数値
			
			<hp>分HPを、<sp>分SPを回復します。

		itemheal命令
			itemheal <hp>,<sp>;
			
			hp,sp		数値
			
			<hp>分HPを、<sp>分SPを回復します。healとは違い回復するHPとSPの量にVIT(SPの場合INT)とスキルによる補正が付きます。
			
		end命令
			end;
			
			スクリプトの実行を終了します。
			
		setoption命令
			setoption <string>;
			
			string		文字列
			
			引用:
			PCに以下で示す付属品(?)を付けます。
			0x0000	- 付属品削除
			0x0001	- ?
			0x0002	- ハイド(影付き)
			0x0004	- ??
			0x0008	- カート
			0x0010	- 鷹
			0x0020	- ペコペコ(ナイト,クルセイダーの時のみ有効)
			0x0040	- ハイド(影無し)
			0x0080	- カート2
			0x0100	- カート3
			0x0200	- カート4
			0x0400	- カート5
			0x0800	- 頭がオーク(Sageのスキル、リバースオーキッシュがかかった状態になる)
			
			一端すべて消されてから付け直すので、複数指定したい場合には合計を指定してください。
			
		savepoint命令
			savepoint <gatname>,<x>,<y>;
			
			gatname		文字列
			x,y		数値
			
			<gatname>の座標<x>,<y>をセーブポイントに設定します。
			
		openstorage命令
			openstorage;
			
			倉庫を開きます。
			
		setcart命令
			setcart;
			
			カートを付けます。
			
		successrefitem命令
			successrefitem <n>;
			
			n		数値
			
			精錬成功エフェクトを表示します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		failedrefitem命令
			failedrefitem <n>;
			
			n		数値
			
			精錬失敗エフェクトを表示します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		setfalcon命令
			setfalcon;
			
			鷹を付けます。
			
		setriding命令
			setriding;
			
			ペコペコに乗ります。
			
		monster命令
			monster <gatname>,<x>,<y>,<mobname>,<mobid>,<num>[,<event>];
			
			gatname,mobname	文字列
			x,y,mobid,num	数値
			event		文字列、省略可
			
			<gatname>の座標<x>,<y>に<mobname>を持つ<mobid>に指定されたIDを持つモンスターを<num>体出現させます。
			<gatname>がthisの場合スクリプトを実行したプレイヤーがいるMAP、
			<x><y>が-1の場合、スクリプトを実行したプレイヤーの座標、
			<mobname>が--en--の場合英語名、--ja--の場合日本語名、<mobid>が-1の場合ランダム。
			そのモンスターを倒したとき<event>を開始します。
			
		announce命令
			announce <string>,<flag>;
			
			string		文字列
			flag		数値
			
			<string>をGMアナウンスで表示します。
			<flag>は以下に示す通りです。
			エリアフラグ
			0x00 すべてのMAPに送信
			0x01 同じMAP
			0x02 画面内
			0x03 自分のみ
			0x04 同じMAP鯖
			色フラグ
			0x00 黄色
			0x10 青色
			特殊フラグ
			0x00 特に無し
			0x08 イベント用
			
			エリアフラグと色フラグと特殊フラグの合計を指定してください。
			
		killmonster命令
			killmonster <gatname>[,<event>];
			
			gatname		文字列
			event		文字列、省略可
			
			<gatname>に存在するモンスターをすべて殺します。
			<event>によって呼び出されたモンスターのみ殺すことも可能です。<event>をAllにするとそのマップにある一時的に召喚されたモンスターを全て殺します。

		killmonsterall命令
			killmonsterall <gatname>
			
			gatname		文字列
			
			<gatname>に存在するモンスターをすべて殺します。killmonsterとは違ってそのマップに始めから配置されていたモンスターまで全て殺すことができます。

			
		addtimer命令
			addtimer <ms>,<event>;
			
			ms		数値
			event		文字列
			
			現在のプレイヤーに、<ms>ミリ秒経過した後<event>を開始するタイマーを作成します。
			このタイマーによって実行されるイベントは、このプレイヤーの情報にアクセスできます。
			プレイヤーがログアウトするとタイマーは無効になるため注意してください。
			アリーナマップなどで使用する場合はこれではなくNPCタイマーを使用してください。
			
		deltimer命令
			deltimer <event>;
			
			event		文字列
			
			現在のプレイヤーの<event>を開始するタイマーを消去します。
			
		addtimercount命令
			addtimercount <event>,<ms>;
			
			event		文字列
			ms		数値
			
			現在のプレイヤーの<event>を開始するタイマーの開始までの時間を<ms>ミリ秒追加します。
		
		initnpctimer命令
			initnpctimer [<name>];
			
			<name>で指定されたNPCが持つNPCタイマーの値を0にし、カウントを開始します。
			nameを省略すると、命令を実行したNPCが対象になります。
			
			このNPCタイマーはミリ秒単位でOnTimerXXXXというラベルイベントを実行します。
			<例> OnTimer1000: <= 1秒後, OnTimer30000: <= 30秒後

		stopnpctimer命令
			stopnpctimer [<name>];
			
			<name>で指定されたNPCが持つNPCタイマーのカウントを停止します。
			nameを省略すると、命令を実行したNPCが対象になります。
		
		startnpctimer命令
			stopnpctimer [<name>];
			
			<name>で指定されたNPCが持つNPCタイマーのカウントを再開します。
			nameを省略すると、命令を実行したNPCが対象になります。
			こちらはinitnpctimerと違い、カウントを0にリセットしません。
			stopnpctimerとセットで使用します。
		
		setnpctimer命令
			setnpctimer <tick>[,<name>]
			
			<name>で指定されたNPCが持つNPCタイマーのカウントを変更します。
			nameを省略すると、命令を実行したNPCが対象になります。
			getnpctimerを利用すれば、カウントを増減できます。
		
		disablenpc命令
			disablenpc <npcname>;
			
			npcname		文字列
			
			<npcname>を無効にします。
			
		enablenpc命令
			enablenpc <npcname>;
			
			npcname		文字列
			
			<npcname>を有効にします。
		
		mapannounce命令
			mapannounce <gatname>,<string>,<flag>;
			
			gatname,string	文字列
			flag		数値
			
			<gatname>全体に<string>をGMアナウンスで表示します。
			flag:0,黄色文字、16,青文字
			
		areaannounce命令
			areannounce <gatname>,<x0>,<y0>,<x1>,<y1>,<string>,<flag>;
			
			gatname,string		文字列
			x0,y0,x1,y1,flag	数値
			
			<gatname>の<x0>,<y0>から<x1>,<y1>の範囲内に対し<string>をGMアナウンスで表示します。
			flag:0,黄色文字、16,青文字
			
		areawarp命令
			areawarp <gatname>,<x0>,<y0>,<x1>,<y1>,<gatname2>,<x>,<y>;
			
			gatname,gatname2	文字列
			x0,y0,x1,y1,x,y		数値
			
			<gatname>の<x0>,<y0>から<x1>,<y1>の範囲内にいるPCを<gatname2>の座標<x>,<y>に移動させます。
			
		areamonster命令
			areamonster <gatname>,<x0>,<y0>,<x1>,<y1>,<mobname>,<mobid>,<num>[,<event>];
			
			gatname,mobname		文字列
			x0,y0,x1,y1,mobid,num	数値
			event			文字列、省略可
			
			<gatname>の<x0>,<y0>から<x1>,<y1>の範囲内に<mobname>を持つ<mobid>に指定されたIDを持つモンスターを<num>体出現させます。
			<gatname>がthisの場合スクリプト実行MAP、<x><y>が-1の場合ランダム座標、
			<mobname>が--en--の場合英語名、--ja--の場合日本語名、<mobid>が-1の場合ランダム。
			そのモンスターを倒したとき<event>を開始します。
			
		percentheal命令
			percentheal <hp>,<sp>;
			
			hp,sp		数値
			
			HPとSPを<hp>%、<sp>%分回復します。
			
		resetstatus命令
			resetstatus;
			
			ステータスポイントをリセットします。
			
		resetskill命令
			resetskill;
			
			スキルポイントをリセットします。
		
		statusup命令
			statusup <st>;
			
			st	数値
			
			<st>で指定された基本ステータス値を、ステータスポイントを消費して1上げる。
			<st>は bStr, bVit, bInt, bAgi, bDex, bLuk で指定する。
		
		statusup2命令
			statusup2 <st>,<n>;
			
			st,n	数値
			
			<st>で指定された基本ステータス値を、ステータスポイントを消費せずに<n>上げる。
			<st>は bStr, bVit, bInt, bAgi, bDex, bLuk で指定する。
		
		skill命令
			skill <skillid>,<skilllv>,<flag>;
			
			skillid,skilllv,flag	数値
			
			<skillid>に指定されたIDを持つLV<skilllv>スキルを習得します。
			flag:0,恒久的なスキル取得(スキルツリーにない物は無効)、1,一時的(範囲は不明)な取得、
			<skilllv>を0にするとこでそのスキルを忘れさせることも可能です。
			
		waitingroom命令
			waitingroom <title>,<limit>[,<event>[,<trigger>]];
			
			title		文字列
			limit		数値
			event		文字列、省略可
			trigger		数値、省略可
			
			<title>をタイトルとしてチャットルームを表示させます。
			<trigger>を満たしたとき、<event>を動作させることが可能です。
			<trigger>を省略すると<limit>の数値が使用されます。
		
		delwaitingroom命令
			delewaitingroom [<name>]
			
			name	文字列、省略可
			
			指定したNPCのチャットルームを閉じます。
			<name>を省略すると、命令を実行したNPCが対象になります。
		
		disablewaitingroomevent命令
			disablewaitingroomevent [<name>]
			
			name	文字列、省略可
			
			<name>で指定したNPCのチャットルームのイベントを無効にします。
			<name>を省略すると、命令を実行したNPCが対象になります。
		
		enablewaitingroomevent命令
			enablewaitingroomevent [<name>]
			
			name	文字列、省略可
			
			<name>で指定したNPCのチャットルームのイベントを有効にします。
			<name>を省略すると、命令を実行したNPCが対象になります。
			また、既にイベントが起こる人数に達している場合、
			即座にイベントを実行します。
			
		warpwaitingnpc命令
			warpwaitingnpc <gatname>,<x>,<y>[,<num>];
			
			gatname		文字列
			x,y,num		数値
			
			命令を実行したNPCのチャットルームに入っているPCのうち、
			<num>で指定した人数を、<gatname>の座標<x>,<y>に移動させます。
			<num>を省略すると waitingroomの<trigger>で指定した人数を使用します。

			ワープさせた人数を $@warpwaitingpcnum に、ワープさせた人のアカウントIDを
			配列 $@warpwaitingpc にセットします(先頭から人数分)。
			
			
		emotion命令
			emotion <n>;
			
			n		数値
			
			<n>エモーションを出します。
			
		setmapflag命令
			setmapflag <gatname>,<flag>;
			
			gatname		文字列
			flag		数値
			
			<gatname>のmapflagを追加します。
			<flag>はdb/const.txtを参照してください。
			
		removemapflag命令
			removemapflag <gatname>,<flag>;
			
			gatname		文字列
			flag		数値
			
			<gatname>のmapflagを消去します。
			<flag>はdb/const.txtを参照してください。
			
		pvpon命令
			pvpon <gatname>;
			
			gatname		文字列
			
			<gatname>をPVP可能MAPにします。
			
		pvpoff命令
			pvpoff <gatname>;
			
			gatname		文字列
			
			<gatname>をPVP不可MAPにします。
			
		gvgon命令
			gvgon <gatname>;
			
			gatname		文字列
			
			<gatname>をシーズモードにします。
			
		gvgoff命令
			gvgoff <gatname>;
			
			gatname		文字列
			
			<gatname>を非シーズモードにします。
			
		setmapflagnosave命令
			setmapflagnosave <gatname>,<savegatname>,<x>,<y>;
			
			gatname,nosavegat	文字列
			x,y			数値
			
			<gatname>のmapflagにnosave、引数として<savegatname>,<x>,<y>を設定します。
		
		detachrid命令
			detachrid;
			
			NPCにアタッチされているIDをクリアします。
			以後、キャラクター情報を必要とする命令が実行できなくなります。
		
		doevent命令
			doevent <name>;
			
			name	文字列
			
			プレイヤー主体のイベントを起こします。<name>にはイベント名を指定します。
			プレイヤーが他のNPCと会話中などで実行できない場合、キューに入り、実行可能になるまで待って実行されます。
			キューのサイズはとても小さいので、連続で起こるとイベントが無視されるかもしれません。
			ラベル付きイベントも指定できますが、NPC名を省略できないので注意してください。
		
		donpcevent命令
			donpcevent <name>;
			
			name	文字列
			
			プレイヤーがアタッチされていない(NPC主体の)イベントを起こします。
			<name>にはイベント名を指定します。イベントは即座に実行されます。
			ラベル付きイベントも指定でき、NPC名を省略することで、イベントをブロードキャストできます。
			(複数のNPCの同じ名前のラベルを実行できる。 例>"::OnEvent")
	
		callsub命令
			callsub <label>
		
			label		ラベル
		
			同一スクリプト内のラベル<label>をサブルーティンとして実行します。
			サブルーティンから復帰するときはreturn命令を使用してください。
			この命令はreturn命令の実行状況によっては関数として使用することも出来ます。

		callfunc命令
			callfunc <func>
		
			func		文字列
		
			<func>で定義されたユーザー定義関数を実行します。
			ユーザー定義関数から復帰するときはreturn命令を使用してください。
			この命令はreturn命令の実行状況によっては関数として使用することも出来ます。
			
		return命令
			return <retval>
			
			retval	数値または文字列、省略可
		
			直ちにサブルーティンもしくはユーザー定義関数を抜け、呼び出し元に戻ります。
			<retval>は戻り値で、callsubまたはcallfuncが関数として呼び出されているとき、この戻り値が使用されます。
			callsubまたはfuncが命令として呼ばれているときは、<retval>は省略してください。

	*関数
		rand関数
			rand(<n1>[,<n2>])
			
			n1		数値
			n2		数値、省略可
			
			<n1>のみ指定されていた場合、0から<n1>-1までの数値をランダムに選んで返します。
			<n2>を指定した場合、<n1>から<n2>までの数チをランダムに選んで返します。
			
		getitemname関数
			getitemname(<itemid>)

			itemid		数値

			<itemid>に指定されたIDを持つアイテムのjnameを文字列で返します。
			なお、アイテム名はitem_db.txtを参照します

		countitem関数
			countitem(<itemid>)
			
			itemid		数値または文字列
			
			<itemid>に指定されたIDを持つアイテムの所持数を返します。
			<itemid>が文字列の場合、その名前(name,jname)を持つアイテムのIDを使用します。
			ただし、アイテム名はitem_db.txtなどに依存するため、テスト目的以外では使用すべきではありません。
			
		checkweight関数
			checkweight(<itemid>,<num>)
			
			itemid		数値または文字列
			num		数値
			
			<itemid>に指定されたIDを持つアイテムを<num>個持つことができるのならば1を、
			できなければ0を返します。
			<itemid>が文字列の場合、その名前(name,jname)を持つアイテムのIDを使用します。
			ただし、アイテム名はitem_db.txtなどに依存するため、テスト目的以外では使用すべきではありません。
			
		strcharinfo関数
			strcharinfo(<n>)
			
			n		数値
			
			キャラ情報を返します。
			n:0,キャラ名、1,パーティー名、2,ギルド名
			
		getequipname関数
			strcharinfo(<n>)
			
			n		数値
			
			装備品名を返します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getequipisequiped関数
			getequipisequiped(<n>)
			
			n		数値
			
			装備していたら1、していなかったら0を返します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getequipisenableref関数
			getequipisenableref(<n>)
			
			n		数値
			
			精錬できる場合は1、できない場合は0を返します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getequipisidentify関数
			getequipisidentify(<n>)
			
			n		数値
			
			鑑定済みの場合1、未鑑定の場合0を返します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getequiprefinerycnt関数
			getequiprefinerycnt(<n>)
			
			n		数値
			
			精錬の度合いを返します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getequipweaponlv関数
			getequipweaponlv(<n>)
			
			n		数値
			
			武器LVを返します。防具の場合には0、あとは武器LVに対応します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getequippercentrefinery関数
			getequippercentrefinery(<n>)
			
			n		数値
			
			精錬成功率を返します。
			n:1,頭装備、2,鎧、3,左手、4,右手、5,かけるもの、6,靴、7,アクセ1、8,アクセ2、9,頭中段、10,頭下段
			
		getusers関数
			getusers(<n>)
			
			n		数値
			
			人数を返します。
			n:0,PCのいるMAPの総人数、1,全MAPの総人数(即ちログイン人数)、8,NPCの存在するMAPの総人数
			
		getmapusers関数
			getmapusers(<gatname>)
			
			gatname		文字列
			
			<gatname>に存在する総人数を返します。
			
		getareausers関数
			getareausers(<gatname>,<x0>,<y0>,<x1>,<y1>)
			
			gatname		文字列
			x0,y0,x1,y1	数値
			
			<gatname>の<x0>,<y0>から<x1>,<y1>の範囲内にいる人数を返します。
			
		getskilllv関数
			getskilllv(<skillid>)
			
			skillid		数値
			
			<skillid>で指定したIDを持つスキルのLVを返します。習得していない場合は0を返します。
			
		getcharid関数
			getcharid(<n>)
			
			n		数値
			
			キャラ情報をIDで返します。
			n=0	キャラID
			n=1	パーティー
			n=2	ギルド
			n=3	アカウントID
			
		getpartyname関数
			getpartyname(<n>)
			
			n		数値
			
			<n>で指定したIDを持つパーティー名を返します。
			
		getguildname関数
			getguildname(<n>)
			
			n		数値
			
			<n>で指定したIDを持つギルド名を返します。
		
		getguildmaster関数
			getguildname(<n>)
			
			n		数値
			
			<n>で指定したIDを持つギルドのマスターの名前を返します。
		
		getguildmasterid関数
			getguildmasterid(<n>)
			
			n		数値
			
			<n>で指定したIDを持つギルドのマスターのキャラクターIDを返します。
		
		basicskillcheck関数
			basicskillcheck(0);
			
			battle_athena.confのbasic_skill_checkの設定値を返します。0は意味はありませんが何も入れなかった場合エラーになります。
			basic_skill_checkとカプラの倉庫利用を合わせる為に作った物でそれ以外の機能はありません。戻った数値が0ならbasic_skill_checkがno、1ならyesです。

		getgmlevel関数
			getgmlevel(0);
			
			プレイヤーのGMレベルを返します。

		guildopenstorage関数
			guildopenstorage(0);

			ギルド倉庫を開きます。
			返た数値が2ならギルドに所属してないキャラと言う意味で
			1なら他のギルドメンバーが倉庫を使用中の意味です。
			0なら成功的にギルド倉庫が開いたとのことです。

		getwaitingroomstate関数
			getwaitingroomstate(<num>,[<name>])
			
			num	数値
			name	文字列、省略可
			
			<name>で指定したNPCのチャットルームの状態を返します。
			<name>を省略すると、命令を実行したNPCが対象になります。
			<num>で得たい情報を指定します。
			
			num=0	現在チャットルームに入っている人数(数値)
			num=1	チャットルームの限界人数(数値)
			num=2	チャットルームのイベントを起こす人数(数値)
			num=3	チャットルームのイベントが有効かどうか(数値)
			num=4	チャットルームのタイトル(文字列)
			num=5	チャットルームのパスワード(文字列)
			num=16	チャットルームのイベント名(文字列)
			num=32	チャットルームが満員かどうか(数値)
			num=33	チャットルームでイベントが起こる人数かどうか(数値)

		getnpctimer関数
			getnpctimer(<num>[,<name>])
			
			num	数値

			<name>で指定されたNPCが持つNPCタイマーの情報を得ます。
			nameを省略すると、命令を実行したNPCが対象になります。
			<num>で得たい情報を指定します。
		
			num=0	現在のNPCタイマーのカウント値
			num=1	現在NPCタイマーが動作しているかどうか
			num=2	指定NPCのタイマーイベントラベルの総数
		
		attachrid関数
			attachrid(<num>)
			
			num	数値

			<num>で指定されたIDのキャラクターを実行したスクリプトにアタッチします。
			以後、キャラクターに関する命令や関数/変数などは全て新しいキャラクターが対象になります。
			これはスクリプトが終了/中断する(close,end,menu,next,inputなどの実行)まで有効です。
			主にイベントで起動されたスクリプト内でマップ変数を使って別キャラクターを
			アタッチするのに使用します。getcharid(3)で所得したアカウントIDを使ってください。
			なお、デタッチにはdetachrid命令を使います。

			注意すべき点としては、この命令でPCをアタッチした場合、mes,menu,nextなどの
			ウィンドウ(やボタン)が出る命令を実行してはいけません。
			相手が他のNPCと会話中の場合、これらの命令は正しく動作しません。
			情報所得命令などだけで済ませるべきです。

			この関数はアタッチに成功したかどうかを返します。
			偽(0)が返って来た場合は、該当キャラクターが存在していません。
		
		isloggedin関数
			isloggedin(<num>)
			
			num	数値

			<num>で指定されたIDのキャラクターがこのマップサーバーに
			ログインしているかどうか調べます。
		
		getarraysize関数
			getarraysize(<variable>)
			
			variable	変数
			
			配列<variable>の有効なサイズを調べます。
			ここでのサイズは要素が0(文字列変数では"")でない、
			最大の要素番号+1 になります。
			配列名ではなく要素番号付きで指定すると、
			少なくともその要素までは全て有効であると仮定します。
			<例> 配列@hogeが 1,2,3,4,5 だとすると、
			     getarraysize(@hoge)=5, getarraysize(@hoge[10])=10;
		
		callsub関数
			callsub <label>
			
			callsub命令を関数として実行します。詳しくはcallsub命令を見てください。

		callfunc関数
			callfunc <func>
			
			callfunc命令を関数として実行します。詳しくはcallfunc命令を見てください。

		sc_check関数
			sc_check <status-change>

			Detects whether a given status change is active.
                        * ステタスけすもに探し当てます。

		getspellinvocation関数
			getspellinvocation <spellname>

			Retrieves a spell's invocation string.
			* スペルの呪文(援用)に見付けます。

		getanchorinvocation関数
			getanchorinvocation <anchor-label>

			Retrieves the invocation for a teleport anchor
			* (fixme)

		getpartnerid関数
			Retrieves the RID of the player's partner, or 0 if not married.

			* (fixme)

		misceffect <id> <name>
			Shows the effect with id on name. if name is omitted show on NPC.

                getskilllist
                	Computes the set of all skills that the player has access to.
                        Results are written into @skilllist_id[], @skilllist_lv[], @skilllist_flag[],
                        which have a total of @skilllist_count entries.

                getpoolskilllist
                	Same as getskilllist, but only list pool skills, and also set set
                        @skilllist_name$[] to the skills' names.
                        Note that flag & 1 here indicates that the spell is activated.

                getactivatedpoolskilllist
			Same as getpoolskilllist, but only list activated pool skills.

		poolskill (skill_nr)
			Moves the specified skill into the skill pool, if possible

		unpoolskill (skill_nr)
			Moves the specified skill out of the skill pool, if possible

		checkpoolskill (skill_nr)
			Checks whether the specified skill is in the skill pool (returns nonzero if so)
		
	*定数ラベル
		-ラベル
			if文やmenu文で使用します。次の行からスクリプトを開始します。
			
		OnInitラベル
			MAPがロードされたときスクリプトを開始します。
		
		OnInterIfInitラベル
			MAPサーバーがInterサーバーに接続したときに実行します。
		
		OnCharIfInitラベル
			MAPサーバーがCharサーバーに接続したときに実行します。
		
		OnMinuteXXラベル
			毎時XX分に実行します。数値は十進数2桁です。

		OnClockXXXXラベル
			毎日XX時XX分に実行します。数値は十進数4桁です。
		
		OnHourXXラベル
			毎日XX時00分に実行します。数値は十進数2桁です。
			
		OnDayXXラベル
			毎月XX日00時00分に実行します。数値は十進数2桁です。
		
		OnTimerXラベル
			NPCタイマーのカウントがXになったときに実行されます。
			このXはミリ秒単位です。桁数は関係ありません。
		
		OnAgitInitラベル
			ギルド城データと占拠ギルド情報がマップサーバー内に
			所得されたときに実行されます。
			ギルド城関係のNPCの初期化に使用します。
		
		OnAgitStartラベル
			ギルド攻城戦が始まったときに実行されます。
		
		OnAgitEndラベル
			ギルド攻城戦が終わったときに実行されます。
		
		OnAgitBreakラベル
			エンペリウムを破壊したときに実行されます。
			このラベルは破壊したプレイヤーを主体にして実行されます。
		
		OnAgitEliminateラベル
			エンペリウム破壊後、ギルドの所有者が書き換わるときに
			呼ばれます。

		OnPCKilledEventラベル
                        Invoked when a PC is killed in PVP.
			Set @killerrid to the RID of the killer, @victimrid to the RID of the
                        victim, and @victimlvl to the experience level of the victim.  This
                        is called in the RID context of the victim.
			* PVP人殺しの時に呼出す。 @killerridはキラーのRIDに代入されます、
                        @victimridは虜のRID、@victimlvlは虜のレベル。虜のRID属性に呼出す。
		
		OnPCKillEventラベル
			Same as the OnPCKilledEvent, except that it is invoked in the RID
                        context of the killer.
                        *OnPCKilledEventの同じですけど、RID属性はキラーのです。
		
	*注意事項
		文字列と説明されている引数は""で囲ってください。

4. Error Message

	* Make an error at the time of compile (it is a thing at the time of map server starting).
		A place is displayed for the line number of an error.

		unexpected expr end
			It is the end of an unexpected formula.
			', ', and';' are in the beginning of a formula.
		
		unmatch ')'
			')' does not match.
			Correspondence of parenthesis'('')' is amusing.
		
		unexpected newline @ string
			It is the new-line which is not expected in a character sequence.
			There is a new-line in the middle of a character sequence (surrounded by '"').
			Probably it is a failure of '"' to close.
		
		unexpected eof @ string
			It is the file terminus which is not expected in a character sequence.
			The file finished in the middle of the character sequence.
			Probably it is a failure of '"' to close.
		
		unexpected character
		unexpected char
			It is an unexpected character.
			It is thought that the variable etc. is not following a naming rule.
		
		l14 and l15 is DEPRECATED. use @menu instead of l15.
			l14 and l15 are not recommended. Please use @menu instead of l15.
			
		prefix 'l' is DEPRECATED. use prefix '@' instead.
			Prefix'l' is not recommended. Please use '@' instead.

		unmatch ']'
			']' does not carry out an interval.
			Correspondence of parenthesis']' is missing.
		
		expect function
			関数を期待していました
			関数呼び出し演算子'('の前に関数以外のシンボルがあります。
			おそらく関数名を間違えています。
		
		expect ',' or ')' at func params
			関数の引数において','か')'を期待していました
			おそらく引数区切りの','か')'を忘れています。
		
		func request '(' ')'
			関数呼び出しの括弧対応問題
			おそらく引数の数が128を超えました。
		
		illeagal number of parameters
			パラメータの数が不正です
			関数/命令パラメータの個数が異なります。
			引数の個数を確認してください。
			エラー位置は全ての引数の後になります。
		
		expect command
			命令を期待していました
			命令以外のシンボルが突然出現しています。
			おそらく命令名を間違えています。
		
		expect ',' or ';' at cmd params
			命令の引数において','か';'を期待していました
			おそらく引数区切りの','か';'を忘れています。
		
		need ';'
			';'が必要です
			おそらく引数の数が128を超えました。

	実行時のエラー
		fatal error ! player not attached!
			致命的エラー!プレイヤーがアタッチされていません!
			
			キャラクターを特定できないイベントで実行されている
			スクリプトの中でキャラクター情報が必要な命令や関数、
			変数へアクセスしました。attachrid関数を使うか、
			キャラクター情報が不要な命令を使用してください。
			もしくは、attachrid関数で設定された情報が不正です。
			なお、このエラーが起こると直後にコアを吐くと思われます。
			
			NPC主体イベントでannounceしたときにフラグ0x08を指定していない
			場合もこのエラーがでます。
			
		
		illeagal scope string variable.
			文字列変数のスコープが不正です。
			未対応のプレフィックスで文字列変数が使用されました。
			プレフィックスを確認してください。
		
		illeagal scope
			スコープが不正です。配列変数未対応のプレフィックスを
			持つ変数に配列変数系の命令を実行した場合など。
		
		not label !
			goto/menu命令でラベルが指定されるべきところに
			ラベル以外のシンボルが指定されています。
			もしくは、ラベル名と変数名がバッティングしています。
	
		buildin_set: not name
			set命令で第一引数が変数名ではありません。
		
		getelementofarray (operator[]): param2 illeagal number
			配列変数で[]内の値が不正です
			[]内の値が0未満か128以上になりました

		getelementofarray (operator[]): param1 not name
			配列変数で[]の前のシンボルが変数名ではありません。
		
		op_2: int&str, str&int not allow.
			関係演算子(比較演算子)で、数値と文字列、もしくは
			文字列と数値が指定されました。
		
		infinity loop !
			スクリプトの実行命令数か、goto/menu命令実行回数が
			多すぎるので、無限ループと判断しました。
			スクリプトの実行は強制的に中断されました。
		
		not function and command !
			関数実行/命令実行部分で、関数でも命令でもない
			シンボルがありました。
			if文のなかである可能性が高いです。

		return without callfunc or callsub !
			callfuncやcallsubされていないのにreturn命令を実行しました。
			
		stack.sp(?) != default(?)
			スタックポインタが基準スタックポインタと異なっています。
			命令を実行した結果、スタックポインタが狂いました。
			関数を命令として実行した可能性があります。
		

5. Postscript
	NPC contained in snapshot was made reference in creating this text.
	I appreciate people which created NPC.
	
It corrects based on text by asong (2004/3/1).