Items manipulieren

Dieser Artikel beschreibt, wie man Items im Spiel manipuliert, inklusive wie man Items erhält oder löscht, die Anzahl der Items des Spielers zählt, wie man die Art des Items überprüft usw.

Inhalt

Dem Spieler ein Item geben

Script Funktion
Kernel.pbReceiveItem(PBItems::POTION) Das Script gibt dem Spieler ein Item. Wie überall, steht POTION für den internen Namen des Items (In diesem Fall Trank).

Zwei Nachrichten werden angezeigt: Die erste Nachricht sagt, dass man das Item erhalten hat (und falls es eine TM/VM ist, welche Attacke sie beibringt) und die zweite Nachricht sagt, dass der Spieler das Item in die dazugehörige Tasche des Beutels packt. Handelt es sich bei dem Item um „Überreste“, dann wird die Nachricht sagen, dass man some Leftovers (ein paar Überreste) erhalten hat.

Dieses Script sollte verwendet werden, wenn man ein Item von einem NPC erhält, da die Nachricht aussagt, dass man das Item erhalten hätte, anstatt dass man es gefunden hätte.

Kernel.pbItemBall(PBItems::POTION) Dieses Script funktioniert auf die selbe Art und Weise, wie der Obere, außer dass die erste Nachricht sagt, dass man das Item gefunden hätte (und nicht erhalten). Sollte das Item zudem nicht hinzugefügt werden können, sagt die zweite Nachricht, dass der Beutel voll ist und das Item nicht aufgehoben werden kann.

Es wird für Itembälle benutzt. Wird ein Itemball erstellt, dann wird dieser Script automatisch erzeugt, wenn das Spiel compiliert wird, sodass man es selbst nicht wirklich benötigt.

$PokemonBag.pbStoreItem(:POTION,quantity) Dieses Script wird durch die beiden oberen Methoden verwendet. Es fügt dem Beutel das erwähnte Item hinzu und zeigt dabei keine Nachrichten an.

Wird der Beutel mittendrin voll, während die Items hinzugefügt werden, dann werden so viele wie möglich hinzugefügt (der Rest wird ignoriert), jedoch wird sich das Script so verhalten, als wäre nichts hinzugefügt worden und ein false zurückgeben.

Man sollte vorher überprüfen, ob der Spieler genug Platz für die Items hat. Dies sollte im Normalfall kein Problem sein, dass der Beutel Standardmäßig unendlich viel Platz besitzt.

Im Normalfall wird man dieses Script niemals nutzen.

Alle drei Scripts oben geben ein true zurück, wenn das Item in den Beutel des Spielers hinzugefügt wurde und ein false, wenn nicht.

Da ein Slot im Beutel maximal 999 Exemplare pro Item haben kann, wird das Spiel einen neuen Slot beginnen, falls der Spieler mehr als 999 Exemplare besitzt. Zum Beispiel: Besitzt der Spieler 997 Tränke und das Spiel gibt ihm 5 weitere Tränke, dann werden 2 der Tränke in den vorhandenen Slot wandern, während die restlichen 3 Tränke einen neuen Slot erhalten.

Mehrere Items geben

Die ersten zwei Scripts in der Tabelle oben können mehr als 1 Exemplar eines Items geben. Hier sind einige Beispiele:

Zusätzlich zu dem Item gibt es einen weiteren Parameter: Die Anzahl. Der Parameter ist optional; sollte der Parameter leer sein, dann erhält man 1 Exemplar des Items.

Werden mehr als ein Exemplar eines Items hinzugefügt, so zeigt das Script die Pluralform des Items an, wie sie in der PBS-Datei items.txt definiert wurde.

Item im Beutel löschen

Um ein Item zu löschen, das der Spieler besitzt, benutze folgenden Script:

Um mehrere Exemplare eines Items zu löschen, benutze die Anzahl als Parameter:

Dieses Script gibt true zurück, wenn das Item gelöscht wurde und false, wenn nicht. Es zeigt keine Nachrichten an, damit der Spieler erkennt, ob die Items gelöscht wurden.

Beachte: Wenn du mehr Exemplare eines Items zu löschen versuchst, als im Beutel vorhanden sind, dann werden so viele Exemplare wie möglich gelöscht (d.h also alle). Das Script gibt trotzdem ein false aus (da er nicht so viele Exemplare löschen konnte, wie gefordert).

Bevor man ein Item löscht, sollte man überprüfen, ob der Spieler mindestens so viele Exemplare besitzt, wie gelöscht werden soll, sodass das Script erfolgreich abläuft.

Items im Beutel zählen

Um zu überprüfen, wie viele Exemplare eines bestimmten Items der Spieler besitzt, benutze folgendes Script:

Dieses Script gibt lediglich einen Wert zurück. Dieser sollte entweder in einer Variable gespeichert werden oder um einen anderen Wert damit zu vergleichen:

Möchte man überprüfen, ob der Spieler mindestens ein Exemplar eines Items besitzt, verwendet man folgendes Script:

Dies wird normalerweise bei Basis-Item gemacht, wie z.B beim Türöffner. Diese Items selber haben keinen Effekt, aber z.B lässt sich eine Tür erst dann öffnen, wenn man ein bestimmtes Item im Beutel hat. Dies wird erledigt, indem man das letzte Beispiel in einer Bedingung schreibt.

Item aus dem Beutel auswählen

Um den Spieler ein Item aus dem Beutel auswählen zu lassen, benutze eine der folgenden Varianten des Scripts:

Diese Methode gibt die ID des Items zurück (oder 0, wenn keines ausgewählt wurde). Das Argument danach ist optional und gibt die globale Variable an, in der der Wert gespeichert wird.

Um den Spieler von einer bestimmten Liste auswählen zu lassen, verwende folgenden Script:

Diese Methode gibt die ID des ausgewählten Items zurück oder -1, wenn die Auswahl abgebrochen wurde. Das zweite Argument (hier die Zahl 1) ist die globale Variable in welcher der zurückgegebene Wert gespeichert wird.

Es kann eine beliebige Anzahl an Items aufgelistet werden. Nur Items, von denen der Spieler mindestens ein Exemplar besitzt, werden hier angezeigt. Besitzt der Spieler keines der Items, dann gibt die Liste eine 0 zurück, ohne eine Nachricht oder Liste anzuzeigen.

Andere Überprüfungen

Hier ist eine Liste mit anderen Methoden, in der Items überprüft oder manipuliert werden können.

Script Beschreibung
PBItems.getName(PBItems::POTION) Gibt den Namen des Items zurück.
pbGetPrice(PBItems::POTION) Gibt den Wert des Items zurück (also den Kaufpreis). Der Verkaufspreis ist die Hälfte des Kaufpreises.
pbIsImportantItem?(PBItems::POTION) Gibt ein true zurück, wenn es sich bei dem Item um ein Basis-Item oder VM handelt (d.h ein Item, das nicht verkauft/weggeworfen werden kann). Gibt ein false zurück, wenn nicht.
pbIsKeyItem?(PBItems::POTION) Gibt ein true zurück, wenn es sich bei dem Item um ein Basis-Item handelt (d.h es wird in der Tasche 8 gespeichert). Gibt ein false zurück, wenn nicht.
pbIsMachine?(PBItems::POTION) Gibt ein true zurück, wenn es sich bei dem Item um eine TM oder VM handelt. Gibt ein false zurück, wenn nicht.
pbIsTechnicalMachine?(PBItems::POTION) Gibt ein true zurück, wenn es sich bei dem Item um eine TM handelt. Gibt ein false zurück, wenn nicht.
pbIsHiddenMachine?(PBItems::POTION) Gibt ein true zurück, wenn es sich bei dem Item um eine VM handelt. Gibt ein false zurück, wenn nicht.
pbIsHiddenMove?(PBMoves::CUT) Gibt ein true zurück, wenn die Attacke durch eine VM beigebracht werden kann. Gibt ein false zurück, wenn nicht.
pbGetPocket(PBItems::POTION) Gibt die Nummer der Tasche zurück, in der das Item gespeichert wird.
pbIsMail?(PBItems::POTION) Gibt ein true zurück, wenn das Item ein Brief ist. Gibt ein false zurück, wenn nicht.
pbIsPokeBall?(PBItems::POTION) Gibt ein true zurück, wenn das Item ein Pokéball oder Krallball ist. Gibt ein false zurück, wenn nicht.
pbIsSnagBall?(PBItems::POTION) Gibt ein true zurück, wenn das Item ein Krallball ist oder wenn es ein Pokéball ist, während $PokemonGlobal.snagMachine=true ist. Gibt ein false zurück, wenn nicht.
pbIsBerry?(PBItems::POTION) Gibt ein true zurück, wenn das Item eine Beere ist. Gibt ein false zurück, wenn nicht.
pbClosestHiddenItem Gibt die Position vom nächstliegenden versteckten Item zurück. Gibt ein nil zurück, wenn sich keines in Reichweite befindet (d.h innerhalb von 17 Tiles pro Seite, wobei der Spieler die Mitte darstellt). Wird vom Detektor benutzt.
$PokemonBag.pbCanStore?(:POTION,5) Gibt ein true zurück, wenn genug Platz im Beutel für das bestimmte Item in der bestimmten Anzahl vorhanden ist. Gibt ein false zurück, wenn nicht.