Unlösbares Problem in Sachen Area Scaling
- DieFüchsin
- Adventure-Gott
- Beiträge: 4411
- Registriert: 12.03.2004, 16:55
Unlösbares Problem in Sachen Area Scaling
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.
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.
-
- Hobby-Archäologe
- Beiträge: 163
- Registriert: 28.04.2005, 16:26
- Wohnort: Mönchengladbach
Erstell Walkable-Areas mit kontinuierlicher Skalierung von 140% bis 195%.
in die Raum Rep_ex dann:
Das sollte den Wert für die Vergrößerung eigentlich invertieren.
in die Raum Rep_ex dann:
Code: Alles auswählen
player.ManualScaling = true;
player.Scaling = 200 - GetScalingAt(player.x, player.y);
- DieFüchsin
- Adventure-Gott
- Beiträge: 4411
- Registriert: 12.03.2004, 16:55
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Schreib es in die Player enters screen (before fadein) des Raumes und benutz den Script-o-name.
Also z.B.
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.
Also z.B.
Code: Alles auswählen
cEgo.ManualScaling=true;
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
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Schonmal ihre Signatur gelesen? 
Mit allem vor 2.7 klappt der Code nicht.

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
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
-
- Hobby-Archäologe
- Beiträge: 163
- Registriert: 28.04.2005, 16:26
- Wohnort: Mönchengladbach
1. Möglichkeit: auf mind. 2.7 updaten
2. Möglichkeit:
in die Raum rep_exe:
(Wobei A der größte und B der kleinste Y-Wert der walkable area ist.
55 ist die Differenz Min-Max Vergrößerung.)
EDIT: getestet und korrigiert...
2. Möglichkeit:
in die Raum rep_exe:
Code: Alles auswählen
int scale = (A - player.y) * 55 / (A - B) + 5;
55 ist die Differenz Min-Max Vergrößerung.)
Code: Alles auswählen
SetAreaScaling(1, scale, scale);
- DieFüchsin
- Adventure-Gott
- Beiträge: 4411
- Registriert: 12.03.2004, 16:55
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?

// 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
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
- DieFüchsin
- Adventure-Gott
- Beiträge: 4411
- Registriert: 12.03.2004, 16:55
-
- Hobby-Archäologe
- Beiträge: 163
- Registriert: 28.04.2005, 16:26
- Wohnort: Mönchengladbach
Argh, hab vergessen, dass du 3 walkable areas benutz...DieFüchsin hat geschrieben:
Da ich mit drei Walkable Areas arbeite, hab ich drei Regions erstellt, die A und B modifizieren.

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);
- DieFüchsin
- Adventure-Gott
- Beiträge: 4411
- Registriert: 12.03.2004, 16:55
-
- Hobby-Archäologe
- Beiträge: 163
- Registriert: 28.04.2005, 16:26
- Wohnort: Mönchengladbach
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).
Ü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).
- DieFüchsin
- Adventure-Gott
- Beiträge: 4411
- Registriert: 12.03.2004, 16:55