25.02.2018, 17:52
(24.02.2018, 22:09)Pharcide schrieb: Jap, bisher hab ich auch keine Möglichkeit gefunden, zu sagen, rezz mir ein Würfel, Kegel, Kugel usw.
Ok, weisst Du zufälligerweise auch, wie man die UUID des eben gerezzten Objektes ausliest ?
Nur so als Idee, falls du im Rezzer die UUID des gerezzten Objekt haben willst:
Script im Rezzer:
Code:
string prim = "prim"; // Name des Prims im rezzer Inventory
integer channel = -32198; // Beliebiger channel (negativer Integer)
integer listenHandle = 0; // Handle für den Listener
default
{
touch_start(integer num_detected)
{
// Wir starten beim Touch einen Listener mit einem beliebig gewählten channel.
listenHandle = llListen(channel, "", NULL_KEY, "");
// Wir rezzen das Object 1 m in Y Richtung entferntund übergeben als param den channel.
// Das Object enthält ein Script das uns beim Rezzen über den
// mitgelieferten channel eine Message zurückschickt.
llRezObject(prim, llGetPos() + <0.0, 1.0, 0.0>, <0.0,0.0,0.0>, <0.0,0.0,0.0,0.0>, channel);
}
listen(integer channel, string name, key id, string message)
{
// Der Listner erhält auf dem mitgegebenen channel eine Message. Wir
// verwenden sie hier nicht, denn uns interessiert nur die UUID des
// neu gerezzten Prims und die ist in der id enthalten.
llSay(0, (string) id); //Kontollausgabe der ID im Chat.
// Um Lag zu vermeiden löschen wir den Listener sobald wir ihn nicht
// mehr brauchen
llListenRemove(listenHandle);
}
}
2. Script im gerezzten Objekt:
Code:
/// Dieses Script sendet nach dem rezzen irgendeine Message über dem // im param mitgegebenen Channel an den rezzer (und löscht sich selbst).
default
{
on_rez(integer param)
{
// Ausgabe im Chat zur Kontrolle
llSay(0, "Script on_rez " + param + ": " +(string) llGetKey());
// Message kann im Beispiel irgendwas sein, wir versenden sie nicht.
// Uns interessiert nur die UUID und die bekommen wir im Listener.
llRegionSay(param, "rezzed"); // Message kann im Beispiel irgendwas sein.
// Die nachstende Zeile ist auskommentiert um das Löschen
// des Scripts zu verhinder.
// llRemoveInventory(llGetScriptName());
}
}