• 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.

HUDs beeinflussen sich gegenseitig

Tiniyn Resident

Aktiver Nutzer
Ich frage mich gerade was passieren würde, wenn z.B. zwei Leute mit dem gleichen Meshbody nebeneinander stehen und jeweils ihren HUD benutzen für Änderungen. Ändert der eine dann auch den anderen Meshbody?

Ich baue auch Sachen mit HUD. Ich weiß, dass man sehr einfach den Kommunikationskanal zwischen zwei Objekten (also hier dem Body und dem HUD) ändern kann. Aber wenn ich ein solches Objekt verkaufe, dann ist das ein Objekt und jeder Kunde bekommt eine identische Kopie. Wie kann ich dafür sorgen, dass jeder Kunde einen HUD bekommt, der eine andere Kanalnummer nutzt? Ich möchte eben vermeiden, dass Kunden sich gegenseitig was kaputtstellen können mit dem HUD.
 
So, ich habe schon eine Antwort bekommen, direkt in SL :) Danke an Sinja Allen, die gar keinen SLinfo Account hat aber wohl hier mitliest! (Cool, wie das manchmal so läuft :))

Ihr Vorschlag war, mit llListen(0,"",llGetOwner(),""); einen Filter auf den Besitzer zu setzen, alle anderen Nutzer werden dann ignoriert. Ich nutze dieses GetOwner und so schon häufig in anderen Sachen, beim HUD bin ich aber gar nicht auf diese Idee gekommen.
Hier mehr Infos dazu (der Link ist auch von Sinja): http://www.lslwiki.net/lslwiki/wakka.php?wakka=llListen
 
*kristalkugel rauskram*
*vor mir auf den tisch stell, ein schälchen leckerlies dazu*
*leckerlies mampf*
*meinen hypnotischen blick auf die kristallkugel richte*
*tatze auf schnellvorlauf .. 2 wochen*
*die kristallkugel zeigt folgendes:*

Ein IM-Fenster geht auf, die erste Kundin mit den den neuen HUD ist dran und tippert:
Der HUD tut nicht! :error:
*ersatz HUD wird geschickt*
Der tut auch nicht! :error:
*ersatz HUD Nr.2 wird geprüft, und tut einwandfrei*
*ersatz HUD Nr.2 wird geschickt*
Der tut auch nicht! :error:

*entspannt zurücklehn und die restlichen leckerlies mampf*

Soll ichs verraten oder willst den :error: selbst suchen? :notme
 
So sollte es gehen, oder? Wenn man im Attachement sicherstellt, dass die ID,von der die Message kommt (also das HUD), der Owner des Attachements ist. Habe diesen Code-Schnippsel für den Listener im Attachement gefunden. Erste Tests klappen auch, keine gegenseitige Beeinflussung.
Code:
listen(integer Channel, string Name, key Id, string Message) {
    if (llGetOwnerKey(Id) == llGetOwner()) { ... usw. usw. ...
 
Also ich lebe ja davon für andere Leute HUD´s zu machen, bzw. denen einfache Scripte zu geben mit denen sie ihre Sachen ausstatten können.

Ich prüfe beim Script auf folgendes:
Code:
string      S_product           =   "tolles produkt";
string      S_version           =   "0.30";

default
{
    listen(integer channel, string name, key id, string message)
    {
        if(llGetOwner() != id  && llGetOwnerKey(id) != llGetOwner() ) return;
        list L_msg = llCSV2List(message);
        if(llList2String(L_msg,0) != S_product || llList2String(L_msg,1)  != S_version) return;

Die Prüfung auf Produktname und Version hilft dabei nicht durch andere eigene HUD´s gestört zu werden.
 
Code:
if (llGetOwnerKey(Id) == llGetOwner()) { ... usw. usw. ...

Das ist richtig, was dann noch fehlt ist das richtige öffnen des Listeners.

Code:
llListen(CHANNEL, "", NULL_KEY, "");

Man beachte den NULL_KEY. Wenn da llGetOwner() drin stehen würde, dann wird
der Key des Scriptentwicklers eingetragen. Und ohne weitere Vorkehrungen bleibt
der Key auch drin, also auch wenn das Objekt mit dem Script den Owner wechselt.
Das Script besitzt dann irgendjemand, aber es wartet noch auf Nachrichten vom
Scriptentwickler.

Deshalb llListen für jeden öffnen, und im listen event abfragen ob es vom aktuellen Owner kommt.


*setzt sich hin und scriptet sich nen leckerlie-HUD-script*
 
Ich bau das immer mit ein um sicher zu gehen das kein Key gespeichert ist

Code:
changed(integer change)
{
if (change&CHANGED_OWNER) llResetScript();
}
 
Ich bau das immer mit ein um sicher zu gehen das kein Key gespeichert ist

Code:
changed(integer change)
{
if (change&CHANGED_OWNER) llResetScript();
}
Das bau ich nicht mit ein, hab aber einen State "rezzing", der nochmal durchlaufen wird, da ich den Key beim ersten aktivieren speicher, um eine Verschlüsselung für meine Kunden zu generieren.
Scriptreset von deren Kunden und das Teil ist unbrauchbar.
Das hilft gut gegen Meinschen, die Mechanismen erkennen und so auch inworld Textur-Keys oder ähnliches abgreifen könnten.
 

Users who are viewing this thread

Zurück
Oben Unten