|
 |
erweitertes Doorscript |
|
|
Hi!
Ich bastel grad an einem speziellen Doorscript rum und habe 3 kleinere Problemchen. Leider finde ich keine Lösung:
Es handelt sich um eine Flügeltür, jedes Türblatt einzeln öffenbar. Erhält ein Türblatt einen Damage, fällt es um.
Problem 1:
Wie binde ich ins Script die Stärke der Beschädigung (amount) ein, die das Türblatt erhalten muss, dass es umfällt? Lächerlich, wenns nach einem Schuss aus einem mickrigen Pistölchen umfällt
Und wie muss der Mapper den amount im trigger_damage einbinden?
Problem 2:
Das Türblatt fällt leider auch dann um, wenn es in Bewegung ist, danach schliesst es automatisch, am Boden liegend, bevor alle Trigger deaktiviert werden. Ich hab schon ein paar Versuche hinter mir, doch die Lösung verbirgt sich vor mir...
Problem 3:
Die Konsole spuckt diese Fehlermeldung raus
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
Error: started from:
(file 'maps/mp/_doors_damage.gsc', line 214)
level.damage_door1_trigger_right waittill ("trigger");
*
Error: ************************************
|
|
Hier mal das Script. Anmerkung: Es ist nur die reine Grundfunktion, Rotationsgeschwindigkeit, FX Effekt und dergleichen sind noch nicht 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:
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:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
|
main(){
damagefx = loadfx ("explosions/grenadeExp_mud_1");
thread door1();
thread door2();
thread damage_door1(damagefx);
thread damage_door2(damagefx);
}
door1(){
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
level.door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
while (1){
level.door1_trigger_right waittill ("trigger");
if(level.door1_damage == true)
return;
else if (level.door1_open == true){
thread door1_trigger_left();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
return;
}
}
}
door1_trigger_left(){
door1 = getent ("door1","targetname");
level.door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
while (1){
level.door1_trigger_left waittill ("trigger");
if(level.door1_damage == true)
return;
else if (level.door1_open == true){
thread door1_trigger_right();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
}
door2(){
level.door2_open = false;
thread door2_trigger_right();
thread door2_trigger_left();
}
door2_trigger_right(){
door2 = getent ("door2","targetname");
level.door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
while (1){
level.door2_trigger_right waittill ("trigger");
if(level.door2_damage == true)
return;
else if (level.door2_open == true){
thread door2_trigger_left();
return;
}
else if (level.door2_open == false){
level.door2_open = true;
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait 5;
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
thread door2_trigger_right();
thread door2_trigger_left();
return;
}
}
}
door2_trigger_left(){
door2 = getent ("door2","targetname");
level.door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
while (1){
level.door2_trigger_left waittill ("trigger");
if(level.door2_damage == true)
return;
else if (level.door2_open == true){
thread door2_trigger_right();
return;
}
else if (level.door2_open == false){
level.door1_open = true;
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait 5;
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
thread door2_trigger_left();
thread door2_trigger_right();
return;
}
}
}
damage_door1(damagefx){
level.door1_damage = false;
thread damage_door1_trigger_right();
thread damage_door1_trigger_left();
}
damage_door1_trigger_right(damagefx){
damage_door1 = getent ("door1","targetname");
level.damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
while (1){
level.damage_door1_trigger_right waittill ("trigger");
if(level.door1_damage == true || level.door1_open == true)
return;
damage_door1 rotateroll(90,2,0.5,0.5);
damage_door1 playsound("door_crush");
PlayFX(damagefx, self.origin);
damage_door1 waittill ("rotatedone");
level.door1_damage = true;
break;
}
level.door1_trigger_right entityOff();
level.door1_trigger_left entityOff();
level.damage_door1_trigger_right entityOff();
level.damage_door1_trigger_left entityOff();
}
damage_door1_trigger_left(damagefx){
damage_door1 = getent ("door1","targetname");
level.damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
while (1){
level.damage_door1_trigger_left waittill ("trigger");
if(level.door1_damage == true || level.door1_open == true)
return;
damage_door1 rotateroll(-90,2,0.5,0.5);
damage_door1 playsound("door_crush");
PlayFX(damagefx, self.origin);
damage_door1 waittill ("rotatedone");
level.door1_damage = true;
break;
}
level.door1_trigger_right entityOff();
level.door1_trigger_left entityOff();
level.damage_door1_trigger_right entityOff();
level.damage_door1_trigger_left entityOff();
}
damage_door2(damagefx){
level.door2_damage = false;
thread damage_door2_trigger_right();
thread damage_door2_trigger_left();
}
damage_door2_trigger_right(damagefx){
damage_door2 = getent ("door2","targetname");
level.damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
while (1){
level.damage_door2_trigger_right waittill ("trigger");
if(level.door2_damage == true || level.door2_open == true)
return;
damage_door2 rotateroll(90,2,0.5,0.5);
damage_door2 playsound("door_crush");
PlayFX(damagefx, self.origin);
damage_door2 waittill ("rotatedone");
level.door2_damage = true;
break;
}
level.door2_trigger_right entityOff();
level.door2_trigger_left entityOff();
level.damage_door2_trigger_right entityOff();
level.damage_door2_trigger_left entityOff();
}
damage_door2_trigger_left(damagefx){
damage_door2 = getent ("door2","targetname");
level.damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
while (1){
level.damage_door2_trigger_left waittill ("trigger");
if(level.door2_damage == true || level.door1_open == true)
return;
damage_door2 rotateroll(-90,2,0.5,0.5);
damage_door2 playsound("door_crush");
PlayFX(damagefx, self.origin);
damage_door2 waittill ("rotatedone");
level.door2_damage = true;
break;
}
level.door2_trigger_right entityOff();
level.door2_trigger_left entityOff();
level.damage_door2_trigger_right entityOff();
level.damage_door2_trigger_left entityOff();
}
entityOff(){
if(!isdefined (self.realOrigin))
self.realOrigin = self.origin;
if(self.origin == self.realorigin)
self.origin += (0, 0, -10000);
}
entityOn(){
if(isDefined(self.realOrigin))
self.origin = self.realOrigin;
}
|
|
Und hier die Trigger:

Danke
ToM
__________________

Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von Nightwing: 29.04.2008 15:15.
|
|
|
|
|
|
|
| RE: erweitertes Doorscript |
 |
Habe jetzt nicht die Zeit das alles auszuprobieren.
Aber mal von hinten nach vorne.
Zu Problem 3: Es wäre schön, wenn du die komplette Fehlermeldung posten könntest und nicht nur den mickrigen Rest (da werden bestimmt noch ein bis ein paar Fehlermeldungen drüber stehen)
Zu Problem 2: Das wirst du wohl auch mit einem Türmodell nicht lösen können, da ein einmal gestarteter rotate oder auch move Befehl nicht unterbrochen werden kann. Du musst also dann, wenn das Türblatt umfallen soll, die eigentliche Tür gegen eine andere Tür austauschen (die jetzt nicht mehr vom rotate Befehl beeinflusst ist), und diese dann umfallen lassen.
Zu Problem 1:
Den Schaden, den der trigger_hurt braucht, bis er reagiert, stellt man nicht am Trigger sondern im Script ein.
Beispiel:
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:
|
main()
{
dmg_trigger = getent("damage_trigger", "targetname"); //damage_trigger holen
doorhealth = 300; // Lebensenergie der Tür
door_ok = true; // Tür in ordnung
while(door_ok) // so lange Tür in ordnung, Schleife wiederholen
{
dmg_trigger waittill("damage", amount); // trigger wartet auf Schaden und liefert bei Schaden dann den Schadenswert zurück
doorhealth -= amount; // Schadenswert von der Lebensenergie der Tür abziehen
if (doorhealth <= 0) // Wenn Lebenssenergie kleiner gleich 0 ist, folgende Zeilen ausführen
{
door_ok = false; // Tür nicht mehr ok (Schleife nach beenden nicht noch einmal durchlaufen)
// hier kommt das hin was passieren soll, wenn die Lebensenergie der Tür verbraucht 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.
|
|
|
|
|
|
|
Danke für die schnelle Antwort, OMWG!
Leider stehen da nicht mehr Fehlermeldungen, was mich auch wundert. Sonst hätt ich diese mitgepostet. Evtl liegt das an der Reihenfolge der Aktionen, wird sich zeigen, da ich nach den anderen Antworten wieder genug zu ändern habe.
Dank Dir
ToM
__________________

|
|
|
|
|
|
|
Soweit, so gut. Habe Deine Idee eingearbeitet, funktioniert super!
Vielen Dank!!
Zum Problem 2:
Wie hier mit dem Jumppad beschrieben, habe ich in der Funktion während der Rotation die Trigger deaktiviert, funktioniert prima, die Fehlermeldung ist auch weg, wo immer die auch herkam... Hier mal das rohe Script, FX ist noch net getestet:
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:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
|
main(){
damagefx = loadfx ("explosions/grenadeExp_mud_1");
thread door1();
thread door2();
thread damage_door1(damagefx);
thread damage_door2(damagefx);
}
door1(){
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
time = 5;
while (1){
door1_trigger_right waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_left();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
iprintlnbold("trigger_door_1_off");
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
damage_door1_trigger_right TriggerOn();
damage_door1_trigger_left TriggerOn();
iprintlnbold("trigger_door_1_on");
thread door1_trigger_right();
thread door1_trigger_left();
return;
}
}
}
door1_trigger_left(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
time = 5;
while (1){
door1_trigger_left waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_right();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
damage_door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
iprintlnbold("trigger_door_1_off");
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
iprintlnbold("trigger_door_1_on");
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
}
door2(){
level.door2_open = false;
thread door2_trigger_right();
thread door2_trigger_left();
}
door2_trigger_right(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
time = 5;
while (1){
door2_trigger_right waittill ("trigger");
if (level.door2_open == true){
thread door2_trigger_left();
return;
}
else if (level.door2_open == false){
level.door2_open = true;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
iprintlnbold("trigger_door_2_off");
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait time;
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
iprintlnbold("trigger_door_2_on");
thread door2_trigger_right();
thread door2_trigger_left();
return;
}
}
}
door2_trigger_left(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
time = 5;
while (1){
door2_trigger_left waittill ("trigger");
if (level.door2_open == true){
thread door2_trigger_right();
return;
}
else if (level.door2_open == false){
level.door2_open = true;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
iprintlnbold("trigger_door_2_off");
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait time;
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
iprintlnbold("trigger_door_2_on");
thread door2_trigger_left();
thread door2_trigger_right();
return;
}
}
}
damage_door1(damagefx){
thread damage_door1_trigger_right();
thread damage_door1_trigger_left();
}
damage_door1_trigger_right(damagefx){
damage_door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 100;
while(door_ok){
damage_door1_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
damage_door1 rotateroll(90,2,0.5,0.5);
damage_door1 playsound("door_crush");
//PlayFX(damagefx, self.origin);
damage_door1 waittill ("rotatedone");
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
iprintlnbold("all trigger_door_1_off");
}
}
}
damage_door1_trigger_left(damagefx){
damage_door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 100;
while(door_ok){
damage_door1_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
damage_door1 rotateroll(-90,2,0.5,0.5);
damage_door1 playsound("door_crush");
//PlayFX(damagefx, self.origin);
damage_door1 waittill ("rotatedone");
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
iprintlnbold("all trigger_door_1_off");
}
}
}
damage_door2(damagefx){
level.door2_damage = false;
thread damage_door2_trigger_right();
thread damage_door2_trigger_left();
}
damage_door2_trigger_right(damagefx){
damage_door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 100;
while(door_ok){
damage_door2_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
damage_door2 rotateroll(90,2,0.5,0.5);
damage_door2 playsound("door_crush");
//PlayFX(damagefx, self.origin);
damage_door2 waittill ("rotatedone");
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
iprintlnbold("all trigger_door_2_off");
}
}
}
damage_door2_trigger_left(damagefx){
damage_door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 100;
while(door_ok){
damage_door2_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
damage_door2 rotateroll(-90,2,0.5,0.5);
damage_door2 playsound("door_crush");
//PlayFX(damagefx, self.origin);
damage_door2 waittill ("rotatedone");
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
iprintlnbold("all trigger_door_2_off");
}
}
}
TriggerOff(){
if(!isdefined (self.realOrigin))
self.realOrigin = self.origin;
if(self.origin == self.realorigin)
self.origin += (0, 0, -10000);
}
TriggerOn(){
if(isDefined(self.realOrigin))
self.origin = self.realOrigin;
}
|
|
ToM
__________________

Dieser Beitrag wurde 7 mal editiert, zum letzten Mal von Nightwing: 01.05.2008 01:40.
|
|
|
|
|
Mapicted
Steuerzahler

Dabei seit: 10.04.2015
Beiträge: 200

|
|
gute arbeit bis jetzt otze und OMWG
fehlt ja nicht mehr viel...
hier mal die dazugehörige Kirche


zum Problem 1 :
Hier funktionieren 2 bewegungen aufeinmal:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
door_move(){
door1 = getent ("door1","targetname");
door2 = getent ("door2","targetname");
door1 rotateyaw(90,0.1,0,0);
door1 movez(-512,0.1,0,0); <<<----------
door2 rotateyaw(-90,0.1,0,0);
door2 movez(-512,0.1,0,0);
}
|
|
Die Tür ist 512 we über der Kirche und offen, damit auch die Kanten bei der Lichtberechnung ausgeleuchtet werden. UNd sie wird beim mapstart an die richtige stelle geschoben.(klappt auch mit 2 verschiedenen rotate bewegungen)
Und hier funktioniert nur eine bewegung:
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:
|
}
damage_door1_trigger_left(){
damagefx = loadfx ("dust/abrams_desk_dust");
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
iprintlnbold("all trigger_door_1_off");
door1 rotatepitch(90,2,0.5,0.5);
door1 rotateyaw(5,2,0.5,0.5); <<<---------
door1 playsound("door_crush");
PlayFX(damagefx, self.origin);
door1 waittill ("rotatedone");
}
}
}
|
|
Die tür soll sich noch ein wenig um die z achse drehen damit wenn beide in die selbe richhtung fallen sie nicht bündig nebeneinander liegen
__________________ Fresh Beginnings!
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von Mapicted: 01.05.2008 15:39.
|
|
|
|
|
|
|
Hmm...
.. wieso versuchst du es denn eigentlich nicht mit rotateto ?
Da kannst du die Zielwinkel (x,y,z) selber bestimmen.
Setze den Originbrush der Tür nur unten an eine Ecke (und nicht über die gesamte Türhöhe) und dreh die Tür beim Fallen mit rotateto. Da kannst du mit einem Befehl alle drei Achsen auf einmal drehen.
__________________
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.
|
|
|
|
|
|
|
Den Befehl kannte ich nicht, Jan wohl auch nicht.
Mal wieder Danke, OMWG!
ToM
__________________

|
|
|
|
|
|
|
Man sollte hin und wieder mal einen Blick in die script commands werfen
http://www.infinityward.com/Script/motion/rotateto.htm
__________________
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.
|
|
|
|
|
|
|
So, geschafft! Nun hab ich 2 Varianten des Scripts: einmal mit automatisch schliessenden Türen, einmal zum selbst schliessen. FX passt, Jan schneidert noch n paar Sounds zusammen. Um die Kanten der Türen optimal auszuleuchten, wenn die am Boden liegen, sind die Türen versetzt, werden zum Mapstart erst in die richtige Position gefahren, was aber keiner sehen wird. Aber dazu kann und wird Jan mehr sagen, wenn er mit den Sounds fertig ist. Denk mal, dann gibts noch ne kleine Tutorialmap + einiger Erklärungen von Ihm. Hier meinerseits mal die 2 Scripte.
_doors_damage.gsc - Türen schliessen nicht automatisch:
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:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
|
main(){
thread door_move();
thread door1();
thread door2();
thread damage_door1();
thread damage_door2();
}
door_move(){
door1 = getent ("door1","targetname");
door2 = getent ("door2","targetname");
door1 rotateyaw(90,0.1,0,0);
door1 movez(-512,0.1,0,0);
door2 rotateyaw(-90,0.1,0,0);
door2 movez(-512,0.1,0,0);
}
door1(){
level.door1_open = false;
level.door1_moving = false;
level.door1_direction = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
while (1){
door1_trigger_right waittill ("trigger");
if (level.door1_open == false){
if(level.door1_moving == false){
level.door1_moving = true;
level.door1_open = true;
level.door1_direction = true;
damage_door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
door1 rotateyaw(120,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
level.door1_moving = false;
thread door1_trigger_right();
return;
}
else if (level.door1_moving == true){
thread door1_trigger_right();
return;
}
}
else if(level.door1_open == true){
if(level.door1_moving == false){
if (level.door1_direction == true){
level.door1_moving = true;
door1 rotateyaw(-120,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_right();
return;
}
else if (level.door1_direction == false){
level.door1_moving = true;
door1 rotateyaw(120,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_right();
return;
}
}
else if (level.door1_moving == true){
thread door1_trigger_right();
return;
}
}
}
}
door1_trigger_left(){
door1 = getent ("door1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
while (1){
door1_trigger_left waittill ("trigger");
if (level.door1_open == false){
if(level.door1_moving == false){
level.door1_moving = true;
level.door1_open = true;
level.door1_direction = false;
damage_door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
door1 rotateyaw(-120,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
level.door1_moving = false;
thread door1_trigger_left();
return;
}
else if (level.door1_moving == true){
thread door1_trigger_left();
return;
}
}
else if(level.door1_open == true){
if(level.door1_moving == false){
if (level.door1_direction == true){
level.door1_moving = true;
door1 rotateyaw(-120,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_left();
return;
}
else if (level.door1_direction == false){
level.door1_moving = true;
door1 rotateyaw(120,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_left();
return;
}
}
else if (level.door1_moving == true){
thread door1_trigger_left();
return;
}
}
}
}
door2(){
level.door2_open = false;
level.door2_moving = false;
level.door2_direction = false;
thread door2_trigger_right();
thread door2_trigger_left();
}
door2_trigger_right(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
while (1){
door2_trigger_right waittill ("trigger");
if (level.door2_open == false){
if(level.door2_moving == false){
level.door2_moving = true;
level.door2_open = true;
level.door2_direction = true;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
door2 rotateyaw(-120,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
level.door2_moving = false;
thread door2_trigger_right();
return;
}
else if (level.door2_moving == true){
thread door2_trigger_right();
return;
}
}
else if(level.door2_open == true){
if(level.door2_moving == false){
if (level.door2_direction == true){
level.door2_moving = true;
door2 rotateyaw(120,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_right();
return;
}
else if (level.door1_direction == false){
level.door2_moving = true;
door2 rotateyaw(-120,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_right();
return;
}
}
else if (level.door2_moving == true){
thread door2_trigger_right();
return;
}
}
}
}
door2_trigger_left(){
door2 = getent ("door2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
while (1){
door2_trigger_left waittill ("trigger");
if (level.door2_open == false){
if(level.door2_moving == false){
level.door2_moving = true;
level.door2_open = true;
level.door2_direction = false;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
door2 rotateyaw(120,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
level.door2_moving = false;
thread door2_trigger_left();
return;
}
else if (level.door2_moving == true){
thread door2_trigger_left();
return;
}
}
else if(level.door2_open == true){
if(level.door2_moving == false){
if (level.door2_direction == true){
level.door2_moving = true;
door2 rotateyaw(120,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_left();
return;
}
else if (level.door2_direction == false){
level.door2_moving = true;
door2 rotateyaw(-120,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_left();
return;
}
}
else if (level.door2_moving == true){
thread door2_trigger_left();
return;
}
}
}
}
damage_door1(){
thread damage_door1_trigger_right();
thread damage_door1_trigger_left();
}
damage_door1_trigger_right(){
damagefx = loadfx ("dust/abrams_desk_dust");
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 rotateto((-90,90,5),0.6,0.2,0);
door1 playsound("door_crush");
door1 waittill ("rotatedone");
PlayFX(damagefx, (301,546,-316));
}
}
}
damage_door1_trigger_left(){
damagefx = loadfx ("dust/abrams_desk_dust");
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 rotateto((90,90,5),0.6,0.2,0);
door1 playsound("door_crush");
door1 waittill ("rotatedone");
PlayFX(damagefx, (301,650,-316));
}
}
}
damage_door2(){
level.door2_damage = false;
thread damage_door2_trigger_right();
thread damage_door2_trigger_left();
}
damage_door2_trigger_right(){
damagefx = loadfx ("dust/abrams_desk_dust");
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door2_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
door2 rotateto((90,-90,5),0.6,0.2,0);
door2 playsound("door_crush");
door2 waittill ("rotatedone");
PlayFX(damagefx, (258,546,-316));
}
}
}
damage_door2_trigger_left(){
damagefx = loadfx ("dust/abrams_desk_dust");
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door2_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
door2 rotateto((-90,-90,5),0.6,0.2,0);
door2 playsound("door_crush");
door2 waittill ("rotatedone");
PlayFX(damagefx, (258,650,-316));
}
}
}
TriggerOff(){
if(!isdefined (self.realOrigin))
self.realOrigin = self.origin;
if(self.origin == self.realorigin)
self.origin += (0, 0, -10000);
}
TriggerOn(){
if(isDefined(self.realOrigin))
self.origin = self.realOrigin;
}
|
|
_doorsdamage_automatic.gsc - Türen schliessen automatisch:
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:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
|
main(){
thread door_move();
thread door1();
thread door2();
thread damage_door1();
thread damage_door2();
}
door_move(){
door1 = getent ("door1","targetname");
door2 = getent ("door2","targetname");
door1 rotateyaw(90,0.1,0,0);
door1 movez(-512,0.1,0,0);
door2 rotateyaw(-90,0.1,0,0);
door2 movez(-512,0.1,0,0);
}
door1(){
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
time = 5;
while (1){
door1_trigger_right waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_left();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 rotateyaw(120,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateyaw(-120,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
damage_door1_trigger_right TriggerOn();
damage_door1_trigger_left TriggerOn();
thread door1_trigger_right();
thread door1_trigger_left();
return;
}
}
}
door1_trigger_left(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
time = 5;
while (1){
door1_trigger_left waittill ("trigger");
if (level.door1_open == true){
thread door1_trigger_right();
return;
}
else if (level.door1_open == false){
level.door1_open = true;
damage_door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
door1 rotateyaw(-120,2,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateyaw(120,2,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
}
door2(){
level.door2_open = false;
thread door2_trigger_right();
thread door2_trigger_left();
}
door2_trigger_right(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
time = 5;
while (1){
door2_trigger_right waittill ("trigger");
if (level.door2_open == true){
thread door2_trigger_left();
return;
}
else if (level.door2_open == false){
level.door2_open = true;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
door2 rotateyaw(-120,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait time;
door2 rotateyaw(120,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
thread door2_trigger_right();
thread door2_trigger_left();
return;
}
}
}
door2_trigger_left(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
time = 5;
while (1){
door2_trigger_left waittill ("trigger");
if (level.door2_open == true){
thread door2_trigger_right();
return;
}
else if (level.door2_open == false){
level.door2_open = true;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
door2 rotateyaw(120,2,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait time;
door2 rotateyaw(-120,2,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
thread door2_trigger_left();
thread door2_trigger_right();
return;
}
}
}
damage_door1(){
thread damage_door1_trigger_right();
thread damage_door1_trigger_left();
}
damage_door1_trigger_right(){
damagefx = loadfx ("dust/abrams_desk_dust");
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 rotateto((-90,90,5),0.6,0.2,0);
door1 playsound("door_crush");
door1 waittill ("rotatedone");
PlayFX(damagefx, (301,546,-316));
}
}
}
damage_door1_trigger_left(){
damagefx = loadfx ("dust/abrams_desk_dust");
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("open_trigger_1_tuer_1","targetname");
door1_trigger_left = getent ("open_trigger_2_tuer_1","targetname");
damage_door1_trigger_right = getent ("damage_trigger_1_tuer_1","targetname");
damage_door1_trigger_left = getent ("damage_trigger_2_tuer_1","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 rotateto((90,90,5),0.6,0.2,0);
door1 playsound("door_crush");
door1 waittill ("rotatedone");
PlayFX(damagefx, (301,650,-316));
}
}
}
damage_door2(){
level.door2_damage = false;
thread damage_door2_trigger_right();
thread damage_door2_trigger_left();
}
damage_door2_trigger_right(){
damagefx = loadfx ("dust/abrams_desk_dust");
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door2_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
door2 rotateto((90,-90,5),0.6,0.2,0);
door2 playsound("door_crush");
door2 waittill ("rotatedone");
PlayFX(damagefx, (258,546,-316));
}
}
}
damage_door2_trigger_left(){
damagefx = loadfx ("dust/abrams_desk_dust");
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("open_trigger_1_tuer_2","targetname");
door2_trigger_left = getent ("open_trigger_2_tuer_2","targetname");
damage_door2_trigger_right = getent ("damage_trigger_1_tuer_2","targetname");
damage_door2_trigger_left = getent ("damage_trigger_2_tuer_2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door2_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
door2 rotateto((-90,-90,5),0.6,0.2,0);
door2 playsound("door_crush");
door2 waittill ("rotatedone");
PlayFX(damagefx, (258,650,-316));
}
}
}
TriggerOff(){
if(!isdefined (self.realOrigin))
self.realOrigin = self.origin;
if(self.origin == self.realorigin)
self.origin += (0, 0, -10000);
}
TriggerOn(){
if(isDefined(self.realOrigin))
self.origin = self.realOrigin;
}
|
|
ToM
__________________

Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von Nightwing: 02.05.2008 20:21.
|
|
|
|
|
-tiger-
Steuerzahler

Dabei seit: 22.01.2008
Beiträge: 189

|
|
Das Skript Funktioniert ohne Probleme habe es in meine Map eingebaut, thx an die Macher des Skriptes.
Und hier habe ich mal ein kleines Video erstellt wo man schön die Funktionsweise des Skriptes sieht.
Doorskript
__________________
Processor: Intel Core2 Quad Q6600 | Mainboard: ABIT IP35 | Grafikkarte: GeForce 9800 GTX | Arbeitsspeicher: 2 GB G-Skill | Netzteil: Be Quiet! Straight Power
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von -tiger-: 06.10.2008 17:46.
|
|
|
|
|
|
|
Schön, das es bei Dir klappt, dafür hab ich nun ein Problem:
Jan hat die Kirche gedreht, was bedeutet, die Türen fallen nicht mehr so, wie sie sollen. Damals stand die Kirche im rechten Winkel, jetzt ist sie um 205 Grad gedreht - das sagt zumindest der Screen aus, wenn ich mich nicht irre?

Ich hab zwar schon versucht, mathematisch an die Sache ranzugehen, aber es möchte nicht funktionieren.
Zur Verdeutlichung mal ein Bild, wie es ist:

Hier die entsprechende Zeile: door1 rotateto((-90,90,5),0.5,0.3,0);
Eigentlich sollte die Türe nach innen fallen. Dem X Wert geb ich statt -90 jetzt 90, somit fällt sie nach innen, nur mit dem Y Wert (90 in der alten Version) komm ich nicht klar. Das Problem ist die merkwürdige Drehung...
Ich weiss zwar, das im rotate to der Zielwinkel angegeben wird, aber ich komm nach Stunden rechnen und testen auf keinen grünen Zweig...
ToM
__________________

Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von Nightwing: 19.10.2008 14:00.
|
|
|
|
|
-tiger-
Steuerzahler

Dabei seit: 22.01.2008
Beiträge: 189

|
|
Bei mir Sieht das so aus > door1 rotateto((0,8,-80),0.2,0.1,0); . Was ihr mal testen könntet, das Door-prefab in das Kirchen-prefab einzufügen, weil da die Kirche im rechten Winkel steht. Und wenn das nicht geht müsst ihr erstmal den neuen Umfall winkel herausfinden. zb. rotateto((0,0,90),0.2,0.1,0); oder rotateto((0,90,0),0.2,0.1,0); oder rotateto((90,0,0),0.2,0.1,0); .
Und hier mal mein Skript mit moveto in Damage:
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:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
|
main()
{
thread door1();
thread door2();
thread damage_door1();
thread damage_door2();
}
door1(){
level.door1_open = false;
level.door1_moving = false;
level.door1_direction = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("md1","targetname");
door1_trigger_right = getent ("md1t1","targetname");
damage_door1_trigger_right = getent ("md1td1","targetname");
damage_door1_trigger_left = getent ("md1td2","targetname");
while (1){
door1_trigger_right waittill ("trigger");
if (level.door1_open == false){
if(level.door1_moving == false){
level.door1_moving = true;
level.door1_open = true;
level.door1_direction = true;
damage_door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_wood_creaky_slow_open1");
door1 waittill ("rotatedone");
level.door1_moving = false;
thread door1_trigger_right();
return;
}
else if (level.door1_moving == true){
thread door1_trigger_right();
return;
}
}
else if(level.door1_open == true){
if(level.door1_moving == false){
if (level.door1_direction == true){
level.door1_moving = true;
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_wood_creaky_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_right();
return;
}
else if (level.door1_direction == false){
level.door1_moving = true;
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_wood_creaky_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_right();
return;
}
}
else if (level.door1_moving == true){
thread door1_trigger_right();
return;
}
}
}
}
door1_trigger_left(){
door1 = getent ("md1","targetname");
door1_trigger_left = getent ("md1t2","targetname");
damage_door1_trigger_right = getent ("md1td1","targetname");
damage_door1_trigger_left = getent ("md1td2","targetname");
while (1){
door1_trigger_left waittill ("trigger");
if (level.door1_open == false){
if(level.door1_moving == false){
level.door1_moving = true;
level.door1_open = true;
level.door1_direction = false;
damage_door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_wood_creaky_slow_open1");
door1 waittill ("rotatedone");
level.door1_moving = false;
thread door1_trigger_left();
return;
}
else if (level.door1_moving == true){
thread door1_trigger_left();
return;
}
}
else if(level.door1_open == true){
if(level.door1_moving == false){
if (level.door1_direction == true){
level.door1_moving = true;
door1 rotateyaw(-90,2,0.5,0.5);
door1 playsound ("door_wood_creaky_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_left();
return;
}
else if (level.door1_direction == false){
level.door1_moving = true;
door1 rotateyaw(90,2,0.5,0.5);
door1 playsound ("door_wood_creaky_close");
door1 waittill ("rotatedone");
damage_door1_trigger_left TriggerOn();
damage_door1_trigger_right TriggerOn();
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_left();
return;
}
}
else if (level.door1_moving == true){
thread door1_trigger_left();
return;
}
}
}
}
door2(){
level.door2_open = false;
level.door2_moving = false;
level.door2_direction = false;
thread door2_trigger_right();
thread door2_trigger_left();
}
door2_trigger_right(){
door2 = getent ("md2","targetname");
door2_trigger_right = getent ("md2t1","targetname");
damage_door2_trigger_right = getent ("md2td1","targetname");
damage_door2_trigger_left = getent ("md2td2","targetname");
while (1){
door2_trigger_right waittill ("trigger");
if (level.door2_open == false){
if(level.door2_moving == false){
level.door2_moving = true;
level.door2_open = true;
level.door2_direction = true;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_wood_creaky_slow_open1");
door2 waittill ("rotatedone");
level.door2_moving = false;
thread door2_trigger_right();
return;
}
else if (level.door2_moving == true){
thread door2_trigger_right();
return;
}
}
else if(level.door2_open == true){
if(level.door2_moving == false){
if (level.door2_direction == true){
level.door2_moving = true;
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_wood_creaky_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_right();
return;
}
else if (level.door1_direction == false){
level.door2_moving = true;
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_wood_creaky_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_right();
return;
}
}
else if (level.door2_moving == true){
thread door2_trigger_right();
return;
}
}
}
}
door2_trigger_left(){
door2 = getent ("md2","targetname");
door2_trigger_left = getent ("md2t2","targetname");
damage_door2_trigger_right = getent ("md2td1","targetname");
damage_door2_trigger_left = getent ("md2td2","targetname");
while (1){
door2_trigger_left waittill ("trigger");
if (level.door2_open == false){
if(level.door2_moving == false){
level.door2_moving = true;
level.door2_open = true;
level.door2_direction = false;
damage_door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_wood_creaky_slow_open1");
door2 waittill ("rotatedone");
level.door2_moving = false;
thread door2_trigger_left();
return;
}
else if (level.door2_moving == true){
thread door2_trigger_left();
return;
}
}
else if(level.door2_open == true){
if(level.door2_moving == false){
if (level.door2_direction == true){
level.door2_moving = true;
door2 rotateyaw(90,2,0.5,0.5);
door2 playsound ("door_wood_creaky_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_left();
return;
}
else if (level.door2_direction == false){
level.door2_moving = true;
door2 rotateyaw(-90,2,0.5,0.5);
door2 playsound ("door_wood_creaky_close");
door2 waittill ("rotatedone");
damage_door2_trigger_left TriggerOn();
damage_door2_trigger_right TriggerOn();
level.door2_open = false;
level.door2_moving = false;
thread door2_trigger_left();
return;
}
}
else if (level.door2_moving == true){
thread door2_trigger_left();
return;
}
}
}
}
damage_door1(){
thread damage_door1_trigger_right();
thread damage_door1_trigger_left();
}
damage_door1_trigger_right(){
damagefx = loadfx ("dust/exitdoor_dust");
door1 = getent ("md1","targetname");
door1_trigger_right = getent ("md1t1","targetname");
door1_trigger_left = getent ("md1t2","targetname");
damage_door1_trigger_right = getent ("md1td1","targetname");
damage_door1_trigger_left = getent ("md1td2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 moveto((-728.5,197,742),0.2,0.1,0);
door1 rotateto((0,8,-80),0.2,0.1,0);
door1 playsound("detpack_explo_wood");
door1 waittill ("rotatedone");
PlayFX(damagefx, (-765.1,290,741));
}
}
}
damage_door1_trigger_left(){
damagefx = loadfx ("dust/exitdoor_dust");
door1 = getent ("md1","targetname");
door1_trigger_right = getent ("md1t1","targetname");
door1_trigger_left = getent ("md1t2","targetname");
damage_door1_trigger_right = getent ("md1td1","targetname");
damage_door1_trigger_left = getent ("md1td2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door1_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door1_trigger_right TriggerOff();
door1_trigger_left TriggerOff();
damage_door1_trigger_right TriggerOff();
damage_door1_trigger_left TriggerOff();
door1 moveto((-736.5,93,734),0.2,0.1,0);
door1 rotateto((0,-10,90),0.2,0.1,0);
door1 playsound("detpack_explo_wood");
door1 waittill ("rotatedone");
PlayFX(damagefx, (-733.1,86,734));
}
}
}
damage_door2(){
level.door2_damage = false;
thread damage_door2_trigger_right();
thread damage_door2_trigger_left();
}
damage_door2_trigger_right(){
damagefx = loadfx ("dust/exitdoor_dust");
door2 = getent ("md2","targetname");
door2_trigger_right = getent ("md2t1","targetname");
door2_trigger_left = getent ("md2t2","targetname");
damage_door2_trigger_right = getent ("md2td1","targetname");
damage_door2_trigger_left = getent ("md2td2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door2_trigger_right waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
door2 moveto((-590.5,203,742),0.2,0.1,0);
door2 rotateto((0,-12,-80),0.2,0.1,0);
door2 playsound("detpack_explo_wood");
door2 waittill ("rotatedone");
PlayFX(damagefx, (-669.1,255,741));
}
}
}
damage_door2_trigger_left(){
damagefx = loadfx ("dust/exitdoor_dust");
door2 = getent ("md2","targetname");
door2_trigger_right = getent ("md2t1","targetname");
door2_trigger_left = getent ("md2t2","targetname");
damage_door2_trigger_right = getent ("md2td1","targetname");
damage_door2_trigger_left = getent ("md2td2","targetname");
doorhealth = 300;
door_ok = true;
doordamage = 50;
while(door_ok){
damage_door2_trigger_left waittill ("damage", amount);
doorhealth -= amount;
if (doorhealth <= doordamage){
door_ok = false;
door2_trigger_right TriggerOff();
door2_trigger_left TriggerOff();
damage_door2_trigger_right TriggerOff();
damage_door2_trigger_left TriggerOff();
door2 moveto((-578.5,61,734),0.2,0.1,0);
door2 rotateto((0,15,90),0.2,0.1,0);
door2 playsound("detpack_explo_wood");
door2 waittill ("rotatedone");
PlayFX(damagefx, (-637.1,51,734));
}
}
}
TriggerOff(){
if(!isdefined (self.realOrigin))
self.realOrigin = self.origin;
if(self.origin == self.realorigin)
self.origin += (0, 0, -10000);
}
TriggerOn(){
if(isDefined(self.realOrigin))
self.origin = self.realOrigin;
}
|
|
__________________
Processor: Intel Core2 Quad Q6600 | Mainboard: ABIT IP35 | Grafikkarte: GeForce 9800 GTX | Arbeitsspeicher: 2 GB G-Skill | Netzteil: Be Quiet! Straight Power
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|