個人的に10日おきに通知がほしいことがあって、そういうのを作りました。
毎月10、20、30日にメッセージを送ります。
2月は30日がありませんが、代わりに3月1日に送ります。
仕組みは、タイムスタンプを調べて、日付の1の位の数が減ると通知します。
10日おきに「9」→「0」となって1の位の数が減ることを利用するのです。
default {
state_entry() {
llSetTimerEvent(TimeCycle);
// 一定時間ごとに
}
timer() {
integer date1 = (integer)llGetSubString(llGetTimestamp(),9,9);
// タイムスタンプから数字をとりだす;書式は"2014-04-30..."
if (date1 < Date1) llInstantMessage(llGetOwner(),Message);
// 前回より減ったらメッセージを送信
Date1 = date1; // 数字を記録
}
}
2月の終わりでは、2「8」(閏年は「9」)日から3月「1」日に変わるので、やはり1の位の数が減ります。他の月では、30日にメッセージを出したあと、月末3「0」または3「1」→翌月「1」となって、数字は減りません。
タイムスタンプは世界標準時間なので、日本時間やSL時間とは時差があります。
また、もし、2月でも月末までに通知が必要な場合などでは、別の条件を考えないといけません。
というわけで、このスクリプトは「だいたい10日おき」と条件がゆるいときにしか使えないかも(^^;;
