Hum, die Methode mit dem Switchen halte ich für etwas unflexibel. Ich empfehle dir auf etwas andere Mittel zu wechseln:

- Lege eine Reichweite von Variablen fest, je nachdem wie groß das Inventar sein soll, z.B. die Variablen 0030 - 0060 sind nun unsere Inventarslot. Damit ist
das Inventar 30 Felder groß

Nun brauchen wir 3 Module die uns die Funktion ermöglichen. Diese sind noch nicht mal groß und sogar recht ähnlich aufgebaut. Sie heissen:
Inventar_Show, Inventar_Del und Inventar_Insert.

Wir geben im übrigen davon aus das jedes Gegenstand eine eigene ID(Idenfikationsnummer) hat. So lässt es sich eindeutig identifizieren.
Wissen über Pointer ist unerlässlich für diese Aufgabe.
Schau dir vielleicht mal das hier mal an. Eventuell hilft es dir.

Die drei Funktionen dürften vom Namen her für sich sprechen. Aufgebaut sind sie in etwa so:

Inventar_Insert:
Dieses Modul dient dazu Gegenstände in unser Inventar einzufügen. Es braucht hierfür einen sogenannten "Parameter". Dieser Parameter ist die ID des Gegenstandes das wir einfügen wollen.

Code:
[Common Event: Inventar_Insert - Call]

Set [0061:Pointer] = 30; // Der Beginn unseres Inventarfeldes war 0030 !

LABEL 1
IF [0061:Pointer] > 60 THEN //Das Ende unseres Inventarfeldes war 0060 !
  End Event Processing;
ELSE // Es ist noch Platz im Inventar
Set [0062:Vergleichsvari] = [[0061:Pointer]];
  IF [0062:Vergleichsvari] == 0 THEN // Die Variable ist leer und benutzbar
    Set [[0061:Pointer]] = [0063:Parameter_Insert];
    End Event Processing;
  ELSE //die Variable ist belegt !
     [0061:Pointer] = [0061:Pointer] + 1;
     Jump to LABEL 1;
  ENDIF
ENDIF
Diese Funktion muss so aufgerufen werden:

Code:
Set [0063:Parameter_Insert] = GegenstandID(z.B. 10);
Call Event: Inventar_Insert
Der Pointer am Anfang wird nun auf den Wert 30 gestellt.
Direkt danach geht eine Schleife mit folgender Funktion los:

Sie fragt ab ob der Pointer größer als 60 ist. Wenn er das ist, dann sind außerhalb der Reichweite unseres Inventars. Die war ja von 30 - 60.
In diesem Fall bricht die Funktion ab und fügt die ItemID nicht ein.

Falls wir noch nicht außerhalb unseres Inventars sein sollten, dann wird der angepointerte Wert in eine Variable übergeben. Das ist nötig da man im Maker leider nicht direkt gepointerte Variablen in einem Fork abfragen kann. :/
Sollte die abgefragte Variable auf 0 sein, dann ist sie leer und wir können sie benutzen. Wenn das der Fall ist, dann wird die Item-ID an der aktuellen Variable eingefügt und die Funktion wird beendet.

Falls die Variable nicht gleich 0 sein sollte und damit voll, wird zurück zum Sprungpunkt/Label 1 gesprungen und von da aus der Code nochmals wiederholt. Vor dem Sprung wird der Pointer um eine Variable weitergesetzt.


PS:

Für die restlichen Funktionen hab ich grad keine Zeit mehr. Aber erstmal sollten wir sowieso diese hier mal umsetzen. Das könnte anfangs etwas nach fachlatein aussehen, ich hoffe aber es dir trotzdem erklären zu können.
Das ist so auf jeden Fall eine recht einfache Geschichte.
Auch wenn es grad nicht danach aussieht.