====== スクリプト:ジグソーパズルGiver ====== イベントの開催期間内だけ、オブジェクトをタッチした人に、中身の1個のアイテムを渡すだけのスクリプトです。 integer gOpen = 1709391600; integer gClose = 1711954800; string gItemName = "Saitama Metro 3rd Jigsaw 23.G18"; integer PeriodCheck() { integer Period; integer Time = llGetUnixTime(); return (gClose0){ llSetText("イベントは終了しました。\n \nThis event period\nwas finished.",<1,1,1>,1); state ended; } else { llGiveInventory(Clctr,gItemName); } } } state ended { state_entry() { } } ===== 記述内容の解説 ===== ==== グローバル変数 ==== integer gOpen = 1709391600; integer gClose = 1711954800; string gItemName = "Saitama Metro 3rd Jigsaw 23.G18"; イベントの開始時間と終了時間のUNIX時間、渡すアイテム名です。 ==== ユーザ定義関数 ==== integer PeriodCheck() { integer Period; integer Time = llGetUnixTime(); return (gClose0){ llSetText("イベントは終了しました。\n \nThis event period\nwas finished.",<1,1,1>,1); state ended; } 変数Pが負の数でなく、正の数のとき、つまり終了後であれば、その旨をフローティングテキストとして表示し、スクリプトの処理はこのdefaultステートから、ユーザ定義のendedステートに遷移します。 else { llGiveInventory(Clctr,gItemName); } 変数Pが負の数でなく、正の数でないとき、つまり開催中であれば、タッチしたアバターにアイテムを渡します。アイテム名が間違っていた場合やなかった場合はエラーになります。 } touch_startイベント終わり。 } defaultステート終わり。 ==== endedステート ==== スクリプトの終了をさせるためにユーザ定義したステートです。 このステートに遷移すると何も動作をしなくなります。スクリプトを終了させるには、スクリプト自身を削除する方法もありますが、動作テストのたびに削除されるのも面倒なのでこの方法を取っています。 state ended { state_entry() { } } スクリプト終わり。