scrollproblem
scrollproblem
hallo
mein erster raum in meinem ersten adventure is'n Haus, welches aus mehreren Räumen besteht.
es ist sozusagen wie ein comic, wo der charakter von bild zu bild gehen kann
nun mein problem,
wie kriege ich das hin, dass erst in die zweite etage gescrollt wird, wenn man die treppe benutzt?
also, das bild soll sich nicht bewegen.
Erst wenn man den einen Raum/die eine Etage verlassen hat, soll das Bild zum nächsten Raum/zur nächsten Etage scrollen.
danke für die aufmerksamkeit
mein erster raum in meinem ersten adventure is'n Haus, welches aus mehreren Räumen besteht.
es ist sozusagen wie ein comic, wo der charakter von bild zu bild gehen kann
nun mein problem,
wie kriege ich das hin, dass erst in die zweite etage gescrollt wird, wenn man die treppe benutzt?
also, das bild soll sich nicht bewegen.
Erst wenn man den einen Raum/die eine Etage verlassen hat, soll das Bild zum nächsten Raum/zur nächsten Etage scrollen.
danke für die aufmerksamkeit
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
siehe SetViewport und ReleaseViewport.
mit SetViewport kannst du den Raum "festhalten", so dass er nicht gescrollt wird.
Du kannst mit SetViewport auch einen Sprung auf die 2. Etage (oder wieder zurück) durchführen.
Du kannst auch statt einem Sprung auf die 2. Etage ein schnelles Scrollen mit diesem Befehl verwirklichen (Stichwort: verticales SmartScrolling).
Ein Script für horizontales SmartScrolling findest du unter
http://www.a-v-o.privat.t-online.de/ags/
Es sollte nicht all zu schwer sein, das Script umzuschreiben.
Mit ReleaseViewport wird das normale Mitscrollen (Zentrieren des PlayerCharacters) wieder eingeschaltet.
mit SetViewport kannst du den Raum "festhalten", so dass er nicht gescrollt wird.
Du kannst mit SetViewport auch einen Sprung auf die 2. Etage (oder wieder zurück) durchführen.
Du kannst auch statt einem Sprung auf die 2. Etage ein schnelles Scrollen mit diesem Befehl verwirklichen (Stichwort: verticales SmartScrolling).
Ein Script für horizontales SmartScrolling findest du unter
http://www.a-v-o.privat.t-online.de/ags/
Es sollte nicht all zu schwer sein, das Script umzuschreiben.
Mit ReleaseViewport wird das normale Mitscrollen (Zentrieren des PlayerCharacters) wieder eingeschaltet.
erstmal vielen dank für die antwort
ich bin leider nich so fit im scripten, deswegen versteh ich dein smartscrollingscript nich ganz...
oder sagen wir mal kein bisschen
also ich schreib im roomscript einfach unter einer beliebigen nummer
"setviewport" ?!
das kann doch nich alles sein.
Müssen da nicht noch irgendwelche Koordinaten hinter?
Halt die Koordinaten x,y bis x1,y1 damit das Programm weiß, wo das Bild genau zu sein hat.
sorry für meine unwissenheit, aber dämliche fragen sind nunmal das einzigste mittel, um sie bekämpfen zu können.
ich bin leider nich so fit im scripten, deswegen versteh ich dein smartscrollingscript nich ganz...
oder sagen wir mal kein bisschen
also ich schreib im roomscript einfach unter einer beliebigen nummer
"setviewport" ?!
das kann doch nich alles sein.
Müssen da nicht noch irgendwelche Koordinaten hinter?
Halt die Koordinaten x,y bis x1,y1 damit das Programm weiß, wo das Bild genau zu sein hat.
sorry für meine unwissenheit, aber dämliche fragen sind nunmal das einzigste mittel, um sie bekämpfen zu können.
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
Ok, ich dachte, du schaust einfach in der Hilfe nach, welche Parameter an SetViewport übergeben werden:
SetViewport (x, y);
x und y bezeichnen die linke obere Ecke. (0, 0) wäre also das oberste Stockwerk, (0, 200) das darunterliegen usw.
also würde ich in die repeately_execute interaction des Raumes ein Script schreiben, das bspw. so aussieht:
int charid = GetPlayerCharacter ();
int cy = character [charid].y;
int ry = GetViewportY ();
// --- auf oberster Treppe ---
if ((cy > 200) && (ry < 200)) SetViewport (0, 200);
else if ((cy < 200) && (ry > 0)) SetViewport (0, 0);
// --- auf Treppe darunter ---
else if ((cy > 400) && (ry < 400)) SetViewport (0, 400);
else if ((cy < 400) && (ry > 200)) SetViewport (0, 200);
SetViewport (x, y);
x und y bezeichnen die linke obere Ecke. (0, 0) wäre also das oberste Stockwerk, (0, 200) das darunterliegen usw.
also würde ich in die repeately_execute interaction des Raumes ein Script schreiben, das bspw. so aussieht:
int charid = GetPlayerCharacter ();
int cy = character [charid].y;
int ry = GetViewportY ();
// --- auf oberster Treppe ---
if ((cy > 200) && (ry < 200)) SetViewport (0, 200);
else if ((cy < 200) && (ry > 0)) SetViewport (0, 0);
// --- auf Treppe darunter ---
else if ((cy > 400) && (ry < 400)) SetViewport (0, 400);
else if ((cy < 400) && (ry > 200)) SetViewport (0, 200);
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
hey danke, das klappt
kann man das auch so hinbiegen, dass das Bild zwar auf gleicher Höhe bleibt (das funzt ja jetzt) aber dass es wagerecht scrollt/den Charakter verfolgt, wenn er sich weiter nach rechts oder links bewegt?
Dafür dass ich dich so derbe mit meinen nervigen Fragen gequält hab, schreib ich deinen Namen in die Credits meines Spieles, wenn es denn mal fertig wird.
kann man das auch so hinbiegen, dass das Bild zwar auf gleicher Höhe bleibt (das funzt ja jetzt) aber dass es wagerecht scrollt/den Charakter verfolgt, wenn er sich weiter nach rechts oder links bewegt?
Dafür dass ich dich so derbe mit meinen nervigen Fragen gequält hab, schreib ich deinen Namen in die Credits meines Spieles, wenn es denn mal fertig wird.
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
Das macht das SmartScrolling-Script, das ich bereits erwähnt habe.
Wenn du das in jedem Raum haben willst, dann sollte es in das global script.
Dazu öffnest du das global script, kopierst den Anfang des Scripts bis zu nachfolgender Zeile an den Anfang des global script:
function repeatedly_execute() {
Dann schließt du den Script-Editor (speichern) und wählst in der Menüleiste "Script" - "repeatedly execute".
Dann kopierst du den Inhalt der repeatedly_execute Funktion im SmartScrolling-Script in die Funktion im global script.
Damit sollte in jedem scrollbaren Raum deines Spieles das "ruckweise" scrolling funktionieren.
Darfst mir auch gerne ein Exemplar deines Spieles schicken, dann sehe ich das Script mal in Aktion.
---
Ich sehe gerade, dass das Script überarbeitet werden sollte, weil es inzwischen Funktionen in AGS gibt, die es noch nicht gab, als ich das Script entwickelt habe.
Sobald es aktuell ist, schreibe ich das hier.
Wenn du das in jedem Raum haben willst, dann sollte es in das global script.
Dazu öffnest du das global script, kopierst den Anfang des Scripts bis zu nachfolgender Zeile an den Anfang des global script:
function repeatedly_execute() {
Dann schließt du den Script-Editor (speichern) und wählst in der Menüleiste "Script" - "repeatedly execute".
Dann kopierst du den Inhalt der repeatedly_execute Funktion im SmartScrolling-Script in die Funktion im global script.
Damit sollte in jedem scrollbaren Raum deines Spieles das "ruckweise" scrolling funktionieren.
Darfst mir auch gerne ein Exemplar deines Spieles schicken, dann sehe ich das Script mal in Aktion.
---
Ich sehe gerade, dass das Script überarbeitet werden sollte, weil es inzwischen Funktionen in AGS gibt, die es noch nicht gab, als ich das Script entwickelt habe.
Sobald es aktuell ist, schreibe ich das hier.
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
OK, die aktuelle Version des Scripts liegt auf dem Server:
http://a-v-o.privat.t-online.de/ags
"Installation":
Im Script-Menü "on_event" auswählen.
a) Gibt es diese Funktion bereits im Script, dann wird sie dir angezeigt. Kopiere dann aus dem SmartScrolling-Script den Inhalt dieser Funktion in den Script-Editor.
b) Gibt es diese Funktion noch nicht, dann bekommst du eine Fehlermeldung. Öffne das global script und kopiere die ganze on_event Funktion ans Ende des global script.
Füge am Anfang des global scripts den Anfang des SmartScrolling-Scripts ein (bis vor die Zeile "function repeatedly_execute()").
Schließe den Script-Editor und wähle aus dem Script-Menü "repeatedly_execute". In diese Funktion fügst du den Aufruf "SmartScrolling ();" ein.
Dann sollte es schon funktionieren.
http://a-v-o.privat.t-online.de/ags
"Installation":
Im Script-Menü "on_event" auswählen.
a) Gibt es diese Funktion bereits im Script, dann wird sie dir angezeigt. Kopiere dann aus dem SmartScrolling-Script den Inhalt dieser Funktion in den Script-Editor.
b) Gibt es diese Funktion noch nicht, dann bekommst du eine Fehlermeldung. Öffne das global script und kopiere die ganze on_event Funktion ans Ende des global script.
Füge am Anfang des global scripts den Anfang des SmartScrolling-Scripts ein (bis vor die Zeile "function repeatedly_execute()").
Schließe den Script-Editor und wähle aus dem Script-Menü "repeatedly_execute". In diese Funktion fügst du den Aufruf "SmartScrolling ();" ein.
Dann sollte es schon funktionieren.