logo
Homepage-Sicherheit

Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Einloggen


Beitrag melden
Geschrieben von: MartinRJ Fayray Offline Geschrieben Dienstag, 19. Dezember 2017 04:40:25(UTC)
Das folgende Skript erzeugt einen Alarm, wenn sich ein Avatar auf unter 80 Meter nähert. Für "Freunde" in Chatreichweite wird jedoch kein Alarm ausgegeben.

Das Skript merkt sich die Avatare für die bereits ein Alarm erzeugt worden ist.
Alle 10 Minuten werden diese Alarme von der Liste entfernt.
Avatare die die Sim verlassen werden ebenfalls von der Alarm-Liste gelöscht.

Mit der Variable "fDistance" kann man die Alarm-Distanz festlegen.

Code:

list lAlerts = [];
float fTimer = 5.0; //Sekunden
float fDistance = 80.0; //Meter
float fNearbyDistance = 25.0; //Meter
integer iSecondsToClear = 600; //Sekunden
string sAlert = " ist in Sensorreichweite gekommen."; //Textnachricht
default
{
    state_entry()
    {
        llSetTimerEvent(fTimer);
    }

    timer()
    {
        list lNewList = llGetAgentList(AGENT_LIST_REGION, []);
        list lAlertsTemp = [];
        integer iCount = 0;
        integer iLength = llGetListLength(lNewList);
        key kID;
        float fDist = 0.0;
        for (iCount = 0; iCount < iLength; iCount++)
        {
            kID = llList2Key(lNewList, iCount);
            fDist = llVecDist(llGetPos(), llList2Vector(llGetObjectDetails(kID, [OBJECT_POS]), 0));
            if (fDist < fDistance && fDist > fNearbyDistance)
            {
                if (llListFindList(lAlerts, [kID]) == -1)
                { //alert
                    llOwnerSay(llGetUsername(kID) + sAlert);
                    lAlertsTemp += [kID, llGetUnixTime()];
                }
            }
        }
        lAlerts += lAlertsTemp;
        lAlertsTemp = [];
        iLength = llGetListLength(lAlerts);
        for (iCount = 0; iCount < iLength; iCount = iCount + 2)
        {
            kID = llList2Key(lAlerts, iCount);
            if (llGetAgentSize(kID))
            {
                if (llGetUnixTime() - llList2Integer(lAlerts, iCount+1) < iSecondsToClear)
                { //Agent still in sim, and alert less than 10 minutes.
                    lAlertsTemp += [kID, llList2Integer(lAlerts, iCount+1)];
                }
            }
        }
        lAlerts = lAlertsTemp;
    }
}
Geben Sie den Meldetext hier ein.
Fett Kursiv Unterstrichen   Hervorheben Zitat Sprachauswahl für Syntax Highlighting Bild einfügen Link einfügen   Unsortierte Liste Sortierte Liste   Linksbündig Zentriert Rechtsbündig   Herausrücken Einrücken   Weitere BBCodes
Schriftfarbe: Schriftgröße:
Melden Abbruch

Powered by YAF.NET | YAF.NET © 2003-2018, Yet Another Forum.NET
Diese Seite wurde in 0.043 Sekunden generiert.

Datenschutzrichtlinie
Haftungsausschluss
Impressum
Datenschutzerklärung
AGB, ToS
Kontakt