Gut, also ne ausführliche Erklärung.
Meine Annahme: Das Skript was du erstellst, erstellst du im Dialog/Quest-Menü, wo du nur ein kleines Fenster hast und dort Code eintragen kannst. (Scripts - Begin/End - Papyrus Fragment)
Ausserdem nehme ich an, dass das Tutorialskript dort bereits lauffähig erstellt worden ist.
Konvention: Im folgendem Code-Abschnitt werden Kommentare durch #text gekennzeichnet. (Die musst und solltest du NICHT übernehmen, sonst gibs Fehler)
Fangen wir an: Du öffnest deinen Quest und gehst an die Stelle wo das Skript laufen soll (also Dialog Views, irgendeine Queststage etc etc).
In der rechten Box(Scriptname) wählst du dein Script (TIF__irgendneKennung) und klickst auf Properties.
Dort jetzt: Add Property: Type: Actor; Name: PlayerRef, Rest unverändert. Bestätigen.
Add Property: Type: Actor; Name: Ref_Halkuur (Den nötigen Namen findest du SO: Deinen NPC im 3D Fenster aufsuchen, anwählen, rechtsklicken: Edit. Dort den Namen verwenden der unter "Reference Editor ID" steht. Falls keiner dort steht denk dir einen aus, schreib ihn dort rein und verwende den. (Anmerkung: Evtl geht mit unique-Npcs auch die Base-Reference aber das müsste ein erfahrenerer Modder sagen)
Add Property: Type: MiscItem; Name: DeinSchlüssel (Den hierfür nötigen Namen findest du wenn du im ObjectWindow dein Item öffnest unter "ID").
Anschließend klickst du auf Auto-Fill All.
Wenn jetzt unter Value in der Liste überall was steht hast du alles richtig gemacht.
Danach gehst du ins Code Fenster ("Papyrus Fragment" wahrscheinlich unter "Begin:")
und fügst folgendes wie von mir gesagtes und von nnw zusammengefassten Code hinzu:
Code:
int count; #Ein Zahlenwert der die Menge der aufgenommen Schlüssel eines Typs repräsentieren soll
count = PlayerRef.GetItemCount(DeinSchlüssel) #Abfrage wieviele Schlüssel der Spieler hat
PlayerRef.RemoveItem(DeinSchlüssel, count, false, Ref_Halkuur) #Entfernen der Schlüssel aus deinem Inventar (mit Meldung) und platzieren im Inventar deines NPCs
Wenn du nicht möchtest dass dein NPC mehrere Schlüssel des gleichen Typs hat mach es so wie nnw es geschrieben hat.
Jetzt zu deinen spezifischen Nachfragen (Die obiger Text wahrscheinlich schon zT hoffentlich beantwortet hat):
1. Siehe oben, du musst eine Property namens PlayerRef anlegen
2. Ja genau, es muss dann dort false stehen
3. Siehe oben, ja.
4. Entweder schätzt du den Wert ab oder machst es wie oben genannt durch GetItemCount
5. Du fügst sieben weitere Propertys zu den bisher bestehenden hinzu, die den Wert und Namen deiner anderen Schlüssel haben. Dann wiederholst du die letzten beiden Zeilen des Skripts und änderst jeweils den Namen zu einem der anderen Items um.
6. Du fügst den Code genau da hinzu wo du möchtest dass er abläuft
Wenn das genau dann ist wenn auch das Questitem übergeben wird, schreibst du es auch dorthin (Einfach dadrüber oder drunter). Eine spürbare Längenbegrenzung haben die Skripte meines Wissens nach nicht.
7. Ja kann man. Ist jedoch ein wenig anders (wenn auch nicht viel).
@nnw/unten: ups, sry, habs total vergessen dass die auch in arrays gespeichert werden können