Zu Frage 1:
Beispiel:
SetCharacterSpeechView (TED, 87); (Bemerkung: Berücksichtige dabei, dass unter "Views" im Menü auch die richtige Animation genommen wird, was in dem Fall die Zahl 87 ist!)
Zu Frage 2:
Als Beispiel nehmen wir für die Schublade die Zahl 17.
Normalerweise beginnen alle GlobalInts mit der entsprechenden Variable 0, was bedeutet, dass diese entsprechenden Ints noch nicht aktiviert worden sind.
Jetzt nehmen wir mal an, dass in der Schublade (Hotspot 5) der Gegenstand (object 1) drin liegt.
Dann würde der Befehl folgendermaßen aussehen, wenn Du diese für den Hotspot "Schublade" einsetzen würdest:
else if (UsedAction (A_OPEN))
{
if (GetGlobalInt (17) == 0)
{
FaceDirection (GetPlayerCharacter(), DIR_UP);
Wait (5);
DisableHotspot (5); (Bemerkung: Der Hotspot steht in dem Fall für die Darstellung der geschlossenen Schublade!)
ObjectOn (0); (Bemerkung: Stellt die offene Schublade dar!)
ObjectOn (1); (Bemerkung: Stellt den Inhalt der Schublade dar!)
}
}
Als nächstes nehmen wir den Gegenstand aus der offenen Schublade. Der folgende Befehl lautet:
else if (UsedAction (A_PICK_UP))
{
FaceDirection (GetPlayerCharacter(), DIR_UP);
Wait (5);
ObjectOff (1);
AddInventory (1); (Bemerkung: Wir nehmen in dem Fall an, dass Object (1) nun als Gegenstand im Inventar erscheinen soll.)
SetGlobalInt (17, 1);
}
Durch den Befehl "SetGlobalInt" geben wir dem Programm die Anweisung, dass nun die Varible 1 aktiviert werden soll. In dem Fall gaukeln wir quasi vor, dass nun kein Gegenstand mehr in der Schublade sein darf, sobald die Schublade wieder geöffnet wird.
Damit das allerdings funktionieren kann, musst Du als letzten Schritt den folgenden Befehl bei dem ersten Skript hinzufügen, den ich vorhin geschrieben habe (ich markiere es zum Verständnis noch mal genauer!):
else if (UsedAction (A_OPEN))
{
if (GetGlobalInt (17) == 0)
{
FaceDirection (GetPlayerCharacter(), DIR_UP);
Wait (5);
DisableHotspot (5); (Bemerkung: Der Hotspot steht in dem Fall für die Darstellung der geschlossenen Schublade!)
ObjectOn (0); (Bemerkung: Stellt die offene Schublade dar!)
ObjectOn (1); (Bemerkung: Stellt den Inhalt der Schublade dar!)
}
else if (GetGlobalInt (17) == 1)
{
FaceDirection (GetPlayerCharacter(), DIR_UP);
Wait (5);
DisableHotspot (5); (Bemerkung: Der Hotspot steht in dem Fall für die Darstellung der geschlossenen Schublade!)
ObjectOn (0); (Bemerkung: Stellt die offene Schublade dar!)
}
}
Dadurch, dass wir den entsprechenden Befehl eingegeben haben, wird der Gegenstand beim erneuten Öffnen der Schublade nicht mehr angezeigt. Hätten wir den Befehl nicht eingegeben, wäre wieder das Gegenteil passiert!
Zu Frage 3:
Ähnliches Spiel wie bei Frage 2.
Dazu gehst Du bei "Inventory items" im AGS-Menü, wählst den entsprechenden Gegenstand aus und klickst auf den Button "Interaction...". Dann klickst Du mit der rechten Maustaste auf "Interact inventory item", wählst "New Action" und dann im Auswahlmenü "Run Script" (das ist gleich die zweite Auswahl von oben!) aus.
Dann gibst Du im Skript folgende Befehle ein:
if (GetGlobalInt (11) == 0) (Erster Versuch!)
{
DisplaySpeech (GetPlayerCharacter (), "Es passiert nichts.");
SetGlobalInt (11, 1) (Zweiter Versuch wird aktiviert!)
}
else if (GetGlobalInt (11) == 1) (Zweiter Versuch!)
{
DisplaySpeech (GetPlayerCharacter (), "Es passiert nichts.");
SetGlobalInt (11, 2) (Dritter Versuch wird aktiviert!)
}
else if (GetGlobalInt (11) == 2) (Dritter Versuch!)
{
DisplaySpeech (GetPlayerCharacter (), "Es passiert nichts.");
SetGlobalInt (11, 3) (Vierter Versuch wird aktiviert!)
}
.
. (und so weiter bis zum letzten Versuch, in dem Fall bei GetGlobalInt (11) == 9!)
.
else if (GetGlobalInt (11) == 9) (Letzter Versuch!)
{
DisplaySpeech (GetPlayerCharacter (), "Ahhh... Jetzt tut sich was!!!");
SetGlobalInt (11, 10) (Keine weitere Versuche mehr möglich!)
}
else if (GetGlobalInt (11) == 10)
{
DisplaySpeech (GetPlayerCharacter (), "Ich brauche es nicht noch mal zu probieren.");
}