• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Objekt zerbrechen....

Hallo liebe Gemeinde!

Ich bastele an einer Sache bei der ein Objekt (in diesem Fall ein Klavier) von einem anderem Objekt gerezzt wird. Das Klavier ist Pysisch und fällt nun der Schwerkraft folgend herab. Trifft das Klavier nun auf den Boden (oder auch auf einen Avatar - ha ha) soll das Klavier in seine einzelnen Primteile auseinanderfallen. Ich benutze dazu diesen Code.
Code:
key sound = "Bäng";

default 
{ 
    on_rez(integer start_param)
    {
        llResetScript();
    }
    
    state_entry()
    {
        llSleep(0.1);
    }
    collision_start(integer num_detected)
    {
        llTriggerSound (sound, 1.0);
        llBreakAllLinks();   
    }
    
    land_collision_start(vector pos)
    {
        llTriggerSound (sound, 1.0);
        llBreakAllLinks();   
    }  
}

Das Script steckt im Rootprim des Klavieres. Sobald das Klavier nun auf den Boden aufschlägt bekomme ich allerdings die Fehlermeldung:

Script trying to delink but PERMISSION_CHANGE_LINKS permission not set!

Anscheined muss wie bei Animationen immer erst eine Erlaubnis gegeben werden. Tja, wie mach ich das denn jetzt? Das Fallen des Klavieres soll ja automatisch ausgelöst werden. Wenn nun jedesmal erst ein Menüfenster aufpoppt und nach der Erlaubnis fragt wäre der Sinn und Zweck der ganzen Sache irgdendwie verfehlt.
Vielleicht hat einer von euch schlauen Köpfen eine Idee wie man das Script entsprechend erweitern könnte.

Vielen Dank schon mal im voraus ...euer Gottfried
 
Doktor Schnyder schrieb:
Ein Blick in die Wiki hilft manchmal Wunder ;-)

Da steht es so schön erklärt das ich mir jetzt mal jeden Kommentar erspare :


http://wiki.slinfo.de/wakka.php?wakka=HomePage/FunctionCategories/llBreakAllLinks&v=1c8w

und das hier :

http://wiki.slinfo.de/wakka.php?wakka=HomePage/FunctionCategories/llGetPermissions&v=m5j

Also die englische Seite enthält mehr infos:
http://wiki.secondlife.com/wiki/LlBreakAllLinks

und helfen tut es auch nicht, weil es das Problem nicht löst. Ok, es fällt nun auseinander. Dennoch weiß auch nicht NIE mit den Permissions umzugehen. Das wird wohl auch immer ein Buch mit 7 Siegeln für mich bleiben.
Das Problem? Was nützt es, wenn nun der Eigentümer ständig eine Menüaufforderung bekommt zum zustimmen. Der kann sich, sofern er nah genug steht, nun todklicken.
 
Japs das ist ein Grund warum Bomben in SL nicht wirklich explodieren sondern die "Splitter" neu rezzen.

So muss man es mit dem Klavier auch machen: Bei Collision einfach ein paar Klavierteile rezzen das es so aussieht als fällt es auseinander und dann das eigentliche Klavier mit lldie einfach verschwinden lassen.

Das ganze kann man dann noch mit etwas Rauch und Sounds aufbessern.
 
Ganz genau Herm Piek .... auf die Idee mal ins wikki zu schauen war ich auch schon gekommen. Aber das eigentliche Problem kann ich mit den dortigen Informationen trotzdem nicht lösen.
Ist die sache mit dem Klavier überhaupt machbar? Wer kann weiterhelfen?
 
moin,

soweit ich informiert bin behält der Prim dieses Recht sofern das Script nicht resettet wird. Also einmal das Recht einräumen und dann in den Rezzer packen.
Da ich mir nicht sicher bin bitte ich um Rückmeldung wenn es geklappt hat.

gruss thinkangel
 
Da hat thinkangel recht, wenn du einmal, sagen wir im state_entry, die llRequestPermission anforderst und bestätigst und das Objekt wieder ins Inventar nimmst, oder dann evtl. auch ins Inventar eines andren Objektes legst, müssen die Permissions nicht wieder neu bestaötigt werden beim Rezzen, wenn das Script nicht resettet wird.

Das Problem ist nur, wenn du das Klavier-rezzende Objekt jemand anderem gibst oder verkaufst, dann müsste der das Klavier einmal aus dem Objekt nehmen, resetten, die Permissions einmal bestätigen, wieder ins Inventar des Objektes tun. Diese Schrittweise mach NoMod fürs Klavier schon mal unmöglich und ist auch dem durchschnittlich nichtscriptenden SL-Spieler nicht zuzumuten. Deshalb ist evtl. doch auf Rezzen von Trümmerstücken statt unlinken auszuweichen...
 
thinkangel McAlpine schrieb:
soweit ich informiert bin behält der Prim dieses Recht sofern das Script nicht resettet wird...

Das scheint für alle Rechte außer diesem zu gelten, falls die Doku von SL hier korrekt ist:

# Once the PERMISSION_CHANGE_LINKS permission is granted there is no way to revoke it. The script will only lose the permission if it is reset or the object derezzed (deleted, detached, or taken).

Sprich, dieses Recht geht wieder flöten, wenn man das Objekt ins Inventar nimmt.
 
...ausserdem beziehen sich die rechte auf einen ava bzw. auf eine liste von avas und nicht generell...

...aber du weisst ja nicht vorher wer es kauft...

Q: How does this know what agent to get the permissions from?
A: The last person who requested permissions. Use llGetPermissionsKey to find out the key of the agent.

Q: Is there a way to find out what permissions are already granted for a different agent, or do I need to keep a list of my own?
A: If you wanted a script to get permissions from more than one person, you would have to keep a list of your own.
 
Matteo Tedeschi schrieb:
# Once the PERMISSION_CHANGE_LINKS permission is granted there is no way to revoke it. The script will only lose the permission if it is reset or the object derezzed (deleted, detached, or taken).

Sprich, dieses Recht geht wieder flöten, wenn man das Objekt ins Inventar nimmt.

Das kann ich aus meiner Scriptpraxis nicht bestätigen. Das Recht geht nicht wieder flöten. Nur bei Ownerchange ist das Recht dann natürlich "falsch" vergeben, das Script muss resettet werden und einmal die PERMISSION_CHANGE_LINKS vom neuen Owner neu bestätigt werden.
 
Ich würd's so machen, daß das Klavier, sobald es auf dem Boden aufschlägt, ein zweites Klavier rezzt, welches nicht verlinkt ist, und dann selbst verschwindet. Das unverlinkte Klavier ist natürlich auch physical. Außerdem enthält jedes Prim [libary:9d0795f357]Kleinste Baueinheit eines [Objekt] in [SecondLife][/libary:9d0795f357] ein Script, welches ihm einen kleinen Impuls gibt, so daß es schön auseinander fällt. Sonst kann's nämlich passieren, daß es einfach so in der Luft hängen bleibt.

Etwas kleineres hab ich vor einiger Zeit schon mal kaputt gemacht ;-).

[video=youtube;http://youtube.com/watch?v=1esSeflN_WU]http://www.youtube.com/watch?v=http://youtube.com/watch?v=1esSeflN_WU[/video]
 
Kottos Sperber schrieb:
Mir ist aufgefallen, dass die Büchsen manchmal nach vorn fallen, z.B. im letzten Wurf. Da stimmt was nicht :)
Das liegt wohl daran, daß der Impuls mehr oder weniger zufällig ist. Mit etwas mehr Feinarbeit würden die wahrscheinlich zuverlässig nach hinten fallen. Außerdem schießt man im Mouselook, da ist mir das beim testen gar nicht aufgefallen :-D.
 
Joshua Philgarlic schrieb:
Das liegt wohl daran, daß der Impuls mehr oder weniger zufällig ist.

Ja. man könnte die Richtung des Impulsvektors in Abhängigkeit von der Wurfrichtung einschränken, wobei ich mich gerade frage, wie das zu bewerkstelligen wäre. Das collision event gibt ja keine Auskunft über die kollidierenden Objekte und Kommunikation zwischen Ball und Büchse möglicherweise zu langsam ist.
 
Joshuas Methode ist wegen der Möglichkeit, die Objekte ohne das lästige Permissions-Problem weiterzugeben, auf jedem Fall vorzuziehen.

Aus Lag-Sicht ist übrigens das Delinken von Objekten serverseitig ähnlich zu sehen, wie das Neurezzen, da aus einem Objekt viele einzelne physikalische werden, das ist perfomancemäßig eigentlich gleichtwertig dem Neurezzen.

Deshalb fällt Linken und Delinken auch unter die Grey-Goo-Restriktionen, d.h. linkt/delinkt ein Script ständig und schnell, hört es auf zu funktionieren mit der Script-Fehler-Meldung, dass die Grey-Goo-Filter getriggert worden seien.
 
...der grey goo filter schlägt aber erst bei mehr als 200 rezz pro zeiteinheit (weiss jetzt nicht wieviel taskcycles) an...würde er es nicht so machen, dann wäre auch ein maschinengewehr nicht funktionsfähig, das rezzt auch sehr flott...
 
Das Link/Delink den Grey-Goo-Filter triggern kann, war auch nur ein Beleg, dass es Performancemäßig ähnlich belastend für den Server ist wie Rezzen selbst. Es gibt also eigentlich keine Vorteile, statt zu Rezzen zu Delinken. Nur Nachteile ;)
 
Kottos Sperber schrieb:
Ja. man könnte die Richtung des Impulsvektors in Abhängigkeit von der Wurfrichtung einschränken, wobei ich mich gerade frage, wie das zu bewerkstelligen wäre. Das collision event gibt ja keine Auskunft über die kollidierenden Objekte [libary:63247115c8]Ein [Objekt] in [SecondLife] besteht aus einem oder mehreren [Prims] und kann wiederum mit anderen [Objekte] befüllt werden.[/libary:63247115c8] und Kommunikation zwischen Ball und Büchse möglicherweise zu langsam ist.
Bei den Dosen habe ich natürlich gemogelt: Um jeden Dosenstapel befindet sich eine transparente Phantom-Hülle. Wird die getroffen, sagt die den Dosen "werdet physical". Außerdem befindet sich in der Hülle der Rezzer, der hinterher die Dosen wieder aufbaut.

Das ganze war für eine Wurfbude für's Oktoberfest im Deutschen Tutorium. Auf 100%igen Realismus kam's mir da gar nicht an 8).
 
Ja Ahoi nochmal...

Ich hätteja garnicht gedacht das "DAS KLAVIERPROBLEM" auf so eine resonanz stoßen würde. Ich danke mal allen die hier ihre Beiträge geschrieben haben. Ich persönlich werde das problem wohl mal auf die Art lösen wie Joshua Philgarlic sie beschrieben hat, und einfach ein neues zerbrochenes Klavier rezzen.

Gottfried :)
 

Users who are viewing this thread

Zurück
Oben Unten