Hauptmenü

Neuigkeiten:

Bitte unterstützt uns und bestellt über diese Links bei Amazon  oder HumbleBumble!

Gib/Benutze-Aktionen werden mit gewöhnlichen Verben ausgelöst.

Begonnen von Rayman, 04. Januar 2008, 23:29:45

Vorheriges Thema - Nächstes Thema

Rayman

Zitat von: Rayman in 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.

Mister L

So ganz kapier ich das Problem nicht, aber klingt so als fehlt da ein "else unhandled"  :-\
Poste am Besten mal das Skript.

Kaktus

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 ???

Rayman

Mist, jetzt hab ich versehentlich den ersten Post editiert. :o

Aber hab ich in den Code irgendeinen Fehler gemacht?

Link2005

Zitat von: Rayman in 04. Januar 2008, 23:29:45

  if (MovePlayer(x, y)) {

Müsste da nicht normalerweise eine Koordinate angegeben sein? ??? also z.B.  if (MovePlayer(12, 34)) {

MMM Epi 63: B-DUN DX
10% - AGS-Rohdateien von B-DuN finden
25% - Story
60% - Scripten, Grafiken
85% - Betatest
100%

Bòógieman

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  ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Rayman

Zitat von: Link2005 in 06. Januar 2008, 17:14:13
Zitat von: Rayman in 04. Januar 2008, 23:29:45

  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.

Zitat von: Bòógieman in 06. Januar 2008, 17:15:36
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 ;)

Helpman

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?

Bòógieman

#8
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
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Rayman

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();

KhrisMUC

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.)