Brauche Scripthilfe für Lucasfan MMM

Das Mitmach-Projekt aus dem Maniac-Mansion-Universum.
Antworten
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Brauche Scripthilfe für Lucasfan MMM

Beitrag von DernetteEddy »

Also ich will das der Typ mit dem Schlüssel (Inv = 4) die Tür öffnen kann, warum klappt der scheiss nicht? Muss ich das vorher definieren wie bei der OpenCloseExtension? Bin ich zu blöd?

// script for hotspot1: Any click on hotspot
if (GetGlobalInt(36) == 1) {
if (any_click_on_door (4, 0, 192, 120, DIR_UP, 13, 394, 98 , DIR_DOWN) == 0) Unhandled ();

}
else
if (UsedAction (A_WALK_TO))
{
if (MovePlayer (192, 120))
{
FaceLocation (GetPlayerCharacter (), 192, 118);

}
}
else
if (UsedAction (A_OPEN)) {
if (MovePlayer (192, 120)) {
FaceLocation (GetPlayerCharacter (), 192,118);
Wait (5);
DisplaySpeech(GetPlayerCharacter(),"Die ist verschlossen.");
Wait (20);
DisplaySpeech(GetPlayerCharacter(),"Wenn ich doch nur einen Schlüssel hätte");
}
else if (UsedAction (A_USE_INV))
{
if (character [GetPlayerCharacter ()].activeinv == 4)
{
if (MovePlayer (192, 120))
{
FaceLocation (GetPlayerCharacter (), 192, 118);
Wait (5);
PlaySound (93);
SetGlobalInt(36,1);
}
}
}
else Unhandled ();

}
Mit * markierte Felder sind erforderlich
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

wenn du eine komplett neue tür eingefügt hast,
musst du die OpenCloseExtension definieren und
das türobjekt geöffnet, auf nicht anklickbar
setzen: SetObjectClickable (1,0);
vielleicht kannst du noch genauer beschreiben was nicht funktioniert.
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Nee nee die Tür lässt sich schon öffnen und alles. Nur wenn ich das Objekt 4 mit der Tür benutze (Also Hotspot 1 bei mir) führt er die Aktion einfach nicht durch:

else if (UsedAction (A_USE_INV))
{
if (character [GetPlayerCharacter ()].activeinv == 4)
{
if (MovePlayer (192, 120))
{
FaceLocation (GetPlayerCharacter (), 192, 118);
Wait (5);
PlaySound (93);
SetGlobalInt(36,1);
}
}
}
else Unhandled ();


Er bleibt einfach stehen und macht gar nichts!
Mit * markierte Felder sind erforderlich
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

hmm, vielleicht liegts an MovePlayer,
versuchs mal ohne MovePlayer oder mach MovePlayer vorher.
und erst danach
if (character [GetPlayerCharacter ()].activeinv == 4)
überprüf die koordinaten.
LucasFan
Tastatursteuerer
Tastatursteuerer
Beiträge: 535
Registriert: 02.03.2002, 14:40
Wohnort: Ronville

Beitrag von LucasFan »

Ich würde any_click_on_door nur da verwenden, wo wirklich nichts anderes mit der Tür gemacht wird, als sie zu öffnen oder zu schließen. Das gibt Probleme, wenn man die Funktion zusätzlich mit den anderen Kommandos im Script zu stehen hat. Hatte in Episode 1 das selbe Problem mit der "Kerze-mit-Tür-Geschichte" und konnte deshalb bei Britneys Tür nicht die any_click_on_door-Funktion benutzen.
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Achso das kann natürlich sein. Ich probier es gleich mal aus.
Mit * markierte Felder sind erforderlich
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ich hab den code mal eingerückt, es scheint mir an der Syntax zu liegen.
AGS macht aus einem

Code: Alles auswählen

else
if
immer ein

Code: Alles auswählen

else if
Nach einrücken ergibt sich ca. in der Mitte:

Code: Alles auswählen

else if (UsedAction (A_OPEN)) { 
  if (MovePlayer (192, 120)) { 
    FaceLocation (GetPlayerCharacter (), 192,118); 
    Wait (5); 
    DisplaySpeech(GetPlayerCharacter(),"Die ist verschlossen."); 
    Wait (20); 
    DisplaySpeech(GetPlayerCharacter(),"Wenn ich doch nur einen Schlüssel hätte"); 
  } 
  else if (UsedAction (A_USE_INV)) { 
    if (character [GetPlayerCharacter ()].activeinv == 4) { 
      if (MovePlayer (192, 120)) { 
        FaceLocation (GetPlayerCharacter (), 192, 118); 
        Wait (5); 
        PlaySound (93); 
        SetGlobalInt(36,1); 
      } 
    } 
  } 
Und schon wird's klar: nach

Code: Alles auswählen

...Schlüssel hätte");
müssen zwei } hin statt einer. Denn sonst wird A_USE_INV nur abgefragt, wenn das MovePlayer bei A_OPEN nicht funktioniert hat. Dein code hätte garnicht compilieren dürfen, weil eine } fehlt.
Use gopher repellent on funny little man
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Da könntest Du recht haben, aber wie Du auch schon gesagt hast, der lief ohne Fehlermeldung durch und hat einwandfrei compiliert.
Ich ersetze es später mal durch Deine Version. Mal sehen was passiert. Hatte mir jetzt schon alle möglichen Umwege ausgesucht. Manchmal ist wirklich der Wurm drin.
Mit * markierte Felder sind erforderlich
Benutzeravatar
Rocco
Adventure-Treff
Adventure-Treff
Beiträge: 1019
Registriert: 25.11.2003, 16:20
Wohnort: Ronville
Kontaktdaten:

Beitrag von Rocco »

ich hoffe du hast dein problem erfolgreich gelöst,
ich hab auch eines und dachte mir bevor ich
einen eigenen threat aufmache poste ich es gleich hier.

ich möchte das man in meiner episode mit einem Gegenstand
reden kann.
Leider wird wenn man auf - Rede mit - klickt kein
Objectname angezeigt, sondern nur wenn man Personen zeigt.
Run-Dialog kann ich dort leider aus verschiedenen gründen nicht verwenden, wie könnte ich das lösen?
Benutzeravatar
DernetteEddy
Süßwasserpirat
Süßwasserpirat
Beiträge: 298
Registriert: 30.06.2004, 00:31

Beitrag von DernetteEddy »

Mein Problem ist gelöst, vielen Dank Khrismuc

Bezüglich Deinem, nimm doch einfach anstatt ein Object direkt einen Character und weiß dem die View fürs Aussehen des Objects zu, wenn Du RunDialog nicht benutzen möchtest.
Mit * markierte Felder sind erforderlich
Antworten