Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
archiv:opensim:downloads:scripts:elevator [2024/01/24 16:39] – Externe Bearbeitung 127.0.0.1 | archiv:opensim:downloads:scripts:elevator [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Elevator ===== | ||
+ | |||
+ | ==== Elevator Main Script ==== | ||
+ | |||
+ | < | ||
+ | // From the book: | ||
+ | // | ||
+ | // Scripting Recipes for Second Life | ||
+ | // by Jeff Heaton (Encog Dod in SL) | ||
+ | // ISBN: 160439000X | ||
+ | // Copyright 2007 by Heaton Research, Inc. | ||
+ | // | ||
+ | // This script may be freely copied and modified so long as this header | ||
+ | // remains unmodified. | ||
+ | // | ||
+ | // For more information about this book visit the following web site: | ||
+ | // | ||
+ | // http:// | ||
+ | |||
+ | integer CHANNEL = 42; // dialog channel | ||
+ | list MENU_MAIN = [" | ||
+ | |||
+ | float BOTTOM = 22.260; | ||
+ | float FLOOR_HEIGHT = 10; | ||
+ | float SPEED = 2; | ||
+ | float target; | ||
+ | |||
+ | |||
+ | default | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | llListen(CHANNEL, | ||
+ | llSitTarget(< | ||
+ | llSetText(" | ||
+ | target = BOTTOM; | ||
+ | } | ||
+ | |||
+ | listen(integer channel, string name, key id, string message) | ||
+ | { | ||
+ | integer idx = llListFindList(MENU_MAIN, | ||
+ | if( idx!=-1 ) | ||
+ | { | ||
+ | llSay(0," | ||
+ | target = BOTTOM + (idx*10); | ||
+ | state moving; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | changed(integer Change) | ||
+ | { | ||
+ | llDialog(llAvatarOnSitTarget(), | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | state moving | ||
+ | { | ||
+ | |||
+ | |||
+ | state_entry() | ||
+ | { | ||
+ | llSetTimerEvent(0.1); | ||
+ | } | ||
+ | |||
+ | timer() | ||
+ | { | ||
+ | vector pos = llGetPos(); | ||
+ | |||
+ | if( pos.z!=target ) | ||
+ | { | ||
+ | if( pos.z> | ||
+ | { | ||
+ | pos.z = pos.z - SPEED; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | pos.z = pos.z + SPEED; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if( llFabs(pos.z - target) < SPEED ) | ||
+ | { | ||
+ | pos.z = target; | ||
+ | llSetTimerEvent(0); | ||
+ | llSetPos(pos); | ||
+ | llSay(0," | ||
+ | state default; | ||
+ | } | ||
+ | |||
+ | llSetPos(pos); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Elevator Call Button ==== | ||
+ | |||
+ | < | ||
+ | integer CHANNEL = 42; // dialog channel | ||
+ | |||
+ | default | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | llSetText(" | ||
+ | } | ||
+ | |||
+ | touch_start(integer total_number) | ||
+ | { | ||
+ | |||
+ | llRegionSay(42, | ||
+ | } | ||
+ | } | ||
+ | </ | ||