Oblivion:Items hinzufügen/ entfernen: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
In dieser Kategorie finden sich Informationen über die Handhabung von Inventaren.
 
 
[[Kategorie:Modifikationen]]
 
 
 
== Allgemeine Bemerkung ==
 
== Allgemeine Bemerkung ==
 
Sowohl bei dem Inventar des Players, als auch dem von NPCs, gefallenen Gegnern und Truhen (etc.) spricht man von "<u>Containern</u>". <br>
 
Sowohl bei dem Inventar des Players, als auch dem von NPCs, gefallenen Gegnern und Truhen (etc.) spricht man von "<u>Containern</u>". <br>
Zeile 18: Zeile 14:
  
 
==== Theorie ====
 
==== 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.
+
Das Austauschen wird dadurch erreicht, dass wir zuerst den geforderten Gegenstand, also das Goldnugget, aus dem Inventar des Players entfernen und dann die 100 Goldmünzen dafür hinzufügen.
 
Die Befehle: <br>
 
Die Befehle: <br>
[ActorID].removeItem (ObjectID) Count <br>
+
[ActorRef].removeItem (ObjectID) Count <br>
[ActorID].addItem (ObjectID) Count <br>
+
[ActorRef].addItem (ObjectID) Count <br>
Die "ActorID" ist der Player, die "ObjectID" sind das Goldnugget (Gem0GoldNugget) und die Goldmünzen (Gold001) und "Count" die jeweilige Anzahl.
+
"ActorRef" ist die Referenz des Containers, dem Items hinzugefügt/ entfernt werden sollen (hier: Player).<br>
 
+
"ObjectID" ist die ID der Items die hinzugefügt/ entfernt werden sollen (hier: Goldmünzen (Gold001) bzw. Goldnuggets (Gem0GoldNugget)).<br>
 +
"Count" ist die jeweilige Anzahl, die entweder direkt als Zahl oder als deklarierte Variable angegeben werden kann.
  
 
=== Realisierung ===
 
=== Realisierung ===
Zeile 50: Zeile 47:
  
 
==== Bemerkung ====
 
==== 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).
+
Da sich in dem Script keine Abfrage befindet, die feststellen kann, ob und wie viele Goldnuggets sich im Inventar befinden, wird man die 100 Goldstücke immer erhalten, auch wenn man eigentlich nichts zum Verarbeiten im Inventar hat.<br>
 
+
Um das Ganze nicht zu einem Cheat werden zu lassen, kann man wie gezeigt so vorgehen, dass man eine Variable (doonce) einbaut. Diese ermöglicht hier, dass der ganze Vorgang nur einmal ausgeführt wird, da die Abfrage bei einem zweiten Durchgang keinen akzeptablen Wert mehr zurück gibt.<br>
==== Handhabung ====
+
Man kann aber natürlich auch die Anzahl der Goldnuggets überprüfen und dementsprechend Gold ausgeben lassen. (Lösung: siehe [[ob:Anzahl bestimmter Items|Anzahl bestimmter Items]]).
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. <br>
 
Der Befehl: <br>
 
[ActorID].getItemCount [ObjectID] <br>
 
"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: <br>
 
 
 
1.) entweder man vergleicht die Anzahl der Nuggets direkt mit einem Wert: <br>
 
<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 ====
 
==== Handhabung ====
 
Das Script sollte als Objekt-Script genutzt werden.
 
Das Script sollte als Objekt-Script genutzt werden.
  
 +
[[Kategorie:Inventar|Items dem Inventar hinzufügen/ entfernen]]
  
 
+
{{ Scriptkategorie |Inventar|Level_1_Scripts}}
== komplettes Inventar ablegen ==
 
 
 
 
 
== Aktivieren im Inventar ==
 
[[Kategorie:Items dem Inventar hinzufügen/ entfernen|Items]]
 

Aktuelle Version vom 15. April 2009, 12:37 Uhr

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 Inventar des Players entfernen und dann die 100 Goldmünzen dafür hinzufügen. Die Befehle:
[ActorRef].removeItem (ObjectID) Count
[ActorRef].addItem (ObjectID) Count
"ActorRef" ist die Referenz des Containers, dem Items hinzugefügt/ entfernt werden sollen (hier: Player).
"ObjectID" ist die ID der Items die hinzugefügt/ entfernt werden sollen (hier: Goldmünzen (Gold001) bzw. Goldnuggets (Gem0GoldNugget)).
"Count" ist die jeweilige Anzahl, die entweder direkt als Zahl oder als deklarierte Variable angegeben werden kann.

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

Da sich in dem Script keine Abfrage befindet, die feststellen kann, ob und wie viele Goldnuggets sich im Inventar befinden, wird man die 100 Goldstücke immer erhalten, auch wenn man eigentlich nichts zum Verarbeiten im Inventar hat.
Um das Ganze nicht zu einem Cheat werden zu lassen, kann man wie gezeigt so vorgehen, dass man eine Variable (doonce) einbaut. Diese ermöglicht hier, dass der ganze Vorgang nur einmal ausgeführt wird, da die Abfrage bei einem zweiten Durchgang keinen akzeptablen Wert mehr zurück gibt.
Man kann aber natürlich auch die Anzahl der Goldnuggets überprüfen und dementsprechend Gold ausgeben lassen. (Lösung: siehe Anzahl bestimmter Items).

Handhabung

Das Script sollte als Objekt-Script genutzt werden.


Weitere Scripts aus dieser Kategorie

Level 1

 

Level 3

   



{{#if: Inventar | }} {{#if: Level_1_Scripts | }}