Seite 1 von 1

World Clock

BeitragVerfasst: Do 14. Mär 2013, 14:51
von oddball otoole
• Copy paste the ‘script’ below into a new script inworld.
• Copy paste the ‘notecard’ below into a new notecard inworld.
• Rename the notecard to --TimeZones--
• Touch the object to turn it on.
• Say in chat /10 time (country code from notecard)
• Example: /10 time japan

[EDIT: Changed the script a bit so the prim turns green when working, and red when not working. Also, I have changed the default timezone from NZ to UTC. Tested the script as an in-world object and as a HUD, both work.]

Script:
Code: Alles auswählen
key Owner;
integer dChannel = 10;//Channel we listen for what country to display
integer Listen;//Our listen handle
key reqTime;//key for http
float TextAlpha = 1.0;//Floating text alpha
vector TextColor = <1,1,1>;//Floating text color
string Zone = "UTC";//Default zone for floating text option/clock.
string Format = "llGetWallClock"; // "llGetWallClock", "RFC 2822" and "ISO 8601" are the supported formats.
integer Switch = FALSE;//Our switch so we know if on || off
 
//On function(s()
On(){Switch = TRUE;//Set switch to know we are on.
    Listen = llListen(dChannel,"","","");//start listen so we can change the timezone
    llSetTimerEvent(60);//Set timer to update once ever minute or so
    llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <0.0,0.5,0.0>, 1.0]);
    CheckTime(Zone);//check now & display time 
}
Off(){Switch = FALSE;//Set our switch to know we are off.
    llListenRemove(Listen);//Remove our listen/lag
    llSetTimerEvent(0);//Stop timer, no more updating time
        llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <0.5,0.0,0.0>, 1.0]);
    llSetText(" ",ZERO_VECTOR,0);//Remove floating text
}
CheckTime(string message){//We got our message, we check for that
    reqTime=llHTTPRequest("http://services.slopenid.net/SLNTPoHTTP/"+llEscapeURL(Format)+"/"+(string)llGetUnixTime()+"/"+message+"/",[],"");
}
 
// Below function pulled from http://wiki.secondlife.com/wiki/Unix2DateTime
// Unix Time conversion
integer DAYS_PER_YEAR        = 365;           // Non leap year
integer SECONDS_PER_YEAR     = 31536000;      // Non leap year
integer SECONDS_PER_DAY      = 86400;
integer SECONDS_PER_HOUR     = 3600;
integer SECONDS_PER_MINUTE   = 60;
integer LeapYear(integer year){
    if (year % 4 == 0){
        if (year % 100 == 0){
            if (year % 400 == 0){
                return 1;
            }else{
                return 0;
            }
        }else{
            return 1;
        }
    }else{
        return 0;
    }
}
// DaysPerMonth()
integer DaysPerMonth(integer year,integer month){
    if (month < 8){
        if (month % 2 == 0){
            if (month == 2){
                if (LeapYear(year)){
                    return 29;
                }else{
                    return 28;
                }
            }else{
                return 30;
            }
        }else{
            return 31;
        }
    }else{
        if (month % 2 == 0){
            return 31;
        }
        else{
            return 30;
        }
    }
}
// DaysPerYear()
integer DaysPerYear(integer year){
    if (LeapYear(year))
        return DAYS_PER_YEAR + 1;
    else
        return DAYS_PER_YEAR;
}
// Unix2DataTime()
list Unix2DateTime(integer unixtime){
    integer days_since_1_1_1970     = unixtime / SECONDS_PER_DAY;
    integer day = days_since_1_1_1970 + 1;
    integer year  = 1970;
    integer days_per_year = DaysPerYear(year);
    while (day > days_per_year){
        day -= days_per_year;
        ++year;
        days_per_year = DaysPerYear(year);
    }
    integer month = 1;
    integer days_per_month = DaysPerMonth(year,month);
    while (day > days_per_month){
        day -= days_per_month;
        if (++month > 12){   
            ++year;
            month = 1;
        }
        days_per_month = DaysPerMonth(year,month);
    }
    integer seconds_since_midnight  = unixtime % SECONDS_PER_DAY;
    integer hour        = seconds_since_midnight / SECONDS_PER_HOUR;
    integer second      = seconds_since_midnight % SECONDS_PER_HOUR;
    integer minute      = second / SECONDS_PER_MINUTE;
    second              = second % SECONDS_PER_MINUTE;
    return [ year, month, day, hour, minute, second ];
}
// TimeString()
string TimeString(list timelist){
    integer hour        = llList2Integer(timelist,3);
    integer minute      = llList2Integer(timelist,4);
    integer second      = llList2Integer(timelist,5);
    string  hourstr     = (string)hour;
    string  minutestr   = (string)minute;
    string  secondstr   = (string)second;
    if (hour < 10)      hourstr     = "0" + hourstr;
    if (minute < 10)    minutestr     = "0" + minutestr;
    if (second < 10)    secondstr    = "0" + secondstr;
    return hourstr + ":" + minutestr + ":" + secondstr;
}
 
default{
//
    state_entry(){
        Off();
    }
//
    on_rez(integer tot){
        llWhisper(0,"/me >> Help - Info;
This clock is touch activated, touch on & touch off.
It's set to use channel "+(string)dChannel+" for voice commands.
For the notecard listing all countries say in chat /"+(string)dChannel+" help
All voice commands for changing the time must include \"time\" in the command.
*Examples as said in chat would look like..  /"+(string)dChannel+" time japan  ..or /"+(string)dChannel+" time atlantic/bermuda");
        llResetScript();
    }
//
    touch_start(integer tot){
        if(Switch == FALSE){
            On();
        }else{
            Off();
        }
    }
//
    timer(){
        CheckTime(Zone);
    }
//
    listen(integer channel,string name,key id,string message){
        if (llGetOwnerKey(id) == llGetOwner() && channel == dChannel){   
            list argv = llParseString2List(message, [" "], []);
            string cmd = llList2String(argv, 0);
            string arg = llList2String(argv, 1);
            if(cmd == "help"){llGiveInventory(llGetOwner(),"--TimeZones--");
            }
            if(cmd == "time"){Zone = arg;
                CheckTime(Zone);
                //llOwnerSay("debug \n " +"cmd = " +cmd + "\n arg = "+arg+"\n message ="+message);
            }
        }
    }
//
    http_response(key q,integer s,list m,string r){
        if(q == reqTime){
            list timelist=Unix2DateTime((integer)r);
            if(Switch==TRUE){//If set to update floating text
                llSetText(Zone+"\n "+llGetSubString(TimeString(timelist), 0, -4),TextColor,TextAlpha);
            }else{//else we must be set to say our result
                llSay(0, "/me >> Time in \""+Zone+"\" is " + TimeString(timelist)); // displays time as HH24:MI:SS
            }
        }
    }
//
}


And the notecard:
Code: Alles auswählen
//// Africa ////

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka
Africa/Malabo
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Mogadishu
Africa/Monrovia
Africa/Nairobi
Africa/Ndjamena
Africa/Niamey
Africa/Nouakchott
Africa/Ouagadougou
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Timbuktu
Africa/Tripoli
Africa/Tunis
Africa/Windhoek

////  America ////

America/Adak
America/Anchorage
America/Anguilla
America/Antigua
America/Araguaina
America/Argentina/Buenos_Aires
America/Argentina/Catamarca
America/Argentina/ComodRivadavia
America/Argentina/Cordoba
America/Argentina/Jujuy
America/Argentina/La_Rioja
America/Argentina/Mendoza
America/Argentina/Rio_Gallegos
America/Argentina/Salta
America/Argentina/San_Juan
America/Argentina/San_Luis
America/Argentina/Tucuman
America/Argentina/Ushuaia
America/Aruba
America/Asuncion
America/Atikokan
America/Atka
America/Bahia
America/Barbados
America/Belem
America/Belize
America/Blanc-Sablon
America/Boa_Vista
America/Bogota
America/Boise
America/Buenos_Aires
America/Cambridge_Bay
America/Campo_Grande
America/Cancun
America/Caracas
America/Catamarca
America/Cayenne
America/Cayman
America/Chicago
America/Chihuahua
America/Coral_Harbour
America/Cordoba
America/Costa_Rica
America/Cuiaba
America/Curacao
America/Danmarkshavn
America/Dawson
America/Dawson_Creek
America/Denver
America/Detroit
America/Dominica
America/Edmonton
America/Eirunepe
America/El_Salvador
America/Ensenada
America/Fort_Wayne
America/Fortaleza
America/Glace_Bay
America/Godthab
America/Goose_Bay
America/Grand_Turk
America/Grenada
America/Guadeloupe
America/Guatemala
America/Guayaquil
America/Guyana
America/Halifax
America/Havana
America/Hermosillo
America/Indiana/Indianapolis
America/Indiana/Knox
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Tell_City
America/Indiana/Vevay
America/Indiana/Vincennes
America/Indiana/Winamac
America/Indianapolis
America/Inuvik
America/Iqaluit
America/Jamaica
America/Jujuy
America/Juneau
America/Kentucky/Louisville
America/Kentucky/Monticello
America/Knox_IN
America/La_Paz
America/Lima
America/Los_Angeles
America/Louisville
America/Maceio
America/Managua
America/Manaus
America/Marigot
America/Martinique
America/Mazatlan
America/Mendoza
America/Menominee
America/Merida
America/Mexico_City
America/Miquelon
America/Moncton
America/Monterrey
America/Montevide
America/Montreal
America/Montserrat
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
America/North_Dakota/Center
America/North_Dakota/New_Salem
America/Panama
America/Pangnirtung
America/Paramaribo
America/Phoenix
America/Port-au-Prince
America/Port_of_Spain
America/Porto_Acre
America/Porto_Velho
America/Puerto_Rico
America/Rainy_River
America/Rankin_Inlet
America/Recife
America/Regina
America/Resolute
America/Rio_Branco
America/Rosario
America/Santarem
America/Santiago
America/Santo_Domingo
America/Sao_Paulo
America/Scoresbysund
America/Shiprock
America/St_Barthelemy
America/St_Johns
America/St_Kitts
America/St_Lucia
America/St_Thomas
America/St_Vincent
America/Swift_Current
America/Tegucigalpa
America/Thule
America/Thunder_Bay
America/Tijuana
America/Toronto
America/Tortola
America/Vancouver
America/Virgin
America/Whitehorse
America/Winnipeg
America/Yakutat
America/Yellowknife

//// Antarctica ////

Antarctica/Casey
Antarctica/Davis
Antarctica/DumontDUrville
Antarctica/Mawson
Antarctica/McMurdo
Antarctica/Palmer
Antarctica/Rothera
Antarctica/South_Pole
Antarctica/Syowa
Antarctica/Vostok

//// Arctic ////

Arctic/Longyearbyen

//// Asia ////

Asia/Aden
Asia/Almaty
Asia/Amman
Asia/Anadyr
Asia/Aqtau
Asia/Aqtobe
Asia/Ashgabat
Asia/Ashkhabad
Asia/Baghdad
Asia/Bahrain
Asia/Baku
Asia/Bangkok
Asia/Beirut
Asia/Bishkek
Asia/Brunei
Asia/Calcutta
Asia/Choibalsan
Asia/Chongqing
Asia/Chungking
Asia/Colombo
Asia/Dacca
Asia/Damascus
Asia/Dhaka
Asia/Dili
Asia/Dubai
Asia/Dushanbe
Asia/Gaza
Asia/Harbin
Asia/Ho_Chi_Minh
Asia/Hong_Kong
Asia/Hovd
Asia/Irkutsk
Asia/Istanbul
Asia/Jakarta
Asia/Jayapura
Asia/Jerusalem
Asia/Kabul
Asia/Kamchatka
Asia/Karachi
Asia/Kashgar
Asia/Kathmandu
Asia/Katmandu
Asia/Kolkata
Asia/Krasnoyarsk
Asia/Kuala_Lumpur
Asia/Kuching
Asia/Kuwait
Asia/Macao
Asia/Macau
Asia/Magadan
Asia/Makassar
Asia/Manila
Asia/Muscat
Asia/Nicosia
Asia/Novosibirsk
Asia/Omsk
Asia/Oral
Asia/Phnom_Penh
Asia/Pontianak
Asia/Pyongyang
Asia/Qatar
Asia/Qyzylorda
Asia/Rangoon
Asia/Riyadh
Asia/Saigon
Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Tel_Aviv
Asia/Thimbu
Asia/Thimphu
Asia/Tokyo
Asia/Ujung_Pandang
Asia/Ulaanbaatar
Asia/Ulan_Bator
Asia/Urumqi
Asia/Vientiane
Asia/Vladivostok
Asia/Yakutsk
Asia/Yekaterinburg
Asia/Yerevan

////  Atlantic ////

Atlantic/Azores
Atlantic/Bermuda
Atlantic/Canary
Atlantic/Cape_Verde
Atlantic/Faeroe
Atlantic/Faroe
Atlantic/Jan_Mayen
Atlantic/Madeira
Atlantic/Reykjavik
Atlantic/South_Georgia
Atlantic/St_Helena
Atlantic/Stanley

////  Australia ////

Australia/ACT
Australia/Adelaide
Australia/Brisbane
Australia/Broken_Hill
Australia/Canberra
Australia/Currie
Australia/Darwin
Australia/Eucla
Australia/Hobart
Australia/LHI
Australia/Lindeman
Australia/Lord_Howe
Australia/Melbourne
Australia/North
Australia/NSW
Australia/Perth
Australia/Queensland
Australia/South
Australia/Sydney
Australia/Tasmania
Australia/Victoria
Australia/West
Australia/Yancowinna

////  Europe ////

Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belfast
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Bucharest
Europe/Budapest
Europe/Chisinau
Europe/Copenhagen
Europe/Dublin
Europe/Gibraltar
Europe/Guernsey
Europe/Helsinki
Europe/Isle_of_Man
Europe/Istanbul
Europe/Jersey
Europe/Kaliningrad
Europe/Kiev
Europe/Lisbon
Europe/Ljubljana
Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Mariehamn
Europe/Minsk
Europe/Monaco
Europe/Moscow
Europe/Nicosia
Europe/Oslo
Europe/Paris
Europe/Podgorica
Europe/Prague
Europe/Riga
Europe/Rome
Europe/Samara
Europe/San_Marino
Europe/Sarajevo
Europe/Simferopol
Europe/Skopje
Europe/Sofia
Europe/Stockholm
Europe/Tallinn
Europe/Tirane
Europe/Tiraspol
Europe/Uzhgorod
Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Vilnius
Europe/Volgograd
Europe/Warsaw
Europe/Zagreb
Europe/Zaporozhye
Europe/Zurich

////  Indian ////

Indian/Antananarivo
Indian/Chagos
Indian/Christmas
Indian/Cocos
Indian/Comoro
Indian/Kerguelen
Indian/Mahe
Indian/Maldives
Indian/Mauritius
Indian/Mayotte
Indian/Reunion

////  Pacific ////

Pacific/Apia
Pacific/Auckland
Pacific/Chatham
Pacific/Easter
Pacific/Efate
Pacific/Enderbury
Pacific/Fakaofo
Pacific/Fiji
Pacific/Funafuti
Pacific/Galapagos
Pacific/Gambier
Pacific/Guadalcanal
Pacific/Guam
Pacific/Honolulu
Pacific/Johnston
Pacific/Kiritimati
Pacific/Kosrae
Pacific/Kwajalein
Pacific/Majuro
Pacific/Marquesas
Pacific/Midway
Pacific/Nauru
Pacific/Niue
Pacific/Norfolk
Pacific/Noumea
Pacific/Pago_Pago
Pacific/Palau
Pacific/Pitcairn
Pacific/Ponape
Pacific/Port_Moresby
Pacific/Rarotonga
Pacific/Saipan
Pacific/Samoa
Pacific/Tahiti
Pacific/Tarawa
Pacific/Tongatapu
Pacific/Truk
Pacific/Wake
Pacific/Wallis
Pacific/Yap

////  Others ////

Brazil/Acre
Brazil/DeNoronha
Brazil/East
Brazil/West
Canada/Atlantic
Canada/Central
Canada/East-Saskatchewan
Canada/Eastern
Canada/Mountain
Canada/Newfoundland
Canada/Pacific
Canada/Saskatchewan
Canada/Yukon
Chile/Continental
Chile/EasterIsland
Egypt
Eire
Etc/GMT+1     Etc/GMT+10     Etc/GMT+11     Etc/GMT+12     Etc/GMT+2
Etc/GMT+3     Etc/GMT+4     Etc/GMT+5     Etc/GMT+6     Etc/GMT+7
Etc/GMT+8     Etc/GMT+9     Etc/GMT-0     Etc/GMT-1     Etc/GMT-10
Etc/GMT-11     Etc/GMT-12     Etc/GMT-13     Etc/GMT-14     Etc/GMT-2
Etc/GMT-3     Etc/GMT-4     Etc/GMT-5     Etc/GMT-6     Etc/GMT-7
Etc/GMT-8     Etc/GMT-9     Etc/GMT0     Etc/Greenwich     Etc/UCT
Etc/Universal
Etc/UTC
Etc/Zulu
Factory
GB
GB-Eire
GMT     GMT+0     GMT-0     GMT0
Greenwich
Hongkong
HST
Iceland
Iran
Israel
Jamaica
Japan
Kwajalein
Libya
Mexico/BajaNorte
Mexico/BajaSur
Mexico/General
Navajo
NZ
NZ-CHAT
Poland
Portugal
PRC
PST8PDT
ROC
ROK
Singapore
Turkey
UCT
Universal
US/Alaska
US/Aleutian
US/Arizona
US/Central
US/East-Indiana
US/Eastern
US/Hawaii
US/Indiana-Starke
US/Michigan
US/Mountain
US/Pacific
US/Pacific-New
US/Samoa
UTC
W-SU
WET
Zulu

Re: World Clock

BeitragVerfasst: Do 14. Mär 2013, 15:45
von Zak Spot
Thanks Oddy ! :) Still searching for a script to ban timezones?

Re: World Clock

BeitragVerfasst: Fr 15. Mär 2013, 13:08
von oddball otoole
hehe, not really trying to ban time zones now anymore. I'm trying to ban winter now :D :D

Re: World Clock

BeitragVerfasst: Di 16. Feb 2016, 12:40
von jasmeen
I have changed the default timezone from NZ to UTC. Tested the script as an in-world object and as a HUD