Erste Impressionen von – na wie sollen wir es nennen? Da fällt sicherlich jemandem was zu ein. Das Bild spricht jedenfalls für sich, oder?
Es ist noch große Vorsicht geboten, da die Timer wohl nicht sauber implementiert sind. Aber das können wir ja über LSL-Timer realisieren. EDIT: Es baut auf der 0.7.1er (GIT, DEV) mit einer eigenen Funktion da die dort originär implementierten Versionen noch nicht klappen. Name zur Zeit zur Verwendung in Scripten: wbDisplayWebimage. Und es bekommt als Parameter lediglich die URL. Zurück liefert es den String der UUID des erzeugten Images. Und im Moment arbeitet es auf allen „Faces“ (Oberflächen), werde ich wahrscheinlich noch ändern aber im Moment reicht es mal so.
Und hier nun der notwendige Minimal-Code ohne Refresh, das ja bei normalen statischen Bildern nicht notwendig ist :):
[code lang="c"]
string rc;
default {
state_entry() {
rc = wbDisplayWebimage("http://wolfsbone.de/download/public/xsyonNomadsSigns/snake.png");
}
}
[/code]
Wow. Cooool 😀
Ich überleg grad, wenn da tatsächlich so funktioniert, könnte man möglicherweise ja auch meine Ausstellung darüber abwickeln… 😉
hehe 🙂 danke. 🙂
den gedanken hatte ich auch schon, aber da müsste ich die DEV-version ins grid implementieren. da bin ich eher vorsichtig wenn du verstehst 😉
ich grübele gerade darüber welche version zwingend notwendig ist damit die aufgerufenen funktionen alle sauber funzen. und außerdem möchte ich mal ein migrations-script für versionen bauen, damit ein hochziehen von versionen flüssiger abläuft. sieht ja so aus als käme das öfter vor. und du weißt ja: programmierer sind faul ^^
Nachtrag: Gute Nachricht :). Ich bekomme es auch in die 0.6.9er implementiert. Damit steht der Nutzung bei der Ausstellung nichts im Wege.
So, ich habe das nun mal probiert, es funktioniert einwandfrei (natürlich). Sogar bei Bildern von anderen Servern. Interessant: Bei einem anderen Blog von mir bei Posterous habe ich die Bild-URL abgriffen, funktionierte reibungslos. Allerdings war diese Bild-URL, die aus mehr als dem Pfad bestand, mit einem Expire verknüpft. Nach Ablauf des Expires spuckte der Viewer folgende Fehlermeldung aus: „Primitive: DynamicTextureModule: Error preparing image using URL http://etc.pp“.
Und dynamisch gestalten lässt sich das Ganze ja durchaus, nur serverseitig. Mal angenommen, ich will – z.B. in der Ausstellung – immer die gleiche Anzahl an Bildern darstellen, sagen wir, 10. Dann frage ich im Skript einfach jeweils die URL http://www.wolfsbone.de/bild_01.jpg, http://www.wolfsbone.de/bild_02.jpg etc. ab. Auf dem Webspace kann ich die Bilder dann einfach mit neuen überschreiben, die den selben Namen haben. Das einzige, was ich Inworld noch tun muss ist, die Skripte in den entsprechenden Objekten zu resetten. Dazu reicht es aber, einfach alle Objekte auszuwählen, die es betrifft, und via Menü die Skripte zu resetten. Dabei spielt es auch keine Rolle, ob das Prim mit dem Skript Teil einer Linked-Prim-Auswahl ist oder ein einzelnes Prim.
Nun könnte man sich aber noch komfortablere Möglichkeiten vorstellen, zum Beispiel, dass das Skript bei Berührung des Prims resettet (das habe ich inzwischen getestet, geht, Code folgt) oder das ich ein daneben stehendes Prim, so eine Art „Knopf“, habe, der die Skripte in den anderen Prims resettet. Denkbar wäre auch ein Reset über einen Chat-Channel.
Nachtrag: Hier das Reset-Skript. Es muss im selben Prim wie das Bild-Skript liegen. Das Skript, was das Bild aufruft, habe ich „bild“ genannt. Das Reset-Skript habe ich von hier:
http://wiki.secondlife.com/wiki/LlResetOtherScript
[code lang="c"] integer menu_channel = -2345; default { state_entry(){ llListen(menu_channel, "", "", ""); } touch_start(integer total_number){ llDialog(llDetectedKey(0), "Reset database script?", ["Yes", "No"], menu_channel); } listen(integer channel, string name, key id, string message){ if (message == "Yes"){ llSay(0, "Reseting script..."); llResetOtherScript("bild"); } else llSay(0, "Operation canceled"); } } [/code]jo, supi. da kann ich noch was basteln mit dem knopf. man könnte mit region-say scripte bauen die sich bei einem master anmelden so wie sie gerezzt werden, der sie dann auf knopfdruck alle zurücksetzt. oder man könnte pauschal mit allen auf einem bestimmten kanal lauschen, das hat aber denke ich grenzen was die entfernung angeht. na mal sehn. 🙂