GridTalk.de

Normale Version: Tür script gesucht, Tür soll bei Eintritt ein paar meter vorher öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

die Überschrift ist Kacke, ich weiß g. Also ich suche
ein Script, wahrscheinlich müssen es zwei sei, wo sich
eine Türe ein, zwei Meter bevor ich die vor betreten eines
Raumes öffnet. Ein Script worauf man tritt um den Befehl der Türöffnung
auszulösen und eines für die Türe. Gibt es so was für OpenSim?

LG
Kalk
Hallo Kalkofe ;D

Dann müsste sowas wie einen Sensor bzw. ein Art Trigger vor der Tür sein, denke ich mal. Muss aber gestehen, das ich nur wenig Ahnung von Scrpts hab ;D
Der Sensor ist ja im Skript, physikalisch gibts den nicht. Also nur ein Skript pro Tür.
Hallo ;D

Jup Bekki ;D Aber wie gesagt, ich hab nicht soviel bzw, gar keine Ahnung von Scripts ;D

Aber ich hab mal danach gesucht und hab dieses gefunden ;D
https://github.com/uriesk/Door-Script-YADS
https://opensimworld.com/library
https://outworldz.com/cgi/freescripts.plx?Category=Door

Ok, der hier passt nicht so zum Thema, aber schaut mal von wem die Webseite ist ?
https://becunningandfulloftricks.com/201...-and-jibe/

Da kann man sehen, wie lange schon OpenSim gibt und wir immer noch da sind, da können andere Plattformen von Träumen ;D
Theoretisch wäre es machbar in einem Tür Script einen Listener einzubauen der die Befehle zum Öffnen der Türe empfängt.

Der Sender könnte sich dann in einem entfernten Prim befindet, der über einen Sensor oder einen Collision Event gesteuert die Message mit dem Befehl zum Öffnen der Türe abschickt.

Einfacher wird es aber wahrscheinlich sein dazu einfach einen Sensor als Teil des Tür-Scripts selber zu verwenden.

Wo du ein passendes Script finden kannst, weiss ich jetzt auch nicht. Ich würde es mal in der Sammlung von Outworldz versuchen und mir dort die Kategorie Door zu Gemüte führen. Sie enthält 44 Door Scripte. Schau dir mal die Timeless-Scripte an, darunter könnte was sein.

Aber vielleicht kann dir jemand im Forum was passendes anbieten.
Die Idee mit einem vorgelagerten Collision-Objekt scheitert an der Tatsache, dass dieses dann auch beim rückwärtigen Durchgang (also beim Verlassen des Türbereichs) getriggert würde ...
Ich denke für das in Frage stehende Problem ist ein Sensor die richtige Herangehensweise.
Mit dem Sensor geht das prima, weil man dann ja auch die Richtung auswerten kann, also von welcher Seite man kommt. Leider ist es nicht möglich, ein allgemeines Skript anzugeben, weil die ganze Sache ja auch von Art und Aufbau der Tür abhängt. Im Internet gibt es aber hunderte Skripte dazu.
(07.10.2023, 23:42)Anachron schrieb: [ -> ]Die Idee mit einem vorgelagerten Collision-Objekt scheitert an der Tatsache, dass dieses dann auch beim rückwärtigen Durchgang (also beim Verlassen des Türbereichs) getriggert würde ...
Ich denke für das in Frage stehende Problem ist ein Sensor die richtige Herangehensweise.
Wenn du eine Bodenplatte als Trigger nehmen willst, ließe sich das wohl mit einem Timer lösen. Aber ein Timer ist schon ein Problem an und für sich. Leistungsbedarf und so.

(08.10.2023, 12:13)Rebekka Revnik schrieb: [ -> ]Mit dem Sensor geht das prima, weil man dann ja auch die Richtung auswerten kann, also von welcher Seite man kommt. Leider ist es nicht möglich, ein allgemeines Skript anzugeben, weil die ganze Sache ja auch von Art und Aufbau der Tür abhängt. Im Internet gibt es aber hunderte Skripte dazu.
Dann müßte man den Sensor aufrecht hinstellen und ihn nur bei Berührung von einer Seite auslösen lassen. Sollte wohl gehen, ich glaub, ich hab das mal bei Kollisionsteleportern gesehen.
(10.10.2023, 21:13)Jupiter Rowland schrieb: [ -> ]...
Dann müßte man den Sensor aufrecht hinstellen und ihn nur bei Berührung von einer Seite auslösen lassen. Sollte wohl gehen, ich glaub, ich hab das mal bei Kollisionsteleportern gesehen.

Da liegt ein Misverständnis vor ... der Sensor hat nichts mit Collision zu tun ...

Und nein, ein Collision-Event kann nicht nur für eine Seite ausgelöst werden - es bezieht sich auf das Volumen des Collisions-körpers.

Das Problem bei einem Sensor ist leider, dass er, wenn er zeitnah reagieren soll, mit einem relativ kleinen Intervall arbeiten muss und daher einige Systemlast verursachen dürfte.
Die Richtungserkennung funktioniert wunderbar mit einem Collision-Event und erzeugt viel weniger Lag als ein Sensor.

Der Event triggert zwar immer, aber mit llDetectedPos() und ein klein wenig Rechnerei lässt sich in der Eventbehandlung leicht erkennen von welcher Seite er ausgelöst wurde. Hier ein einfaches Beispiel um die beiden Seiten/Richtungen auf der (lokalern) X-Achse zu unterscheiden:

Code:
default {
// erkennt und unterscheidet Kollisionen mit den beiden Flächen in (lokaler) X-Richtung

    state_entry() {
        llVolumeDetect(TRUE);  // quasi Phantom, aber mit funktionierenden Kollisionen
    }
    
    collision_start(integer num_detected) {
        rotation objectRot = llGetRot();
        vector objectPos = llGetPos()/objectRot;
        vector detectedPos = llDetectedPos(0)/objectRot;
        if (detectedPos.x > objectPos.x) {
            llSay(0, "Side 1");    // Eintritt von Seite 1
        } else {
            llSay(0, "Side 2");    // Eintritt von Seite 2
        }
    }
}

Edit:
Aber für eine normale Türsteuerung ist das unnötig kompliziert. Einfache Collision-Objekte, entweder ein grosses das beide Seiten umfasst oder zwei kleine auf beiden Seiten der Tür sind i.a. völlig ausreichend. Die Richtung aus der man kommt ist dabei belanglos, denn die Tür sollte ein extra Signal zum öffnen ignorieren, wenn sie ohnehin schon offen steht.

Mit der Richtungserkennung lässt sich aber z.B. eine Saloontür realisieren, die abhängig von der Richtung in der sie durchschritten wird in unterschiedliche Richtungen schwingen soll.

/Chris