Es ruckelt

Fragen zu "Adventure Game Studio"? Hier rein!
Agent Catter

Beitrag von Agent Catter »

Danke, was würde ich nur ohne das Forum machen...
Sorry, noch ne letzte Frage: :oops:
Zum Beispiel: Ich stehe in einem Raum mit einer offenen Tür und einer anderen Person. Wenn ich will, kann ich jetzt durch die offene Tür gehen, aber da sagt die Hauptperson:"Jetzt noch nicht."
Okay, aber wenn man mit der anderen Person redet, kann man danach durch die offene Tür gehen. Und die Person sagt, sobald das passiert ist, und man sie noch einmal fragt, etwas anderes.

Wie kriege ich das hin?
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

Beitrag von Floyd »

Dazu gibt es Variablen. Hier mal die Vorgehensweise bei einer globalen Variable:

Im Globalscript schreibst du unter die Funktion game_start() folgendes:

Code: Alles auswählen

function game_start() {
  // called when the game starts, before the first room is loaded
SetGlobalInt(1,0);
Bei deiner Tür machst du eine Abfrage:

Code: Alles auswählen

if (GetGlobalInt (1) == 0) {
DisplayMessage (1);  
}
else if (GetGlobalInt (1) == 1) {
MoveCharacterBlocking(EGO,x,y,0);
NewRoomEx (2,x,y);
}
Ist die Variable noch auf 0, sagt er, dass er noch nicht gehen will. (DisplayMessage). Wurde sie schon auf 1 gesetzt, begibt sich dein Charakter zur Tür und betritt daraufhin einen neuen Raum.

Da er die Tür erst benutzen soll, wenn er mit dem anderen geredet hat, schreibst du im Dialog Editor an der Stelle, an der der nächste Raum "freigeschaltet" wird:

Code: Alles auswählen

set-globalint 1 1 
Damit wird die globale Variable 1 auf 1 gesetzt.
MfG Floyd
Agent Catter

Beitrag von Agent Catter »

Mmmmmmmh, Globalscript...
Im linken Feld bei "Global Messages" oder im "Room Editor" im
beim "Room Script"?! :?
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Oben in der Menüleiste gibt es den Eintrag script, dort befindet sich das global script. MfG Floyd
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

Und gerade bei sowas würde ich nicht unbedingt eine schöne Globale variable verwenden (und verschwenden...) sondern eine raum-variable, die man als Anfänger auch ganz einfach über den editor einbauen kann, vorausgesetzt natürlich, der charater mit dem man spricht ist auch im selben Raum wie die Tür :)
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Naja nur wenige schöpfen das Limit von 300 globalen Variablen wahrscheinlich voll aus, und wenn er eine raum-variable verwendet, kann er nicht einfach im Dialog Editor "set-globalint 1 1" schreiben, sondern muss es über "run script" lösen. Und GlobalInts sind imo nicht wirklich komplizierter :wink: . MfG Floyd
Agent Catter

Beitrag von Agent Catter »

Irgendwie krieg ich diese Scripterei nicht hin. Ständig kommt irgendeine doofe Fehlermeldung, wenn ich mein Spiel teste.
Ich sag euch mal, wie ich das anstelle, vielleicht könnt ihr mir ja sagen, was ich falsch mache. Also:
In dem schon besagten Raum mit der Figur und der Tür:
Zuerst füge ich in "Global Script" bei "game start" folgendes ein:
__________________________________________________
function game_start() {
// called when the game starts, before the first room is loaded
SetGlobalInt(1,0);
__________________________________________________
So wie Floyd es gesagt hat. So, danach gehe ich in den Room Editor, bearbeite meine Tür bei "Interactions" und füge bei "Interact Hotspot" auf "Run script" folgendes ein:
________________________________
if (GetGlobalInt (1) == 0) {
DisplayMessage (1);
}
else if (GetGlobalInt (1) == 1) {
MoveCharacterBlocking(EGO,x,y,0);
NewRoomEx (2,x,y);
}
________________________________
Schliesslich bearbeiteich meinen "TYP" bei Charaktere unter Interactions und füge bei meiner Unterhaltung "Run script" irgendwo ein und schreibe:
_________________________________
set-globalint 1 1
_________________________________
Wenn ich jetzt schon mein Spiel starten will, kommt wie schon besagt so eine ***** Fehlermeldung!!!

WAS ZUM ******** mach ich hier falsch?!

PS: Die Scriptsache muss man dann doch noch an sein Spiel anpassen, oder? Da diese Szene in meinem Spiel nicht die erste ist, muss ich nun zum Beispiel bei Scripten: DisplayMessage (15) eingeben, statt 1. Stimmt das?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Selbstverständlich, die 1 war nur ein Beispiel.
Du kannst aber auch DisplayMessage("Hallöchen, Popöchen!"); benutzen.
Der genaue Wortlaut der Fehlermeldung wäre jetzt noch hilfreich (wer hätte das gedacht?)...
Use gopher repellent on funny little man
Agent Catter

Beitrag von Agent Catter »

Mh, in der Fehlermeldung steht immer irgendetwas anderes. Gibt es irgendwie auch eine leichtere oder andere Möglichkeit, so etwas hinzukriegen. Wie zum Beispiel mit "Enable Hotspot" oder "Disable Hotspot"? Aber damit hat man nicht so viel Möglichkeiten.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Was stand denn in der letzten Fehlermeldung?
Immer etwas anderes? Hmm.
Der einfachste Weg ist, Du sagst uns, was in der Fehlermeldung stand. Wenn's nur ne Kleinigkeit ist, wär's doch doof, deswegen gleich alles anderes zu machen.
Use gopher repellent on funny little man
Agent Catter

Beitrag von Agent Catter »

Agent Catter

Beitrag von Agent Catter »

Anscheinend habe ich einen Koordinat vergessen. Aber ich habe bereits alle korrigiert. Trotzdem kommt diese Meldung immer wieder! ](*,)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Da fehlt wohl ein

Code: Alles auswählen

int y;
vorher.
Du kannst aber auch gleich die Zahl statt dem y schreiben.
Use gopher repellent on funny little man
Agent Catter

Beitrag von Agent Catter »

Was ist denn mit "Int y" gemeint?
Benutzeravatar
Floyd
Logik-Lord
Logik-Lord
Beiträge: 1088
Registriert: 14.03.2004, 19:59

...

Beitrag von Floyd »

Code: Alles auswählen

MoveCharacterBlocking(EGO,x,y,0);
NewRoomEx (2,x,y); 
x und y waren natürlich nur als Platzhalter gedacht, hier musst du die x und y Koordinaten eintragen!

MfG Floyd
Antworten