Script Problem

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Script Problem

Beitrag von Killer Bonsai »

Also ich habe ein Problem mit einem Script. Es geht darum das erst etwas geöfnet wird dann etwas ins Inventar hinzugefügt werden soll und zu guter Letzt eine Text angezeigt werden soll.


Es geht um die Zeile für "Öffne".
Mein Script sieht folgendermasen aus:

Code: Alles auswählen

if (GetGlobalInt(80)==1) Display("Ich will das nicht schließen.");    // Schließe 
     else if (GetGlobalInt(80)==2) Display("Ich will nichts geben.");      // Gib 
     else if (GetGlobalInt(80)==3) ObjectOn(0) AddInventory(3) Display("Ohh ein Brief von Stefan");   // Öffne 
     else if (GetGlobalInt(80)==4) Display("Ich will das nicht drücken."); // Drücke 
     else if (GetGlobalInt(80)==5) Display("Ich will das nicht ziehen.");  // Ziehe 
     else if (GetGlobalInt(80)==6) Display("Ich will das nicht nehmen.");  // Nimm                                    
     else if (GetGlobalInt(80)==7) Display("Ich will das nicht benutzen.");// Benutze 
     else if (GetGlobalInt(80)==9) Display("Ich will damit nicht reden."); // Rede 
     else DisplaySpeech(EGO,"Iasnob. So heiße ich.");  // Schaue 
     SetGlobalInt(80,0);
Dabei tritt dann ein Fehler auf.

Freue mich über jede Hilfe.

Killer Bonsai
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

Code: Alles auswählen

else if (GetGlobalInt(80)==3){
  ObjectOn(0);
  AddInventory(3);
  Display("Ohh ein Brief von Stefan");
}   

Wenn du mehrere Befehle unter einer if-Bedingung ausführen willst, setzt du das am besten wie oben in Klammern und in einzelne Zeilen.
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Beitrag von Killer Bonsai »

Ja ich hatte genau das vermeiden wollen :oops:
Nämlich das alles dann seine eigene Zeile hat, aber wenn das nicht anders geht werde ich das wohl so machen müssen.

Thx für die schnelle Hilfe
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

Glaub mir, auf Dauer ist das übersichtlicher (vor allem wenn du die entsprechenden zeilen immer schön eingerückt hast.)
Vor allem bei längeren Scripts.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Natürlich kannst Du es auch so schreiben:

Code: Alles auswählen

else if (GetGlobalInt(80)==3) { ObjectOn(0); AddInventory(3); Display("Ohh ein Brief von Stefan"); }
Aber wie Problem schon sagte, sowas macht keiner ;)
Use gopher repellent on funny little man
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Beitrag von Killer Bonsai »

Jetzt hab ich das Problem das wenn ich im Spiel "Öffnen" drücke das der jetzt den Text von "Ziehe" anzeigt, und einfach nichts macht. Ausser den falschen Text anzeigt.
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

Dann poste doch bitte nochmal dein verändertes Script, sonst können wir nur raten, woran es liegt.
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Beitrag von Killer Bonsai »

Also ich hab das ganze bei "userMode1" stehen. Es sieht volgendermaßen aus:

Code: Alles auswählen

if (GetGlobalInt(80)==1) Display("Ich will das nicht schließen.");    // Schließe 
     else if (GetGlobalInt(80)==2) Display("Ich will nichts geben.");      // Gib 
     else if (GetGlobalInt(80)==3){ 
        ObjectOn(0); 
        AddInventory(3); 
        Display("Ohh ein Brief von Stefan"); // Öffne
}    else if (GetGlobalInt(80)==4) Display("Ich will das nicht drücken."); // Drücke 
     else if (GetGlobalInt(80)==5) Display("Ich will das nicht ziehen.");  // Ziehe 
     else if (GetGlobalInt(80)==6) Display("Ich will das nicht nehmen.");  // Nimm                                     // Nimm 
     else if (GetGlobalInt(80)==7) Display("Ich will das nicht benutzen.");// Benutze 
     else if (GetGlobalInt(80)==9) Display("Ich will damit nicht reden."); // Rede 
       // Schaue 
     SetGlobalInt(80,0);
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Welches Tutorial benutzt Du denn?
Das Skript alleine hilft nicht viel weiter. (Sieht aber richtig aus.)
Use gopher repellent on funny little man
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Beitrag von Killer Bonsai »

Tutorial? Garkeins.
Dieses Script habe ich mal bei einer anderen Frage gepostet bekommen. Es geht nämlich darum das sonst "Öffne" usw. nicht funktioniert.
Aber so wies jetzt immoment aussieht klappt das auch nicht.
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Also Du benutzt ein LucasArts-Standard-GUI (mit 9 Verben), oder?
Die GlobalInt(80) wird benutzt, um festzuhalten, welches Verb angeklickt wurde.
Überprüf' mal Dein globalscript und schau nach, ob "Öffne" wirklich GlobalInt(80) auf 3 setzt. Anscheinend wird es nämlich im Moment auf 5 gesetzt.
Use gopher repellent on funny little man
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

wieso usermode1?

Sollte sowas nicht unter "any klick on..." stehen?
oder habe ich da was falsch verstanden?
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Beitrag von Killer Bonsai »

Usermod1 weil ich nicht wusste wo ich das hinpacken soll. Alle anderen Sachen sind ja gekoppelt an z.b. talk to.. .
Wenn ihr mir sagen könntet wo das Sinnbringen hin soll dann tut das bitte.

Das hab ich mir auch gedacht aber es ist alles korekt, zumindest sollte das so sein.
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Benutzeravatar
Problem
Logik-Lord
Logik-Lord
Beiträge: 1261
Registriert: 16.12.2004, 18:35
Wohnort: Kassel
Kontaktdaten:

Beitrag von Problem »

Also normalerweise gehört so ein script unter "any klick on hotspot" (wenn es sich denn um einen Hotspot handelt). Es wird ja bei diesem GUI nicht durch den Cursormode entschieden, welches Verb gerade angewählt ist, sondern durch die GlobalInt 80. Und das wird natürlich bei jedem Klick auf den Hotspot abgefragt. Das scheint mir aber nicht die Ursache deines Problems zu sein.
Wenn du es gar nicht hinbekommst, gibt es immernoch die Möglichkeit, einfach das ganze Verzeichnis jemandem per Email zu schicken, der sich das dann mal anschaut.
Benutzeravatar
Killer Bonsai
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 88
Registriert: 13.04.2005, 13:06
Wohnort: Cologne
Kontaktdaten:

Beitrag von Killer Bonsai »

Ich hab es jetzt unter "any click on hotspot" geschrieben und es passiert garnichts.

Wer hätte denn Zeit und Lust, mein Spiel sich mal anzuschauen? Einfach fragen.

KillerBonsai
Das Leben ist scheiße,
hat aber ne sau geile Grafik.
;)
Antworten