時報を鳴らすスクリプト

概要

時報を鳴らし、時刻(日本時間)を教えてくれるスクリプトです。土地に設置することも可能ですし、装着アイテム内に組み込んでもOKです。

  1. 00分、15分、30分、45分のそれぞれに、時報を「鳴らす / 鳴らさない」の設定が可能
  2. 00分、15分、30分、45分のそれぞれに、個別にサウンドを設定可能
  3. 00分、15分、30分、45分のそれぞれに、時刻を(チャットで)「教える / 教えない」の設定が可能

スクリプトコード

timesignal.lsl
// Sounds
list sounds_on = [
    TRUE,           // <<< Modify
    FALSE,          // <<< Modify
    FALSE,          // <<< Modify
    FALSE           // <<< Modify
];
 
list sounds_name = [
    "00.sound",     // <<< Modify
    "15.sound",     // <<< Modify
    "30.sound",     // <<< Modify
    "45.sound"      // <<< Modify
];
 
uuPlaySound(integer num){
    if (llList2Integer(sounds_on, num) == TRUE){
        llPlaySound(llList2String(sounds_name, num), 1.0);
    }
}
 
 
// Time Annoucement
list announcements_on = [
    TRUE,           // <<< Modify
    FALSE,          // <<< Modify
    TRUE,           // <<< Modify
    FALSE           // <<< Modify
];
 
uuTimeAnnouncement(integer num, integer h, integer m){
    if (llList2Integer(announcements_on, num) == TRUE){
        llSay(0, "ただいまの時刻は" + (string)h + "時" + (string)m + "分です。");
    }
}
 
 
// Others
integer t;
integer hours;
integer minutes;
integer seconds;
 
 
// Script
default{
    state_entry(){
        llSetTimerEvent(1.0);
    }
 
    timer(){
        t = (integer)llGetWallclock();
        hours = t / 3600 + 16;
        if (hours >= 24){
            hours -=24;
        }
        minutes = (t % 3600) / 60;
        seconds = t % 60;
 
        if (seconds == 0 && minutes == 0){
            uuPlaySound(0);
            uuTimeAnnouncement(0,hours, minutes);
        }else if (seconds == 0 && minutes == 15){
            uuPlaySound(1);
            uuTimeAnnouncement(1, hours, minutes);
        }else if (seconds == 0 && minutes == 30){
            uuPlaySound(2);
            uuTimeAnnouncement(2, hours, minutes);
        }else if (seconds == 0 && minutes == 45){
            uuPlaySound(3);
            uuTimeAnnouncement(3, hours, minutes);
        }
    }
}

スクリプトの解説と設定方法

Soundsの設定

音を鳴らすかどうか

list sounds_on = [
    TRUE,           // <<< Modify
    FALSE,          // <<< Modify
    FALSE,          // <<< Modify
    FALSE           // <<< Modify
];
  • TRUE……音を鳴らします
  • FALSE…..音を鳴らしません

上から順に「00分」「15分」「30分」「45分」に音を鳴らすかどうかを表しています。

サウンドファイル

list sounds_name = [
    "00.sound",     // <<< Modify
    "15.sound",     // <<< Modify
    "30.sound",     // <<< Modify
    "45.sound"      // <<< Modify
];

上から順に「00分」「15分」「30分」「45分」に鳴らすサウンド名を表しています。鳴らさない場合はそのままでも構いませんし、「”“」と空白に設定しても構いません。

サウンドを鳴らすユーザ関数

uuPlaySound(integer num){
    if (llList2Integer(sounds_on, num) == TRUE){
        llPlaySound(llList2String(sounds_name, num), 1.0);
    }
}

特に変更するところはありません。

時刻を知らせる機能の設定

時刻を知らせるかどうか

list announcements_on = [
    TRUE,           // <<< Modify
    FALSE,          // <<< Modify
    TRUE,           // <<< Modify
    FALSE           // <<< Modify
];
  • TRUE……時刻を知らせる
  • FALSE…..時刻を知らせない

上から順に「00分」「15分」「30分」「45分」に時刻を知らせるかどうかを表しています。

時刻を知らせるユーザ関数

uuTimeAnnouncement(integer num, integer h, integer m){
    if (llList2Integer(announcements_on, num) == TRUE){
        llSay(0, "ただいまの時刻は" + (string)h + "時" + (string)m + "分です。");
    }
}

お好みに合わせてメッセージを変更してください。

  • (string)h……時を表す変数
  • (string)m……分を表す変数

↑この2つの部分は残して、他の部分を修正してください。

最終更新: 2010年11月08日 20 : 43 by arz Nitely
http://arzNitely.com/lsl/sample/timesignal.html

Copyright 2007-2010 ©arzNitely.com all right reserved

www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0