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

Problem mit setstatus physics

argus Portal

Freund/in des Forums
Hallo

Ich habe ein Linkset, das aus 2 Prims besteht. (Kein mesh). Im root schalte ich auf physikalisch und zurück.
Schalte ich es aus, bleibt das 2. Prim oftmals auf "grab". Ich muss ein paarmal ausschalten (Physik), damit auch das
2. prim endlich den Mauszeiger nicht mehr ändert und nicht mehr greifbar ist.

Ich habe auch schon per llSetLinkPrimitiveParamsFast explizit für beide prims die Physik ausgestellt. (Auch LINK_SET bringt keinen Erfolg).

llSetStatus(STATUS_BLOCK_GRAB_OBJECT, FALSE) im root bringt nichts. Ebensowenig llSetStatus(STATUS_BLOCK_GRAB, FALSE) im betroffenen 2. Prim.

Ich das "normal", das es manchmal hakt ? LL hatte ja einiges am Physiksystem geändert.
 
Hallo Argus

Ich habe da nicht viel darauf geachtet, kann nicht sagen ob diese Statusänderung zeit braucht um beim Viewer ganz anzukommen, aber normal ist es nicht wenn es sich unregelmäsig verhällt.

Versuche verschiedene Serverversionen, wobei wenn ich es verstanden habe, müsste nur ein Unterschied (wenn überhaupt) zwischen dem SL und den RC Servern bestehen aber Magnum, BS und LT müssen denselben Code haben. Insbesondere wenn Du ein Unterschied festgestellst hast Du einen Bug entdeckt.

Sonst steht bei llSetStatus keine Angabe über irgendeine Verzögerung o.Ä. Nur, dass STATUS_BLOCK_GRAB allen Prims zuzuweisen ist und STATUS_BLOCK_GRAB_OBJECT den ganzen Objekt ändert. Deine Beobachtung klingt für mich als nicht normal. Im Zwiefelsfall kannst Du immer ein Bugreport machen.
 
Zuletzt bearbeitet:
Hallo Jenna

Ich dachte auch erst an ein Zeitproblem. Das ist leider nicht die Lösung.


Hier einmal ein Script zur Demonstration. Es ist auf das allerwesentlichste reduziert. Also bitte nicht davon ablenken lassen.


llSetStatus(STATUS_BLOCK_GRAB_OBJECT, FALSE) und llSetStatus(STATUS_BLOCK_GRAB, FALSE) in state_entry
bringen nichts.

Wichtig scheint zu sein, das ich per llResetScript() dafür sorge, die Physik wieder abzuschalten. (Per state_entry)

Interessant ist: Dass das Aufnehmen ins Inventar und neu rezzen das gewünschte Resultat bringt.



Code:
integer sitzt;

key UUID;



default
{
    state_entry()
    {
        sitzt = FALSE;
        UUID = NULL_KEY;

        llSitTarget(<0.0,0.2,0.5>, ZERO_ROTATION);


        llSetStatus(STATUS_PHYSICS, FALSE);

        llSay(0,"reset");
    }


    on_rez(integer start)
    {
        llResetScript();
    }

    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            if (sitzt == FALSE)
            {
                UUID = llAvatarOnSitTarget();

                llOwnerSay("root: Sitzt: Physik an");

                llSetStatus(STATUS_PHYSICS, TRUE);
                sitzt = TRUE;
            }
            else
            {
                llOwnerSay("root: steht auf:  Physik aus");
                llResetScript();
            }
        }

    }

}
 
Zusatz:

Ich habe auf 8 Regionen getestet. Sechs liefen auf Second Life Server 14.10.24.295913 und zwei auf Second Life RC Magnum 14.11.07.296624.

Bei allen blieb das Childprim nach dem Aufstehen auf "grab".
 
Hallo Argus

Hat etwas länger gedauert, aber ich glaube Du hast einen bug entdeckt :) Und einen Bugreport darüber habe ich auch nicht finden können.

Ich habe ein bisshen rumexperimentiert. Den Skript habe ich etwas umgeschrieben aber das macht kaum Unterschied.

Code:
key UUID;

default
{
    state_entry()
    {
        UUID = NULL_KEY;

        llSitTarget(<0.0,0.2,0.5>, ZERO_ROTATION);

        llSetStatus(STATUS_PHYSICS, FALSE);
        llSetStatus(STATUS_BLOCK_GRAB_OBJECT, FALSE);

        llSay(0, "reset");
    }

    on_rez(integer start)
    {
        llResetScript();
    }

    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            UUID = llAvatarOnSitTarget();
            
            if ((key)UUID)
            {
                llOwnerSay("root: Sitzt: Physik an");
                
                llSetStatus(STATUS_PHYSICS, TRUE);
                llSetStatus(STATUS_BLOCK_GRAB_OBJECT, FALSE);
            }
            else
            {
                llOwnerSay("root: Steht auf:  Physik aus");
                
                llSetStatus(STATUS_PHYSICS, FALSE);
                llSetStatus(STATUS_BLOCK_GRAB_OBJECT, TRUE);
                
                llResetScript();
            }
        }
    }
}

Damit es überhaupt funktioniert, muss ich anscheinend entweder alle Zeilen mit "STATUS_BLOCK_GRAB_OBJECT" auskommentieren oder alle drin lassen.

In jeder Version mal funktioniert es mal nicht. Mal funktioniert es stabil einige male, wenn ich vor dem Aufstehen etwas rumschubse und wenn ich ungeschoben aufstehem dann nicht. Mal ist das genau umgekehrt.

Außerdem hört es auf, zu funktionieren, wenn ich oft hinsetze und gleich aufstehe, wenn ich aber länger stehen oder sitzen bleibe, scheint es stabil zu sein. Als ob die Rate mit der man den Status ändert, so stark beeinflusst.

Die Sim hatte nur 5 Avatare drauf, und es ist Second Life Server 14.10.17.295641 auf Aditi.

Achso, ich habe auch anstatt beim Aufstehen sofort den Status zu änden, versucht, dies erst mit einem 1 Sekunden Timer zu verzögern, also timer starten und im timer() Event den Status ändern und resetten. Hat auch genauso (nicht) funktioniert. Damit wollte ich testen, ob der Zeitpunkt des Aufstehen des Avatars etwas mitspielt, weil der Avatar ja auch ein verlinkter Prim ist. Somit wäre der Aufstehvorgang schon abgeschlossen, wenn man den Reset verzögert.

Ich halte das für einen Bug, sonst müsste sich der Skript so oder so aber stabil verhalten. Ich würde vorschlagen, dies als Weihnachtsgeschenk den LL in Jira zu melden :) Vor Weihnachten werden die das vermuttlich nicht aufmachen, deshalb.

LG
Jenna
 
Zuletzt bearbeitet:
Hallo Jenna

Danke für deine bestätigenden Tests.

Ich habe LL das Weihnachtsgeschenk gemacht und einen Bugreport verfasst. Mal sehen, wann sie das Paket auspacken ;-)
 

Users who are viewing this thread

Zurück
Oben Unten