Autor Thema: Probleme mit A_GIVE_TO  (Gelesen 3519 mal)

eX

  • Gast
Probleme mit A_GIVE_TO
« am: 28. August 2008, 13:46:36 »
Hallo.
Nach dem ich mir den Maniac Dungeon angesehen habe und mir das ganze sehr gut gefallen hat, habe ich mich sofort daran gesetzt und einen neuen Raum erstellt.
Der ist auch soweit fertig, aber ich habe leider das schon bekannte Problem, dass sich Gegenstände nur mittels "Benutzen" übergeben lassen, während bei "Gib" einfach gar nichts passiert, noch nicht einmal das Standardkommentar wird ausgegeben.
Auch das Ersetzten des on-mouse-click Scripts, wie von KhrisMUC hier beschrieben, hat überhaupt nichts geändert.
Ich benutze das Dungeon-Starter-Pack und alle Aktionen sind bei "any click on character" gespeichert.
Das ganze ist zwar nicht weiter tragisch, so viele andere Charaktere gibt es ja nicht, aber ein wenig frustrierend, außerdem nagen solche Fehler nachts an mir. ;)

Ich hoffe das jemand mir helfen kann.

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3113
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Probleme mit A_GIVE_TO
« Antwort #1 am: 28. August 2008, 14:15:16 »
Hi,
freut mich, dass wir wieder einen Neueinsteiger begrüßen dürfen.  :D

Dein Problem kann man umgehen, wenn man die "use inventory on character"-Funktion benutzt und die Befehle "Gib" und "Benutze" bei "any click on character" auf unhandled setzt.

Den genauen Code kann ich leider nicht auswendig...  :-\

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2682
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Probleme mit A_GIVE_TO
« Antwort #2 am: 28. August 2008, 15:22:09 »
bababa!

bei "any click on character" darf man eben nicht auf unhandled setzen
sondern man sollte da einfach keine behandlung (ein else-if zweig mit {} und sonst nix) für diese befehle reinschreiben

unhandled() bewirkt nämlich, dass ein standardkommentar wie "Besser nicht." kommt
der kommt aber dann immer, also auch wenn die richtige aktion ausgeführt wurde  ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Mister L

  • Boss der T.I.A.
  • Globaler Moderator
  • Ehrwürdiger Tentakel
  • *****
  • Beiträge: 3113
  • Geschlecht: Männlich
  • "R.I.P. Clever & Smart † 1958 -2023"
    • Profil anzeigen
    • Maniac Mansion - Night of the Meteor
Re: Probleme mit A_GIVE_TO
« Antwort #3 am: 28. August 2008, 15:57:13 »
Oder so.  ;)

eX

  • Gast
Re: Probleme mit A_GIVE_TO
« Antwort #4 am: 28. August 2008, 15:57:52 »
Schon klar, aber das ist nicht mein Problem.
Ich habe alle Reaktionen bei "any click on character" gespeichert, die dann eben über "UsedAction" abgefragt werden.
Aber bei "Gib" ist es egal ob der Charakter für eine UsedAction (A_GIVE_TO) eine Reaktion hat oder ob das ganze über Unhandled geregelt wird, es passiert einfach nichts.
Klar könnte ich das auch über "Use inventory on character" regeln, aber mich würde interessieren, warum ausgerechnet A_GIVE_TO nicht mit "any click on character" funktioniert.

Kaktus

  • volljähriger Tentakel
  • *****
  • Beiträge: 755
  • Geschlecht: Männlich
  • Waaaah!
    • Profil anzeigen
    • E-Mail
Re: Probleme mit A_GIVE_TO
« Antwort #5 am: 28. August 2008, 16:28:53 »
Hier, du könntest mal das hier versuchen. Also wie gehabt   else if (button == LEFT) in on_mouse_click ersetzen.
Sollte eigentlich funktionieren. Was dabei verändert worden ist, kann ich dir nicht sagen, weil ich das vor Jahren mal gemacht habe und mich nicht mehr errinnere. Ich weiß auch nicht ob das überhaupt die richtige Stelle im Skript ist, müsste aber eigetnlich.


  else if (button == LEFT)
  {
    if (GlobalCondition (2) || GlobalCondition (3) || GlobalCondition (4))
    {
      // SetMode("default");
    }
    else if (GSagsusedmode == 9)
    {
      // walk to
      SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
      if (IsInteractionAvailable (mouse.x, mouse.y, GSagsusedmode)) ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), GSagsusedmode);
      else ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), MODE_WALK);
    }
    else if ((GSagsusedmode == MODE_TALK) && (IsInteractionAvailable (mouse.x, mouse.y, GSagsusedmode) == 1) && (GetCharacterAt (mouse.x, mouse.y) < 7))
    {
      SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
       RunCharacterInteraction (GSlocid, GSagsusedmode);
      SetAction (A_DEFAULT);
    }
      else if ((GSagsusedmode == 4) && (GetLocationType (mouse.x, mouse.y) == 2) && isAction (A_GIVE_TO) && (GetCharacterAt (mouse.x, mouse.y) >= 0))
    {
      SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
      if (IsInteractionAvailable (mrx - GetViewportX (), mry - GetViewportY (), eModeGive) == 0)
        player.Say("Ich werde das nicht ohne Grund hergeben.");
        ItemGiven = character [player.ID].activeinv;
        RunCharacterInteraction (GSlocid, eModeGive);
     
      SetAction (A_DEFAULT);
    }
    else
    {
      UpdateActionBar ();
      SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
      ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), GSagsusedmode);
      SetAction (A_DEFAULT);
    }
  }
  //end if button left


Wichtig dabei ist, dass du im Any_click erst USE_INV und erst danach GIVE_TO aufrufen musst, sonst funktionierts nicht (kp wieso)

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Probleme mit A_GIVE_TO
« Antwort #6 am: 29. August 2008, 01:18:25 »
Klar könnte ich das auch über "Use inventory on character" regeln, aber mich würde interessieren, warum ausgerechnet A_GIVE_TO nicht mit "any click on character" funktioniert.
Weil die Kids in Maniac Mansion (Deluxe) mit "Give to" ihre Gegenstände ausgetauscht haben, d.h. eine Reaktion war nicht gewünscht bzw. erforderlich, da der Inventargegenstand schlicht den Besitzer gewechselt hat.
Diese Mechanik ist in den Starterpacks gelandet und nie offiziell geändert worden.