Hauptmenü

Neuigkeiten:

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

Geben von Gegenständen

Begonnen von Timer, 20. Mai 2007, 12:36:33

Vorheriges Thema - Nächstes Thema

Timer

Ich habe ein Problem (AGS 2.72). Ich habe in meiner Episode einen Charakter eingebaut, dem man auch etwas geben können sollte... Nur bereitet das Probleme. Wenn ich das Script in "Use Inventory on Charakter" reinschreibe, funktioniert es soweit, dass der Spielercharakter seinen Kommentar bei "gib" und bei "benutze...mit" sagt. Allerdings geht er dann zur Person hin und sagt einen Stardardkommentar. Wenn ich das Script unter "any click on Charakter" reinschreibe, reagiert der Spielercharakter nur auf "benutze...mit". Ich hätte aber gerne, dass man beides verwenden kann und dass er nur einmal einen Kommentar abgibt. Hat jemand eine Lösung für mich?

Mister L

Jepp, dann darfst du bei "any click on character" kein "else unhandled ();" mehr verweden.  8)

Timer

Ah, danke! Denke, die Episode ist nun bald bereit zur Veröffentlichung. 8) :)

Mister L

Na, dann rückt ja das Ende der 6. Staffel langsam aber sicher näher!  ;D

Timer

#4
Dann schreib ich hier doch gleich nochmal eine Frage rein: Um zu überprüfen, ob der Spielercharakter einen Gegenstand hat, kann man das mit player.inv == 3 bzw. player.inv[3] == true machen?

Edit: Erledigt...

KhrisMUC

Für den Fall, das jemand anderes das mal braucht/liest:

if (player.InventoryQuantity[iZeug.ID]>0) ...

Siel

Habe auch eine Frage zum Thema Gegenstände geben:
Was muss ich ins Skript eines Charakters schreiben, damit er nur dann einen Gegenstand annimmt, wenn man denn Befehl (Gib x an y) gibt und nicht allgemein wenn man ihm etwas zu geben versucht. Habs nämlich in keinem Tutorial oder in der Anleitung für das AGS gefunden. Wenn ich das nur blöde Übersehen habe bitte ich um Nachsicht, da ich das Programm erst seit lurzem haben und mich auch in den unendlichen weiten dieses Forums noch nicht so aus kenne.

Wäre nett wen mir jemand helfen könnte.
Die Vergangenheit ist im Nachhinein meist eine schlechte Idee.

KhrisMUC

Das ist leider ein etwas kompliziertes Thema, da die Starterpacks nach wie vor so ausgelegt sind, dass die Charaktere 0-6 Gegenstände kommentarlos austauschen.

Folgendes sollte klappen:

1. Ersetze im global script in der Funktion on_mouse_click den Code für den linken Mausbutton durch dieses hier:
  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);
      if (GoToCharacter (GSlocid, 0, 1, 2)) RunCharacterInteraction (GSlocid, GSagsusedmode);
      SetAction (A_DEFAULT);
    }
    else
    {
      UpdateActionBar ();
      SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
      ProcessClick (mrx - GetViewportX (), mry - GetViewportY (), GSagsusedmode);
      SetAction (A_DEFAULT);
    }
  }


2. Dann wie mit den anderen Verben in "any click on character":
    else if (UsedAction(A_GIVE_TO)) {
      if (player.ActiveInventory==iItem) {
        // bla
      }
      else Unhandled();
    }

Siel

Danke sehr!
Damit hats funktioniert!
Damit steht meinem eigenen MMM-Adventure nichts mehr im Wege!
Die Vergangenheit ist im Nachhinein meist eine schlechte Idee.