Eigene GUI: "Inventaritem auf Inventaritem benutzen"

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Gabriel
Frischling
Frischling
Beiträge: 3
Registriert: 29.04.2010, 22:22

Eigene GUI: "Inventaritem auf Inventaritem benutzen"

Beitrag von Gabriel »

Hallo.

Ich habe vor ein paar Tagen wieder angefangen mit AGS zu arbeiten und ein altes Projekt ausgebuddelt.

Dazu habe ich die GUI überbrückt und ein Coin-Interface implementiert.
Nach und nach hab ich auch alles zum Laufen bekommen, außer der Funktion, ein Inventaritem auf ein Inventaritem zu benutzen.

Das Scribt ruft die Funktion einfach nicht auf...

Ich bin mit meinem Latein am Ende und bitte um Hilfe.

AGS-Version: 3.1.2.82

Scriptauszuüge:

Code: Alles auswählen

function iBrosche_UseInv()
{
  if (player.ActiveInventory == iKristall){
    player.LoseInventory (iKristall);
    player.LoseInventory (iBrosche);
    player.AddInventory (iKristallbrosche);
  }
}
Dieses Scipt wird nicht aufgerufen, obwohl ich keinen Grund finde, warum es nicht aufgerufen wird.

Code: Alles auswählen

function InvProcess(int X,  int Y) {
  //Ermöglicht das Verarbeiten von Inventar-Clicks
  
  //Inventar wird clickable gemacht
  gui[gInv.ID].Clickable = true;
  
  //Ausführung der Aktion
  //----- Coin Aktionen werden im jeweiligen button-Click abgehandelt
  
  // geclicktes Guiteil ermitteln
  // 1. InventoryItem geklickt
  InventoryItem *item = InventoryItem.GetAtScreenXY (CoinX, CoinY);
  if (item != null)
  {
    if (player.ActiveInventory != null) {
      // - Click mit item auf Item --> Item mit Item benutzen
      Display ("Mode: %d[Inv: %s[CoinPos: %d,%d[clicked: %s",mouse.Mode, player.ActiveInventory.Name, CoinX, CoinY, item.Name);
ProcessClick (CoinX, CoinY, eModeUseinv);

Code: Alles auswählen

    }
    else { 
      // - Click auf Item --> Item aufnehemen
      player.ActiveInventory = item;
      mouse.Mode = eModeUseinv;
    }
 
  }
  //2. Button clicked
  GUIControl *theControl = GUIControl.GetAtScreenXY(CoinX, CoinY);
  if (theControl != null) {
    if (theControl == invScrollLeft) {
      //inventar nach links blättern 
    }
    if (theControl == invScrollRight) {
      //inventar nach rechts blättern
    }
  }
  //Inventar wird wieder unclickable
  gui[gInv.ID].Clickable = false;
}
Aus dieser Funktion wird die Funktion oben aufgerufen. Die betreffende Zeile ist hervorgehoben (nicht im Codeblock).
Die Variblenwerte habe ich überprüft. Da sollte es keine Fehler geben.
Bei einer Schritt-für-Schritt-Überprüfung des Codes habe ich keine Fehler im Ablauf gefunden. Die Funktion wird einfach nicht aufgerufen.


Ich hoffe, dass ihr mir helfen könnt. Vielleicht findet ihr einen Fehler, den ich übersehen habe.

Gruß Gabriel
Benutzeravatar
Gabriel
Frischling
Frischling
Beiträge: 3
Registriert: 29.04.2010, 22:22

Re: Eigene GUI: "Inventaritem aufolve

Beitrag von Gabriel »

Solved.

Zeile ersetzt durch:

item.RunInteraction (eModeUseinv);
Antworten