Oblivion:Items hinzufügen/ entfernen: Unterschied zwischen den Versionen
K (hat „Oblivion:Inventar“ nach „Oblivion:Items hinzufügen/ entfernen“ verschoben) |
|
(kein Unterschied)
|
Version vom 13. November 2008, 22:01 Uhr
In dieser Kategorie finden sich Informationen über die Handhabung von Inventaren.
Inhaltsverzeichnis
Allgemeine Bemerkung
Sowohl bei dem Inventar des Players, als auch dem von NPCs, gefallenen Gegnern und Truhen (etc.) spricht man von "Containern".
Sie funktionieren folglich alle nach dem gleichen Prinzip und können daher auch gleich behandelt und durch Skripte angesprochen werden.
Hinzufügen und Entfernen von Gegenständen
Anwendung
Aufgabenstellung
Durch das Aktivieren eines Gegenstandes im Spiel (z.B. eine Art "Münzpräge") soll ein Gegenstand (hier: Goldnugget) im Inventar des Players gegen mehrere andere (hier: 100 Goldmünzen) ausgetauscht werden.
Theorie
Das Austauschen wird dadurch erreicht, dass wir zuerst den geforderten Gegenstand, also das Goldnugget, aus dem Invnetar des Players entfernen und dann die 100 Goldmünzen dafür hinzufügen.
Die Befehle:
[ActorID].removeItem (ObjectID) Count
[ActorID].addItem (ObjectID) Count
Die "ActorID" ist der Player, die "ObjectID" sind das Goldnugget (Gem0GoldNugget) und die Goldmünzen (Gold001) und "Count" die jeweilige Anzahl.
Realisierung
Umgebung
Das Script liegt auf dem Activator (z.B. der erwähnten Münzpräge), den der Player im Spiel betätigen soll.
Script
<tesscript> scn CoinScript
- written by Leila Ithil
- 24.10.2008
short doonce
begin OnActivate player
if doonce == 0 player.removeItem Gem0GoldNugget 1 player.addItem Gold001 100 set doonce to 1 endif
End </tesscript>
Bemerkung
Durch die Variable 'doonce' ist der ganze Vorgang in dem letzten Script auf einen Durchlauf beschränkt. Danach wird die Prägestätte nicht mehr funktionieren, auch wenn sich noch mehrere Goldnuggets im Inventar des Players befinden. Sie ist aber zwingend notwendig, da der Player ansonsten bei weiterem Aktivieren immer wieder 100 Goldmünzen erhalten würde, selbst wenn sich bereits keine Goldnuggets mehr in seinem Inventar befänden. (Lösung: siehe dazu Kapitel 3).
Handhabung
Das Script sollte als Objekt-Script genutzt werden.
Anzahl/ Menge bestimmter Items
Anwendung
Aufgabenstellung
Der Austausch von Goldnuggets gegen Geld im vorherigen Script soll nun so lange möglich sein, wie der Player noch Goldnuggets im Inventar hat.
Theorie
Es muss die Anzahl der Goldnuggets im Inventar überprüft werden. Solange diese größer als 0 ist, können weiterhin Münzen geprägt werden.
Der Befehl:
[ActorID].getItemCount [ObjectID]
"ActorID" ist wieder der Player, die "ObjectID" ist natürlich das Goldnugget (Gem0GoldNugget).
Realisierung
Umgebung
Das Script liegt wieder auf einem Activator.
Script
Hier gibt es nun zwei Möglichkeiten:
1.) entweder man vergleicht die Anzahl der Nuggets direkt mit einem Wert:
<tesscript>
scn CoinScript
- written by Leila Ithil
- 24.10.2008
begin OnActivate player
if player.getItemCount Gem0GoldNugget > 0 player.removeItem Gem0GoldNugget 1 player.addItem Gold001 100 endif
End </tesscript>
2.) oder man belegt eine Variable mit der Anzahl der Nuggets und vergleicht diese dann mit einem Wert: <tesscript> scn CoinScript
- written by Leila Ithil
- 24.10.2008
short NuggetCount
begin OnActivate player
set NuggetCount to player.getItemCount Gem0GoldNugget
if NuggetCount > 0 player.removeItem Gem0GoldNugget 1 player.addItem Gold001 100 endif
End </tesscript>
Bemerkung
Die Funktion beider Scripts ist, wie erwähnt die Gleiche. Allerdings bietet das zweite Script - neben etwas mehr Schreibarbeit - den Vorteil, dass man die Anzahl der Nuggets, gespeichert in der Variable 'NuggetCount' weiter verwenden könnte ... mit welchem Ziel auch immer.
Handhabung
Das Script sollte als Objekt-Script genutzt werden.