Rolltreppe |
|
Sodele, folgendes ging mir heut durch den Kopf:
2 Rolltreppen nebeneinander, eine hoch, eine runter.
Die einzelnen Treppenstufen sollte ich eigentlich mit dem Script des Paternoster (hier schonmal besprochen = Klick) animieren können denke ich. Jede Treppe denselben Namen, müsste passen.
Hier das Script aus dieser Map:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
|
main(){
// a Paternoster is some kind of elevator (as well as the latin name of the lords prayer)
level.Waypoints = getentarray("paternoster_WP","targetname");
level.Paternosterfloors = getentarray("paternoster_floor","targetname");
paternoster_init();
}
paternoster_init(){
iTemp = 0;
while(iTemp < level.Paternosterfloors.size){
level.Paternosterfloors[iTemp] thread floor_move(iTemp);
iTemp++;
}
}
floor_move(iFloornumber){
myWaypoints = level.Waypoints;
iSpeed = 50;
iWaypoint = iFloornumber;
tempZiel = myWaypoints[iWaypoint].origin;
self.origin = tempZiel;
while(1){
iWaypoint += 1;
if (iWaypoint >= myWaypoints.size)
iWaypoint = 0;
tempZiel = myWaypoints[iWaypoint].origin;
iZeit = distance(self.origin,tempZiel)/iSpeed;
self moveto(tempZiel, iZeit, 0.0, 0.0);
wait iZeit;
self.origin = tempZiel;
}
}
|
|
Theoretisch sollte ich auch den Player via dem geänderten Jumppad Script darauf bewegen können. Hier das Script + der Link: Klick
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
|
main(){
thread jumper1(); // Rohr, schneller Kriechen, Eingang 1
thread jumper2(); // Rohr, schneller Kriechen, Eingang 2
}
jumper1(){
pad1 = getent ("jump1","targetname");
pad2 = getent ("jump2","targetname");
glow2 = getent ("glow2","targetname");
air21 = getent ("air21","targetname");
air22 = getent ("air22","targetname");
air23 = getent ("air23","targetname");
air24 = getent ("air24","targetname");
//level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
maps\mp\_fx::loopfx("beacon_glow", (glow2.origin), 3, (glow2.origin) + (0, 0, 90));
while (1){
pad2 waittill ("trigger",user);
if (user istouching(pad2)){
//throw = user.origin + (100, 100, 0);
air = spawn ("script_model",(0,0,0));
air.origin = user.origin;
air.angles = user.angles;
user linkto (air);
time = 1;
air moveto (air21.origin, 1);
wait .5;
air moveto (air22.origin, 1);
wait .5;
air moveto (air23.origin, 1);
wait .5;
air moveto (air24.origin, 1);
pad1 TriggerOff();
//air moveto (throw, time, 0.5,0.5);
//air moveto (throw, time, 0.5,0.5);
wait 1;
user unlink();
pad1 TriggerOn();
wait 1;
}
}
}
jumper2(){
pad1 = getent ("jump1","targetname");
pad2 = getent ("jump2","targetname");
glow1 = getent ("glow1","targetname");
air11 = getent ("air11","targetname");
air12 = getent ("air12","targetname");
air13 = getent ("air13","targetname");
air14 = getent ("air14","targetname");
//level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
maps\mp\_fx::loopfx("beacon_glow", (glow1.origin), 3, (glow1.origin) + (0, 0, 90));
while (1){
pad1 waittill ("trigger",user);
if (user istouching(pad1)){
//throw = user.origin + (100, 100, 0);
air = spawn ("script_model",(0,0,0));
air.origin = user.origin;
air.angles = user.angles;
user linkto (air);
time = 1;
air moveto (air11.origin, 1);
wait .5;
air moveto (air12.origin, 1);
wait .5;
air moveto (air13.origin, 1);
wait .5;
air moveto (air14.origin, 1);
pad2 TriggerOff();
//air moveto (throw, time, 0.5,0.5);
//air moveto (throw, time, 0.5,0.5);
wait 1;
user unlink();
pad2 TriggerOn();
wait 1;
}
}
}
|
|
Die Frage ist: Wie kann ich es Scripttechnisch lösen, das der Player nicht von einem Trigger gezogen wird, sondern sich selbst auf der Treppe bewegen kann, aber die Stufen ihn mitnehmen?
Optional wäre da noch der Gedanke, das ein Player gegen die Laufrichtung der Treppe laufen kann, da würde er dann gebremst werden, im hoch mehr, im runter weniger...
ToM
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 19.05.2008 22:12.
|
|
|
|
|
Panther[GER]
Tele-Tubbie
Dabei seit: 12.07.2006
Beiträge: 138
|
|
Meinste nich das währe einfacher die einzelnen Stufen je als "schrägen mini Aufzug" zu Scripten und gut is ??
|
|
|
|
|
|
Müsst ich mir mal ansehen, klingt gut. Ich denk manchmal etwas kompliziert, was Scripts anbelangt
ToM
__________________
|
|
|
|
|
Panther[GER]
Tele-Tubbie
Dabei seit: 12.07.2006
Beiträge: 138
|
|
Nur ma so als Gedankenanstoß .... ich würde jeweils am oberen und unteren ende der Treppe nen Scipt origin setzen und die dann quasi als wegpunkte benutzen.
Also Stufe1 -> start @ origin_unten -> moveto origin_oben -> waittill movedone -> hide Model -> wait Xs -> und wieder von vorne als Schleife halt ...
|
|
|
|
|
|
Dann würde die sichtbare Rotation der Treppe fehlen...
Aber der Ansatz iss gut. Muss ich übers lange WE mal pfriemeln
Danke
ToM
__________________
|
|
|
|
|
|
Wow cooler Flug mim Heli! Auch die Map schaut gut aus, mach mal fertig
Danke für das andere Script, da brüt ich mal drüber.
Achja, mit sichtbarer Rotation meine ich, das man von weiters weg schon sieht, das es ne Rolltreppe iss
ToM
__________________
|
|
|
|
|
T.R.Graves
*bM.sprite~
Dabei seit: 19.05.2006
Beiträge: 340
|
|
Hallo zusammen
Da es hierbei um ein script für meine Rolltreppe geht will ich mich auch mal beteiligen.
Also das Problem ist folgendes eine Rolltreppe mit 13 Stufen auf zwei Seiten die gegenläufig sich bewegen müssen.
Also hier ist mein Script zu dem Problem
rolltreppe()
{
level.rolltreppeSpeed = 15.2;//Geschwindigkeit aufwärts
level.upSpeed = 0.1;//geschwindigkeit zurück
stufe = getent ("stufe","targetname");
temp = getent(stufe.target,"targetname");
stufe.dest = temp.origin;//zielpunkt der stufe
stufe.start = stufe.origin;//startpunkt der untersten stufe
stufe hide();
wait 2.1;
stufe thread rolltreppe_move();
}
rolltreppe_move()
{
wait 0.1;
self show();
stufe = getent ("stufe","targetname");
self moveto(self.dest, level.rolltreppeSpeed, 0.0, 0.0);
self waittill ("movedone");
self hide();
self moveto(self.start, level.upSpeed, 0.0, 0.0);
wait .15;
thread rolltreppe_move();
}
Problem Nr.1 nur eine Stufe (sollen mal 13 werden)
Man könnte sicher alle 13 Stufen mit moveto scripten aber ich denke mit einem script origin als ziel , und bei ankunft der Stufe am ziel-origin ein Starten einer Schleife wäre einfacher zu machen.
Also sehr komplex und ich denke auch schwer zu lösen.
Ciao
__________________
Wie habe ich gemerkt, dass ich Gott bin:
Ich habe gebetet und stellte fest, dass ich Selbstgespräche führe.
|
|
|
|
|
|
Mit dem Paternosterscript funktioniert es, Jan hat das gerade mal getestet. Jetzt baut er mal was mit mehr Stufen zum Test. Weiteres folgt bald.
ToM
__________________
|
|
|
|
|
Panther[GER]
Tele-Tubbie
Dabei seit: 12.07.2006
Beiträge: 138
|
|
|
|
|
|
|
Danke, da iss was dran. Darauf bin i noch edd gekommen...
ToM
__________________
|
|
|
|
|
T.R.Graves
*bM.sprite~
Dabei seit: 19.05.2006
Beiträge: 340
|
|
Also ich habe noch was ganz anderes versucht mit diesem script.
Auch das gleiche Paternosta Prinzip nur etwas einfacher aufgebaut.
Dort ist jede Stufe mit der vorherigen verbunden und läuft bei der Rolltreppe links hoch rechts runter.
Sieht sehr gut aus ausser das die Geschwindigkeit sehr bescheiden ist. Bekomme dieses auch nicht so hin wie ich das will.
patanosta_move()
{
patanosta = getent ("patanosta","targetname");
level.rolltreppeSpeed = 10.2;
patanosta thread move();
}
move()
{
Targ1 = getent(self.target,"targetname");
Targ2 = getent(Targ1.target,"targetname");
Targ3 = getent(Targ2.target,"targetname");
Targ4 = getent(Targ3.target,"targetname");
Targ5 = getent(Targ4.target,"targetname");
Targ6 = getent(Targ5.target,"targetname");
Targ7 = getent(Targ6.target,"targetname");
Targ8 = getent(Targ7.target,"targetname");
Targ9 = getent(Targ8.target,"targetname");
Targ10 = getent(Targ9.target,"targetname");
Targ11 = getent(Targ10.target,"targetname");
Targ12 = getent(Targ11.target,"targetname");
Targ13 = getent(Targ12.target,"targetname");
Targ14 = getent(Targ13.target,"targetname");
Targ15 = getent(Targ14.target,"targetname");
Targ16 = getent(Targ15.target,"targetname");
Targ17 = getent(Targ16.target,"targetname");
Targ18 = getent(Targ17.target,"targetname");
Targ19 = getent(Targ18.target,"targetname");
Targ20 = getent(Targ19.target,"targetname");
Targ21 = getent(Targ20.target,"targetname");
Targ22 = getent(Targ21.target,"targetname");
Targ23 = getent(Targ22.target,"targetname");
Targ24 = getent(Targ23.target,"targetname");
Targ25 = getent(Targ24.target,"targetname");
Targ26= getent(Targ25.target,"targetname");
Targ27 = getent(Targ26.target,"targetname");
Targ28 = getent(Targ27.target,"targetname");
Targ29 = getent(Targ28.target,"targetname");
Targ30 = getent(Targ29.target,"targetname");
while (1)
{
self moveto (targ1.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ1 moveto (targ2.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ2 moveto (targ3.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ3 moveto (targ4.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ4 moveto (targ5.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ5 moveto (targ6.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ6 moveto (targ7.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ7 moveto (targ8.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ8 moveto (targ9.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ9 moveto (targ10.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ10 moveto (targ11.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ11 moveto (targ12.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ12 moveto (targ13.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ13 moveto (targ14.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ14 moveto (targ15.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ15 moveto (targ16.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ16 moveto (targ17.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ17 moveto (targ18.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ18 moveto (targ19.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ19 moveto (targ20.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ20 moveto (targ21.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ21 moveto (targ22.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ22 moveto (targ23.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ23 moveto (targ24.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ24 moveto (targ25.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ25 moveto (targ26.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ26 moveto (targ27.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ27 moveto (targ28.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ28 moveto (targ29.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ29 moveto (targ30.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ30 moveto (targ1.origin,level.rolltreppeSpeed, 0.0, 0.0);
Targ30 waittill ("movedone");
}
}
Ciao
__________________
Wie habe ich gemerkt, dass ich Gott bin:
Ich habe gebetet und stellte fest, dass ich Selbstgespräche führe.
|
|
|
|
|
|
Auch ne gute Idee! Wir sollten Dich mal beides vergleichen lassen, was Dir dann besser gefällt.
ToM
__________________
|
|
|
|
|
T.R.Graves
*bM.sprite~
Dabei seit: 19.05.2006
Beiträge: 340
|
|
Hallo zusammen
Ich wollte mich nur mal wieder melden wegen der Rolltreppe und gleich mal meine Lösung anbieten.
Als erstes das Script
rolltreppe_move()
{
rolltreppe = getent ("rolltreppe","targetname");
rolltreppe thread move();
}
move()
{
Targ1 = getent(self.target,"targetname");
Targ2 = getent(Targ1.target,"targetname");
Targ3 = getent(Targ2.target,"targetname");
Targ4 = getent(Targ3.target,"targetname");
Targ5 = getent(Targ4.target,"targetname");
Targ6 = getent(Targ5.target,"targetname");
Targ7 = getent(Targ6.target,"targetname");
Targ8 = getent(Targ7.target,"targetname");
Targ9 = getent(Targ8.target,"targetname");
Targ10 = getent(Targ9.target,"targetname");
Targ11 = getent(Targ10.target,"targetname");
Targ12 = getent(Targ11.target,"targetname");
Targ13 = getent(Targ12.target,"targetname");
Targ14 = getent(Targ13.target,"targetname");
Targ15 = getent(Targ14.target,"targetname");
Targ16 = getent(Targ15.target,"targetname");
Targ17 = getent(Targ16.target,"targetname");
Targ18 = getent(Targ17.target,"targetname");
Targ19 = getent(Targ18.target,"targetname");
Targ20 = getent(Targ19.target,"targetname");
Targ21 = getent(Targ20.target,"targetname");
Targ22 = getent(Targ21.target,"targetname");
Targ23 = getent(Targ22.target,"targetname");
Targ24 = getent(Targ23.target,"targetname");
Targ25 = getent(Targ24.target,"targetname");
Targ26= getent(Targ25.target,"targetname");
Targ27 = getent(Targ26.target,"targetname");
Targ28 = getent(Targ27.target,"targetname");
Targ29 = getent(Targ28.target,"targetname");
Targ30 = getent(Targ29.target,"targetname");
while (1)
{
self moveto (targ1.origin,1.3);
Targ1 moveto (targ2.origin,1.3);//speed auf 1.3 je niedriger umso schneller
Targ2 moveto (targ3.origin,1.3);
Targ3 moveto (targ4.origin,1.3);
Targ4 moveto (targ5.origin,1.3);
Targ5 moveto (targ6.origin,1.3);
Targ6 moveto (targ7.origin,1.3);
Targ7 moveto (targ8.origin,1.3);
Targ8 moveto (targ9.origin,1.3);
Targ9 moveto (targ10.origin,1.3);
Targ10 moveto (targ11.origin,1.3);
Targ11 moveto (targ12.origin,1.3);
Targ12 moveto (targ13.origin,1.3);
Targ13 moveto (targ14.origin,1.3);
Targ14 moveto (targ15.origin,1.3);
Targ15 moveto (targ16.origin,1.3);
Targ16 moveto (targ17.origin,1.3);
Targ17 moveto (targ18.origin,1.3);
Targ18 moveto (targ19.origin,1.3);
Targ19 moveto (targ20.origin,1.3);
Targ20 moveto (targ21.origin,1.3);
Targ21 moveto (targ22.origin,1.3);
Targ22 moveto (targ23.origin,1.3);
Targ23 moveto (targ24.origin,1.3);
Targ24 moveto (targ25.origin,1.3);
Targ25 moveto (targ26.origin,1.3);
Targ26 moveto (targ27.origin,1.3);
Targ27 moveto (targ28.origin,1.3);
Targ28 moveto (targ29.origin,1.3);
Targ29 moveto (targ30.origin,1.3);
Targ30 moveto (targ1.origin,1.3);
Targ30 waittill ("movedone");
}
}
Im Radianten erstellen wir als erstes einen brush (treppe) und machen daraus ein
script-brushmodel und geben diesem den targetname rolltreppe
dann machen wir wiederum ein script-brushmodel und geben diesen die Textur Origin und schieben diesen auf die Stufe wie man auf den Bild sehen
kann.
Dann erstellen wir noch weitere Brushe (treppenstufen) und machen alle zu
script-brushmodel und setzen in alle ein script-brushmodel mit der textur origin.
Wichtig ist das man nur die Treppenbrushe mit der Taste w in Richtung der Bewegung der Rolltreppe verbinden.
Die letzte Treppenstufe mit der ersten Treppenstufe verbinden mit w so das in Kreislauf entsteht.
Das obere Script ist für 30 stufen ausgelegt und muss für weniger stufen umgeschrieben werden.
__________________
Wie habe ich gemerkt, dass ich Gott bin:
Ich habe gebetet und stellte fest, dass ich Selbstgespräche führe.
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|