Opferlamm-Clan Board
www.opferlamm-clan.de
Verantwortlich für diese bösen Machenschaften: siehe Impressum

Registrierung Kalender Mitgliederliste Suche Häufig gestellte Fragen Zur Startseite

Opferlamm-Clan Board » Call of Duty 4 » Call of Duty 4 - Mapping » CoD4-Mapping-Hilfe » erweitertes Doorscript » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen erweitertes Doorscript
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


erweitertes Doorscript Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 grosses Grinsen
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 verwirrt

Code einblendenCode 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 einblendenCode 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.

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
OLD MAN WITH GUN
... sehr viel alleine


images/avatars/avatar-798.gif


Dabei seit: 01.05.2006
Beiträge: 2.305


RE: erweitertes Doorscript Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 einblendenCode 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.

OLD MAN WITH GUN ist offline Beiträge von OLD MAN WITH GUN suchen Nehmen Sie OLD MAN WITH GUN in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

__________________

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 einblendenCode 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.

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich hätte noch 2 kleine Fragen:
  1. Wie kann ich 2 oder mehrere Bewegungen in einem Ablauf geschehen lassen?
    z.B.: Die Tür soll um 90 Grad fallen, sich dabei noch um 5 Grad verdrehen und um 1 oder 2 WE nen move machen. Also 2 mal rotate und einmal move.
    Hintergrund: Die Türblätter sollen nicht genau nebeneinander liegen.

  2. Gibt es einen Befehl, der wie waittill("rotatedone"); arbeitet, jedoch am Anfang der Rotation ausgelöst wird? Könnte ich da evtl mit waittillframeend; arbeiten?
    Hintergrund: Wenn aus beiden Richtungen Schaden auf die Tür eintrifft, ist waittill("rotatedone"); zu langsam, um die Trigger zu deaktivieren. Ansonsten setz ich die Triggerdeaktivierung davor ein, sollte auch funktionieren, weiss nur nicht, obs die richtige Art und Weise ist.


ToM

__________________

Dieser Beitrag wurde 8 mal editiert, zum letzten Mal von Nightwing: 01.05.2008 15:17.

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
Mapicted
Steuerzahler


Dabei seit: 10.04.2015
Beiträge: 200


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 einblendenCode 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 einblendenCode 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.

Mapicted ist offline Beiträge von Mapicted suchen Nehmen Sie Mapicted in Ihre Freundesliste auf
OLD MAN WITH GUN
... sehr viel alleine


images/avatars/avatar-798.gif


Dabei seit: 01.05.2006
Beiträge: 2.305


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

OLD MAN WITH GUN ist offline Beiträge von OLD MAN WITH GUN suchen Nehmen Sie OLD MAN WITH GUN in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Den Befehl kannte ich nicht, Jan wohl auch nicht. cool
Mal wieder Danke, OMWG!

ToM

__________________

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
OLD MAN WITH GUN
... sehr viel alleine


images/avatars/avatar-798.gif


Dabei seit: 01.05.2006
Beiträge: 2.305


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Man sollte hin und wieder mal einen Blick in die script commands werfen Augenzwinkern
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.

OLD MAN WITH GUN ist offline Beiträge von OLD MAN WITH GUN suchen Nehmen Sie OLD MAN WITH GUN in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da iss was wahres dran, Danke!
Link iss scho in den Favs drin.

__________________

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 01.05.2008 18:24.

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 einblendenCode 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 einblendenCode 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.

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
-tiger-
Steuerzahler


images/avatars/avatar-1082.jpg


Dabei seit: 22.01.2008
Beiträge: 189


1a Skript Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

-tiger- ist offline Homepage von -tiger- Beiträge von -tiger- suchen Nehmen Sie -tiger- in Ihre Freundesliste auf
Nightwing
Padawan ;-)


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.858


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

Nightwing ist offline E-Mail an Nightwing senden Homepage von Nightwing Beiträge von Nightwing suchen Nehmen Sie Nightwing in Ihre Freundesliste auf
-tiger-
Steuerzahler


images/avatars/avatar-1082.jpg


Dabei seit: 22.01.2008
Beiträge: 189


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 einblendenCode 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

-tiger- ist offline Homepage von -tiger- Beiträge von -tiger- suchen Nehmen Sie -tiger- in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Opferlamm-Clan Board » Call of Duty 4 » Call of Duty 4 - Mapping » CoD4-Mapping-Hilfe » erweitertes Doorscript

Impressum ||Datenschutzerklärung

Forensoftware: Wbb - WoltLab GmbH || zum Archiv