Silberwelten Forum

Normale Version: Zugangs Berechtigungs Check für Türen, Fahrzeuge etc
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Berechtigungs Check


Ein kleines Script das euch zeigt wie man Berchtigungs Checks ausführen kann.
Es enthält 3 Funktionen die durch Berührung des Prims ausgelöst werden:

-   Ownercheck prüft auf Besitzer des Prims, und erlaubt nur diesem den Zugang
-   Groupcheck prüft auf Gruppe des Prims und vergleicht diese mit der aktive Gruppe desjenigen der es berührt. Bei Gleichheit wird Zugang gewährt.
-   Berechtigungcheck ist wie 2. jedoch mit Abfrage ob die Gruppe steuern darf.


Code:
//  P914 Berechtigungcheck Makros zum Einbau in eure Scripte - beispielsweise in Türen
//
//  3 Funktionen die durch Berührung des Prims ausgelöst werden:
//
//    Ownercheck prüft auf Besitzer, und erlaubt nur diesem den Zugang
//
//    Groupcheck prüft auf aktive Gruppe und erlaubt dieser bei Gleichheit mit Primgruppe den Zugang
//
//  P914  Berechtigungscheck erlaubt Besitzer und gleicher aktiver Gruppe den Zugang
//
//  12.2019 by Tron Mcp
//  darf frei verwendet werden.


integer Gruppenerlaubnis = TRUE;    // Festlegen ob Inhaber der gleichen Gruppe das Prim bedienen dürfen [TRUE / FALSE]


integer ownercheck(key pruefling)        // Testen ob Objekt dem Pruefling gehört
{
    key owner = llGetOwner();             // Key des Eigentümer dieses Objektes ermitteln
    if (pruefling == owner) return TRUE;
    else return FALSE;
}


integer groupcheck(key pruefling)        // Testen ob Objekt und aktive Gruppe des Pruflings gleich sind
{
    if (llSameGroup(pruefling)) return TRUE;
    else return FALSE;
}


integer berechtigungscheck(key pruefling) // Testen ob Zugang gewährt werden soll
{
    if ( ownercheck(pruefling) ||  (groupcheck(pruefling) && Gruppenerlaubnis) ) return (TRUE);
    else return (FALSE);
}


default

    state_entry(){}

    touch_start(integer num)
    {
        key userID=llDetectedKey(0);  // UUID Key des berührenden ermitteln

        if (ownercheck(userID)) llSay(0, " Du bist mein Besitzer");
        else llSay(0, " Du bist nicht mein Besitzer");

        if (groupcheck(userID)) llSay(0, " Wir haben die gleiche aktive Gruppe");
        else llSay(0, " Du hast eine andere Gruppe aktiv als ich");

        if (berechtigungscheck(userID)) llSay(0, " Du darfst mich steuern");
        else llSay(0, " Du darfst mich nicht steuern");
    }
}

Viel Spaß

Tron
Hallo Tron, dieses Script steht heute bei mit auf dem Programm. Ich werde es richtig testen und möglicherweise habe ich noch einige Ideen dazu.

Besten Dank