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);
}
}
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);
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;
}
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