Beiträge: 1.192
Themen: 128
Thanks Received: 1.066 in 558 posts
Thanks Given: 833
Registriert seit: May 2020
27.02.2024, 16:07
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2024, 19:54 von Xenos Yifu.)
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.
Beiträge: 401
Themen: 16
Thanks Received: 222 in 113 posts
Thanks Given: 803
Registriert seit: Sep 2017
27.02.2024, 19:22
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2024, 19:22 von Pius Noel.)
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.
Beiträge: 2.423
Themen: 85
Thanks Received: 1.614 in 566 posts
Thanks Given: 1.791
Registriert seit: Oct 2011
27.02.2024, 19:56
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2024, 20:01 von Anachron.)
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.
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Beiträge: 1.192
Themen: 128
Thanks Received: 1.066 in 558 posts
Thanks Given: 833
Registriert seit: May 2020
Schon mal danke. So scheint der Fehler wenigstens nicht bei mir zu liegen.
Beiträge: 1.192
Themen: 128
Thanks Received: 1.066 in 558 posts
Thanks Given: 833
Registriert seit: May 2020
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. **//
Beiträge: 401
Themen: 16
Thanks Received: 222 in 113 posts
Thanks Given: 803
Registriert seit: Sep 2017
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.
Beiträge: 1.192
Themen: 128
Thanks Received: 1.066 in 558 posts
Thanks Given: 833
Registriert seit: May 2020
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.
Beiträge: 26
Themen: 5
Thanks Received: 26 in 15 posts
Thanks Given: 8
Registriert seit: Mar 2024
Ich habe dieses Problem nicht mehr, seit ich den physischen Ubode entfernt habe
Beiträge: 26
Themen: 5
Thanks Received: 26 in 15 posts
Thanks Given: 8
Registriert seit: Mar 2024
Osgrid blockiert viele Anfragen, viele Dinge funktionieren nicht mehr
Beiträge: 1.192
Themen: 128
Thanks Received: 1.066 in 558 posts
Thanks Given: 833
Registriert seit: May 2020
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...
|