
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14277 54d463be-8e91-2dee-dedb-b68131a5f0ec
146 lines
4.8 KiB
Plaintext
146 lines
4.8 KiB
Plaintext
// イベントのテストと解説
|
||
//
|
||
|
||
|
||
// * NPCの表示クラスを-1にするとイベントになり、実行可能になります。
|
||
// * 通常のNPCでも以下のラベル付きイベントを使うことでイベントになれます。
|
||
// * NPCスクリプトでOn~で始まるラベルを定義すると、
|
||
// ラベル付きのイベントとしてエクスポートし、実行可能になります。
|
||
// * NPCイベントで"NPC名(orイベント名)::ラベル名"とすると、
|
||
// 指定したラベルから実行できます。
|
||
// * ラベル名は24バイト以内にして下さい。
|
||
|
||
|
||
// ------------------------------------------------------------------
|
||
// イベントの起こし方/起こり方
|
||
// ------------------------------------------------------------------
|
||
|
||
// 1.doeventコマンドで起こす
|
||
// 2.MOBを倒したときに起こす
|
||
// a. スクリプトmonsterコマンドの第7引数でイベント名を設定
|
||
// 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
|
||
|
||
// ----------タイマによるイベント駆動のサンプル -------------
|
||
// クリックすると5秒後にラベル「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 |