Inventarteil austauschen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Jones
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 51
Registriert: 13.10.2004, 10:28

Inventarteil austauschen

Beitrag von Jones »

Hallo!

Kennt jemand den Befehl um ein Inventarteil auszutauschen? Ich habe hier einen geschlossenen Brief, der nach dem Öffnen zu einem geöffneten Brief werden soll. Dafür habe ich auch verschiedene Inventarteile angelegt, da es sonst mit den Skriptbefehlen etwas unübersichtlich wird.

EDIT: gleich noch etwas zum Hinzufügen:
Ich bekomme es einfach nicht hin, eine globale Variable zu erstellen... bin ich in einem Raum und schreibe:
setGlobalInt (Namexy,0);
kommt beim Kompilieren die Fehlermeldung "Parse error, unexpected SetGlobalInt." Was mache ich falsch? Die Variable muss unbedingt global sein, da sie auch in anderen Räumen gebraucht wird.
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Um den einen Inv Gegenstand auszublenden und den anderen sichtbar zu machen, musst du folgendes tun:

Geh ins Inv Menü und klick auf den Interaction Button des Objekts, das verschwinden soll, danach schreibst du diesen Code in "use inventory on this item":
if (character[EGO].activeinv == 1) {
// 1 ist hierbei z.B. der Brieföffner
LoseInventory (2);
// Inv 2 ist der geschlossene Brief
AddInventory (3);
// 3 ist der geöffnete Brief
}
Den gleichen Code musst du auch bem Brieföffner einfügen, damit es in beide Richtungen funktioniert, allerdings ist hier das activeinv == 2.

In dieses Script kannst du natürlich noch andere Befehle einbauen, z.B. den Charakter irgendwas sagen lassen etc., dazu musst du nur kurz die GUI ausblenden mit GUIOff (x);.

Zum 2ten Problem:

Du kannst keine GlobalInt in einem Raum definieren, das musst du ihm Global Script erledigen (lässt sich aufrufen, indem du oben auf Script und dann auf edit Global Script gehst).

Du schreibst also ins GlobalScript folgendes:
SetGlobalInt(1,0);
1 ist die NEUE GlobalInt, 0 der Wert.
Diesen kannst du nun in jedem Raum mitttels SetGlobalInt verändern und mit GetGlobalInt ermitteln.

Ich hoffe ich konnte alle Fragen beantworten...
MfG Floyd
Benutzeravatar
Jones
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 51
Registriert: 13.10.2004, 10:28

Beitrag von Jones »

Ja das mit dem Inventar leuchtet mir ein, dankeschön für die Hilfe.

Aber das mit der Variablendeklaration klappt einfach nicht; es kommt immer die Meldung "Parse error"...an welche Stelle genau soll ich das denn ins Global Script schreiben?
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Oh das hab ich ganz vergessen du musst es unter
function game_start() schreiben, also so:
function game_start() {
// called when the game starts, before the first room is loaded
SetGlobalInt(1,0);
Jetzt müsste es aber gehen :D.
MfG Floyd
Benutzeravatar
Jones
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 51
Registriert: 13.10.2004, 10:28

Beitrag von Jones »

Yeah, jetzt geht's, danke!
Kann man denn nur Zahlen als Variablen nehmen und keine Namen?
Benutzeravatar
Jones
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 51
Registriert: 13.10.2004, 10:28

Beitrag von Jones »

Ein Problem habe ich da noch! Eine Variable namens "23" soll auf 1 gesetzt werden. Wenn ich aber einfach nur schreibe SetGlobalInt(23,1) scheint dieser Wert entweder nicht angenommen worden zu sein oder aber er ist im nächsten Raum wieder auf 0 gesetzt.
Need help!
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Machst du eine Abfrage mit if und GetGlobalInt, um GlobalInt (23) zu erhalten?
So weiß ich das jetzt auch nicht, vermute aber dass die Abfrage nicht richtig funktioniert, denn zurücksetzen sollte er die Variable eigentlich nicht.
Poste doch mal das Script.
Ps. das mit den Namen hab ich auch noch nicht ausprobiert, wär natürlich sehr viel übersichtlicher :oops: .
MfG Floyd
Benutzeravatar
Jones
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 51
Registriert: 13.10.2004, 10:28

Beitrag von Jones »

Oh neee wie bin ich blöd :D
Ich wollte das Script posten und dabei fiel mir der Fehler auf:

if (GetGlobalInt(23)==0)
{
DisplaySpeech(EGO,"Text");
}
else if (GetGlobalInt(23)==0)
{
DisplaySpeech(EGO,"Alternativtext");
}

Tja so kann das natürlich nichts werden! :)
Antworten