Ich möchte eine Tür (hDoor) mit iKey öffnen --> Also, dass die Tür verschlossen bleibt, wenn der Spieler keinen Schlüssel hat und den Spieler in den nächsten Raum befördert, wenn er den Schlüssel hat und ihn mit der Tür verwendet.
Ich habe es auf zwei Arten versucht, beide Male habe ich mich an diesem Demo Spiel orientiert:
// room script file
function hTor_UseInv()
{
if(cChar1.ActiveInventory==iKey);
Display("Klack und offen.");
cChar1.ChangeRoom(2,305,412);}
function hMaske_Look()
{
Display("Schaurig. Die setze ich lieber nicht auf!");
}
function hMaske_Interact()
{
Display("Nein. Lieber nicht.");
}
function hZeitung_Look()
{
Display("ZAMG meldet starken Westwind von Ost. Irgendetwas an diesem Bericht irritiert mich.");
}
function hZeitung_Interact()
{
Display("In Anbetracht der Tatsache, dass diese Ausgabe drei Monate alt ist, will ich sie nicht.");
}
function hTor_Look()
{
Display("Ein Tor. Gut zu wissen, dass es einen Ausgang gibt.");
}
function hTor_Interact()
{
Display("Abgeschlossen.");
}
function hWandteppich_Look()
{
Display("Genial. Fabulos. Incredible.");
}
function hWandteppich_Interact()
{
Display("Dieser Teppich ist vier Meter lang und sehr staubig und er bleibt hier.");
}
function oKey_Look()
{
Display("Das wird doch wohl nicht der Key zu diesem Ausgang sein...");
}
function oKey_Interact ()
{
cChar1.Walk(615,628,eBlock);
Display("Den kann ich gebrauchen.");
cChar1.AddInventory(iKey);
oKey.Visible=false;
}
Da kam bereits bei der if-Zeile eine Fehlermeldung. (parse error at

Dann habe ichs mit einer statischen Variable versucht:
// room script file
int DoorState=LOCKED;
int State=0;
function OperateDoor()
{
cChar1.Walk(404, 608, eBlock);
if (DoorState==LOCKED);
if (cChar1.InventoryQuantity(iKey)>0);
DoorState=OPENED;
cChar1.ChangeRoom(2, 400, 500);
}
else
{
Display("Verschlossen.");}
function hMaske_Look()
{
Display("Schaurig. Die setze ich lieber nicht auf!");
}
function hMaske_Interact()
{
Display("Nein. Lieber nicht.");
}
function hZeitung_Look()
{
Display("ZAMG meldet starken Westwind von Ost. Irgendetwas an diesem Bericht irritiert mich.");
}
function hZeitung_Interact()
{
Display("In Anbetracht der Tatsache, dass diese Ausgabe drei Monate alt ist, will ich sie nicht.");
}
function hTor_Look()
{
Display("Ein Tor. Gut zu wissen, dass es einen Ausgang gibt.");
}
function hTor_Interact()
{
Display("Abgeschlossen.");
}
function hWandteppich_Look()
{
Display("Genial. Fabulos. Incredible.");
}
function hWandteppich_Interact()
{
Display("Dieser Teppich ist vier Meter lang und sehr staubig und er bleibt hier.");
}
function oKey_Look()
{
Display("Das wird doch wohl nicht der Key zu diesem Ausgang sein...");
}
function oKey_Interact ()
{
cChar1.Walk(615,628,eBlock);
Display("Den kann ich gebrauchen.");
cChar1.AddInventory(iKey);
oKey.Visible=false;
}
Da kam dann in der ersten Zeile schon die Meldung: Expected integer value after `...
Ich verstehe nicht, warum diese Dinge im Demospiel funktionieren und bei mir nicht.
Hoffentlich könnt ihr mir helfen.