Autor Thema: Dave Starterpack AGS3 - Gegenstände in beide Richtungen kombinieren  (Gelesen 2457 mal)

Scorpe

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 32
    • Profil anzeigen
Hallo!

Ich habe ein Problem mit dem Dave Starterpack für AGS3. Und zwar will ich zwei Inventargegenstände in beide Richtungen miteinander kombinieren.
Normalerweise funktioniert das doch so:

Kugelschreiber:
[ags]function iKugelschreiber_UseInv()
{
  if (player.ActiveInventory == iBlock)
  {
    schreibeNachricht();
  }
}[/ags]

Block:
[ags]function iBlock_UseInv()
{
  if (player.ActiveInventory == iKugelschreiber)
  {
    schreibeNachricht();
  }
[/ags]

iKugelschreiber_UseInv packe ich bei iKugelschreiber ins "Use inventory on this Item" Ereignis und iBlock_UseInv dementsprechend bei iBlock.
Ergebnis ist aber: Wenn ich jetzt im Spiel "Benutze" anklicke und danach im Inventar entweder den Kugelschreiber oder den Block, dann kommt gar nicht erst das "mit" in der Befehlszeile. Ich habe bei keinem der beiden Gegenstände >u hinten in die Description geschrieben, wenn ich das mache ist der Effekt auch derselbe.
Der Witz ist: Lösche ich jetzt bei einem der Gegenstände den Scriptaufruf aus dem "Use inventory on this Item" Handler, dann funktioniert es, allerdings nur in die eine Richtung. Es klappt auch (und zwar in beide Richtungen) wenn ich anstatt "Benutze" "Nimm" in der Verbenleiste anklicke.
Ich benutze bei beiden Gegenständen zusätzlich auch noch die Ereignisse "Look at inventory item" und "Other click on Inventory item", darin mache ich aber nichts mit "Use" oder "UseInventory".

Edit: Ich habe festgestellt, dass es dasselbe Problem auch im Maniac-Starterpack für AGS 3.2 gibt.
« Letzte Änderung: 20. August 2011, 21:22:14 von Scorpe »

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Dave Starterpack AGS3 - Gegenstände in beide Richtungen kombinieren
« Antwort #1 am: 22. August 2011, 01:03:53 »
Habs reproduzieren können, scheint ein Problem in allen neueren Starterpacks zu sein.
Es liegt daran das player.ActiveInventory nicht auf null gesetzt wird.

Je nachdem, welches Item zuletzt aktiv war, ist das Ergebnis anders.
Angenommen, zuletzt war Item A aktiv.
Ein Klick auf Benutze, dann auf B bewirkt nun "benutze A mit B".
Und ein Klick auf Benutze, dann auf A bewirkt "benutze A mit A".

Das Witzige ist, dass man erst Benutze klicken muss, um diesen Fehler zu erzeugen, und Du bist wahrscheinlich der erste, der zum auswählen nicht direkt aufs item klickt :)
Lasse ich nämlich den Klick auf Benutze weg und klicke direkt erst ein, dann das andere Item an, funktioniert es einwandfrei.

Ich hab es lösen können, aber noch nicht ausführlich getestet:
Zeile 1987 (on_mouse_click / eMouseLeftInv / letztes else):
[ags]    if (isAction (eActUse) && invAt.IsInteractionAvailable(eModeUseinv) == 1)[/ags]

isAction (eActUse) ersetzen durch player.ActiveInventory != null

UpdateActionBar suchen, ganz ans Ende folgende Zeile einsetzen:
[ags]  if (!isAction(eActUse)) player.ActiveInventory = null;[/ags]

Scorpe

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 32
    • Profil anzeigen
Re: Dave Starterpack AGS3 - Gegenstände in beide Richtungen kombinieren
« Antwort #2 am: 24. August 2011, 21:06:06 »
Hab's bei mir im Script geändert und Benutze mit funktioniert damit auch einwandfrei. Allerdings hatte ich jetzt das Problem, dass Gib nicht mehr funktionierte.
Ich habe es dann so gelöst, dass ich als letzte Zeile in updateActionBar
[ags]if (!isAction(eActUse) && !isAction(eActGiveTo)) player.ActiveInventory = null;[/ags] geschrieben habe. Außerdem habe ich statt
[ags]if (player.ActiveInventory != null && invAt.IsInteractionAvailable(eModeUseinv) == 1)[/ags] die If-Anweisung in
[ags]if ((isAction (eActUse) && player.ActiveInventory != null)  && invAt.IsInteractionAvailable(eModeUseinv) == 1)[/ags] geändert, wobei ich mir hier nicht sicher bin ob diese Änderung wirklich nötig ist.
Auf jeden Fall klappt bei mir jetzt sowohl Benutze mit als auch Gib bisher problemlos. Da ich eh gerade an einer Episode arbeite werde ich das weiter im Auge behalten :cl.
Vielen Dank auf jeden Fall für die Hilfe, nach den Stellen hätte ich mich sonst sicher tot gesucht!