AurigaNPCScript ・目次 0.はじめに 1.NPCの定義 2.スクリプトの説明と基本的な規則 3.命令文及び関数及び定数ラベル 4.エラーメッセージ 5.あとがき 0.はじめに この文章に含まれる関数や書式は最新のsnapshotに含まれるnpc_sample.txtを参考にし、記述されています。 この文章を表示しているエディターの都合を考え、タブ文字は、任意の値は等と表記します。 座標系ですが下の図を参考にしてください。 ↑Yの増加 ( 0,200)--(200,200) | | | | | | | | | | ( 0, 0)--(200, 0)→Xの増加 1.NPCの定義 Aurigaディレクトリ以下ならどこでもよい(できればAuriga/script以下)ので、とりあえずtxtを作成してください。 まずそのNPCが何を示すのか記述します(場合によってはNPCという言い方は不適切)。 *ワープポイント:MAP間の移動を行います。 ,,[,]warp,,,, gatname ワープポイントの置かれるMAPファイル名を指定します。.gatは忘れないでください。 x ワープポイントの置かれる横座標を指定します。 y ワープポイントの置かれる縦座標を指定します。 displayname ワープポイント識別子です。重複しても構いません。デバッグで使います。 dx ワープポイントの横効果範囲です。 dy ワープポイントの縦効果範囲です。たぶん円を書かずリージョンになっていると思います。 direction 向きを指定します。省略可。 dx,dyの例(●がx,y): 0,0 1,0 2,2  * ***** ******* *●* **●** *******  * ***** *******   ***●***   *******   *******   ******* *及び●のセルを踏めば、ワープするということです。 destination_gatname ワープ先です。.gatはあってもなくても構いません。 destination_x ワープ先横座標です。 destination_y ワープ先縦座標です。 注意事項: ワープポイントが同位置に複数配置されている場合、最後に記述されているもののみ表示します。 ワープ先の座標が移動禁止セルだった場合、そのMAPのどこかにワープします。 *モンスター:モンスターの出現を管理します。 ,,,,monster,,,[,[,]] gatname 出現するMAPファイル名を指定します。 x 出現する横座標を指定します。0でランダム。 y 出現する縦座標を指定します。0でランダム。 xs 出現する横範囲を指定します。 ys 出現する縦範囲を指定します。 xs,ysの例(●がx,y): 0,0 2,1  ● *****   **●**   ***** *及び●のセルからモンスターが出現します。 displayname 出現するモンスターの表示名です。 npcid mob_db.txtを参照してください。出現させるモンスターのidを指定します。 number そのMAP及び出現範囲での最大出現数です。 spawn_delay1 死亡してから指定されたミリ秒待って再出現します。 spawn_delay2 spawn_delay1に加えて指定されたミリ秒までのランダム時間待って再出現します。 event 指定したイベントを発生させます。省略可。 数字1文字だけの場合は指定無しと同じ扱いになります。 guild_id 指定したギルドのエンブレムを表示します。省略可。 注意事項1: イベント不要でギルドIDだけが必要な場合はイベント指定無しにしてください。 以下の例ではギルドIDが10001として設定されます。 prontera.gat,0,0,0,0 monster --ja-- 1002,1,0,0,,10001 *店:アイテムの販売を行います。 ,,,shop,[:] gatname 配置するMAPファイル名を指定します。 x 配置する横座標を指定します。 y 配置する縦座標を指定します。 direction 向きを指定します。 directionの詳細: 107 2 6 345 displayname 配置する店の表示名を指定します。 npcid 配置する店の表示スプライトIDを指定します。 item_id 配置する店に置くアイテムIDを指定します。item_dbを参照してください。 price item_idで指定したアイテムの値段を設定します。(省略可) 負数を指定、または省略するとitem_db.txtで設定された値段になります。 :は,(カンマ)区切りで複数指定できます。 「,,,」の部分を、「-」とすることで、 マップサーバー内には存在していても、実際のマップには配置されないNPCを作成できます。 これは後述のコピー店でコピー元として使用します。 *ポイント店:ポイントによるアイテムの販売を行います。 ,,,pointshop,: gatname 配置するMAPファイル名を指定します。 x 配置する横座標を指定します。 y 配置する縦座標を指定します。 direction 向きを指定します。 directionの詳細: 107 2 6 345 displayname 配置する店の表示名を指定します。 npcid 配置する店の表示スプライトIDを指定します。 item_id 配置する店に置くアイテムIDを指定します。item_dbを参照してください。 point アイテムを購入するのに必要なポイントを設定します。 :は,(カンマ)区切りで複数指定できます。 「,,,」の部分を、「-」とすることで、 マップサーバー内には存在していても、実際のマップには配置されないNPCを作成できます。 これは後述のコピー店でコピー元として使用します。 *マーケット:アイテムの販売を行います。 ,,,market,::[,::] gatname 配置するMAPファイル名を指定します。 x 配置する横座標を指定します。 y 配置する縦座標を指定します。 direction 向きを指定します。 directionの詳細: 107 2 6 345 displayname 配置する店の表示名を指定します。 npcid 配置する店の表示スプライトIDを指定します。 item_id 配置する店に置くアイテムIDを指定します。item_dbを参照してください。 price item_idで指定したアイテムの値段を設定します。 負数を指定するとitem_db.txtで設定された値段になります。 num item_idが購入できる最大数を設定します。 設定数が販売されたアイテムはそれ以上購入することはできません。 ::は,(カンマ)区切りで複数指定できます。 「,,,」の部分を、「-」とすることで、 マップサーバー内には存在していても、実際のマップには配置されないNPCを作成できます。 これは後述のコピー店でコピー元として使用します。 *コピー店:既存のNPC(の店)をコピーします。 ,,,substore() source以外のパラメータは通常の店と同じです。 sourceにはコピー元となるNPCの識別名を入力します。 コピー元のNPCがマップ上に配置されないタイプの場合、どのマップへもコピー可能です。 マップ上に配置されるタイプの場合、そのNPCが正常に配置されている必要があります。 必ずしも同じマップである必要がありませんが、コピー元のNPCの居るマップが読み込み対象外のときも有り得るので 同一マップでない場合はマップ非配置のNPCをコピー元として利用することを推奨します。 *スクリプト:NPCを作成します。 ,,,script,,,{