|
 |
Elevatortüren aufhalten |
Banana2077
Turnbeutelvergesser
 
Dabei seit: 13.12.2009
Beiträge: 410

|
|
Hey leute,
ich habe in meiner map einen aufzug mit diesem Script:
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:
|
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()
{
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);
while(1)
{
self waittill ("trigger");
if(level.elevMove==false)
{
level.elevMove=true;
thread elev_move();
}
}
}
elev_move()
{
etime=5;
zdirec="z";
zdist1=440;
zdist2=-440;
IdoorLEFT=getent("leftindoor", "targetname");
IdoorRIGHT=getent("rightindoor", "targetname");
OdoorTL=getent("topleftdoor", "targetname");
OdoorTR=getent("toprightdoor", "targetname");
OdoorBL=getent("bottomleftdoor", "targetname");
OdoorBR=getent("bottomrightdoor", "targetname");
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="x";
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="x";
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));
self waittill ("movedone");
}
|
|
Ziemlich komplex mit 4 Türen usw..
Nun möchte ich einen Trigger einbauen der verhindert das sich die türen schliessen wenn jmd diesen trigger berührt...
das allgmein der fahrstuhl anfährt soll verhindert werden...
Könnte mir das jmd erklären?
danke!
__________________ Wie wollen sie das Internet gerne bestellen?
Komplett als 204.344.554.583 Blu-Rays oder ohne Pornos auf 2CDs?
______________________________________________________
Meine Website: http://rednosemaps.com
|
|
|
|
|
wacko
5-Minuten-Ei

Dabei seit: 17.01.2011
Beiträge: 19

|
|
Ahaa
Dann brauchst Du also einen Trigger "schutz_trigger", der die gesamten Türen komplett einschliesst (also in dem die Türen drinstecken, sodass man zwangsläufig diesen schutz_trigger berührt, wenn man von den Türen eingequetscht werden könnte)
Dann brauchst Du am besten einen clip-brush mit targetname 'schutz_block', der "ein- und ausgeblendet" werden kann.
Und dann wird im Script
erstens der 'schutz_block' auf nonsolid gesetzt.
$schutz_block nonsolid hieß das in moh, hier weiß ich nicht.
Dann wird ja in Deiner while(1) gewartet, ob jemand den 'trigger' auslöst.
Sobald das jemand tut, wird nachgesehen, ob der 'schutz_trigger' frei also unberührt ist und wenn nicht, wird darauf gewartet.
Sobald er frei ist, wird der schutz_block auf solid gesetzt, damit da keiner mehr hin kann und jetzt
Schliessen sich die Türen und der Lift fährt los.
|
|
|
|
|
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
habe auf der basis eines scriptes hier aus dem forum mein eigenes geschrieben, sieht im prinzip wie deins aus, nur ohne die move:func
macheim radiant folgendes:
-erstelle eine das je für beide ausgänge (oben und unten)
>erstelle einen clip-brush der genau so hoch und genau so bereit wie deine ausgänge am fahrstuhl sind
>die clip-brushes werden nun nach oben geschoben, sodass sie genau über den ausgängen sind
>clip-brushes jeweils als scropt_brushmodel machen und mit tartegnamen versehen
unten: targetname blocker_bot
oben: targetname blocker_top
es sind auch noch 2 anzeiger dabei, die dir zeigen wo der fahrstuhl im moment grade ist
hier im forum ist fast das gleiche nur noch mit zusätzlich eingebundenen effecten die dir zeigen, ob der aufstuhl bereit ist oder nicht (rot-grün)
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:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
|
main()
{
level.liftdown = true;
level.liftmove = false;
thread elevator_begin();
}
elevator_begin()
{
lift_trig = getentarray ("lift_trigger","targetname");
bd_left = getent("bd_left","targetname");
bd_right = getent("bd_right","targetname");
left_d = getent("left_d","targetname");
right_d = getent("right_d","targetname");
inner_doorsize = 56;
outer_doorsize = 64;
left_d movey(inner_doorsize - (inner_doorsize * 2) ,2,0.5,0.5);
right_d movey(inner_doorsize,2,0.5,0.5);
bd_left movey(outer_doorsize - (outer_doorsize * 2) ,2,0.5,0.5);
bd_right movey(outer_doorsize,2,0.5,0.5);
if ( isdefined(lift_trig) )
for (i = 0; i < lift_trig.size; i++)
lift_trig[i] thread elevator_think();
}
elevator_think()
{
while(1)
{
self waittill("trigger");
if (!level.liftmove)
thread elevator_move();
}
}
elevator_move()
{
licht = getent("licht","targetname");
elevator = getent("elevator","targetname");
bd_left = getent("bd_left","targetname");
bd_right = getent("bd_right","targetname");
td_left = getent("td_left","targetname");
td_right = getent("td_right","targetname");
left_d = getent("left_d","targetname");
right_d = getent("right_d","targetname");
blocker_bot = getent("blocker_bot","targetname");
blocker_top = getent("blocker_top","targetname");
indi_bot = getent("indi_bot","targetname");
indi_top = getent("indi_top","targetname");
top_point = getent ("top_point","targetname");
bot_point = getent ("bot_point","targetname");
level.liftmove = true;
trigger_hide();
speed = 3;
height = distance( top_point.origin,bot_point.origin);
inner_doorsize = 56;
outer_doorsize = 64;
blockerhigh = 128;
indicator = 50;
wait 1;
if (level.liftdown)
{
blocker_bot movez(blockerhigh - (blockerhigh * 2) ,0.2);
blocker_bot waittill("movedone");
right_d movey(inner_doorsize - (inner_doorsize * 2) ,2,0.5,0.5);
left_d movey(inner_doorsize ,2,0.5,0.5);
wait 0.5;
bd_right movey(outer_doorsize - (outer_doorsize * 2) ,2,0.5,0.5);
bd_left movey(outer_doorsize,2,0.5,0.5);
bd_right waittill("movedone");
blocker_bot movez(blockerhigh,0.2);
wait 1.5;
elevator movez (height, speed, 1, 1);
right_d movez (height, speed, 1, 1);
left_d movez (height, speed, 1, 1);
licht movez (height, speed, 1, 1);
indi_top movex (indicator - (indicator * 2) , speed);
indi_bot movex (indicator - (indicator * 2) , speed);
elevator waittill ("movedone");
wait 1.5;
td_right movey(outer_doorsize,2,0.5,0.5);
td_left movey(outer_doorsize - (outer_doorsize * 2) ,2,0.5,0.5);
wait 0.5;
right_d movey(inner_doorsize,2,0.5,0.5);
left_d movey(inner_doorsize - (inner_doorsize * 2) ,2 ,0.5,0.5);
left_d waittill("movedone");
level.liftdown = false;
}
else
{
blocker_top movez(blockerhigh - (blockerhigh * 2),0.2);
blocker_top waittill("movedone");
right_d movey(inner_doorsize - (inner_doorsize * 2) ,2,0.5,0.5);
left_d movey(inner_doorsize,2,0.5,0.5);
wait 0.5;
td_right movey(outer_doorsize - (outer_doorsize * 2),2,0.5,0.5);
td_left movey(outer_doorsize,2,0.5,0.5);
td_left waittill("movedone");
blocker_top movez(blockerhigh,0.2);
wait 1.5;
elevator movez (height - (height * 2) , speed, 1, 1);
right_d movez (height - (height * 2), speed, 1, 1);
left_d moveZ (height - (height * 2), speed, 1, 1);
licht movez (height - (height * 2), speed, 1, 1);
indi_top movex (indicator, speed);
indi_bot movex (indicator, speed);
elevator waittill ("movedone");
wait 1.5;
bd_right movey(outer_doorsize,2,0.5,0.5);
bd_left movey(outer_doorsize - (outer_doorsize * 2) ,2,0.5,0.5);
wait 0.5;
left_d movey(inner_doorsize - (inner_doorsize * 2) ,2,0.5,0.5);
right_d movey(inner_doorsize,2,0.5,0.5);
right_d waittill("movedone");
level.liftdown = true;
}
level.liftmove = false;
}
trigger_hide()
{
switcher = getentarray ("lift_trigger","targetname");
for(i=0; i<switcher.size; i++) switcher[i] maps\mp\_utility::triggerOn();
}
trigger_show()
{
switcher = getentarray ("lift_trigger","targetname");
for(i=0; i<switcher.size; i++) switcher[i] maps\mp\_utility::triggerOff();
}
|
|
|
|
|
|
|
wacko
5-Minuten-Ei

Dabei seit: 17.01.2011
Beiträge: 19

|
|
du merkst kaum wenn der doorblocker runtergeht
wenn du drunter stehst ist die tür offen, du kannst nur nicht mehr springen
cool, da hast du recht.
und bitte nicht angegriffen fühlen, ich will das nur alles verstehen; ein wenig anders is es ja doch als früher...
|
|
|
|
|
Banana2077
Turnbeutelvergesser
 
Dabei seit: 13.12.2009
Beiträge: 410

|
|
Habe das Script:
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:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
|
level.elevatorDown = true; // elevator starts at bottom: true/false
level.elevatorMoving = false; // elevator is not currently moving
level._effect[ "redflash" ] = loadfx( "misc/lift_light_red" ); // loads the 3 different effects required - normally this would go in the _fx.gsc file
level._effect[ "redstatic" ] = loadfx( "misc/lift_light" );
level._effect[ "greenstatic" ] = loadfx( "misc/lift_light_green" );
level.showgreen = true;
level.redflash = false;
level.redstatic = false;
thread elevator_start();
}
elevator_start()
{
level.elevLight = getentarray ("redlightb","targetname");
elevator = getentarray ("elevatorswitch","targetname");
toprightdoor = getent ("trightdoor","targetname");
topleftdoor = getent ("tleftdoor","targetname");
toprightdoor movex(-31,0.05);
topleftdoor moveX(31,0.05);
rightgate = getent ("rightdoor", "targetname");
leftgate = getent ("leftdoor", "targetname");
if ( isdefined(elevator) )
for (i = 0; i < elevator.size; i++)
elevator[i] thread elevator_think();
for(i=0; i<level.elevLight.size; i++)
{
level.elevLight[i] thread flash_red();
level.elevLight[i] thread staticRed();
level.elevLight[i] thread staticGreen();
}
}
elevator_think()
{
while (1)
{
self waittill ("trigger");
if (!level.elevatorMoving)
thread elevator_move();
}
}
elevator_move()
{
// read all required entities into script
elevatormodel = getent ("elevatormodel", "targetname");
rightgate = getent ("rightdoor", "targetname");
leftgate = getent ("leftdoor", "targetname");
topblock = getent ("topblock","targetname");
bottomblock = getent ("bottomblock","targetname");
toprightdoor = getent ("trightdoor","targetname");
topleftdoor = getent ("tleftdoor","targetname");
bottomrightdoor = getent ("brightdoor","targetname");
bottomleftdoor = getent ("bleftdoor","targetname");
topgauge = getent ("topgauge","targetname");
bottomgauge = getent ("bottomgauge","targetname");
top_point = getent ("shaft_top","targetname");
bottom_point = getent ("shaft_bottom","targetname");
lamp = getent ("elevatorlight","targetname");
level.showgreen = false;
level.redflash = true;
level.elevatorMoving = true;
hide_trigs(); // hides triggers while elevator is moving
speed = 10;
height = distance( top_point.origin, bottom_point.origin ); // calculates the distance between top and bottom
wait (0.5);
if (level.elevatorDown)
{ // this half of the if statement executes if the elevator is at the bottom (i.e. level.elevatorDown equals true)
bottomblock moveZ(-100,0.2); // blocks gateway before closing visible gates
bottomblock waittill("movedone");
rightgate movex(-31,2,0.5,0.5); // closes right elevator gate
leftgate moveX(31,2,0.5,0.5); // closes left elevator gate
wait 0.5;
bottomrightdoor movex(-31,2,0.5,0.5); // closes right bottom door which blocks entry to elevator shaft.
bottomleftdoor moveX(31,2,0.5,0.5); // closes left bottom door which blocks entry to elevator shaft.
bottomleftdoor waittill("movedone"); // script waits until gate is closed
bottomblock moveZ(100,0.2); // unsets door block (no longer needed)
wait (1); // short pause
level.redflash = false;
level.redstatic = true;
wait (1);
elevatormodel moveZ (height, speed, 1, 1); // moves the cage up
rightgate moveZ (height, speed, 1, 1); // moves the right gate up at same speed as the cage - you can use the linkto technique, but it tends to make the doors shake
leftgate moveZ (height, speed, 1, 1); // moves the left gate up with cage
lamp moveZ (height, speed, 1, 1); // moves the elevator light
topgauge moveZ (14, speed); // moves the elevator position gauge
bottomgauge moveZ (14, speed); //ditto
elevatormodel waittill ("movedone"); // script waits until cage has finished its movement
level.redstatic = false;
level.redflash = true;
wait (1);
toprightdoor movex(31,2,0.5,0.5); // opens top right door
topleftdoor moveX(-31,2,0.5,0.5); // opens top left door
wait 0.5;
rightgate movex(31,2,0.5,0.5); // opens elevator right door
leftgate moveX(-31,2,0.5,0.5); // opens elevator left door
leftgate waittill("movedone");
level.elevatorDown = false; // this var tells the script the elevator must go down next time.
}
else { // this half makes the elevator go down - largely the same as above, but in reverse order
topblock moveZ(-100,0.2);
topblock waittill("movedone");
rightgate movex(-31,2,0.5,0.5);
leftgate moveX(31,2,0.5,0.5);
wait 0.5;
toprightdoor movex(-31,2,0.5,0.5);
topleftdoor moveX(31,2,0.5,0.5);
leftgate waittill("movedone");
topleftdoor waittill("movedone");
topblock moveZ(100,0.2);
level.redflash = false;
level.redstatic = true;
wait (1);
wait (1);
elevatormodel moveZ (height - (height * 2), speed, 1, 1);
rightgate moveZ (height - (height * 2), speed, 1, 1);
leftgate moveZ (height - (height * 2), speed, 1, 1);
lamp moveZ (height - (height * 2), speed, 1, 1);
topgauge moveZ (-14, speed);
bottomgauge moveZ (-14, speed);
elevatormodel waittill ("movedone");
level.redstatic = false;
level.redflash = true;
wait (1);
bottomrightdoor movex(31,2,0.5,0.5);
bottomleftdoor moveX(-31,2,0.5,0.5);
wait 0.5;
rightgate movex(31,2,0.5,0.5);
leftgate moveX(-31,2,0.5,0.5);
leftgate waittill("movedone");
level.elevatorDown = true;
}
level.redflash = false;
wait 0.5;
level.showgreen = true;
level.elevatorMoving = false;
show_trigs(); // shows triggers again.
}
//=================================================//
// These two functions show //
// and hide the triggers //
//=================================================//
hide_trigs()
{
switches = getentarray ("elevatorswitch","targetname");
for(i=0; i<switches.size; i++) switches[i] maps\mp\_utility::triggerOff();
}
show_trigs()
{
switches = getentarray ("elevatorswitch","targetname");
for(i=0; i<switches.size; i++) switches[i] maps\mp\_utility::triggerOn();
}
//=================================================//
// These three functions control the //
// elevator indicator lights //
//=================================================//
flash_red()
{
while(1)
{
while(level.redflash)
{
PlayFX( level._effect[ "redflash" ], self.origin );
wait 0.5;
}
wait 0.05;
}
}
staticRed()
{
while(1)
{
while(level.redstatic)
{
PlayFX( level._effect[ "redstatic" ], self.origin );
wait 0.1;
}
wait 0.05;
}
}
staticGreen()
{
while(1)
{
while(level.showgreen)
{
PlayFX( level._effect[ "greenstatic" ], self.origin );
wait 0.1;
}
wait 0.05;
}
}
|
|
benutzt..
jetzt geht es trotzdem danke!
__________________ Wie wollen sie das Internet gerne bestellen?
Komplett als 204.344.554.583 Blu-Rays oder ohne Pornos auf 2CDs?
______________________________________________________
Meine Website: http://rednosemaps.com
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|