logo
Homepage-Sicherheit

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

Mitteilung

Icon
Error

Einloggen


Teilen
Optionen
Ansicht
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline MartinRJ Fayray  
#1 Geschrieben : Dienstag, 19. Dezember 2017 04:40:25(UTC)
MartinRJ Fayray

Rang: Ehrenmitglied

Ansehen:

Mitglied seit: 05.09.2014(UTC)
Beiträge: 91
Germany
Wohnort: Tulln und Rostock

Dankte: 6 mal(e)
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;
    }
}
It is the mark of an educated mind to be able to entertain a thought without accepting it.
Rss Feed  Atom Feed
Benutzer, die gerade dieses Thema lesen
OceanSpiders 2.0
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

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

Datenschutzrichtlinie
Haftungsausschluss
Impressum
Datenschutzerklärung
AGB, ToS
Kontakt