Silberwelten Forum

Normale Version: AVA und BOT Erkennung auf der Sim
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Makro zur Erkennung ob sich AVAs auf der Sim aufhalten


Manche Funktionen der Sim sollen nur aktiv werden wenn sich ein Ava darauf befindet.
Dies habe ich angewendet um Surfwellen zu stoppen wenn keiner mehr auf der Sim ist. 

Da ich aber auf der Sim Bots gerezzt habe brauche ich eine Funktion die Avas von Bots unterscheidet.

Dieses leistet das die folgende Funktion:

Sie gibt TRUE zurück wenn ein Ava gefunden wurde.
Ansonsten gibt sie FALSE zurück.


Code:
// Meldet nur Avas, aber nicht Bots zurück
integer avacheck()
{
    integer laufvar;
    key avakey;
    integer bot;
    vector pos =  llGetPos();
    list avatarliste = llGetAgentList(AGENT_LIST_PARCEL, []); // Liste der Avatare in der Sim holen
    for (laufvar = 0; laufvar <= llGetListLength(avatarliste); laufvar++)
    {
        avakey = llList2Key(avatarliste, laufvar);
        bot = osIsNpc(avakey);
        if(!bot) { return (TRUE);}
    }
    return (FALSE);
}



Anwendungs Beispiel:


Code:
// By Tron Mcp 2021 Creative Common 1.1

// Meldet nur Avas, aber nicht Bots zurück
integer avacheck()
{
    integer laufvar;
    key avakey;
    integer bot;
    vector pos =  llGetPos();
    list avatarliste = llGetAgentList(AGENT_LIST_PARCEL, []); // Liste der Avatare in der Sim holen
    for (laufvar = 0; laufvar <= llGetListLength(avatarliste); laufvar++)
    {
        avakey = llList2Key(avatarliste, laufvar);
        bot = osIsNpc(avakey);
        if(bot) { llSay(0,"bot gefunden "+avakey);}
        else { return (TRUE); }
    }
    return (FALSE);
}


default
{
    state_entry()
    {      
        integer wer_da = avacheck();
       
        if (wer_da) llSay(0, "Ava auf Sim gefunden");
        else llSay(0, "Keiner da");
    }
}

Aktualisiert auf Stand 12-2023.


Viel Spaß

Tron