GridTalk.de
[gelöst] Kollisionscript Probleme - Druckversion

+- GridTalk.de (https://www.gridtalk.de)
+-- Forum: Werkstatt (https://www.gridtalk.de/forumdisplay.php?fid=4)
+--- Forum: Technik (https://www.gridtalk.de/forumdisplay.php?fid=25)
+--- Thema: [gelöst] Kollisionscript Probleme (/showthread.php?tid=4813)

Seiten: 1 2


[gelöst] Kollisionscript Probleme - Xenos Yifu - 27.02.2024

Ich habe ein merkwürdiges Problem mit Kollisionscripte.
Betroffen sind im Moment Walkthrough Teleporter und Türen.
Aus heiterem Himmel reagieren sie nicht auf Kollisionen.
Per Mausklick arbeiten sie völlig korrekt.

Dann auf einmal arbeiten sie wieder völlig normal.
Ist das ein Problem, was speziell im OS-Grid auftritt?
Gezielt reproduzieren kann ich den Fehler auch nicht.

Auch neu einloggen, oder wegteleportieren und zurück hilft nicht.

Das ist vor allem lästig, wenn Gäste deswegen nicht zu Events gelangen.


RE: Kollisionscript Probleme - Pius Noel - 27.02.2024

Ich habe jetzt mal auf der ansonsten leeren OSGrid Region Osimgo einen Würfel mit einem Walkthrough Teleporter Script aufgestellt und habe dasselbe Problem.

Mein Script basiert auf dem osTeleportAgent (mit 3 Parametern) und der Vorgang wird durch einen collision_start Event getriggert. Mein Script ist schon ein paar Jahre alt. Ich hatte das mal irgendwo aufgelesen und für meine Zwecke angepasst. Da dein Script auch mit Partikeln spielt, gehe ich davon aus, dass es von der gleichen Basis stammt.

Ich werde am Wochenende mal ein wenig testen und versuchen der Sache auf den Grund zu gehen. Ggf. werde ich das Problem dann in die Mantis stellen.


RE: Kollisionscript Probleme - Anachron - 27.02.2024

Ist osTeleportAgent für das OS-Grid denn zugelassen? Oder anders gefragt: Liegt es am Collision-Event, oder an osTeleportAgent, dass es nicht funktioniert?

P.S. Dass Collision-Scripts gelegentlich mal die Arbeit verweigern, haben wir in DW allerdings auch schon beobachtet, da ist osTeleportAgent eindeutig nicht das Problem, nach einem Neustart der Region geht es dann in der Regel aber wieder. Die Ursache für dieses Verhalten konnten wir aber bislang nicht finden.


RE: Kollisionscript Probleme - Xenos Yifu - 27.02.2024

Schon mal danke. So scheint der Fehler wenigstens nicht bei mir zu liegen.


RE: Kollisionscript Probleme - Xenos Yifu - 27.02.2024

Hier das Script.

Code:
// :CATEGORY:HyperGate
// :NAME:OpenSim WalkthroughTeleporter

string  GridName     = "Visit Xenos Freebie Center\n";
string  SimAddress   = "Xenotown"; // use region name for inworld locations
string  LastVerified = "\n";
string  Message      = "";
string  BoilerPlate  = "\nWalk through to teleport";
vector  LandingPoint = <575.0, 160.0, 21.0>;
vector  TextColor    = <0,1,1>;
vector  LookAt       = <1.0,1.0,0.0>;

key     AgentToTransfer;
list    LastFewAgents;

string  CONTROLLER_ID       = "A";
integer AUTO_START          = TRUE;
list    particle_parameters = [];
list    target_parameters   = [];

StartEffects()
{
    // llCollisionSound("tos-computer-03", 1.0);
    
    particle_parameters = [
        PSYS_SRC_TEXTURE,          llGetInventoryName(INVENTORY_TEXTURE, 0),
        PSYS_PART_START_SCALE,     <0.10,0.10, FALSE>,
        PSYS_PART_END_SCALE,       <1.00,1.00, FALSE>,
        PSYS_PART_START_COLOR,     <1,1,1>,
        PSYS_PART_END_COLOR,       <1,1,1>,
        PSYS_PART_START_ALPHA,     (float)1.0,
        PSYS_PART_END_ALPHA,       (float)0.0,    
        PSYS_SRC_BURST_PART_COUNT, 500,
        PSYS_SRC_BURST_RATE,       (float)0.01,  
        PSYS_PART_MAX_AGE,         (float)1.0,
        PSYS_SRC_MAX_AGE,          (float)0.6,  
        PSYS_SRC_PATTERN,          2,
        PSYS_SRC_ACCEL,            <0.0,0.0,-3.0>,  
        PSYS_SRC_BURST_SPEED_MIN,  (float)1.2,
        PSYS_SRC_BURST_SPEED_MAX,  (float)5.01,
        PSYS_SRC_ANGLE_BEGIN,      (float)0.25*PI,
        PSYS_SRC_ANGLE_END,        (float)0.00*PI,  
        PSYS_SRC_OMEGA,            <0,0,0>,      
        PSYS_PART_FLAGS, ( 0
                            | PSYS_PART_INTERP_COLOR_MASK  
                            | PSYS_PART_INTERP_SCALE_MASK  
                            | PSYS_PART_EMISSIVE_MASK  
                            | PSYS_PART_FOLLOW_VELOCITY_MASK
                            | PSYS_PART_WIND_MASK            
                         )                  
    ];
        
    if ( AUTO_START ) llParticleSystem( particle_parameters );
}

PerformTeleport( key WhomToTeleport )
{
    integer CurrentTime = llGetUnixTime();
    integer AgentIndex = llListFindList( LastFewAgents, [ WhomToTeleport ] );
    if (AgentIndex != -1)
    {
        integer PreviousTime = llList2Integer ( LastFewAgents, AgentIndex+1 );
        if (PreviousTime >= (CurrentTime -5)) return;
        LastFewAgents = llDeleteSubList( LastFewAgents, AgentIndex, AgentIndex+1);
    }
    LastFewAgents += [ WhomToTeleport, CurrentTime ];
    osTeleportAgent( WhomToTeleport, SimAddress, LandingPoint, LookAt );
}

default
{  
    on_rez(integer start_param)
    {
        llResetScript();
    }
    
    state_entry()
    {
        //llSetTextureAnim(ANIM_ON | SMOOTH | LOOP, ALL_SIDES, 0, 0, 0, 0, .05);
        llSetText(GridName + SimAddress + BoilerPlate + LastVerified + Message, TextColor, 1);  
    }
    
    collision_start(integer num_detected)
    {
        StartEffects();
    
        if(llDetectedKey(0) != AgentToTransfer)
        {
            AgentToTransfer=llDetectedKey(0);
            PerformTeleport( llDetectedKey(0));
        }
        else
        {
            llSetTimerEvent(3);
        }
    }
    
    timer()
    {
        AgentToTransfer="";
        llSetTimerEvent(0);
    }
    
    touch_start(integer num_detected)
    {
        llGiveInventory(llDetectedKey(0),llGetInventoryName(INVENTORY_NOTECARD, 0));
    }
    
    link_message( integer sibling, integer num, string mesg, key target_key )
    {
        if ( mesg != CONTROLLER_ID ) { // this message isn't for me.  Bail out.
            return;
        } else if ( num == 0 ) { // Message says to turn particles OFF:
            llParticleSystem( [ ] );
        } else if ( num == 1 ) { // Message says to turn particles ON:
            llParticleSystem( particle_parameters + target_parameters );
        } else if ( num == 2 ) { // Turn on, and remember and use the key sent us as a target:
            target_parameters = [ PSYS_SRC_TARGET_KEY, target_key ];
            llParticleSystem( particle_parameters + target_parameters );
        } else { // bad instruction number
            // do nothing.
        }            
    }
}

//// "Explosion" PARTICLE TEMPLATE v1 - by Jopsy Pendragon - 4/8/2008
//// You are free to use this script as you please, so long as you include this line:
//** The original 'free' version of this script came from THE PARTICLE LABORATORY. **//



RE: Kollisionscript Probleme - Pius Noel - 02.03.2024

Das Problem scheint mir eher mit der Logik im Script und dem Timer zu tun zu haben. Sowohl osTeleportAgent (auch mit 4 Argumenten) als auch der collision_start Event sollten im OSGrid funktinieren. Meine Möglichkeiten zum Testen bzw. eine andere Lösung anzubieten sind im Moment beschränkt, da ich selber im OSGrid noch ein gröseres Problem habe, das mich in Anspruch nimmt.


RE: Kollisionscript Probleme - Xenos Yifu - 02.03.2024

Bis jetzt sieht es so aus das der pragmatischste Weg ist, den Sim neu zu starten.
Türen arbeiten zuverlässig, Teleporter auch.
Einzig, was aber niemand abschreckt, denke ich, besteht darin das man manchmal zweimal gegen die Teleporter laufen muss.

Ein Neustart pro Woche sollte langen.


RE: Kollisionscript Probleme - royalgrid - 08.03.2024

Ich habe dieses Problem nicht mehr, seit ich den physischen Ubode entfernt habe


RE: Kollisionscript Probleme - royalgrid - 08.03.2024

Osgrid blockiert viele Anfragen, viele Dinge funktionieren nicht mehr


RE: Kollisionscript Probleme - Xenos Yifu - 17.03.2024

Ich überlege gerade die Walkthroughteleporter in die Tonne zu kloppen.
Es wird immer schlimmer, trotz ganz frischem Neustart.
Ich kann doch den Leuten nicht zumuten, bis zu 5-mal davor zu laufen. *sauer bin...