Seite 1 von 1
Brauche Scripthilfe für Lucasfan MMM
Verfasst: 31.03.2005, 21:59
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 ();
}
Verfasst: 31.03.2005, 22:28
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.
Verfasst: 31.03.2005, 22:47
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!
Verfasst: 31.03.2005, 22:55
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.
Verfasst: 31.03.2005, 23:50
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.
Verfasst: 01.04.2005, 00:16
von DernetteEddy
Achso das kann natürlich sein. Ich probier es gleich mal aus.
Verfasst: 01.04.2005, 04:51
von KhrisMUC
Ich hab den code mal eingerückt, es scheint mir an der Syntax zu liegen.
AGS macht aus einem
immer ein
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
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.
Verfasst: 01.04.2005, 10:35
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.
Verfasst: 01.04.2005, 12:37
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?
Verfasst: 01.04.2005, 14:44
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.