Hauptmenü

Neuigkeiten:

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

BUG: Eine "Benutze"-Aktion wird ausgeführt, obwohl es nicht vorgesehen ist

Begonnen von MalleTheRedPhoenix, 30. September 2026, 21:59:46

Vorheriges Thema - Nächstes Thema

MalleTheRedPhoenix

Ich hoffe, ich kann euch das Problem gut schildern:

Ich möchte eine Kaffeetasse mit Wasser am Wasserhahn auffüllen. Logischerweise wende ich dabei den Befehl "Benutze Tasse mit Wasser" an und die Tasse ist dann aufgefüllt. Passiert auch so, soweit so gut.

Hier der entsprechende Skript:
  // USE ITEM
  else if (player.ActiveInventory == iCup)
  {
   if (FilledCup == 0)
   {
    aWaterPouring.Play(eAudioPriorityNormal);
    Wait(10);
    iCup.Graphic = 567;
    FilledCup = 2;
   }
   else if (FilledCup == 1)
   {
    player.Say("There is still coffee in the cup.");
   }
   else if (FilledCup == 2)
   {
    player.Say("There is still water in the cup.");
   }
  }   
  // don't forget this
  else Verbs.Unhandled();


Jedoch habe ich bei der Tasse im Bereich "Other click on inventory item" es so eingegeben, dass der Charakter aus der Tasse trinkt, sobald die Aktion "Benutze" so auf die Tasse angewendet wird.

Siehe her:

function iCup_OtherClick(InventoryItem *theItem, CursorMode mode)
{
 // USE
 if(Verbs.UsedAction(eGA_Use))
 {
  if (FilledCup == 0)
  {
   player.Say("I should fill the cup first.");
  } 
  else if (FilledCup == 1)
  {
   Wait(1);
   SetMouseCursorandActionGUIvisible (false);
   player.FaceDirection(eDirectionUp);
   aDrinking.Play(eAudioPriorityNormal);
   Wait(40);
   iCup.Graphic = 565;
   Wait(40);
   player.Say("Hmmm... Tasty!");
   FilledCup = 0;
   SetMouseCursorandActionGUIvisible (true);
  }
  else if (FilledCup == 2)
  {
   player.Say("I prefer something else than water.");
  } 
 }
}

Entsprechend muss ich mit der linken Maustaste direkt auf die Tasse klicken, damit ich darüber die "Benutze"-Aktion mit dem Wasser anwenden kann, damit es aufgefüllt wird.

Zudem dachte ich mir baue ich für das Abfluss eine weitere Funktion ein, wenn ich das Wasser von der Tasse auskippen lassen möchte. Hier der Skript:

  // USE ITEM
  else if (player.ActiveInventory == iCup)
  {
   if (FilledCup == 1)
   {
    aWaterPouring.Play(eAudioPriorityNormal);
    Wait(10);
    iCup.Graphic = 565;
    FilledCup = 0;
   }
   else if (FilledCup == 2)
   {
    aWaterPouring.Play(eAudioPriorityNormal);
    Wait(10);
    iCup.Graphic = 565;
    FilledCup = 0;
   }
  }   
  // don't forget this
  else Verbs.Unhandled();
 }

Jetzt kommt folgendes Problem bzw. Bug zustande:

Nachdem ich zum ersten Mal die Aktion "Benutze Tasse mit Wasser" in der Form ausgeführt habe, passiert es nämlich, dass die entsprechenden Aktionen, die ich geschrieben habe, auch so erfolgen, wenn ich einfach mit der linken Maustaste auf die Hotspots klicke, ohne dass ich die Tasse nochmal vorher ausgewählt habe. Sprich, die Tasse wird quasi "automatisch" dadurch aufgefüllt oder ausgeleert, was so nicht passieren darf.

Meine Vermutung liegt darin, dass die entsprechende "Benutze"-Aktion, die ich am Anfang eingesetzt habe, nach der Ausführung nicht resetet wurde, wodurch das Programm denkt, dass ich weiterhin die Tasse "benutzen" würde, obwohl das nicht mehr der Fall sein sollte.

Entweder habe ich da in den Skripten vergessen was einzufügen oder aber, da ich das Thumbleweed-Template als Vorlage verwende, könnte der Fehler schon im Quellcode liegen.
Wie Phönix aus der Asche.

Neue Charaktere und Starterpack für MOR in Arbeit.

Rocco

keine ahnung ob das die beste lösung ist, aber versuch mal in deiner funktion, die Zeile

player.ActiveInventory = null;
dazuzuschreiben, also:
  // USE ITEM
  else if (player.ActiveInventory == iCup)
  {
   if (FilledCup == 0)
   {
    aWaterPouring.Play(eAudioPriorityNormal);
    Wait(10);
    iCup.Graphic = 567;
    FilledCup = 2;
   }
   else if (FilledCup == 1)
   {
    player.Say("There is still coffee in the cup.");
   }
   else if (FilledCup == 2)
   {
    player.Say("There is still water in the cup.");
   }
  player.ActiveInventory = null;
  }   
  // don't forget this
  else Verbs.Unhandled();

MalleTheRedPhoenix

Wie Phönix aus der Asche.

Neue Charaktere und Starterpack für MOR in Arbeit.