rathena/doc/sample/npc_test_ev.txt
2010-03-31 18:57:22 +00:00

146 lines
4.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// イベントのテストと解説
//
// * NPCの表示クラスを-1にするとイベントになり、実行可能になります。
// * 通常のNPCでも以下のラベル付きイベントを使うことでイベントになれます。
// * NPCスクリプトでOnで始まるラベルを定義すると、
// ラベル付きのイベントとしてエクスポートし、実行可能になります。
// * NPCイベントで"NPC名(orイベント名)::ラベル名"とすると、
// 指定したラベルから実行できます。
// * ラベル名は24バイト以内にして下さい。
// ------------------------------------------------------------------
// イベントの起こし方/起こり方
// ------------------------------------------------------------------
// 1.doeventコマンドで起こす
// 2.MOBを倒したときに起こす
//  a. スクリプトmonsterコマンドの第引数でイベント名を設定
// b. monsterの配置の最後の引数でイベント名を設定
// 3.マップ初期化時に起こるOnInit
// 4.NPCチャットルームが満員になったときに起こる
// 5.時計によって起こる
// (OnMinute??,OnHour??,OnClock????,OnDate????) : ?は数字
// 3,5の初期化イベント、時計イベントは、対象のPCを持たないイベントになります
// よってPCを対象とするスクリプトを使うことは出来ません。
// また、announceコマンドなどは0x08フラグを指定してNPC主体にする必要があります
// ----------イベント駆動のサンプル -------------
// クリックするとイベント「event_test2」を起こすNPC
prontera,155,180,0 script ev_doテスト 116,{
doevent "event_test2";
}
// ----------MOBによるイベント駆動のサンプル -------------
// 倒すとイベント「event_test」を起こすモンスターの[召喚]
prontera,150,185,0 script ev_mobテスト 116,{
monster "this",0,0,"Event_Mob2",1002,1,"event_test";
}
// ----------MOBによるイベント駆動のサンプル2-------------
// 倒すとイベント「event_test3」を起こすモンスターの[配置]
prontera,150,180,0 monster Event_Mob 1008,1,0,0,event_test3
// ----------タイマによるイベント駆動のサンプル -------------
// クリックすると秒後にラベル「OnTimer」を実行するNPC
// イベント名に「NPC名::Onで始まるラベル」を指定するとラベルを実行できる
prontera,155,185,0 script ev_timerテスト 116,{
addtimer 5000,"ev_timerテスト::OnTimer";
end;
OnTimer:
mes "5秒経ちました";
close;
}
// ----------OnInit/チャットルームによるイベント駆動のサンプル -------------
// マップサーバー起動時にラベル「OnInit」が実行され、チャットを作る
// また、waitingroomの第3引数にイベントを設定する
prontera,145,180,0 script ev_initテスト 116,{
end;
OnInit:
waitingroom "OnInitテスト",1,"ev_initテスト::OnMax";
end;
OnMax:
warpwaitingpc "prontera",155,190;
end;
}
// ----------時計によるイベント駆動のサンプル -------------
// 指定の時刻や日付でイベントを実行する
// announceに0x08フラグを指定しているところに注意してください。
prontera,145,185,0 script ev_clockテスト 116,{
end;
// 毎時5分
OnMinute05:
announce "毎時5分をお知らせします",8;
end;
// 毎日12時(24H)
OnHour12:
announce "正午のニュースです",8;
end;
// 23時59分
OnClock2359:
announce "あと1分で明日です",8;
end;
// 1月1日
OnDate0101:
announce "あけましておめでとうございます",8;
end;
}
// ------------------------------------------------------------------
// イベントスクリプトの作り方
// ------------------------------------------------------------------
// 表示クラスを-1にするとイベント扱いになり、名前がイベント名になる。
// エリアを指定しない場合、同じマップ内がイベントを起こす範囲になる。
// エリアを指定する場合、共に-1にすると同じマップ鯖ならマップが違っても
// 駆動する。エリアは半径である。なお、イベントの起こる位置というのは、
// 対象となるPCの座標である。たとえば、遠距離攻撃でMOBを倒したときに
// 起こるイベントはMOBの座標ではなく、PCの座標なので注意。
// ----------イベントで、エリアは指定していないサンプル------------
// 同じマップ内でイベント「event_test」が起こると実行される
prontera,150,185,0 script event_test -1,{
announce strcharinfo(0) + " が召喚MOBを倒しました",2;
close;
}
// ----------イベントで、エリアを指定したサンプル------------
// (155,185)から半径5セル以内でイベント「event_test2」が起こると実行される
prontera,155,180,0 script event_test2 -1,5,5 {
announce "5セル以内でクリックしましたね",19;
close;
}
// ----------イベントで、エリアを-1にしたサンプル------------
// 同じマップ鯖でイベント「event_test3」が起こると実行される
prontera,150,180,0 script event_test3 -1,-1,-1 {
mes "配置MOB倒しましたね";
close;
}
// ------------------------------------------------------------------
// イベントマップ用の設定
// ------------------------------------------------------------------
// (全てコメントアウトしてます)
// ----------セーブ禁止のサンプル---------
// このマップでログアウトすると、必ず プロンテラ の座標(156,190)に
// セーブされる
//prontera mapflag nosave prontera,156,190
// ----------メモ禁止のサンプル---------
// このマップではメモがとれない
//prontera mapflag nomemo dummy
// ----------テレポ禁止のサンプル---------
// このマップでは蝿、蝶、テレポ、ポタが使えない
// 注意スクリプトのwarpの"Random","SavePoint"が無効になります
//prontera mapflag noteleport dummy