Unlösbares Problem in Sachen Area Scaling

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Unlösbares Problem in Sachen Area Scaling

Beitrag von DieFüchsin »

Seufz, ich glaube, dieses Problem ist unlösbar...

Mein Charakter soll auf einer Walkable Area von unten herauf laufen und dabei kontinuierlich größer werden.
Leider lässt sich das mit "SetAreaScaling" nicht lösen, da min nicht größer als max sein darf.

Im Roomeditor lässt sich das Ganze auch nicht einstellen, egal in welches Kästchen bei "Use continuous scaling" ich
die kleinere oder größere Zahl schreibe, AGS vergrößert den character trotzdem nach unten und verkleinert ihn nach oben,
obwohl ich ja genau das Gegenteil will.

Gibt es eine Lösung für dieses Problem? Ich könnte viele verschiedene Walkable Areas anwenden, aber der Zoom soll von
5% bis 60% gehen (auf drei Walkable Areas verteilt), da werd ich ja wahnsinnig, wenn ich die alle übereinanderstapel.
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

Erstell Walkable-Areas mit kontinuierlicher Skalierung von 140% bis 195%.

in die Raum Rep_ex dann:

Code: Alles auswählen

player.ManualScaling = true;
player.Scaling = 200 - GetScalingAt(player.x, player.y);
Das sollte den Wert für die Vergrößerung eigentlich invertieren.
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

ich krieg leider die Fehlermeldung, dass "player.ManualScaling" kein Bestandteil von "GameCharacter" ist.... :(
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Schreib es in die Player enters screen (before fadein) des Raumes und benutz den Script-o-name.
Also z.B.

Code: Alles auswählen

  cEgo.ManualScaling=true;
Und dann nur die andere Zeile in die rep_ex.

Ist aber ein bisschen seltsam, da player auch nur eine Referenz zum momentan steuerbaren Charakter ist.

Vielleicht liegt es auch an etwas anderem, poste doch mal das room script, bitte.
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Schonmal ihre Signatur gelesen? ;)

Mit allem vor 2.7 klappt der Code nicht.
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Die Signatur hab ich tatsächlich mal irgendwann gelesen, aber wenn, wäre ich davon ausgegangen, dass sie veraltet ist...

Wenigstens haben wir jetzt des Rätsels Lösung ;)
Use gopher repellent on funny little man
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

1. Möglichkeit: auf mind. 2.7 updaten

2. Möglichkeit:

in die Raum rep_exe:

Code: Alles auswählen

int scale = (A - player.y) *  55 / (A - B) + 5;
(Wobei A der größte und B der kleinste Y-Wert der walkable area ist.
55 ist die Differenz Min-Max Vergrößerung.)

Code: Alles auswählen

SetAreaScaling(1, scale, scale);
EDIT: getestet und korrigiert...
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

ich favorisiere Möglichkeit zwei und habe es ausprobiert, doch es klappt leider immer noch nicht, wahrscheinlich, weil ich wieder was falsch gemacht hab :( ich poste mal mein script:

// room script file

int A;
int B;

#sectionstart hotspot1_a // DO NOT EDIT OR REMOVE THIS LINE
function hotspot1_a() {
// script for hotspot1: Player stands on hotspot (obsolete, use Regions)
SetCharacterSpeechView(EGO, 195);
ChangeCharacterView(EGO, 195);
DisplaySpeechBackground(EGO, "Nanu, was ist denn jetzt los?!");
int transparenz;
transparenz=0;
while (transparenz !=100) {
transparenz=transparenz+1;
SetObjectTransparency(0, transparenz);
Wait(1);
}
ChangeCharacterView(EGO, 194);
DisplaySpeechBackground(SCR, "Whaaaaaaaaaaaaaaaaa!");
SetCharacterSpeed(EGO, 15);
MoveCharacterBlocking(EGO, 164, 199, 1);
}
#sectionend hotspot1_a // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart room_a // DO NOT EDIT OR REMOVE THIS LINE
function room_a() {
// script for room: Player enters screen (after fadein)
SetCharacterSpeed(EGO, 4);
MoveCharacterToHotspot(EGO, 1);
}
#sectionend room_a // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart room_b // DO NOT EDIT OR REMOVE THIS LINE
function room_b() {
// script for room: Player enters screen (before fadein)

}
#sectionend room_b // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart room_c // DO NOT EDIT OR REMOVE THIS LINE
function room_c() {
// script for room: Repeatedly execute
int scale = (A - player.y) * 55 / (A - B) + 5;
SetAreaScaling(1, scale, scale);
}
#sectionend room_c // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart region2_a // DO NOT EDIT OR REMOVE THIS LINE
function region2_a() {
// script for region2: Player walks onto region
A=10;
B=5;
}
#sectionend region2_a // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart region1_a // DO NOT EDIT OR REMOVE THIS LINE
function region1_a() {
// script for region1: Player walks onto region
A=60;
B=10;
}
#sectionend region1_a // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart region3_a // DO NOT EDIT OR REMOVE THIS LINE
function region3_a() {
// script for region3: Player walks onto region
A=60;
B=5;
}
#sectionend region3_a // DO NOT EDIT OR REMOVE THIS LINE


Da ich mit drei Walkable Areas arbeite, hab ich drei Regions erstellt, die A und B modifizieren.

erst marschiert der character ganz brav seinen weg und dann bricht es plötzlich ab, mit der Meldung: Fehler in Line 45: Error: SetAreaScaling: min and max must be in range 5-200

Der Zoom verändert sich auch nicht.

Muss ich den Zoomlevel im Editor der Room Areas auch noch irgendwie einstellen?
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

A und B sind nicht die Zoomfaktoren, sondern die Y-Koordinaten!

Smiley, bitte poste doch mal die Formel mit Zooms und Koordinaten, bin grad zu faul, selber nachzurechnen ;)
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

oh achso das hab ich falsch verstanden :oops:
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

int scale = (player.y - y1) * (z2 - z1) / (y2 - y1) + z1;

y1: y-Koordinate oben
y2: y-Koordinate unten

z1: Zoomfaktor oben
z2: Zoomfaktor unten
Use gopher repellent on funny little man
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

DieFüchsin hat geschrieben:
Da ich mit drei Walkable Areas arbeite, hab ich drei Regions erstellt, die A und B modifizieren.
Argh, hab vergessen, dass du 3 walkable areas benutz... :oops:

die nachfolgenden As(unten) und Bs(oben) mit den jeweiligen Y-Werten aus dem Editor(muss nicht 100% genau sein) ersetzen.

Code: Alles auswählen

int scale1 = (A - player.y) *  50 / (A - B) + 10;
int scale2 = (A - player.y) *  5 / (A - B) + 5;
int scale3 = (A - player.y) *  55 / (A - B) + 5;

SetAreaScaling(1, scale1, scale1);
SetAreaScaling(2, scale2, scale2);
SetAreaScaling(3, scale3, scale3);
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

uhm... um ehrlich zu sein weiß ich nicht recht, welche Y-werte... sorry, ich steh auf der leitung
Danke, Adventuretreff! <3
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

Room-editor -> Areas -> walkable areas

Über dem Bild steht: "Mouse Pos: [X-Wert], -->[Y-Wert]<--..."
Beweg nun die Maus zu den jeweiligen unteren und oberen Rändern der walkable areas und setz die Werte in die Formeln ein.

Der A-Wert ist der untere Rand, der B-Wert ist der obere Rand(die Zahl muss kleiner sein).
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4411
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

achsooo danke für die geduld :roll:
Danke, Adventuretreff! <3
Antworten