also ich habe ne kleine sequenz gemacht und davor soll halt ein autosave kommen mit savegameslot (99,"AutoSave");
so weit so gut. das problem an der sache ist der saved zwar an der gewünschten stelle aber wenn ich dann das autosave lade wird die sequenz nicht abgespielt. da wo eigentlich objekte über den bildschirm fliegen sollten bleibt alles ruhig stehen und nichts passiert. also es wird nichts was nach dem autosave befehl steht mehr ausgeführt nachdem man das autosave geladen hat. was kann ich dagegen tun?
AUTOSAVE
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Ich fürchte ich kann mit den Informationen noch nicht helfen. Kannst du vielleicht dein ganzes Script posten?
Ich schätze mal das was mit einem Wait Kommando oder sowas falsch ist, aber genaueres kann ich (und ich denke die anderen hier auch) nur mit dem Script sagen.
Ich schätze mal das was mit einem Wait Kommando oder sowas falsch ist, aber genaueres kann ich (und ich denke die anderen hier auch) nur mit dem Script sagen.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
if (button == 0) {
SaveGameSlot(99,"AUTOSAVE");
GUIOff(4);
Wait(1);
MoveObjectDirect(5,75,50,5);
MoveObjectDirect(6,20,5,5);
MoveObjectDirect(7,34,8,5);
MoveObjectDirect(8,185,60,5);
Wait(40);
ObjectOff(5);
ObjectOff(6);
ObjectOff(7);
ObjectOff(8);
Wait(40);
MoveObjectDirect(0,60,65,6);
MoveObjectDirect(1,30,70,6);
MoveObjectDirect(2,0,65,6);
MoveObjectDirect(3,660,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOn(9);
Wait(40);
MoveObjectDirect(4,240,0,3);
Wait(80);
ObjectOn(0);
ObjectOn(1);
ObjectOn(2);
ObjectOn(3);
ObjectOff(9);
MoveObjectDirect(0,55,55,6);
MoveObjectDirect(1,60,36,6);
MoveObjectDirect(2,0,20,6);
MoveObjectDirect(3,75,50,6);
MoveObjectDirect(4,25,25,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOff(4);
Wait(40);
NewRoom(2);
}
z.b. sowas (hab den code jetzt erfunden aber beinhaltet mein problem). das problem ist jetzt dass das spiel zwar gespeichert wird aber beim neuladen wird der rest der animation nicht abgespielt. das gleiche passiert auch wenn ich irgendwas ohne if etc abspielen will auch bei cutscenes. es wird gespeichert aber nach dem laden kommt garnichts. ihr könnt das ja mal bei jedem beliebigen script testen bei mir funzt es net. also ich meine wenn ich autosave in nem ganz normalen raum mache funktioniert es trotzdem aber angenommen ich habe längere abschnitte wo der spieler selber nicht speichern kann da es am laufenden band unterhaltungen gibt oder dialoge wo er richtig antworten muss weil er sonst stirbt und dann immer wieder von weit hinten anfangen muss wollte ich das mit atosaves machen.
SaveGameSlot(99,"AUTOSAVE");
GUIOff(4);
Wait(1);
MoveObjectDirect(5,75,50,5);
MoveObjectDirect(6,20,5,5);
MoveObjectDirect(7,34,8,5);
MoveObjectDirect(8,185,60,5);
Wait(40);
ObjectOff(5);
ObjectOff(6);
ObjectOff(7);
ObjectOff(8);
Wait(40);
MoveObjectDirect(0,60,65,6);
MoveObjectDirect(1,30,70,6);
MoveObjectDirect(2,0,65,6);
MoveObjectDirect(3,660,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOn(9);
Wait(40);
MoveObjectDirect(4,240,0,3);
Wait(80);
ObjectOn(0);
ObjectOn(1);
ObjectOn(2);
ObjectOn(3);
ObjectOff(9);
MoveObjectDirect(0,55,55,6);
MoveObjectDirect(1,60,36,6);
MoveObjectDirect(2,0,20,6);
MoveObjectDirect(3,75,50,6);
MoveObjectDirect(4,25,25,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOff(4);
Wait(40);
NewRoom(2);
}
z.b. sowas (hab den code jetzt erfunden aber beinhaltet mein problem). das problem ist jetzt dass das spiel zwar gespeichert wird aber beim neuladen wird der rest der animation nicht abgespielt. das gleiche passiert auch wenn ich irgendwas ohne if etc abspielen will auch bei cutscenes. es wird gespeichert aber nach dem laden kommt garnichts. ihr könnt das ja mal bei jedem beliebigen script testen bei mir funzt es net. also ich meine wenn ich autosave in nem ganz normalen raum mache funktioniert es trotzdem aber angenommen ich habe längere abschnitte wo der spieler selber nicht speichern kann da es am laufenden band unterhaltungen gibt oder dialoge wo er richtig antworten muss weil er sonst stirbt und dann immer wieder von weit hinten anfangen muss wollte ich das mit atosaves machen.
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Wenn dein Orginalscript auch durch einen Button aufgerufen wird, ist das das Problem.
Bei deinem Beispielscript klickt man einen Button an, das Spiel speichert und der Rest läuft ab. Wenn das Spiel geladen wird, dann lädt er die Speilposition, nicht aber die Scriptposition. Da AGS sich nicht merkt, das zum Zeitpunkt des Speicherns der Button gedrückt wurde, fährt er einfach im Raum fort und der Rest deines Scripts wird beim Laden ignoriert. Es gibt also nur ein Problem, wenn es geladen wird, wenn es einfach so weiter geht müsste es funktionieren.
So könntest du das Problem lösen:
if (button==0) {
SetGlobalInt (1, 10);
GUIOff (4);
SaveGameSlot (99, "AUTOSAVE");
}
in repeatedly_execute:
if (GetGlobalInt (1)==10) {
Wait(1);
MoveObjectDirect(5,75,50,5);
MoveObjectDirect(6,20,5,5);
MoveObjectDirect(7,34,8,5);
MoveObjectDirect(8,185,60,5);
Wait(40);
ObjectOff(5);
ObjectOff(6);
ObjectOff(7);
ObjectOff(Cool;
Wait(40);
MoveObjectDirect(0,60,65,6);
MoveObjectDirect(1,30,70,6);
MoveObjectDirect(2,0,65,6);
MoveObjectDirect(3,660,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOn(9);
Wait(40);
MoveObjectDirect(4,240,0,3);
Wait(80);
ObjectOn(0);
ObjectOn(1);
ObjectOn(2);
ObjectOn(3);
ObjectOff(9);
MoveObjectDirect(0,55,55,6);
MoveObjectDirect(1,60,36,6);
MoveObjectDirect(2,0,20,6);
MoveObjectDirect(3,75,50,6);
MoveObjectDirect(4,25,25,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOff(4);
Wait(40);
NewRoom(2);
SetGlobalInt (1, 20);
}
Bei dem Script passiert jetzt folgendes:
- der Button wird gedrückt und ein GlobalInt wird auf einen Wert gesetzt. Anschließend speichert das AUTOSAVE
- durch repeatedly_execute wird der Wert vom GlobalInt abgefragt.
- sowohl beim laden als auch wenn es einfach so weiterläuft hat der GlobalInt einen neuen Wert, der das repeatedly_execute Script ablaufen lässt.
Anmerkung: Ich hab das Ausschalten des GUIs vor das Speichern gesetzt, weil es sonst manchmal zu Fehlern kommen kann.
Sag mir bitte ob das dein Problem löst, weil ich zwar denke es könnte so funktioniren, mir aber nicht 100 % sicher bin
Bei deinem Beispielscript klickt man einen Button an, das Spiel speichert und der Rest läuft ab. Wenn das Spiel geladen wird, dann lädt er die Speilposition, nicht aber die Scriptposition. Da AGS sich nicht merkt, das zum Zeitpunkt des Speicherns der Button gedrückt wurde, fährt er einfach im Raum fort und der Rest deines Scripts wird beim Laden ignoriert. Es gibt also nur ein Problem, wenn es geladen wird, wenn es einfach so weiter geht müsste es funktionieren.
So könntest du das Problem lösen:
if (button==0) {
SetGlobalInt (1, 10);
GUIOff (4);
SaveGameSlot (99, "AUTOSAVE");
}
in repeatedly_execute:
if (GetGlobalInt (1)==10) {
Wait(1);
MoveObjectDirect(5,75,50,5);
MoveObjectDirect(6,20,5,5);
MoveObjectDirect(7,34,8,5);
MoveObjectDirect(8,185,60,5);
Wait(40);
ObjectOff(5);
ObjectOff(6);
ObjectOff(7);
ObjectOff(Cool;
Wait(40);
MoveObjectDirect(0,60,65,6);
MoveObjectDirect(1,30,70,6);
MoveObjectDirect(2,0,65,6);
MoveObjectDirect(3,660,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOn(9);
Wait(40);
MoveObjectDirect(4,240,0,3);
Wait(80);
ObjectOn(0);
ObjectOn(1);
ObjectOn(2);
ObjectOn(3);
ObjectOff(9);
MoveObjectDirect(0,55,55,6);
MoveObjectDirect(1,60,36,6);
MoveObjectDirect(2,0,20,6);
MoveObjectDirect(3,75,50,6);
MoveObjectDirect(4,25,25,6);
Wait(30);
ObjectOff(0);
ObjectOff(1);
ObjectOff(2);
ObjectOff(3);
ObjectOff(4);
Wait(40);
NewRoom(2);
SetGlobalInt (1, 20);
}
Bei dem Script passiert jetzt folgendes:
- der Button wird gedrückt und ein GlobalInt wird auf einen Wert gesetzt. Anschließend speichert das AUTOSAVE
- durch repeatedly_execute wird der Wert vom GlobalInt abgefragt.
- sowohl beim laden als auch wenn es einfach so weiterläuft hat der GlobalInt einen neuen Wert, der das repeatedly_execute Script ablaufen lässt.
Anmerkung: Ich hab das Ausschalten des GUIs vor das Speichern gesetzt, weil es sonst manchmal zu Fehlern kommen kann.
Sag mir bitte ob das dein Problem löst, weil ich zwar denke es könnte so funktioniren, mir aber nicht 100 % sicher bin
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"