[SAMMLUNG] Diverse Scripts |
|
_breakable_windows.gsc - Zerstörbare Fenster Version 1.1 |
|
Danke an -=FD=-
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _breakable_windows
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _breakable_windows.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_breakable_windows.gsc" und "fx,props/car_glass_large" in Dein Zone File ein.
Füge die Zeile maps/mp/_breakable_windows::main(); in Deine map.gsc Datei ein.
Möchtest Du einen Sound FX dazu, musst Du eine soundalias Datei für Deine Map erstellen. Wenn Du keinen Sound FX möchtest (oder keine soundalias Datei erstellen kannst) dann kommentiere diese Zeile aus (also // davor setzen):
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
|
self PlaySound("glass_break"); |
|
Hier 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:
|
// ---------------------------------------
// Zerstörbare Fenster Version 1.1 by -=FD=-
// Letztes Update: Freitag, 22. Februar 2008
// ---------------------------------------
//
// Dieses Script ermöglicht den Einbau von Fenstern, die nach einer gewissen Beschädigung zerbrechen
// Ich habe versucht es so einfach wie möglich zu halten um die Nutzung zu vereinfachen.
// Es enthält einen “Zerbrochen”-Status für das Fenster (wie z. B. bei den Autos!)
// Man kann allerdings NOCH keine Granaten durch das Fenster werfen, um es zu zerbrechen…
// Um die Höhe der Beschädigung zu ändern, die das Fenster vertragen kann, musst Du den Wert bei 'targetdamage' anpassen.
// Credit an: Tally, der mir beim Einstieg ins Scripten geholfen hat.
// Credit an: noobCODmapper und Ghost Death für das Script auf modsonline.com, das mich hierzu inspiriert hat.
// Credit an: IW für dieses großartige Game und die Freigabe der Tools, so dass wir überhaupt damit arbeiten können!
main(){
windfx = loadfx ("props/car_glass_large");
windtrigs = getentarray("windtrig","targetname");
for(i=0;i<windtrigs.size;i++){
windtrigs[i] thread dowindow(windfx);
}
}
dowindow(windfx){
targetdamage=80;
totaldamage=0;
WindowShattered=false;
WindowBroken=false;
self enablegrenadetouchdamage();
NormalState = getent(self.target,"targetname");
ShatteredState = getent(NormalState.target,"targetname");ShatteredState hide();
BrokenState = getent(shatteredState.target,"targetname");BrokenState hide();
while(!windowbroken){
self waittill ("damage", amount,attacker, direction_vec, point, type);
totaldamage+=amount;
if(totaldamage>targetdamage || getdamagetype(type)=="melee"){
WindowBroken=true;
}
if(!WindowShattered){
NormalState delete();
ShatteredState show();
WindowShattered=true;
}
}
BrokenState show();
self playsound("glass_break");
PlayFX(windfx, BrokenState.origin );
ShatteredState delete();
self delete();
}
getDamageType(type){
if(!isdefined(type)){
return "unknown";
}
type = tolower(type);
switch(type){
case "mod_melee":
case "mod_crush":
case "melee":
return "melee";
default:
return "other";
}
} |
|
__________________
Dieser Beitrag wurde 11 mal editiert, zum letzten Mal von Nightwing: 01.06.2008 23:24.
|
|
|
|
|
|
_crane.gsc - Beweglicher Kran |
|
Danke an OLD MAN WITH GUN
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _crane
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _crane.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Datei "rawfile,maps/mp/_crane.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_crane::main(); in Deine map.gsc Datei ein.
Hier 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:
|
main(){
//cat1 movez(-512,0.1,0,0);
level.cat1_stand = true;
cat1_start = (-95, 2373, 185);
cat1_dest = (1499, 2373, 185);
cat1 = getent ("cat1","targetname");
trig_cat1_1 = getent ("trig_cat1_1","targetname");
trig_cat1_2 = getent ("trig_cat1_2","targetname");
trig_cat1_stop = getent ("trig_cat1_stop","targetname");
trig_cat1_1 enablelinkto();
trig_cat1_2 enablelinkto();
trig_cat1_stop enablelinkto();
trig_cat1_1 linkto(cat1);
trig_cat1_2 linkto(cat1);
trig_cat1_stop linkto(cat1);
trig_cat1_1 thread cat1_move_2(cat1, cat1_start, cat1_dest);
trig_cat1_2 thread cat1_move_1(cat1, cat1_start, cat1_dest);
trig_cat1_stop thread stop(cat1);
}
cat1_move_1(cat1,cat1_start,cat1_dest){
while (1){
self waittill ("trigger");
cat1 move_me(cat1_start,cat1_dest);
}
}
cat1_move_2(cat1,cat1_start,cat1_dest){
while(1){
self waittill("trigger");
cat1 move_me(cat1_dest, cat1_start);
}
}
move_me(cat1_start,cat1_dest){
if(level.cat1_stand && (self.origin != cat1_dest)){
dist = distance(self.origin, cat1_dest);
speed = (1 / 35) * dist;
level.cat1_stand = false;
self moveto(cat1_dest, speed);
self playsound("crane_acceleration");
self playloopsound("crane_move");
self waittill("movedone");
self stoploopsound("crane_move");
self playsound("crane_deceleration");
level.cat1_stand = true;
}
wait 0.1;
}
stop(cat1){
while(1){
self waittill("trigger");
if (!level.cat1_stand){
cat1 moveto(cat1.origin, 0.01);
self playsound("crane_deceleration");
self stoploopsound("crane_move");
}
wait 0.01;
}
} |
|
__________________
Dieser Beitrag wurde 7 mal editiert, zum letzten Mal von Nightwing: 05.12.2008 19:24.
|
|
|
|
|
|
_doors_1_automatic_close.gsc - Eine Tür, die automatisch schliesst |
|
Danke an CCL_DESTROYER
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _doors_1_automatic_close
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _doors_1_automatic_close.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Datei "rawfile,maps/mp/_doors_1_automatic_close.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_doors_1_automatic_close::main(); in Deine map.gsc Datei ein.
Möchtest Du einen Sound FX dazu, musst Du eine soundalias Datei für Deine Map erstellen. Wenn Du keinen Sound FX möchtest (oder keine soundalias Datei erstellen kannst) dann kommentiere diese Zeilen aus (also // davor setzen):
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
|
door1 playsound ("door_open");
door1 playsound ("door_close"); |
|
Hier 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:
|
main(){
thread door1();
}
door1(){
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("trigger_1_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;
door1 rotateroll(-90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateroll(90,3.3,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");
door1_trigger_left = getent ("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;
door1 rotateroll(90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateroll(-90,3.3,0.5,0.5);
door1 playsound ("door_close");
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
} |
|
Logischerweise lässt sich dieses Script auf 2 oder mehrere Türen erweitern, siehe nächstes Posting.
__________________
Dieser Beitrag wurde 7 mal editiert, zum letzten Mal von Nightwing: 01.06.2008 23:53.
|
|
|
|
|
|
_doors_2_automatic_close.gsc - Zwei Türen, die automatisch schliessen |
|
Danke an CCL_DESTROYER
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _doors_2_automatic_close
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _doors_2_automatic_close.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Datei "rawfile,maps/mp/_doors_2_automatic_close.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_doors_2_automatic_close::main(); in Deine map.gsc Datei ein.
Möchtest Du einen Sound FX dazu, musst Du eine soundalias Datei für Deine Map erstellen. Wenn Du keinen Sound FX möchtest (oder keine soundalias Datei erstellen kannst) dann kommentiere diese Zeilen aus (also // davor setzen):
Code angehaengt. Klicke hier zum ein/ausblenden
code: |
1:
2:
|
door1 playsound ("door_open");
door1 playsound ("door_close"); |
|
und
Code angehaengt. Klicke hier zum ein/ausblenden
code: |
1:
2:
|
door2 playsound ("door_open");
door2 playsound ("door_close"); |
|
Hier das Script:
Code angehaengt. 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:
|
main(){
thread door1();
}
door1(){
level.door1_open = false;
level.door2_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
thread door2_trigger_right();
thread door2_trigger_left();
}
door1_trigger_right(){
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("trigger_1_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;
door1 rotateroll(-90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateroll(90,3.3,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");
door1_trigger_left = getent ("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;
door1 rotateroll(90,3.8,0.5,0.5);
door1 playsound ("door_open");
door1 waittill ("rotatedone");
wait time;
door1 rotateroll(-90,3.3,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_trigger_right(){
door2 = getent ("door2","targetname");
door2_trigger_right = getent ("trigger_1_tuer_1","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;
door2 rotateroll(-90,3.8,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait time;
door2 rotateroll(90,3.3,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");
door2_trigger_left = getent ("trigger_2_tuer_1","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;
door2 rotateroll(90,3.8,0.5,0.5);
door2 playsound ("door_open");
door2 waittill ("rotatedone");
wait time;
door2 rotateroll(-90,3.3,0.5,0.5);
door2 playsound ("door_close");
door2 waittill ("rotatedone");
level.door2_open = false;
thread door2_trigger_left();
thread door2_trigger_right();
return;
}
}
} |
|
__________________
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Nightwing: 01.06.2008 23:54.
|
|
|
|
|
|
_doors_damage.gsc - Doppeltür mit Beschädigung, nicht automatisch schliessend |
|
Danke an CCL_DESTROYER, OLD MAN WITH GUN, Mapicted
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _doors_damage
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _doors_damage.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_doors_damage.gsc" und fx/dust/abrams_desk_dust in Dein Zone File ein.
Füge die Zeile maps/mp/_doors_damage::main(); in Deine map.gsc Datei ein.
Möchtest Du einen Sound FX dazu, musst Du eine soundalias Datei für Deine Map erstellen. Wenn Du keinen Sound FX möchtest (oder keine soundalias Datei erstellen kannst) dann kommentiere diese Zeilen aus (also // davor setzen):
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
|
door1 playsound ("door_open");
door1 playsound ("door_close"); |
|
und
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
|
door2 playsound ("door_open");
door2 playsound ("door_close"); |
|
Hier 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:
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.5,0.3,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.5,0.3,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.5,0.3,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.5,0.3,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;
}
|
|
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 01.06.2008 23:56.
|
|
|
|
|
|
_doors_damage_automatic.gsc - Doppeltür mit Beschädigung, automatisch schliessend |
|
Danke an CCL_DESTROYER, OLD MAN WITH GUN, Mapicted
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _doors_damage_automatic
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _doors_damage_automatic.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_doors_damage_automatic.gsc" und fx/dust/abrams_desk_dust in Dein Zone File ein.
Füge die Zeile maps/mp/_doors_damage_automatic::main(); in Deine map.gsc Datei ein.
Möchtest Du einen Sound FX dazu, musst Du eine soundalias Datei für Deine Map erstellen. Wenn Du keinen Sound FX möchtest (oder keine soundalias Datei erstellen kannst) dann kommentiere diese Zeilen aus (also // davor setzen):
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
|
door1 playsound ("door_open");
door1 playsound ("door_close"); |
|
und
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
|
door2 playsound ("door_open");
door2 playsound ("door_close"); |
|
Hier 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:
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:
|
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.5,0.3,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.5,0.3,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.5,0.3,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.5,0.3,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;
} |
|
__________________
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 00:11.
|
|
|
|
|
|
_door.gsc - Eine bewegliche Tür |
|
Vorlage von HarkoninVSC auf MODSonline.com
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _door
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _door.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Datei "rawfile,maps/mp/_door.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_door::main(); in Deine map.gsc Datei ein.
Hier 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:
|
main(){
doortriggers = getentarray("doortrig","targetname");
for(i = 0; i < doortriggers.size; i++)
doortriggers[i] thread door_think();
}
door_think(){
self.doormoving = false;
self.doorclosed = true;
self.doormodel = getent(self.target, "targetname");
while (1){
self waittill("trigger");
if(!self.doormoving)
self thread door_move();
}
}
door_move(){
self.doormoving = true;
if(self.doorclosed){
self.doormodel rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}
else{
self.doormodel rotateyaw(90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}
self.doormoving = false;
} |
|
__________________
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 00:18.
|
|
|
|
|
|
_drown.gsc - Player ertrinken lassen |
|
Danke an [D]delica, Marc aka Wildcard
Wildcard hat den Code etwas bearbeitet, da das Script aus CoD 2 stammt und wohl kleinere Fehler verursacht hat.
Um dieses Script zu Nutzen, brauchst Du 2 trigger_multiple, genau wie in r0gers' _noprone Script.
Einer sollte die Fläche ausfüllen, wo Wasser sein wird, sodass Player in Berührung des Triggers sind, solange sie im Wasser sind.
Öffne die Entity Eigenschaften und vergebe den targetname: drown
Erstelle einen neuen trigger_multiple über diesem und verbinde ihn mit dem drown Trigger als Ziel. (Wähle den drown Trigger, dann den Ziel Trigger und drücke W)
Die Basis dieses Triggers sollte auf der Wasseroberfläche sein, oder etwas darüber, je nachdem wie Du vorhast, die Player ertrinken zu lassen.
Das war alles im Radiant, Speichern, schliessen und kompilieren.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _drown
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _drown.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Datei "rawfile,maps/mp/_drown.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_drown::main(); in Deine map.gsc Datei ein.
(Alternativ kann man auch die *.gsc Datei umnennen in mp_dein_mapname_drown.gsc. Dies schlägt der Scripter in der readme vor. Dann aber bitte die Zonefiles und den Aufruf entsprechend ändern!)
Hier 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:
|
// Multiplayer drown script for CoD
//
// written by [D]delica
// based on _noprone.gsc by r0ger and the stock IW S&D scripts ;)
// Modifed by Spikenaylor for COD2 using the tintscreen script from//[Nip] Drowning Water Script v1
//[Nip] by BionicNipple (bionic.nipple@gmail.com)
// To use this script, you'll need two trigger_multiples, set up pretty much the same
// way as r0gers' _noprone script. One should fill the area where you have water, so as
// long as the player is in the water they will be in contact with it. Open entity
// properties and give it the targetname 'drown'. Create another trigger_multiple above it,
// and connect it to the 'drown' trig as a target. (select 'drown' trig, then the target trig,
// and press W.) The base of this trigger should be at the same level as the surface of
// your water, or a little above, depending on how soon you want people to start drowning.
// This is all you need to do in radiant. Save, close and compile.
//
// In your yourmap.gsc, call _drown with "mapsmp_drown::main();" (no quotes ;) ), and make
// sure you place _drown.gsc in the maps/mp folder of your iwd. For compatibility's sake,
// please rename _drown.gsc if you use it (viz "mp_mymapname_drown.gsc", so ppl can customise
// it to their taste without creating problems with other mods/maps ;).
//
// N.B: the sounds and fx used in this script are all custom. If you want the same sounds,
// I suggest you rip them from Hamlet.pk3. Ditto the fx ^_^
//
// delicauk@gmail.com
main(){
drownage = getentarray("drown","targetname");
if (isDefined("drownage")){
precacheShader("black");
precacheShader("white");
level.barsize = 288;
level.drowntime = 0.20;
level.hurttime = 0.20;
for(d = 0; d < drownage.size; d++){
drownage[d] thread water();
}
}
}
Water(){
while (1){
self waittill("trigger", other);
if(isPlayer(other) && other istouching(self))
other thread drown(self);
}
}
drown(trigger){
self endon("disconnect");
dceiling = getent(trigger.target,"targetname");
water_vision = undefined;
while (self istouching(trigger) && !self istouching(dceiling)){
wait .125;
if(isDefined(self.drowning))
return;
self.drowning = true;
if(!isDefined(water_vision)){
water_vision = newClientHudElem(self);
water_vision.x = 0;
water_vision.y = 0;
water_vision setshader ("white", 640, 480);
water_vision.alignX = "left";
water_vision.alignY = "top";
water_vision.horzAlign = "fullscreen";
water_vision.vertAlign = "fullscreen";
water_vision.color = (.16, .38, .5);
water_vision.alpha = .75;
}
level.barincrement = (level.barsize / (20.0 * level.drowntime));
// level.player allowProne(false);
if(!isDefined(self.progressbackground)){
self.progressbackground = newClientHudElem(self);
self.progressbackground.alignX = "center";
self.progressbackground.alignY = "middle";
self.progressbackground.x = 320;
self.progressbackground.y = 385;
self.progressbackground.alpha = 0.5;
}
self.progressbackground setShader("black", (level.barsize + 4), 14);
if(!isDefined(self.progressbar)){
self.progressbar = newClientHudElem(self);
self.progressbar.alignX = "left";
self.progressbar.alignY = "middle";
self.progressbar.x = (320 - (level.barsize / 2.0));
self.progressbar.y = 385;
}
self.progressbar setShader("white", 0, 8);
self.progressbar scaleOverTime(level.drowntime, level.barsize, 8);
self.progresstime = 0;
d = 0;
f = 0;
while(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime < level.drowntime)){
d ++;
f ++;
wait 0.05;
self.progresstime += 0.05;
if(self.progresstime >= level.hurttime){
if(f >= 4){
radiusDamage(self.origin,9, 1, 1);
f = 0;
}
}
}
if(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime >= level.drowntime)){
self.progressbackground destroy();
self.progressbar destroy();
wait 0.025;
radiusDamage(self.origin,22, 3000, 3000);
self.drowning = undefined;
self.sounder = undefined;
randb = randomInt(4);
deathmethod1 = " made a hole in the water and lay down quietly to rest forever.";
deathmethod2 = " paid a long lasting visit to Davy Jones's Locker.";
deathmethod3 = " went diving without breathing apparatus.";
deathmethod4 = " swam like a brick.";
if (randb == 0)
iPrintLn( self.name, deathmethod1);
if (randb == 1)
iPrintLn( self.name, deathmethod2);
if (randb == 2)
iPrintLn( self.name, deathmethod3);
if (randb == 3)
iPrintLn( self.name, deathmethod4);
wait .05;
water_vision destroy();
}
else{
water_vision.alpha = .5;
water_vision fadeOverTime(3);
water_vision.alpha = 0;
wait 0.05;
self.progressbackground destroy();
self.progressbar destroy();
self.drowning = undefined;
self.sounder = undefined;
}
wait .05;
}
} |
|
__________________
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 00:40.
|
|
|
|
|
|
Danke an OLD MAN WITH GUN
Ursprüngliche Vorlage von Marshall2006 auf Modsonline
Links im Board: Klick & Klick
Hier findet Ihr auch eine kleine Beispielmap von BadMan, die zeigt, was das kleine Script alles kann.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _jumppad
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _jumppad.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_jumppad.gsc" und "fx,misc/ui_pickup_available" in Dein Zone File ein.
Füge die Zeile maps/mp/_jumppad::main(); in Deine map.gsc Datei ein.
Hier 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:
|
main(){
level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
jumpx = getentarray ("jump","targetname");
for(i = 0; i < jumpx.size; i++)
jumpx[i] thread jump_pad_think();
}
jump_pad_think(){
glow = getent (self.target, "targetname");
air1 = getent (glow.target, "targetname");
air2 = getent (air1.target, "targetname");
air3 = getent (air2.target, "targetname");
air4 = getent (air3.target, "targetname");
maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));
while (1){
self waittill ("trigger",user);
if (user istouching(self)){
//throw = user.origin + (100, 100, 0);
air = spawn ("script_model",(0,0,0));
air.origin = user.origin;
air.angles = user.angles;
user linkto (air);
air moveto (air1.origin, 1);
wait 1;
air moveto (air2.origin, 1);
wait .5;
air moveto (air3.origin, 1);
wait .5;
air moveto (air4.origin, 1);
wait 1;
user unlink();
wait 1;
}
}
} |
|
__________________
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 12:36.
|
|
|
|
|
|
_multiple_doors.gsc - Türscript für viele Türen |
|
Danke an OLD MAN WITH GUN
Link im Board: Klick
Zuerst erstellt man einen Brush für die Tür und einen origin brush als Türangel.
Daraus macht man ein script_brushmodel und gibt ihm folgende keys/values
key: targetname
value: door
key: script_noteworthy
value: rechts
(soll die Tür nach links auf gehen, dann "links" anstatt "rechts" bei script_noteworthy eintragen).
Dann erstellt man noch zwei trigger_use, die man dann vor die beiden Seiten der Tür platziert (einen auf jede Seite). Dann selektiert man die Tür und einen der beiden Trigger und verbindet diese mit "w". Als nächstes selektiert man den Trigger, den man gerade mit der Tür verbunden hat und den verbliebenen Trigger und verbindet diese wiederum mit "w". Trigger 2 ist jetzt also mit Trigger 1 verbunden, der wiederum mit der Tür verbunden ist.
Davon kann man jetzt beliebig viele in der Map verteilen.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _multiple_doors
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _multiple_doors.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_multiple_doors.gsc" und "fx,misc/ui_pickup_available" in Dein Zone File ein.
Füge die Zeile maps/mp/_multiple_doors::main(); in Deine map.gsc Datei ein.
Hier 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:
|
// Zuerst erstellt man einen Brush für die Tür und einen origin brush als Türangel.
// Daraus macht man ein script_brushmodel und gibt ihm folgende keys/values
// key: targetname
// value: door
// key: script_noteworthy
// value: rechts
// (soll die Tür nach links auf gehen, dann "links" anstatt "rechts" bei script_noteworthy eintragen).
// Dann erstellt man noch zwei trigger_use, die man dann vor die beiden Seiten der Tür platziert (einen auf jede Seite). Dann selektiert man die Tür und einen der beiden Trigger und verbindet diese mit "w". Als nächstes selektiert man den Trigger, den man gerade mit der Tür verbunden hat und den verbliebenen Trigger und verbindet diese wiederum mit "w". Trigger 2 ist jetzt also mit Trigger 1 verbunden, der wiederum mit der Tür verbunden ist.
// Davon kann man jetzt beliebig viele in der Map verteilen.
{
maps\mp\_load::main();
thread doors_init();
}
doors_init(){
door = getentarray("door","targetname");
for (i= 0; i < door.size; i++){
trig1 = getent(door[i].target,"targetname");
trig2 = getent(trig1.target,"targetname");
level.door_open[i] = false;
door[i] thread door_think(i, trig1, trig2);
door[i] thread door_think(i, trig2, trig1);
}
}
door_think(i, trig1, trig2){
while(1){
trig1 waittill("trigger");
richtung = self.script_noteworthy;
if(!level.door_open[i]){
level.door_open[i] = true;
if (richtung == "links")
self rotateto((0,90,0),1);
else
self rotateto((0,-90,0),1);
self waittill("rotatedone");
wait 2;
self rotateto((0,0,0),1);
self waittill("rotatedone");
level.door_open[i] = false;
}
}
} |
|
__________________
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 12:38.
|
|
|
|
|
|
_paternoster.gsc - Paternoster |
|
Danke an OLD MAN WITH GUN, Mapicted, Andreas Plesnik
Link im Board: Klick
Dieses Script stammt aus der CoD 2 Map mp_andees_asylum. Mapicted und ich versuchten, damit eine Rolltreppe zu Bauen, OLD MAN WITH GUN und T.R. Graves hatten aber eine bessere Lösung. Siehe auch hier: Klick & Klick
Zuerst baue eine Fahrstuhlkabine mit einem Origin-Brush in der Mitte.
Der Origin-Brush muss 16x16 WE groß sein und mit der Textures/Locale/Tools/origin Textur belegt sein.
Jetzt selektierst du die Kabine und den Origin-Brush und klickst im 2D Fenster die rechte Maustaste und machst daraus ein Script/Brushmodel,
und gibst diesem den Targetname "paternoster_floor".
Erstelle jetzt ein Script/origin mit dem Targetname "paternoster_WP" und schiebe ihn genau an die selbe Position des Origin-Brushes der Fahrstuhlkabine, dieser dient als Wegpunkt.
Jetzt selektiere das komplette Fahrstuhlkabinen-Script-Brushmodel und den Script-Origin (beides muss gleichzeitig selktiert sein, weil jede Kabine auch einen Wegpunkt braucht)
und kopiere das ganze (strg+C und strg+V) mehrmals und ordne die Kabinen so an, wie sie sich bewegen sollen.
Das Script orientiert sich an der Brush Nummerierung im Mapfile, also dreht sich das ganze in die selbe Richtung nach welcher Reihenfolge Du die Kabinen gebaut hast.
Wichtig hierbei ist dass du die Kabinen nacheinander im Kreis und nicht durcheinander baust, weil sich dann die Kabinen auch durcheinander bewegen würden.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _paternoster
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _paternoster.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_paternoster.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_paternoster::main(); in Deine map.gsc Datei ein.
Hier 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:
|
main(){
// a Paternoster is some kind of elevator (as well as the latin name of the lords prayer)
level.Waypoints = getentarray("paternoster_WP","targetname");
level.Paternosterfloors = getentarray("paternoster_floor","targetname");
paternoster_init();
}
paternoster_init(){
iTemp = 0;
while(iTemp < level.Paternosterfloors.size){
level.Paternosterfloors[iTemp] thread floor_move(iTemp);
iTemp++;
}
}
floor_move(iFloornumber){
myWaypoints = level.Waypoints;
iSpeed = 50;
iWaypoint = iFloornumber;
tempZiel = myWaypoints[iWaypoint].origin;
self.origin = tempZiel;
while(1){
iWaypoint += 1;
if (iWaypoint >= myWaypoints.size)
iWaypoint = 0;
tempZiel = myWaypoints[iWaypoint].origin;
iZeit = distance(self.origin,tempZiel)/iSpeed;
self moveto(tempZiel, iZeit, 0.0, 0.0);
wait iZeit;
self.origin = tempZiel;
}
} |
|
__________________
Dieser Beitrag wurde 9 mal editiert, zum letzten Mal von Nightwing: 07.06.2008 20:29.
|
|
|
|
|
|
_radiation.gsc - Radioaktive Zonen |
|
Danke an Zeroy, NovemberDobby, [D]delica
Um dieses Script zu Nutzen, brauchst Du einen trigger_multiple, Targetname: radiation
Für das Spawnen des Schutzanzugs, platziere ein paar script_origin am Boden der Map mit dem targetname: nukespot
In der Map mp_pripyat finden sich die benötigten Skins für die Schutzanzüge, die geändert werden dürfen.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _radiation
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _radiation.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_radiation.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_radiation::main(); in Deine map.gsc Datei ein.
Hier das Script:
Code angehaengt. 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:
|
// **** ZeRoY 2008 -- www.zeroy.com **** //
// Multiplayer Radiation script for CoD4 by ZeRoY
// Radiation suit pickup by NovemberDobby
// Loosely based on a Drowning tutorial by [D]delica
//
// To use this script, you'll need a trigger_multiple, and give it the targetname 'radiation'
// For the suit spawning, place a bunch of script_origin in the map (on the ground) with a targetname of 'nukespot'
// All models used in here can of course be replaced. Enjoy!
main()
{
if ( getdvar( "pripyat_radiation" ) == "0" )
return;
if ( getdvar( "pripyat_suit_respawntime" ) == "" )
setdvar( "pripyat_suit_respawntime", "15" );
level.pripyat_suit_respawntime = getdvarfloat( "pripyat_suit_respawntime" );
if ( getdvar( "pripyat_radiation_kill" ) == "" )
setdvar( "pripyat_radiation_kill", "15" );
level.pripyat_radiation_kill = getdvarfloat( "pripyat_radiation_kill" );
level.respawnTime = level.pripyat_suit_respawntime;
radiation = getentarray("radiation","targetname");
level.FXpickup = loadfx( "custom/pickup_suit" );
if (isDefined("radiation"))
{
precacheShader("hint_health");
precachemodel("ap_luggage03");
if ( getdvar( "pripyat_nosuit" ) != "1" )
{
precacheModel("body_mp_sas_urban_assault");
precacheModel("viewhands_black_kit");
}
precacheShellShock( "radiation_zeroy" );
level.radiationtime = 5;
level.hurttime = (level.pripyat_radiation_kill);
for(d = 0; d < radiation.size; d++) radiation[d] thread zone();
}
thread nukesuit();
//thread onPlayerKilled();
}
nukesuit()
{
while(1)
{
wait .05;
if(!isdefined(level.nukesuit))
{
//wait .5;
nukespots = getentarray("nukespot","targetname");
level.nukespot = nukespots[randomint(nukespots.size)];
level.nukesuit = spawn("script_model",level.nukespot.origin + (0, 0, 30));
thread spin_suit();
//iprintlnbold("Suit Spawned");
level.effectObj = spawnPickupFX( level.nukespot.origin, level.FXpickup );
level.nukesuit setmodel("ap_luggage03");
//level.nukesuit.angles = (0, 0, -90);
}
else if(isdefined(level.nukesuit))
{
players = getentarray("player","classname");
for(i = 0; i < players.size; i++)
{
if(!isdefined(players[i].nukesuit) && isdefined(distance(players[i].origin, level.nukesuit.origin))) if(distance(players[i].origin, level.nukesuit.origin) <= 50)
{
//pick it up
level.nukesuit delete();
level.nukesuit = undefined;
players[i].nukesuit = "lolz";
if ( getdvar( "pripyat_nosuit" ) != "1" )
{
players[i] detachall();
players[i] setModel("body_mp_sas_urban_assault");
players[i] setViewmodel("viewhands_black_kit");
}
players[i] iprintln("^3You picked up a Radiation Suit");
players[i] iprintln("^3You are now protected from Radiation");
players[i] playlocalsound("pickup");
players[i] thread waittilldeath();
level.effectObj delete();
wait level.respawnTime;
}
}
}
}
}
spin_suit()
{
while(1)
{
if(isdefined(level.nukesuit)) level.nukesuit rotateyaw(-360,1.5);
wait 1.5;
}
}
waittilldeath()
{
while(1)
{
wait .05;
if(isdefined(self))
if(self.health < 1 || self.pers["team"] == "spectator") self.nukesuit = undefined;
}
}
zone()
{
while (1)
{
self waittill("trigger", other);
if(isPlayer(other) && other istouching(self) && !isdefined(other.nukesuit))
other thread irradiate(self);
}
}
irradiate(trigger)
{
while (self istouching(trigger))
{
wait .125;
if(isDefined(self.irradiate))
return;
self.irradiate = true;
self shellshock( "radiation_zeroy", 1.3 );
if(isAlive(self))
self playsound("geiger");
if(!isDefined(self.hud_nuke))
{
self.hud_nuke = newClientHudElem(self);
self.hud_nuke.alignX = "center";
self.hud_nuke.alignY = "middle";
self.hud_nuke.x = 320;
self.hud_nuke.y = 385;
self.hud_nuke.color = (1,1,0);
self.hud_nuke.alpha = 0.7;
}
self.hud_nuke setShader("hint_health");
self.progresstime = 0;
//self iPrintLn("^3 Danger! you are in a radiation zone!");
d = 0;
f = 0;
while(isalive(self) && self istouching(trigger) && (self.progresstime < level.radiationtime))
{
d ++;
f ++;
wait 0.05;
self.progresstime += 0.05;
if(self.progresstime >= level.hurttime)
{
if(f >= 4)
{
radiusDamage(self.origin,9, 1, 1);
f = 0;
}
}
}
if(isalive(self) && self istouching(trigger) && (self.progresstime >= level.radiationtime))
{
self.hud_nuke destroy();
wait 0.025;
radiusDamage(self.origin,22, 3000, 3000);
self.irradiate = undefined;
self.sounder = undefined;
deathmethod = " died by exposure to radiation";
iPrintLn( self.name, deathmethod);
wait .05;
}
else
{
wait 0.05;
self.hud_nuke destroy();
self.irradiate = undefined;
self.sounder = undefined;
}
wait .05;
}
}
spawnPickupFX( groundpoint, fx )
{
effect = spawnFx( fx, groundpoint, (0,0,1), (1,0,0) );
triggerFx( effect );
return effect;
}
onPlayerKilled()
{
self endon("disconnect");
for(;;)
{
self waittill("killed_player");
if(isDefined(self.nukesuit))
self.nukesuit = undefined;
if(isDefined(self.hud_nuke))
self.hud_nuke destroy();
}
} |
|
__________________
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 13:05.
|
|
|
|
|
|
_rollstair.gsc - Eine Rolltreppe |
|
Danke an OLD MAN WITH GUN, T.R. Graves
Link im Board: Klick
Im Radianten erstellen wir als erstes einen brush (Treppe) und machen daraus ein
script-brushmodel und geben diesem den targetname rolltreppe
dann machen wir wiederum ein script-brushmodel und geben diesen die Textur Origin und schieben diesen auf die Stufe wie man auf den Bild sehen
kann.
Dann erstellen wir noch weitere Brushe (Treppenstufen) und machen alle zu
script-brushmodel und setzen in alle ein script-brushmodel mit der textur origin.
Wichtig ist das man nur die Treppenbrushe mit der Taste w in Richtung der Bewegung der Rolltreppe verbinden.
Die letzte Treppenstufe mit der ersten Treppenstufe verbinden mit w, so das in Kreislauf entsteht.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _rollstair
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _rollstair.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_rollstair.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_rollstair::main(); in Deine map.gsc Datei ein.
Hier 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:
|
// _rollstair.gsc by OLD MAN WITH GUN
// Für 1 Rolltreppe
main(){
rolltreppe = getent ("rolltreppe","targetname");
rolltreppe thread move();
}
move(){
stufe = [];
speed = 1.3; // Geschwindigkeit der Rolltreppe (je niedriger der Wert, desto schneller)
anzahl = 30; // Anzahl aller Treppenstufen
stufe[0] = getent(self.target,"targetname");
for (i = 0; i < anzahl; i++)
stufe[i+1] = getent(stufe[i].target,"targetname");
while(1){
self moveto(stufe[0].origin,speed);
for (j = 0; j < anzahl; j++)
stufe[j] moveto(stufe[j+1].origin,speed);
stufe[anzahl-1] waittill ("movedone");
}
} |
|
__________________
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 13:08.
|
|
|
|
|
|
_rollstairs.gsc - Mehrere Rolltreppen |
|
Danke an OLD MAN WITH GUN
Link im Board: Klick
Füge einen script_origin hinzu, um die Rolltreppe zu identifizieren.
Dieser script_origin bekommt als targetname "rolltreppe" und zusätzlich noch folgenden key/value:
key: script_noteworthy
value: 22
(22 = Anzahl der Stufen dieser Rolltreppe, entsprechend eurer Rolltreppe anpassen).
Die Treppenstufen bekommen keinen targetname (keine der Stufen).
Einfach alle im Kreis mit "w" miteinander verbinden, sodass der Kreis vollständig geschlossen ist (wo man anfängt dürfte eigentlich egal sein).
Dann noch das script_origin mit einer der Stufen verbinden.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _rollstairs
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _rollstairs.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_rollstairs.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_rollstairs::main(); in Deine map.gsc Datei ein.
Hier das Script:
Code angehaengt. 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:
|
// _rollstairs.gsc by OLD MAN WITH GUN
// Für mehrere Rolltreppen
// Füge einen script_origin hinzu, um die Rolltreppe zu identifizieren.
// Dieser script_origin bekommt als targetname "rolltreppe" und zusätzlich noch folgenden key/value:
// key: script_noteworthy
// value: 22
// (22 = Anzahl der Stufen dieser Rolltreppe, entsprechend eurer Rolltreppe anpassen).
// Die Treppenstufen bekommen keinen targetname (keine der Stufen).
// Einfach alle im Kreis mit "w" miteinander verbinden, sodass der Kreis vollständig geschlossen ist (wo man anfängt dürfte eigentlich egal sein).
// Dann noch das script_origin mit einer der Stufen verbinden.
main(){
rolltreppe = getentarray ("rolltreppe","targetname");
for(z = 0; z < rolltreppe.size; z++)
rolltreppe[z] thread move();
}
move(){
stufe = [];
speed = 1.5; // Geschwindigkeit der Rolltreppe (je größer der Wert, desto langsamer)
anzahl = int(self.script_noteworthy); // Anzahl der Stufen vom script_origin holen
stufe[0] = getent(self.target,"targetname");
for (i = 0; i < anzahl; i++)
stufe[i+1] = getent(stufe[i].target,"targetname");
while(1){
for (j = 0; j < anzahl; j++)
stufe[j] moveto(stufe[j+1].origin,speed);
stufe[anzahl-1] waittill ("movedone");
}
} |
|
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 13:09.
|
|
|
|
|
|
_rotate.gsc - Rotierende Elemente |
|
Danke an Roger Abrahamsson
Link im Board: Klick
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _rotate
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _rotate.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_rotate.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_rotate::main(); in Deine map.gsc Datei ein.
Hier 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:
|
main(){
rotate_obj = getentarray("fan1","targetname");
if(isdefined(rotate_obj)){
for(i=0;i<rotate_obj.size;i++){
rotate_obj[i] thread ra_rotate();
}
}
}
ra_rotate(){
if (!isdefined(self.speed) || self.speed == 0)
self.speed = .3;
if (!isdefined(self.script_noteworthy))
self.script_noteworthy = "y";
while(true){
// rotateYaw(float rot, float time, <float acceleration_time>, <float deceleration_time>);
if (self.script_noteworthy == "y")
self rotateYaw(360,self.speed);
else if (self.script_noteworthy == "x")
self rotateRoll(360,self.speed);
else if (self.script_noteworthy == "z")
self rotatePitch(360,self.speed);
wait ((self.speed)-0.1); // removes the slight hesitation that waittill("rotatedone"); gives.
}
} |
|
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 13:15.
|
|
|
|
|
|
_teleporter.gsc - Teleporter |
|
Grundlage sind die Anleitung und das Script von Dad of Azz und cybershot in ihrer CoD2-Anleitung auf modsonline.com
Danke an OLD MAN WITH GUN und Vernichter
Link im Board: Klick
Hier findet Ihr auch eine genau Einbauanleitung.
Den Code im Codefenster kopieren und in eine neue, leere Textdatei einfügen, abspeichern als: _teleporter
Danach die Dateierweiterung von *.txt in *.gsc ändern. (Im Windows Explorer: Extras --> Ordneroptionen --> Ansicht - Haken raus bei: Erweiterung bei bekannten Dateitypen ausblenden)
Kopiere dieses Script unter dem Namen _teleporter.gsc in Deinen Ordner "/raw/maps/mp".
Füge die Dateien "rawfile,maps/mp/_teleporter.gsc" in Dein Zone File ein.
Füge die Zeile maps/mp/_teleporter::main(); in Deine map.gsc Datei ein.
Hier 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:
|
main(){
level._effect[ "teleporter" ] = loadfx( "teleporter/teleport_red" );
level.scr_sound["teleport_start"] = "teleport_start";
level.scr_sound["teleport_dest"] = "teleport_dest";
entTransporter = getentarray("enter","targetname");
if(isdefined(entTransporter)){
for(lp=0;lp<entTransporter.size;lp++)
entTransporter[lp] thread Transporter();
}
}
Transporter(){
maps\mp\_fx::loopfx("teleporter", (self.origin), 3, (self.origin) + (0, 0, 270));
while(true){
self waittill("trigger",other);
entTarget = getent(self.target, "targetname");
other playsound("teleport_start");
wait(0.30); //hier die Zeit etwas höher setzen (von 0.1 auf 0.3)
other setorigin(entTarget.origin);
other setplayerangles(entTarget.angles);
//iprintlnbold ("You have been teleported !!!");
wait(0.10);
other playsound("teleport_dest");
}
} |
|
__________________
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Nightwing: 02.06.2008 13:31.
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|