Script für Aufzug mit Aufzugtüren |
|
Müsste das hier sein, habs aber nie in Aktion gesehen: _elevator.gsc
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:
|
main(){
level.elevDown=true;
level.elevMove=false;
switchTOP=getentarray("ups","targetname");
for(i=0; i<switchTOP.size; i++)
switchTOP[i] thread elev_think();
}
elev_think(){
while(1){
self waittill ("trigger");
if(level.elevMove==false){
level.elevMove=true;
thread elev_move();
}
}
}
elev_move(){
etime=5;
zdirec="z";
zdist1=128;
zdist2=-128;
IdoorLEFT=getent("leftindoor", "targetname");
IdoorRIGHT=getent("rightindoor", "targetname");
OdoorTL=getent("topleftdoor", "targetname");
OdoorTR=getent("toprightdoor", "targetname");
OdoorBL=getent("bottomleftdoor", "targetname");
OdoorBR=getent("bottomrightdoor", "targetname");
thread door_open(IdoorLEFT, IdoorRIGHT, OdoorBL, OdoorBR);
Elevator=getent("elevator", "targetname");
if(level.elevDown==true){
door_close(IdoorLEFT, IdoorRIGHT, OdoorBL, OdoorBR);
wait(.1);
Elevator thread move_func(zdist1, etime, zdirec);
IdoorLEFT thread move_func(zdist1, etime, zdirec);
IdoorRIGHT thread move_func(zdist1, etime, zdirec);
Elevator waittill ("movedone");
door_open(IdoorLEFT, IdoorRIGHT, OdoorTL, OdoorTR);
level.elevDown=false;
level.elevMove=false;
}
else{
door_close(IdoorLEFT, IdoorRIGHT, OdoorTL, OdoorTR);
wait(.1);
Elevator thread move_func(zdist2, etime, zdirec);
IdoorLEFT thread move_func(zdist2, etime, zdirec);
IdoorRIGHT thread move_func(zdist2, etime, zdirec);
Elevator waittill ("movedone");
door_open(IdoorLEFT, IdoorRIGHT, OdoorBL, OdoorBR);
level.elevDown=true;
level.elevMove=false;
}
wait(.1);
}
door_close(leftIN, rightIN, leftOUT, rightOUT){
LDclose=41;
RDclose=-41;
ydirec="y";
dtime=1.1;
leftIN thread move_func(LDclose,dtime, ydirec);
rightIN thread move_func(RDclose,dtime, ydirec);
wait(1);
leftOUT thread move_func(LDclose,dtime, ydirec);
rightOUT thread move_func(RDclose,dtime, ydirec);
wait(1);
}
door_open(leftyIN, rightyIN, leftyOUT, rightyOUT){
LDopen=-41;
RDopen=41;
ydirec="y";
dtime=1.1;
leftyOUT thread move_func(LDopen,dtime, ydirec);
rightyOUT thread move_func(RDopen,dtime, ydirec);
wait(1);
leftyIN thread move_func(LDopen,dtime, ydirec);
rightyIN thread move_func(RDopen,dtime, ydirec);
}
move_func(dist,time,direc){
if(direc=="z")
self movez (dist, time, (time/2), (time/2));
if(direc=="x")
self movex (dist, time, (time/2), (time/2));
if(direc=="y")
self movey (dist, time, (time/2), (time/2));
self waittill ("movedone");
} |
|
ToM
__________________
|
|
|
|
|
|
Oder schau dir das hier mal an.
http://www.file-upload.net/download-2172...evator.zip.html
Enthält eine readme, Beispielmap und prefabs.
Ist nicht von mir (hab ich mal von modsonline.com runtergeladen).
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
Ph3n0m PoWeR
Turnbeutelvergesser
Dabei seit: 16.01.2009
Beiträge: 292
|
|
So, ich habe folgendes gemacht:
Den Elevator, dann script_brushmodel mit targetname "elevator".
Die obere Tür, script_brushmodel mit targetname "topleftdoor" und "toprightdoor".
Die untere Tür, script_brushmodel mit targetname "bottomleftdoor" und "bottomrightdoor".
Die Aufzugtür, script_brushmodel mit targetname "leftindoor" und "rightindoor".
Einen trigger_use, der von unten bis nach oben geht, und den Bereich abdeckt, indem man den Aufzug rufen / starten kann.
Das Script an meine Verhältnisse angepasst:
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:
122:
123:
124:
125:
|
main()
{
level.elevDown=true;
level.elevMove=false;
switchTOP=getentarray("ups","targetname");
for(i=0; i<switchTOP.size; i++)
switchTOP[i] thread elev_think();
}
elev_think()
{
while(1)
{
self waittill ("trigger");
if(level.elevMove==false){
level.elevMove=true;
thread elev_move();
}
}
}
elev_move()
{
etime=5;
zdirec="z";
zdist1=120;
zdist2=-120;
IdoorLEFT=getent("leftindoor", "targetname");
IdoorRIGHT=getent("rightindoor", "targetname");
OdoorTL=getent("topleftdoor", "targetname");
OdoorTR=getent("toprightdoor", "targetname");
OdoorBL=getent("bottomleftdoor", "targetname");
OdoorBR=getent("bottomrightdoor", "targetname");
thread door_open(IdoorLEFT, IdoorRIGHT, OdoorBL, OdoorBR);
Elevator=getent("elevator", "targetname");
if(level.elevDown==true)
{
door_close(IdoorLEFT, IdoorRIGHT, OdoorBL, OdoorBR);
wait(.1);
Elevator thread move_func(zdist1, etime, zdirec);
IdoorLEFT thread move_func(zdist1, etime, zdirec);
IdoorRIGHT thread move_func(zdist1, etime, zdirec);
Elevator waittill ("movedone");
door_open(IdoorLEFT, IdoorRIGHT, OdoorTL, OdoorTR);
level.elevDown=false;
level.elevMove=false;
}
else
{
door_close(IdoorLEFT, IdoorRIGHT, OdoorTL, OdoorTR);
wait(.1);
Elevator thread move_func(zdist2, etime, zdirec);
IdoorLEFT thread move_func(zdist2, etime, zdirec);
IdoorRIGHT thread move_func(zdist2, etime, zdirec);
Elevator waittill ("movedone");
door_open(IdoorLEFT, IdoorRIGHT, OdoorBL, OdoorBR);
level.elevDown=true;
level.elevMove=false;
}
wait(.1);
}
door_close(leftIN, rightIN, leftOUT, rightOUT)
{
LDclose=50;
RDclose=-50;
ydirec="y";
dtime=1.1;
leftIN thread move_func(LDclose,dtime, ydirec);
rightIN thread move_func(RDclose,dtime, ydirec);
wait(1);
leftOUT thread move_func(LDclose,dtime, ydirec);
rightOUT thread move_func(RDclose,dtime, ydirec);
wait(1);
}
door_open(leftyIN, rightyIN, leftyOUT, rightyOUT)
{
LDopen=-50;
RDopen=50;
ydirec="y";
dtime=1.1;
leftyOUT thread move_func(LDopen,dtime, ydirec);
rightyOUT thread move_func(RDopen,dtime, ydirec);
wait(1);
leftyIN thread move_func(LDopen,dtime, ydirec);
rightyIN thread move_func(RDopen,dtime, ydirec);
}
move_func(dist,time,direc)
{
if(direc=="z")
self movez (dist, time, (time/2), (time/2));
if(direc=="x")
self movex (dist, time, (time/2), (time/2));
if(direc=="y")
self movey (dist, time, (time/2), (time/2));
self waittill ("movedone");
} |
|
Habe ich es richtig gemacht?
//Edit: Ich habe es nun getestet, das Spiel läuft sogar, die Scripts sind sauber eingebunden. Allerdings sehe ich weder meinen hinttring, noch kann ich irgendetwas bewegen. Kann mir nochmal jemand erklären, wo bzw. wie der "ups" Trigger eingebaut werden muss? Ich will das Gebäude zwei Mal benutzen, und es muss lauffähig sein, bevor ich es kopiere. Solange werde ich jetzt noch an den schönen Kleinigkeiten arbeiten, Salatauslagen, Theken, Terrarien, Computern...
__________________ Mera dil hai hindustani.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Ph3n0m PoWeR: 19.01.2010 20:07.
|
|
|
|
|
|
Du musst den ups use_trigger 2x setzen.
1x an den oberen Aufzugtüren und 1x unten (um den Aufzug zu rufen, bzw. die Türen zu öffen wenn der Aufzug schon da ist).
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
|
Original von Ph3n0m PoWeR
Ich habe ein Bild davon gemacht, vielleicht kannst du mir jetzt den Fehler zeigen.
Sieht (abgesehen von der Größer der trigger, die ruhig kleiner hätte sein können) eigentlich in Ordnung aus.
Edit: Ganz vergessen, trigger_use funktionieren nicht, wenn sie durch einen brush hindurchgehen. Du musst also oben und unten jeweils 2 trigger_use mit dem Namen ups erstellen (draußen und drinnen jeweils einen).
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 23.01.2010 01:41.
|
|
|
|
|
|
Ich hab mir jetzt mal den script etwas genauer angeschaut.
Der steckt voller Fehler.
z.B. werden in Zeile 44 die Türen geöffnet (aber als eigenständige Funktion). Dadurch wartet die Funktion elev_move nicht, bis die Funktion door_open fertig ist, sondern läuft sofort weiter. Und in Zeile 51 bzw. 67 werden die Türen schon wieder geschlossen. Die Türen bekommen also den Befehl sich zu öffnen und nur Millisekunden später gleich den Befehl sich wieder zu schließen. Öffnen und schließen läuft also gleichzeitig. Was wird da wohl passieren? Wahrscheinlich nichts.
Und wenn der Aufzug sich nach oben bzw. unten bewegt hat werden die Türen geöffnet (Zeile 58 bzw. 74) und bleiben offen, da kein weiterer Schließbefehl kommt. Und wenn der Aufzug jetzt wieder getriggert wird, sollen die Türen geöffnet werden (aber die sind doch schon offen, und werden jetzt noch weiter geöffnet).
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|