• 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Massenweise NPC NPC NPC NPC NPC
#1
2
Better response on post Massenweise NPC NPC NPC NPC NPCHallo alle,

ich möchte euch mal meinen neuen NPC Controller vorstellen. Ich weiß es gibt schon viele, der hier macht aber einige Sachen deutlich einfacher als alle anderen.
Das ganze System ist darauf ausgelegt möglichst eine ganze Region mit NPCs zu beleben. Sei es eine Stadt wo NPCs herumlaufen oder eine Farm wo NPCs aufgaben erledigen.
Außerdem dient er für meine OS Erweiterung (

[Um Links zu sehen, bitte hier registrieren]

) als Demo. Damit das Script funktioniert muss das Module installiert sein und die Region die YEngine aktiviert haben.

1) Es ist möglich unbegrenzt viele NPCs auf einmal mit demselben Controller zu kontrollieren. (Video 1 )
2) Jeder NPC hat eine NC in dem seine Aufgaben stehen. Es ist fast eine eigene kleine Script Engine eingebaut. (Video 2)
3) Es ist nicht nötig mit UUIDs oder Positionen zu Arbeiten. Alle aufgaben können auch mithilfe von Objektnamen erledigt werden. Es geht aber auch mit Positionen. (Video 2)
4) Es wird auch Pathfinding unterstützt. Dieses Reagiert in echtzeit auf Veränderungen und macht die Erstellung von komplexen wegen sehr einfach. Diese können sich auch verändern. Etwa, wenn irgendwo eine Tür/Tor zu ist oder ein Durchgang blockiert ist. Wink (Video 3)

Video 1 - Massenweise NPCs:

[Um Links zu sehen, bitte hier registrieren]


Video 2 - Keine UUIDs oder Positionen:

[Um Links zu sehen, bitte hier registrieren]


Video 3 - Pathfinding demo:

[Um Links zu sehen, bitte hier registrieren]


Link zum Script:

[Um Links zu sehen, bitte hier registrieren]


Anleitung:
    Das Script erwartet die NPC Appearance und Script Notecard im Objekt Inventar.
    Die Appearance Notecard muss dabei die Endung .appearance haben (Zum beischbiel Chris.appearance)
    Die Script Notecard muss die Endung .path haben. (Zum beischbiel Chris.path)

    Nachdem im Objekt eine beliebige Anzahl von .path Notecards vorhanden ist, werden diese eingelesen und die Befehle in ihr nacheinander ausgeführt.

Befehle:
    Ein Befehl ist wie folgt aufgebaut:
    <aktion>=<parameter>;

    Wenn es mehrere Parameter gibt, werden diese durch ein | getrennt.
    <aktion>=<parameter1>|<parameter2>;

    create
        Erstellt einen neuen NPC
        Es kann pro .path Notecard immer nur 1en NPC geben.
        Parameter:
            1: Vorname
            2: Nachname
            3: Appearance
            4: Startposition Objektname

    remove
        Entfernt den Aktuellen NPC

    say
        Läst den NPC etwas sagen.
        Parameter:
            1: Text

    sit
        Der NPC setzt sich auf ein Objekt
        Parameter:
            1: Objektname

    wait
        Der NPC wartet <anzahl> an Sekunden.
        Parameter:
            1: Anzahl an Sekunden

    stand
        Der NPC steht auf.

    walk
        Der NPC geht zum Ziel. Dabei kann ein Objektname oder eine Position angegeben werden.
        Wenn der NPC auf ein Hindernis trifft, teleportiert er sich zum Ziel.
        Parameter:
            1: Objektname
            ---
            1: Position

    path
        Der NPC sucht sich über Wegpunkte den kürzesten Weg zum Ziel.
        Wenn kein Start Wegpunkt angegeben wird, wird nächste Wegpunkt genommen.
        Parameter:
            1: Wegpunkt Start
            2: Wegpunkt Ziel
            ---
            1: Wegpunkt Ziel

    fly
        Der NPC fliegt zum Ziel.
        Parameter:
            1: Objektname
            ---
            1: Position

    include
        Es wird eine andere Script NC gestartet.
        Parameter:
            1: NC Name

    appearance
        Der NPC nimmt ein neues Aussehen an.
        Parameter:
            1: Appearance

    touch
        Der NPC fürt ein touch für ein Objekt aus.
        Parameter:
            1: Objektname
   
    animation
        Der NPC startet eine Animation.
        Diese muss im Objekt Inventar liegen.
        Parameter:
            1: Animation name

    stopAnimation
        Der NPC stoppt die Animation.
        Parameter:
            1: Animation name

    profileImage
        Der NPC Benutzt das angegebene Bild als Profile Image.
        Diese muss im Objekt Inventar liegen.
        Parameter:
            1: Textur name

    profileText
        Der NPC Benutzt den angegebenen Text als Profile Beschreibung
        Parameter:
            1: Text

    give
        Es wird ein Item aus dem Objekt Inventar an ein anderes Objekt gegeben.
        Diese muss im Objekt Inventar liegen.
        Parameter:
            1: Item Name

    rez
        Es wird ein Objekt aus dem Objekt Inventar an die Stelle des NPC gerezt.
        Diese muss im Objekt Inventar liegen.
        Parameter:
            1: Item Name

Einrichtung Wegpunkte 
    Die Einrichtung von Wegpunkten ist sehr einfach gehalten und funktioniert grundsätzlich mit jedem Objekt.
    Für Wegpunkte sind keine Script nötig.
    Jeder Wegpunkt MUSS grundsätzlich als Beschreibung "PATH_NODE" haben.
    Wenn ein Wegpunkt deaktiviert werden soll, reicht es die Beschreibung zu ändern.

    default
    {
        touch_start(integer i)
        {
            if(llGetObjectDesc() == "PATH_NODE")
            {
                llSetObjectDesc("NO_PATH_NODE");
            }else{
                llSetObjectDesc("PATH_NODE");
            }
           
            osClearNodeCache();
        }
    }

    Als zusätzlicher Schritt ist es nötig Nodes zu Verbinden.
    Dies Geschieht, indem eine NC in das Objekt Inventar gelegt wird und diese den Namen von je einem verbundenen Node hat.

   

[Um Links zu sehen, bitte hier registrieren]

   

[Um Links zu sehen, bitte hier registrieren]


Ich würde mich sehr über Feedback freuen. Auch wenn ihr Funktionen erweitert, welche benötigt oder Fehler findet Wink
Zum Testen und anschauen gibt es das ganze auf meiner Sandbox (inc.li:8002:Twix)

Viel Spaß
IM: Chris.Resident@inc.li:8002 
Sandbox: inc.li:8002:Twix
Discord: Sahrea#0001
Github: 

[Um Links zu sehen, bitte hier registrieren]

 

[Um Links zu sehen, bitte hier registrieren]

  Zitieren
#2
1
Hallo Chris,

das werde ich in den kommenden Tagen mal testen. Den von Satyr finde ich recht umständlich.
Grüße

DarkWolf


-----------------------------------------
Virtual Life
virtual-life.eu:8002
  Zitieren


Bookmarks

Gehe zu:


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