Oblivion:Packages zuweisen: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K
K
 
Zeile 113: Zeile 113:
  
  
{{ Scriptkategorie |AI (Package)|Level 1 Scripts|Packages hinzufügen }}
+
{{ Scriptkategorie |AI (Package)|Level_1_Scripts|Packages hinzufügen }}

Aktuelle Version vom 15. April 2009, 13:38 Uhr

Packages zuweisen

Aufgabenstellung

Agarmir, ein NPC, soll dem Player folgen. Nachdem sie sich getroffen haben, soll er ohne andere Dinge zu tun, dem Player folgen bis sie den Leuchturm von Anvil betreten haben. Danach geht er seiner Wege.


Theorie

Die AI der NPCs wird z.T. über Packages gesteuert. Die Liste dieser Packages, die dem NPC zugeordnet sind kann per Script um weitere Packages ergänzt werden. Diese Liste wird bei NPCs, die sich in der aktuellen Zelle befinden, einmal stündlich ausgewertet, es sei denn, die Auswertung wird per Script forciert.

Es gibt prinzipiell zwei Wege, um Packages einem NPC hinzuzufügen, damit auch zwei prinzipielle Lösungswege. Der eine Weg geht über das Hinzufügen per Script. Der zweite Weg ist, dem Base NPC ein Package hinzuzufügen. Der erste Weg hat den Vorteil, dass kein zusätzliches Package dauerhaft ausgewertet werden muss. Der zweite Weg hat den Vorteil, dass das zusätzliche Package auch nach Unterbrechungen läuft, sofern die Conditions zutreffen. Ob es die höhere Verlässlichkeit wert ist, ca. einmal pro Game-Stunde eine Bedingung auszuwerten, muss jeder für sich entscheiden.


Realisierung (Hinzufügen eines Packages per Script)

Umgebung

Agarmir lebt. Es gibt eine Quest Testquest mit einer Stage 10, die noch nicht erreicht ist, und einer Stage 20.

Es gibt ein Package AgarmirFollow (mit dem Player als Target und keinerlei zeitlicher Einschränkung) Conditions sind keine gesetzt:

AgarmirFollow.png

Script

<tesscript>scn AgarmirFollowScript

Written by keris
18.1.09

short Doonce

begin GameMode

If Doonce == 0 If AgarmirRef.GetInSameCell player == 1 If GetstageDone TestQuest 10 == 0 Setstage TestQuest 10 AgarmirRef.AddScriptPackage AgarmirFollow AgarmirRef.EVP

				Set Doonce to 1

Endif Endif Endif

If AgarmirRef.GetIsCurrentPackage AgarmirFollow == 1 If AgarmirRef.GetInCell AnvilLighthouse == 1; der Leuchtturm wurde betreten AgarmirRef.RemoveScriptPackage ; das per Script hinzu gefügte Package wird gelöscht. Setstage TestQuest 20 Endif Endif

end</tesscript>

Handhabung

Das Script kann als Quest- oder als Objectscript genutzt werden.



Realisierung (dem Base NPC ein Package hinzuzufügen)

Umgebung

Agarmir lebt. Es gibt eine Quest Testquest mit einer Stage 10, die noch nicht erreicht ist, und einer Stage 20.

Es gibt ein Package AgarmirFollow2 (mit dem Player als Target und keinerlei zeitlicher Einschränkung) Conditions sind folgende gesetzt:

AgarmirFollow2.png

Das Package muss in der Packageliste oben stehen, damit es bei erfüllter Condition auch prioritär ausgeführt wird.

AgarmirPackages.png

Script

<tesscript>scn AgarmirFollowScript

Written by keris
18.1.09

short Doonce

begin GameMode

If Doonce == 0 If AgarmirRef.GetInSameCell player == 1 If GetstageDone TestQuest 10 == 0 Setstage TestQuest 10 AgarmirRef.EVP ; nach Erreichen der Bedingung für das Package

				Set Doonce to 1

Endif Endif Endif

If Getstage TestQuest == 10 ; Agarmir folgt If AgarmirRef.GetInCell AnvilLighthouse == 1; der Leuchtturm wurde betreten Setstage TestQuest 20 AgarmirRef.EVP Endif Endif

end</tesscript>


Handhabung

Das Script kann als Quest- oder als Objectscript genutzt werden. Es empfiehlt sich, statt die AI die Bedingungen prüfen zu lassen, indem man das EvaluatePackage aufzuruft, stattdessen wie oben gezeigt im Script nach der Package-Bedingung abzufragt und erst bei Erfüllung das EvaluatePackage aufzuruft.


Weiterführende Hinweise



Weitere Scripts aus dieser Kategorie

  

     

    Level 3

       



    {{#if: AI (Package) | }} {{#if: Level_1_Scripts | }}