Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
archiv:opensim:downloads:scripts:skype_multiuser [2024/01/24 16:39] – Externe Bearbeitung 127.0.0.1 | archiv:opensim:downloads:scripts:skype_multiuser [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Skype Online Status - Multi-User Version ===== | ||
+ | |||
+ | < | ||
+ | // zwischen die Anführungszeichen Deinen Skype-Name einfügen | ||
+ | string skype_handle = ""; | ||
+ | // you are done! no more changes! | ||
+ | |||
+ | key | ||
+ | string | ||
+ | integer noteline; | ||
+ | key skype_request_id = NULL_KEY; // id of http request | ||
+ | |||
+ | showStatus(string skype_status) | ||
+ | { | ||
+ | // build up our message | ||
+ | string message = " | ||
+ | message += " | ||
+ | message += " | ||
+ | | ||
+ | // write out the message as hovering text | ||
+ | llSetText(message, | ||
+ | } | ||
+ | |||
+ | // AMD64 ADD: readnotecard() liest eine zeile | ||
+ | // Im Dataserver Event wird die gewünschte Variable dann gefüllt | ||
+ | // Sollte einmal beim rezzen/ | ||
+ | readnotecard() | ||
+ | { | ||
+ | // Der name der NC ist egal | ||
+ | notecard = llGetInventoryName(INVENTORY_NOTECARD, | ||
+ | // Wenn aber keine da ist, setze die Variable auch auf leer und beende das ganze | ||
+ | if (notecard == "" | ||
+ | { | ||
+ | skype_handle = ""; | ||
+ | return; | ||
+ | } | ||
+ | // Lesen beginnen bei Zeile Null (anfang) | ||
+ | noteline = 0; | ||
+ | // Ab hier gehts im Dataserver Event weiter | ||
+ | notecode = llGetNotecardLine(notecard, | ||
+ | } | ||
+ | |||
+ | default | ||
+ | { | ||
+ | on_rez(integer start_param) | ||
+ | { | ||
+ | readnotecard(); | ||
+ | } | ||
+ | state_entry() | ||
+ | { | ||
+ | llSetTimerEvent(0); | ||
+ | readnotecard(); | ||
+ | } | ||
+ | changed(integer change) | ||
+ | { | ||
+ | // Änderung im Inventar des Objekts | ||
+ | if (change & CHANGED_INVENTORY) | ||
+ | { | ||
+ | // NC am besten neu einlesen | ||
+ | readnotecard(); | ||
+ | } | ||
+ | } | ||
+ | dataserver(key queryid, string data) | ||
+ | { | ||
+ | if (queryid == notecode) | ||
+ | { | ||
+ | // Für den Fall dass die NC leer ist | ||
+ | if (data != EOF) | ||
+ | { | ||
+ | skype_handle = data; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | skype_handle = ""; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | touch_start(integer total_number) | ||
+ | { | ||
+ | // make sure owner has specified handle | ||
+ | if(skype_handle == "" | ||
+ | { | ||
+ | // send message to debugger | ||
+ | llWhisper(DEBUG_CHANNEL, | ||
+ | return; | ||
+ | } | ||
+ | | ||
+ | // prevent extra requests happening at the same time | ||
+ | if(skype_request_id != NULL_KEY) return; | ||
+ | | ||
+ | // make a request over the internet | ||
+ | skype_request_id = llHTTPRequest(" | ||
+ | | ||
+ | // set a timeout for http request | ||
+ | llSetTimerEvent(5); | ||
+ | } | ||
+ | http_response(key request_id, integer status, list metadata, string body) | ||
+ | { | ||
+ | // is this a response to our request? | ||
+ | if(request_id == skype_request_id) | ||
+ | { | ||
+ | // show status | ||
+ | showStatus(body); | ||
+ | | ||
+ | // change to view state | ||
+ | state viewing; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | timer() | ||
+ | { | ||
+ | // Didn't get a response in time. | ||
+ | showStatus(" | ||
+ | | ||
+ | // change to view state | ||
+ | state viewing; | ||
+ | } | ||
+ | } | ||
+ | state viewing | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | // Set next timer for 3 minutes | ||
+ | llSetTimerEvent(180); | ||
+ | } | ||
+ | timer() | ||
+ | { | ||
+ | state default; | ||
+ | } | ||
+ | state_exit() | ||
+ | { | ||
+ | // stop the timer | ||
+ | llSetTimerEvent(0); | ||
+ | |||
+ | // hide the text | ||
+ | llSetText("", | ||
+ | | ||
+ | // reset the request id | ||
+ | skype_request_id = NULL_KEY; | ||
+ | } | ||
+ | } | ||
+ | </ | ||