Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: Rayman am 04. Januar 2008, 23:29:45
-
else if (player.ActiveInventory == inventory[2]) {
if (MovePlayer(x, y)) {
FaceDirection(GetPlayerCharacter(), DIR_LEFT);
}
}
else unhandled();
Sorry, besser konnte ich den Fehler nicht formulieren.
Edit: Wenn ich z.B. einen Gegenstand mit einem Hotspot benutze und dann später irgendein Verb mit dem Hotspot benutze, dann wird dieselbe Aktion freigegeben, die man auch bei der Gegenstand benutzung vorkommt.
-
So ganz kapier ich das Problem nicht, aber klingt so als fehlt da ein "else unhandled" :-\
Poste am Besten mal das Skript.
-
Klingt so, als stünde das if (player.activeinv==xyz)
außerhalb von if (UsedAction (A_USE_INV)) .
Vielleicht hast du irgendwo eine Klammer falsch gesetzt ???
-
Mist, jetzt hab ich versehentlich den ersten Post editiert. :o
Aber hab ich in den Code irgendeinen Fehler gemacht?
-
if (MovePlayer(x, y)) {
Müsste da nicht normalerweise eine Koordinate angegeben sein? ??? also z.B. if (MovePlayer(12, 34)) {
-
du musst vorher auf
if (UsedAction (A_USE_INV))
überprüfen, da activeinv das zuletzt ausgewählte inv-item wiedergibt, egal ob es gerade oder zuvor benutzt wird ;)
-
if (MovePlayer(x, y)) {
Müsste da nicht normalerweise eine Koordinate angegeben sein? ??? also z.B. if (MovePlayer(12, 34)) {
Ich habe die Koordinaten vorher umgeändert in x und y, bevor ich den Post abgeschickt habe.
du musst vorher auf
if (UsedAction (A_USE_INV))
überprüfen, da activeinv das zuletzt ausgewählte inv-item wiedergibt, egal ob es gerade oder zuvor benutzt wird ;)
@Bòógieman: Danke, Bòógieman, es hat geklappt! :D ;)
-
Hallo, ich habe da so ein ähnliches Problem.
Ich hab bei meinen Object diesen sogenannten USE-Script eingebaut
und wenn ich andere items mit dem Objekt benutze, dann erscheint keine Reaktion. :'(
Was muss man da machen, damit bei andern Items ein Standartkommentar erscheint?
-
poste mal dein script, mit der beschreibung kann man nicht wirklich viel anfangen ;)
meinst du mit "sogenannten USE-Script" das hier?
if(UsedAction (A_USE_INV))
?
wenn ja, klingt das ganze so, als ob du nur ein inv-item mit player.ActiveInventory abgefragt hast
im else-zweig musst du Unhandled() verwenden
-
Also, ich weiß jetzt auch nicht so genau um welchen Fehler es sich bei dir handelt,
aber ich poste hier nochmal meinen einen Script, den ich Dank Bòógieman's großer Hilfe korrigieren konnte :) :
else if (UsedAction(A_USE_INV)) {
if (MovePlayer(101, 135)) {
FaceDirection(GetPlayerCharacter(), DIR_UP);
Wait(5);
(Your Script);
}
else if (player.activeinv == 5) {
(Your Script);
}
else if (player.activeinv == 6) {
(Your Script);
}
else if (player.activeinv == 7) {
(Your Script);
}
}
}
else Unhandled();
-
So ganz stimmt das aber auch nicht:
...
else if (UsedAction(A_USE_INV)) {
if (MovePlayer(101, 135)) {
FaceDirection(player.ID, DIR_UP);
Wait(5);
ai = player.ActiveInventory.ID;
if (ai == 5) {
// code
}
else if (ai == 6) {
// code
}
else if (ai == 7) {
// code
}
else Unhandled();
}
}
else Unhandled();
Ich hab mal aktuellen code benutzt, die Klammern korrigiert und außerdem ein zweites Unhandled eingefügt. Das ist wichtig, da es sonst nicht aufgerufen wird, falls man z.B. InvItem Nr. 8 benutzt. (USE_INV wird benutzt, deswegen wird das untere Unhandled nicht aufgerufen; ein zweites muss rein.)