Autor Thema: Inventargegenstände miteinander benutzen [gelöst]  (Gelesen 5388 mal)

Elvis

  • kleiner Tentakel
  • ***
  • Beiträge: 112
    • Profil anzeigen
    • Brainless Games
Inventargegenstände miteinander benutzen [gelöst]
« am: 08. Juli 2015, 08:44:37 »
Ich benutze das Maniac Mansion Starterpack für AGS 3.2.1 mit AGS 3.3.3 und orientiere mich an Endres' Tutorial für AGS 3.x.

Problem: Ich kann Gegenstände im Inventar nicht (richtig) miteinander kombinieren.

Ich habe einen iKrug (mit Wasser) und einen iLumpen. Ich möchte, dass man das Wasser über den Lumpen kippen kann und das funktioniert auch schon:

In den Properties des iLumpen wähle ich "Use inventory on this item" und benutze folgenden Code:

[ags]function iLumpen_UseInv()
{
if(player.ActiveInventory==iKrug)
{
Wait(5);
player.Say("Ich kippe das Wasser auf den Lumpen.");
player.LoseInventory(iLumpen);
player.AddInventory(iNasserLumpen);
}
else Unhandled_Inventory();
}[/ags]

Der Lumpen verschwindet und taucht als nasser Lumpen wieder auf.

Problem:
Anstatt das Wasser über den Lumpen zu kippen, soll es auch möglich sein, den Lumpen in das Wasser zu tauchen (also an Stelle von "Benutze Krug mit Lumpen" soll auch "Benutze Lumpen mit Krug" funktionieren). Also habe ich dasselbe für den iKrug gebastelt:

In den Properties des iKrug habe ich "Use inventory on this item" gewählt und folgenden Code benutzt:

[ags]
function iKrug_UseInv()
{
   if(player.ActiveInventory==iLumpen)
  {
      Wait(5);
      player.Say("Ich tauche den Lumpen in das Wasser.");
    player.LoseInventory(iLumpen);
    player.AddInventory(iNasserLumpen);
   }
    else Unhandled_Inventory();
}
[/ags]

Aber große Enttäuschung, jetzt funktioniert nichts von beiden mehr!

Sobald ich "Benutze Krug" oder "Benutze Lumpen" wähle, bekomme ich sofort die Aussage "Das klappt so nicht." Es wird noch nicht mal mehr gefragt, mit welchem Gegenstand ich den gewählten Gegenstand kombinieren will.

Ich habe beiden Items in der "Description" das >u angehängt, aber ohne funktioniert es genausowenig.

Kann mir bitte jemand weiterhelfen?
« Letzte Änderung: 11. Juli 2015, 08:07:23 von Elvis »

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 719
    • Profil anzeigen
Re: Inventargegenstände miteinander benutzen
« Antwort #1 am: 08. Juli 2015, 11:07:36 »
Wenn du "Benutze Krug" auswählst, wird bereits die Funktion iKrug_UseInv() ausgeführt.
Da das ActiveInventory nicht der Lumpen ist (sondern der Krug), wird das "else Unhandeld_Inventory()" ausgeführt.

Das ist ein allgemeines "Problem" mit den Scripten in den Starterpacks, dass ich auch nicht lösen konnte.
Wenn man sich bei der Bedienung des Interfaces ein bisschen umgewöhnt und es nicht so macht wie in klassischen Adventures, ist das Problem m.M.n keins mehr:
Für die Aktion "Benutze mit" klicke zuerst auf ItemA, dann auf ItemB.

Elvis

  • kleiner Tentakel
  • ***
  • Beiträge: 112
    • Profil anzeigen
    • Brainless Games
Re: Inventargegenstände miteinander benutzen
« Antwort #2 am: 08. Juli 2015, 14:10:10 »
Besteht das Problem erst mit neueren AGS-Versionen? Oder gibt es eine andere Möglichkeit zur Umsetzung?

Weil wenn das so ist, dann gibt es keine Möglichkeit, zwei Inventargegenstände im klassischen Stil miteinander zu kombinieren!?    :'(

Das "original" Maniac Mansion Deluxe wurde doch auch mit AGS umgesetzt und dort ist es doch auch egal, ob man nun die Taschenlampe mit den Batterien oder die Batterien mit der Taschenlampe benutzt, oder?

Und wie ist das in "Murder at the Moonshine Mansion"? Dort wird doch der Billardstock mit dem Kaugummi und der Nähnadel kombiniert?

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 719
    • Profil anzeigen
Re: Inventargegenstände miteinander benutzen
« Antwort #3 am: 08. Juli 2015, 16:50:55 »

Für die Aktion "Benutze mit" klicke zuerst auf ItemA, dann auf ItemB.

...und nicht auf "Benutze".


Ist bloß ein anderes Handling für den Spieler  ;)

Elvis

  • kleiner Tentakel
  • ***
  • Beiträge: 112
    • Profil anzeigen
    • Brainless Games
Re: Inventargegenstände miteinander benutzen
« Antwort #4 am: 08. Juli 2015, 19:36:06 »
Das Problem muss aber doch lösbar sein, denn ich habe mir gerade noch mal das jüngst erschienene "Murder at the Moonshine Mansion" angesehen und dabei festgestellt, dass in diesem Spiel sowohl "Benutze" "Kaugummi" mit "Billard-Stock" als auch "Benutze" "Billard-Stock" mit "Kaugummi" einwandfrei funktioniert.

Der von cmdr vorgeschlagene Workaround (die Gegenstände anklicken ohne vorher Benutze zu klicken) funktioniert zwar problemlos, ist aber in meinen Augen nicht zufriedenstellend, da er eben nicht dem klassischen Maniac-Mansion-Stil entspricht.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2302
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Inventargegenstände miteinander benutzen
« Antwort #5 am: 09. Juli 2015, 19:57:56 »
Ich bin das ganze gerade durchgegangen. Es funktioniert in den 3er SPs tatsächlich nicht bzw. nicht wie es soll. Das Problem liegt tatsächlich daran, dass wenn kein Inventargegenstand ausgewählt ist, das Script sofort in den else-Block springt. Das Item ist zwar dann das ActiveInventory und kann anschließend mit dem anderen Gegenstand verwendet werden, aber das ist nicht Sinn der Sache.


Folge mir auf X und itch.io

ManiacTwister

  • volljähriger Tentakel
  • *****
  • Beiträge: 727
  • Geschlecht: Männlich
  • Aktionslisten Admin
    • Profil anzeigen
    • Aktionsliste
Re: Inventargegenstände miteinander benutzen
« Antwort #6 am: 09. Juli 2015, 20:56:48 »
Hab mir das mal angesehen und es sollte so wie du das willst funktionieren:

Im Globalscript fügst du im "if" in der Funktion Unhandled_inventory() folgendes "else if" hinzu:

[ags]
    else if(UsedAction(eActUse))
    {
        on_mouse_click(eMouseLeftInv);
    }
[/ags]

Die ganze Funktion sieht anschliessend so aus:
[ags]
function Unhandled_Inventory()
{
    if (UsedAction(eActPickUp))
    {
        Wait(5);
        player.Say("Das hab ich schon bei mir. Ich kann es nicht noch einmal aufnehmen.");
    }
    else if (UsedAction(eActPull))
    {
        Wait(5);
        player.Say("Wozu?");
    }
    else if (UsedAction(eActPush))
    {
        Wait(5);
        player.Say("Es bewegt sich nicht.");
    }
    else if (UsedAction(eActOpen))
    {
        Wait(5);
        player.Say("Das lässt sich nicht öffnen.");
    }
    else if (UsedAction(eActClose))
    {
        Wait(5);
        player.Say("Das lässt sich nicht schließen.");
    }
    else if(UsedAction(eActUse))
    {
        on_mouse_click(eMouseLeftInv);
    }
    else Unhandled();
}
[/ags]

Funktionierte bei meinem kurzen Test. Es kann sein, dass etwas anderes dadurch kaputt geht, ich denke aber nicht. Jedoch habe ich beim testen einen anderen, von meinem Code unabhängigen, Bug gefunden. Wir werden uns das demnächst mal ansehen.

lg,
ManiacTwister
« Letzte Änderung: 09. Juli 2015, 20:58:44 von ManiacTwister »

Zitate:
Die Intelligenz in der Welt bleibt konstant. Nur dumm, dass die Bevölkerung wächst.
Mein charakter ist derb! fies und gemein!

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Inventargegenstände miteinander benutzen
« Antwort #7 am: 09. Juli 2015, 20:59:33 »
Ich bin das ganze gerade durchgegangen. Es funktioniert in den 3er SPs tatsächlich nicht bzw. nicht wie es soll. .....

Mmh, jetzt bin ich etwas verwirrt. Ich habe damals Epi89 auch mit dem Mansion SP für AGS 3.2.1 entwickelt (mit AGS 3.2.1) und da funktioniert diese Vorgehensweise wenn man zwei Gegenstände (A und B) miteinander benutzen will (A mit B UND B mit A), genauso wie Elvis es auch macht.

* EDIT: Nur wenn man die Gegenstände im Inv direkt anklickt. *

@Elvis
Versuche mal das ganze mit AGS 3.2.1 umzusetzen, dann müsste es funktionieren.
« Letzte Änderung: 09. Juli 2015, 21:16:44 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

ManiacTwister

  • volljähriger Tentakel
  • *****
  • Beiträge: 727
  • Geschlecht: Männlich
  • Aktionslisten Admin
    • Profil anzeigen
    • Aktionsliste
Re: Inventargegenstände miteinander benutzen
« Antwort #8 am: 09. Juli 2015, 21:00:59 »
@Kiwa:

Lies bitte noch mal den ganzen Thread. Es geht darum, dass man auch die Aktion "Benutze" benutzen können soll anstatt nur die Gegenstände miteinander zu benutzen.
« Letzte Änderung: 09. Juli 2015, 21:01:09 von ManiacTwister »

Zitate:
Die Intelligenz in der Welt bleibt konstant. Nur dumm, dass die Bevölkerung wächst.
Mein charakter ist derb! fies und gemein!

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Inventargegenstände miteinander benutzen
« Antwort #9 am: 09. Juli 2015, 21:13:33 »
@Kiwa:

Lies bitte noch mal den ganzen Thread. Es geht darum, dass man auch die Aktion "Benutze" benutzen können soll anstatt nur die Gegenstände miteinander zu benutzen.

Ok, ich hatte nur den Eingangspost von Elvis gelesen und daraus geht das nicht hervor. Er erwähnt dies erst später.

@Elvis
Bitte in Zukunft die Problemstellung so präzise wie möglich formulieren, ist jetzt nicht schlimm aber so hätte ich mir meinen Post sparen können den das funktioniert nur wenn man die Inventargegenstände im Inventory direkt anklickt. Und das willst du ja nicht, es wäre gut das noch im Einganspost zu ergänzen, man liest nicht immer den ganzen Thread (vor allem nicht wenn er schon lang geworden ist). Wie gesagt, ist nicht schlimm sondern nur als Tip.
« Letzte Änderung: 09. Juli 2015, 21:14:19 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

ManiacTwister

  • volljähriger Tentakel
  • *****
  • Beiträge: 727
  • Geschlecht: Männlich
  • Aktionslisten Admin
    • Profil anzeigen
    • Aktionsliste
Re: Inventargegenstände miteinander benutzen
« Antwort #10 am: 09. Juli 2015, 21:19:06 »
man liest nicht immer den ganzen Thread (vor allem nicht wenn er schon lang geworden ist).

Das ist zum einen nie eine gute Idee (ausserdem finde ich den Thread alles andere als lang) und zum anderen ist das Problem durchaus schon im Eingangspost beschrieben. Aber ist ja auch egal, die Hauptsache ist, dass es jetzt funktionieren sollte.   ;)
« Letzte Änderung: 09. Juli 2015, 21:19:41 von ManiacTwister »

Zitate:
Die Intelligenz in der Welt bleibt konstant. Nur dumm, dass die Bevölkerung wächst.
Mein charakter ist derb! fies und gemein!

Elvis

  • kleiner Tentakel
  • ***
  • Beiträge: 112
    • Profil anzeigen
    • Brainless Games
Re: Inventargegenstände miteinander benutzen
« Antwort #11 am: 11. Juli 2015, 08:06:59 »
So wie von ManiacTwister vorgeschlagen scheint es zu funktionieren!

Vielen Dank an ManiacTwister und Cone Arex, die sich das Problem nach meiner Bitte im Forum genauestens angesehen haben.