Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Rufknopf Script für Aufzug gesucht
#1
Ich nutze folgendes Aufzugscript was auch prima funzt.
Für jeden Aufzug nutze ich ein verschiedenen Kanal.
So weit so gut.
Nun möchte ich an den Aufzugstationen (oben und unten, zwei Etagen) jeweils ein Aufzugrufknopf realisieren. Ich weis das es geht bekomme aber kein Script dafür hin, kann jemand helfen?

Aufzugscript:
Code:
// Menu controled on sit. Can also be controlled with local chat eg: /33 Floor2

integer CHANNEL = 36; // dialog channel
list MENU_MAIN = ["down","up"]; // the main menu
float BOTTOM = 34.9; // set platform ground floor height
float FLOOR_HEIGHT = 19.0; // alter to suit floor spacing
float SPEED = 1;
float target;
string sound = "ba0101f0-e6da-43cc-a33b-61c172cbfebc";


default
{
    state_entry()
    {

        llListen(CHANNEL, "", NULL_KEY, "");
        llSitTarget(<-0.15, 0.0, 0.75>,ZERO_ROTATION);
        llSetText("Sit",<0.05,0,0>,0.79);
        target = BOTTOM;
        llStopAnimation("sit");
        llStopSound();
    }
  
    listen(integer channel, string name, key id, string message)
    {
        integer idx = llListFindList(MENU_MAIN, [message]);
        if( idx!=-1 )
        {
                      llLoopSound(sound, 1.0);
//            llSay(0,"Elevator heading " + message + "." );
            target = BOTTOM + (idx*FLOOR_HEIGHT);
            state moving;
        }
    }


    changed(integer change)
    {
        if (change & CHANGED_LINK)

        {
      
        key av = llAvatarOnSitTarget();

       if (av !=NULL_KEY)

//          if((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && llGetPermissionsKey() == av)

            
        {
        
//          llStopAnimation("sit");
//          llStartAnimation("vb stand_5arms up p2");
          llPlaySound(sound, 1.0);
          llDialog(av, "Where to?", MENU_MAIN, CHANNEL);      
        }
        
        else
       {
           llStopSound();

//            llRequestPermissions(av, PERMISSION_TRIGGER_ANIMATION);
                      
        }  
  
    }
}
}

state moving
{
  
  
    state_entry()
    {
        llSetTimerEvent(0.1);
    }
  
    timer()
    {

        llSleep(0.25); // just to stop things happening instantly.        
        vector pos = llGetPos();

      
        if( pos.z!=target )
        {
            if( pos.z>target )
            {
                pos.z = pos.z - SPEED;
            }
            else
            {
                pos.z = pos.z + SPEED;
            }
        }
      
        if(  llFabs(pos.z - target) < SPEED )
        {
            pos.z = target;
            llSetTimerEvent(0);
            llSetPos(pos);
//          llSay(0,"Elevator has reached its target." );
            state default;
        }  
      
        llSetPos(pos);
      
    }
}
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#2
Ungetestet aus dem Ärmel geschüttelt, aber sollte etwa so funktionieren:

Für Unten
Code:
default
{
    touch_start(integer i)
    {
        llRegionSay(36, "down");
    }
}

Für Oben
Code:
default
{
    touch_start(integer i)
    {
        llRegionSay(36, "up");
    }
}
[-] The following 1 user says Thank You to Gubbly for this post:
  • Xenos Yifu
Zitieren
#3
Danke dir, Versuch macht kluch ... melde mich obs klappt.
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#4
Bin begeistert, danke Smile
Klappt astrein Big Grin
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#5
Vielleicht ein Denkfehler, aber stauen sich bei dem Aufzugsscript nicht jede Menge Events auf? Das würde sich zwar nicht so offensichtlich bemerkbar machen, weil dann der Aufzug am Ende noch n mal auf den Zielort gesetzt würde, wo er eh schon steht. Nur schön ist anders.

Das Script triggert während der Fahrt Events alle 0,1 Sekunden, also 10 Mal pro Sekunde.
Code:
state_entry()
    {
        llSetTimerEvent(0.1);
    }

Bei jedem Aufruf des Events wird dann erst mal 0,25 Sekunden gewartet. Selbst wenn der Rest des Codes keine Zeit mehr benötigt, passen so höchstens 4 Events in eine Sekunde.
Code:
timer()
    {
        llSleep(0.25); // just to stop things happening instantly.    
        . . .
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Question Tür script gesucht, Tür soll bei Eintritt ein paar meter vorher öffnen Kalkofe 9 646 11.10.2023, 05:37
Letzter Beitrag: Christoph Balhaus
  Geber/ Rezz Script Xenos Yifu 10 4.738 28.11.2020, 14:28
Letzter Beitrag: Kubwa
  Suche Script Gruppe Titoss 4 6.735 27.11.2020, 14:52
Letzter Beitrag: Dorena Verne
  Follow me Script brenner23 3 7.586 29.11.2018, 23:05
Letzter Beitrag: Manfred Aabye
  HG Teleporting Script funktioniert nicht mehr Pharcide 15 19.604 13.07.2018, 19:09
Letzter Beitrag: Anachron

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste