OK, das hilft mir schonmal eine ganze Ecke weiter
Ich habe das mal umformatiert damit es übersichtlicher wird und habe die ganzen if if if durch && ersetzt (gerade rausgefunden ^^), so dass der Code jetzt so aussieht:
Code: Alles auswählen
int zaehler;
function cMuellmann_Talk()
{
if (player == cEgo)
{
dEgoMuell.Start();
}
else if ((player == cEgo2) && (zaehler == 0) && (player.InventoryQuantity[iDose1.ID] = 0))
{
dEgo2Muell1.Start();
zaehler ++;
}
else if ((zaehler == 1) && (player.InventoryQuantity[iDose1.ID] = 0))
{
dEgo2Muell2.Start();
}
else if (player.InventoryQuantity[iDose1.ID] > 0)
{
dEgo2Muell0.Start();
}
}
Und nachdem ich es hier gepostet habe ist mir auch aufgefallen warum er mir einen Parse Error gibt. Es muss ja
...ID] == 0 ) sein. Den Fehler habe ich behoben und siehe da, es funktioniert. Heureka
Insofern also: Alles erstmal wunderbar, vielen Dank
Was Du mit properties meinst, ist mir nicht ganz klar.
Das war es mir auch nicht, bis ich irgendwann gestern ein entsprechendes Tutorial (
http://www.bigbluecup.com/actutor.htm" onclick="window.open(this.href);return false; , ziemlich weit unten ) gefunden habe.
Ich hatte zwar in der Hilfedatei zu dem Thema nichts gefunden, aber als ich gestern nochmal die Tutorials auf der Homepage durchgewühlt habe bin ich auf genau das was ich die ganze Zeit gesucht hatte. Da ist auch erklärt wie man solche Variabeln global setzt und abruft. Das hilft mir gerade ziemlich bei einem anderen Problem weiter für das ich genau die Funktionen/Variabeln brauche weil das zwei Zusatzoptionen betrifft, die im regulären AGS nicht mit drin sind.
---------------------------------------------
AKTUALISIERUNG:
Ich habs jetzt mit Zahlen statt Worten versucht und siehe da, es funktioniert einwandfrei und bleibt auch so wie es sein soll. Ergo: Untenstehendes Problem gelöst und wieder etwas schlauer.
Warum schreiben die das bitte nicht ins Tutorial mit rein, dass man bei globalen ints nur zahlen verwenden darf? Ich lass das untenstehende trotzdem mal drin für Interessierte (weiß ja nicht).
----------------------------------------------
Allerdings hab ich damit jetzt auch schon wieder ein Problem.
Ich hab zu Testzwecken mal einen Soundeffekt eingebaut falls die globale Variable auf 1 steht, also eingeschaltet ist. Damit dies standardmäßig wenn man das Spiel startet auch der Fall ist, hab ich folgendes eingebaut:
Code: Alles auswählen
int global1;
function game_start()
{
mouse.UseModeGraphic(eModePointer);
gIconbar.Visible = false;
gQuit.Visible = false;
SetGlobalInt(global1, 1);
SetGlobalInt(global2, 1);
}
Dazu dann noch einen Knopf im gPanel um die Variable auf null bzw. wieder auf eins zu setzen:
Code: Alles auswählen
// Aus gPanel
function btnpublikum_OnClick(GUIControl *control, MouseButton button)
{
if (GetGlobalInt(global1) == 1)
{
SetGlobalInt(global1, 0);
Display("Global1 ausgeschaltet");
}
else
{
SetGlobalInt(global1, 1);
Display("Global1 angeschaltet");
}
}
Das selbe entsprechend für global2
Das scheint soweit alles richtig zu sein und funktioniert scheinbar auch, denn die Anzeige bekomme ich im Wechsel, also so wie es sein sollte wenn man etwas dauernd ein- und ausschaltet.
Allerdings hapert es bei der Probe aufs Exempel, denn wenn selbst wenn ich Global1 ausschalte wird der Testsound trotzdem noch gespielt. Woran könnte das liegen?
Hier der Testlauf:
Code: Alles auswählen
// Aus einem Raumscript (also nicht mehr Global, im Gegensatz zu oben)
function hHotspot7_Look()
{
if (GetGlobalInt(global1) == 1 )
{
PlaySound(3);
Display("Sieht aus wie ein Testlauf");
}
else if (GetGlobalInt(global1) == 0 )
{
Display("Sieht aus wie ein Testlauf (unplugged)");
}
}
Wenn ich das ausprobiere bekomme ich jetzt allerdings IMMER den Sound mitabgespielt und auch immer die erste nachricht angezeigt, obwohl er eigentlich die zweite zeigen sollte.
Außerdem ist mir aufgefallen, dass
wenn ich global1 abschalte, auch global2 abgeschaltet wird. Das gilt auch umgekehrt und natürlich auch fürs anschalten.
Muss man solche globale Variabeln etwa mit Zahlen statt mit Namen versehen?
In der Hilfsdatei von AGS finde ich dazu mal wieder nichts außer der Auflistung der game.irgendwas-variablen. Außerdem meckert AGS ja nicht wenn ich statt Zahlen Namen eingebe.
Ansonsten funktioniert global2 aber wunderbar (im Gegensatz zu global1) und wenn ich es abschalte werden auch die entsprechenden Zusatzaktionen nicht mehr angezeigt.
Weiteres Problem:
Ich habe gesehen dass ich im Raumscript irgendwo
stehen hatte. Also kein Wunder, dass der das Teil nicht verändert hat.
ABER wenn ich das jetzt entferne sagt er mir dass er mit der Befehlszeile "GetGlobalInt(global1)" nichts mehr anfangen kann weil er nicht weiß was global1 ist.
Mit global 2 gehts doch auch wunderbar??
Ich versuchs nochmal mit Zahlen statt mit Worten.
ANMERKUNG: Fehler behoben. Es lag wirklich daran, dass ich Worte für die GlobalInt verwendet habe.