Seite 1 von 1

Bug im Bernard-Starterpack / Undokumentierte GlobalInts

Verfasst: 01.11.2005, 19:36
von Bissiger Witzbold
Im Bernard-Starterpack für AGS sind die GlobalInts 1-17 bereits verwendet und auch am Anfang des GlobalScripts verzeichnet. Demnach könnte man wohl die GlobalInts ab 18 frei belegen. Gelegentlich hört man den Ratschlag sicherheitshalber erst ab GolbalInt 25 oder 30 anzufangen. Aber offenbar reicht auch das nicht.

Ich hatte beim Testen meines Spiel irgendwann einen Fehler. Es passierte beim Betreten eines Raum etwas, aber die Handlung die dies auslösen sollte (und in GlobalInt 44 speichen) hatte ich nicht durchgeführt. Ich schaffte es auch nicht diesen Fehler zu reporduzieren. Erst einige Zeit später stieß ich darauf: Die Fahne des Briefkastens verwendet standardmässig ebenfalls die GlobalInt 44. Ich hatte offenbar einmal beim Testen aus Langeweile die Fahne hochgeklappt und das Programm dachte, ich hätte meine Aktion bereits durchgeführt. Ein böser Fehler, der leicht ins fertige Spiel geraten könnte (ein Glück, daß ich die Sprüche zur Fahne abändern wollte und dadurch die undokumentierte GlobalInt bemerkte).

Jetzt stellt sich die Frage: Welche undokumentierten Global Ints werden im Starterpack noch verwendet?

In der Küche stieß ich auf einige seltsame Befehle bei Mikrowelle und Kühlschrank, die sich auf GlobalInt 32, 36 und 37 auswirken.

Benutze linkes Sitzkissen mit offenem Kühlschrank:

Code: Alles auswählen

if (GetGlobalInt(32)==2) {
  ObjectOn(5);
  LoseInventory(4);
  PlaySound(77);
  SetGlobalInt(37,1);
}
(Wasser wird eingeschaltet, man verliert das Sofakissen, GlobalInt 37 wird umgestellt)

Schließe offener Kühlschrank:

Code: Alles auswählen

if (GetGlobalInt(37)==1) {
  ObjectOff(5);
  SetGlobalInt(32,3);
}
(Laufendes Wasser wird ausgeschaltet, GlobalInt 32 wird umgestellt)

Benutze linkes Sitzkissen mit offene Mikrowelle:

Code: Alles auswählen

if (GetGlobalInt(32)==0) {
  ObjectOn(4);
  LoseInventory(4);
  PlaySound(77);
  SetGlobalInt(36,1);
}
(Schublade öffnet sich, man verliert das Sofakissen, GlobalInt 36 wird umgestellt)

Schließe offene Mikrowelle:

Code: Alles auswählen

if (GetGlobalInt(36)==1) {
   ObjectOff(4);
}
(Schublade wird geschlossen)

Offenbar handelt es sich hierbei um Script-Überreste aus Folge 1. Und sofern man diese GlobalInts selber verwendet, kann dies große Fehler im Spiel verursachen, wenn eine GlobalInt einfach so umgestellt wird, nur weil man z.B. den Kühlschrank schließt.

Der Bug mit dem linken Sofakissen und der Mikrowelle tritt sogar auf jeden Fall auf, da GobalInt 32 ja standardmässig auf 0 steht. Ein kurzer Test mit den bisherigen MMM-Episoden zeigte, daß man ihn bereits in Folge 18, 22, 23 und 30 findet. Wenn ihr hier das linke Sofakissen in die Mikrowelle steckt, öffnet sich die Schublade unter der Mikrowelle und das Kissen ist verschwunden.

Verfasst: 01.11.2005, 21:19
von Mister L
Mach's doch so wie ich: Ich hab immer bei 499 angefangen und dann rückwärts gezählt. Da kommt dir garantiert nix in die Quere!

Verfasst: 02.11.2005, 15:54
von KhrisMUC
Bissiger Witzbold:
Wie wär's, wenn Du einfach weitersuchst, alle Überbleibsel entfernst und Dich dann an [ZENSIERT] wendest, damit er die neue Version online stellt?

Nachtrag:
In meiner Starterpack-Version (noch 2.62, also entsprechend alt) ist weder bei der Mikrowelle noch beim Kühlschrank etwas eingetragen.

2. Nachtrag:
In einer neueren Version, in der die Fahne bereits umklappbar ist, wird tatsächlich Global Int 44 für die Fahne verwendet.
Trotzdem ist nichts bei Kühlschrank oder Mikrowelle eingetragen.

Verfasst: 02.11.2005, 20:06
von Bissiger Witzbold
Ich habe das Starterpack von http://maniacmansion.microspace.ch/resourcen.htm (ist für 2.62, ein anderes gibt es dort nicht). Dort sind die beschriebenen Sachen drin (jeweils bei dem geöffneten Objekt).

Andere undokumentierte GlobalInts habe ich bisher nicht finden können.