Scripter gesucht für Wandbewegung!

Animus
so ich schon wieder mit einem scriptproblem!

also ich würde gerne über ein script eine tür öffnen, hört sich leicht an ist es aber für mich nicht weil die tür eine schiebetür ist aus 4 teilen.
das komplette teil sieht so aus.



und in so einer art soll sie dann offen sein



nun hätte ich gerne das sich das obere teil nach oben bewegt das untere nach unten. die zwei an der seite auch nach ihre seite jeweils.
nun ist mein problem das man da ja nicht im elevator script right oder left für height eingeben kann. also wie bestimme ich da die koordinaten bin nicht so der scripter?!

hab mal das script von badman genommen und will versuch es mal an meine tür anzupassen. leider versteh ich die positonsangaben nicht wirklich also in welche richtung sich es jeweils bewegt. für mich ist das nicht wirklich ersichtlich.

Zitat:


main()
{
level.plattenMoving = false;


level.pos_platte01 = true;
level.pos_platte02 = true;
level.pos_platte03 = true;

/*
platte01_dmg01 = getent ("platte01_dmg_01", "targetname");
platte01_dmg02 = getent ("platte01_dmg_02", "targetname");
platte02_dmg01 = getent ("platte02_dmg_01", "targetname");
platte02_dmg02 = getent ("platte02_dmg_02", "targetname");
platte03_dmg01 = getent ("platte03_dmg_01", "targetname");
platte03_dmg02 = getent ("platte03_dmg_02", "targetname");
*/

thread platte01_start();
thread platte02_start();
thread platte03_start();
/* while(1)
{
platte01_dmg01 Hide();
platte01_dmg02 Hide();
platte02_dmg01 Hide();
platte02_dmg02 Hide();
platte03_dmg01 Hide();
platte03_dmg02 Hide();
}*/
}


platte01_start()
{
while(1)
{
time = Randomint(10);
wait time;
if (!level.plattenMoving)
thread platte01_move();
}
}

platte02_start()
{
while(1)
{
time = Randomint(10);
wait time;
if (!level.plattenMoving)
thread platte02_move();
}
}

platte03_start()
{
while(1)
{
time = Randomint(10);
wait time;
if (!level.plattenMoving)
thread platte03_move();
}
}


platte01_move()
{
plattenmodel_01 = getent ("platte01", "targetname");
platte01_dmg01 = getent ("platte01_dmg_01", "targetname"); platte01_dmg02 = getent ("platte01_dmg_02", "targetname");

//platte01_dmg01 linkto(plattenmodel_01);
//platte01_dmg02 linkto(plattenmodel_01);

level.plattenMoving = true;

way = 112; //-
speed = 5;

if (level.pos_platte01) {

//platte01_dmg01 show();

plattenmodel_01 movex (way - (way * 2), speed);
plattenmodel_01 waittill ("movedone");

//platte01_dmg01 hide();

level.pos_platte01 = false;

}

else
{

//platte01_dmg02 show();

plattenmodel_01 movex (way, speed);
plattenmodel_01 waittill ("movedone");

//platte01_dmg02 hide();

level.pos_platte01 = true;
}

level.plattenMoving = false;
}


platte02_move()
{
plattenmodel_02 = getent ("platte02", "targetname");
platte02_dmg01 = getent ("platte02_dmg_01", "targetname"); platte02_dmg02 = getent ("platte02_dmg_02", "targetname");

//platte02_dmg01 linkto(plattenmodel_02);
//platte02_dmg02 linkto(plattenmodel_02);

level.plattenMoving = true;

way = 96; //-
speed = 5;

if (level.pos_platte02) {

//platte02_dmg01 show();

plattenmodel_02 moveY (way - (way * 2), speed);
plattenmodel_02 waittill ("movedone");

//platte02_dmg01 hide();

level.pos_platte02 = false;

}

else
{

//platte02_dmg02 show();

plattenmodel_02 moveY (way, speed);
plattenmodel_02 waittill ("movedone");

//platte02_dmg02 hide();

level.pos_platte02 = true;
}

level.plattenMoving = false;
}


platte03_move()
{
plattenmodel_03 = getent ("platte03", "targetname");
platte03_dmg01 = getent ("platte03_dmg_01", "targetname"); platte03_dmg02 = getent ("platte03_dmg_02", "targetname");

//platte03_dmg01 linkto(plattenmodel_03);
//platte03_dmg02 linkto(plattenmodel_03);

level.plattenMoving = true;

way = 96; //-
speed = 5;

if (level.pos_platte03) {

//platte03_dmg01 show();

plattenmodel_03 moveY (way, speed);
plattenmodel_03 waittill ("movedone");

//platte03_dmg01 hide();

level.pos_platte03 = false;

}

else
{

//platte03_dmg02 show();

plattenmodel_03 moveY (way - (way * 2), speed);
plattenmodel_03 waittill ("movedone");

//platte03_dmg02 hide();

level.pos_platte03 = true;
}

level.plattenMoving = false; }


kann mir dabei jemand helfen? würd mich sehr freuen wenn mir zumindest jemand einen tip geben würde.

mfg animus
steinacker
das script um die platten zu bewegen arbeitet ohne trigger, das würde bedeuten, dass deine türe immer auf und zu geht

bei sowas z.b. nehm ich immer das script vom elevator und pass mir das dann an und wenn du anstatt einen trigger use touch einen trigger multipple verwendest, dann geht die türe auf, sobald einer den trigger passiert, und beim zweiten wieder zu
der einzigste nachteil ist, dass sich die türe in dem beispiel immer auf und zu bewegt, so lange ein player im trigger stehen bleibt...

hab hier mal was gebastelt:

(die rote linie gehört nich dazu)

und so schauts aus


die einzelnen tür teile bestehen jeweils aus 3 brushes, die ich zu einem scrpt_brushmodel gemacht hab, und dann jeweils den targetname plate1 bis plate 4 gegeben habe (oben angefangen)
und die trigger haben den targetname switch

und hier das script dazu:
_doorMover.gsc

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:
main()
{
	level.plateDown1 = true;
	level.plateMoving1 = false;

	level.plateDown2 = true;
	level.plateMoving2 = false;

	level.plateDown3 = true;
	level.plateMoving3 = false;

	level.plateDown4 = true;
	level.plateMoving4 = false;

	thread plate_start1();
	thread plate_start2();
	thread plate_start3();
	thread plate_start4();
}

////////////////////////////////////////////plate1////////////////////
plate_start1()
{
	plate1 = getentarray ("switch","targetname");

	if ( isdefined(plate1) )
		for (i = 0; i < plate1.size; i++)
		plate1[i] thread plate_think1();
}

plate_think1()
{
	while (1)
	{
	self waittill ("trigger");

	if (!level.plateMoving1)
		thread plate_move1();
	}
}

plate_move1()
{
	platemodel1 = getent ("plate1", "targetname");

	level.plateMoving1 = true;

	speed = 3;
	height = 52;

	if (level.plateDown1)
	{
		platemodel1 movez (height, speed);	//bewegt sich nach oben um 52 WE
		platemodel1 waittill ("movedone");
		level.plateDown1 = false;


	}
	else
	{
		platemodel1 movez (height - (height * 2), speed);	//und dann wieder zurück um 52 WE
		platemodel1 waittill ("movedone");
		level.plateDown1 = true;
	}
	level.plateMoving1 = false;
}

////////////////////////////////////////////plate2////////////////////
plate_start2()
{
	plate2 = getentarray ("switch","targetname");

	if ( isdefined(plate2) )
		for (j = 0; j < plate2.size; j++)
		plate2[j] thread plate_think2();
}

plate_think2()
{
	while (1)
	{
	self waittill ("trigger");

	if (!level.plateMoving2)
		thread plate_move2();
	}
}
plate_move2()
{
	platemodel2 = getent ("plate2", "targetname");

	level.plateMoving2 = true;

	speed = 3;
	height = 52;

	if (level.plateDown2)
	{

		platemodel2 movex (height, speed);	//platte2 nach rechts
		platemodel2 waittill ("movedone");
		level.plateDown2 = false;
	}
	else
	{
		platemodel2 movex (height - (height * 2), speed);	//und wieder zurück
		platemodel2 waittill ("movedone");
		level.plateDown2 = true;
	}
	level.plateMoving2 = false;
}

////////////////////////////////////////////plate3////////////////////
plate_start3()
{
	plate3 = getentarray ("switch","targetname");

	if ( isdefined(plate3) )
		for (i = 0; i < plate3.size; i++)
		plate3[i] thread plate_think3();
}

plate_think3()
{
	while (1)
	{
	self waittill ("trigger");

	if (!level.plateMoving3)
		thread plate_move3();
	}
}

plate_move3()
{
	platemodel3 = getent ("plate3", "targetname");

	level.plateMoving3 = true;

	speed = 3;
	height = -52;

	if (level.plateDown3)
	{
		platemodel3 movez (height, speed);	//platte 3 nach unten
		platemodel3 waittill ("movedone");
		level.plateDown3 = false;
	}
	else
	{
		platemodel3 movez (height - (height * 2), speed);	//und wieder zurück
		platemodel3 waittill ("movedone");
		level.plateDown3 = true;
	}
	level.plateMoving3 = false;
}

////////////////////////////////////////////plate4////////////////////
plate_start4()
{
	plate4 = getentarray ("switch","targetname");

	if ( isdefined(plate4) )
		for (i = 0; i < plate4.size; i++)
		plate4[i] thread plate_think4();
}

plate_think4()
{
	while (1)
	{
	self waittill ("trigger");

	if (!level.plateMoving4)
		thread plate_move4();
	}
}

plate_move4()
{
	platemodel4 = getent ("plate4", "targetname");

	level.plateMoving4 = true;

	speed = 3;
	height = -52;

	if (level.plateDown4)
	{
		platemodel4 movex (height, speed);	//platte 4 nach links
		platemodel4 waittill ("movedone");
		level.plateDown4 = false;
	}
	else
	{

		platemodel4 movex (height - (height * 2), speed);	//und wieder zurück
		platemodel4 waittill ("movedone");
		level.plateDown4 = true;
	}
	level.plateMoving4 = false;
}



Edit:
und hier noch das prefab mit der gsc-datei zum download bei
rapidshare
Animus
also ich hab jetzt mal ein bisl rumgescriptet aber wie gesagt ahnung hab ich da nicht wirklich viel von. bei mir bewegt sich jetzt das ding nur einmal weil keine schleife da ist!!! wie gesagt jetzt will ich das ja nur über den trigger noch machen!

Zitat:

main()
{
level.plattenMoving = false;
level.pos_platte01 = true;

thread platte01_start();
}
platte01_start()
{
while(1)
{
time = 6;
wait time;
if(!level.plattenMoving)
thread platte01_move();
}

}
platte01_move(){
plattenmodel_01 = getent ("platte01", "targetname");
platte01_dmg01 = getent ("platte01_dmg_01", "targetname"); platte01_dmg02 = getent ("platte01_dmg_02", "targetname");

level.plattenMoving = true;
way = 112; //- speed = 15;
if (level.pos_platte01)
{
plattenmodel_01 movex (way - (way * 2), speed);
plattenmodel_01 waittill ("movedone");
level.pos_platte01 = false;
} else {
plattenmodel_01 movex (way, speed);
plattenmodel_01 waittill ("movedone");
level.pos_platte01 = true;
}
}
Animus
hab jetzt mal versucht das script warten zu lassen bis ein trigger gestartet wird

hab einfach oben an das script ein auszug vom elevator script angepasst:

das ding sieht dann so aus:

main(){
level.plattenMoving = false;
level.pos_platte01 = true;
thread platte01_start();
}

platte01_start(){
while(1){
time = 6;
wait time;
if(!level.plattenMoving)
thread platte01_think();
}
}

platte01_think(){
while (1){
self waittill ("trigger");
if (!level.plattenMoving)
thread platte01_move();
}
}


platte01_move(){
plattenmodel_01 = getent ("platte01", "targetname");
platte01_dmg01 = getent ("platte01_dmg_01", "targetname");
platte01_dmg02 = getent ("platte01_dmg_02", "targetname");

level.plattenMoving = true;

way = 112; //-
speed = 5;

if (level.pos_platte01) {
plattenmodel_01 movex (way - (way * 2), speed);
plattenmodel_01 waittill ("movedone");
level.pos_platte01 = false;
}else{
plattenmodel_01 movex (way, speed);
plattenmodel_01 waittill ("movedone");
level.pos_platte01 = true;
}
}



hab jetzt nur in problem wenn ich einen trigger erstelle und ihn dann über w verbinden will mit dem brush verschwindet der trigger und ich kann ihn wieder neu machen
Animus
gut das mit dem trigger war ein fehler von mir kann ihn auch mit dem brush verbinden nur auslösen kann ich ihn nicht das model bleibt an der stelle wo es ist da passiert nix!

hilfe

ich werde noch blöd man man man.....
Animus
dank dir erstmal werd wo dein script nehmen wollte es kürzer aber einen geschenkten g. kuckt man net ins m. lol smile
steinacker
wenn du den trigger im script ansprichst, brauchst du den nicht mit dem model verbinden

und so kannst du den trigger ein und ausschalten

Antwort von Nightwing auf eine frage von mir
So zum Bleistift:

Oben erste Zeile in der map.gsc: #include maps\mp\_utility;
Trigger aus und an: TriggerOff(); TriggerOn();
Animus
so alles schön und gut funktioniert auch soweit dein script. hab es noch umgeschrieben das bei einem trigger multi. die tür nicht auf und zu geht wenn der player den die ganze zeit berührt. auch bleibt die tür jetzt 6sek. auf und schließt dann auto. wieder.

jetzt steh ich aber wieder vor einem problem!!!

wie kann ich da damage trigger mit einbinden die sich mitbewegen?
der player soll schaden nehmen wenn er in der tür steht und sie zu geht!

ich kann weder so einen trigger mitbewegen noch noch irgendetwas. bekomme jedesmal scriptfehler egal wie ich es mache!

hast du da noch ne idee wie sowas gehen könnte?
steinacker
das wieß ich leider auch nicht.

BadMan hat was in dem fred bewegende platten über einen Radius Damage gepoustet
hier

und auch die scripts zum Download bereitgestellt
BadMan
Gib Obacht is ganz leicht. Du erstellst ein script_origin, bei so einer Tür würd ichs einfach in der Mitte platzieren, kannst ihn aber auch mit linkto befestigen. Dem origin gibste einen targetname z.b dmg01

Im Skript rufst du es dann einfach an der gewünschten stelle auf.
Das sieht dann wenn ich das Skript von steinacker nehme so aus

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:
plate_move1()
{
	platemodel1 = getent ("plate1", "targetname");


	level.plateMoving1 = true;

	speed = 3;
	height = 52;

	if (level.plateDown1)
	{
		platemodel1 movez (height, speed);	//bewegt sich nach oben um 52 WE
		thread dmg01();
		platemodel1 waittill ("movedone");
		level.plateDown1 = false;


	}
	else
	{
		platemodel1 movez (height - (height * 2), speed);	//und dann wieder zurück um 52 WE
		thread dmg01();
		platemodel1 waittill ("movedone");
		level.plateDown1 = true;
	}
	level.plateMoving1 = false;
}





Und dies fügst du unten an das Skript dran musste aber für jeden orgin neu machen

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:
dmg01()
{
dmg01 = getent ("dmg01", "targetname");
while(1)
{

if (!level.plateMoving1)
	return;
	
radiusDamage(dmg01.origin,60, 500, 0);
wait .5;
}
}




Und wenn der damage nicht sofort erfolgen soll machste über

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
thread dmg01();

einfach noch nen

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
wait speed * .5

oder so ist so nach der hälfte der zeit.
OLD MAN WITH GUN

Zitat:

Original von Animus
ich kann weder so einen trigger mitbewegen noch noch irgendetwas. bekomme jedesmal scriptfehler egal wie ich es mache!
Schau mal hier: brauche guten scripter und mapper (bewegende Platten und Buchstaben erstellen?)
steinacker
also ich hab mal das mit script_origin getestet und es funzt prima

allerdings rufe ich den thread dmg01(); nur auf, wenn die türe zu geht und es reicht, wenn ein script_origin drin ist

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:
plate_move1()
{
	platemodel1 = getent ("plate1", "targetname");

	level.plateMoving1 = true;

	speed = 3;
	height = 52;

	if (level.plateDown1)
	{
		platemodel1 movez (height, speed);	//bewegt sich nach oben um 52 WE
		platemodel1 waittill ("movedone");
		level.plateDown1 = false;


	}
	else	//hier geht die türe zu und das erste (obere) türenteil bewegt sich nach unten
	{
		platemodel1 movez (height - (height * 2), speed);	//und dann wieder zurück um 52 WE
		thread dmg01();						
		platemodel1 waittill ("movedone");
		level.plateDown1 = true;
	}
	level.plateMoving1 = false;
}



und am ende nach plate_move4() dann den code zu der funktion dmg01()

und so schauts dann im radiant aus


und so im game, der player bleibt an einem türteil hängen


jetzt stellt sich für mich noch die frage, wo ich OMWG's trigger_hurt code einfüge

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
hurt_trigger = getent("trigger_hurt","targetname");
hurt_trigger enablelinkto();
hurt_trigger linkto(wasauchimmer); 



so könnt ich mir das vorstellen

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:
plate_move1()
{
	platemodel1 = getent ("plate1", "targetname");
	
	hurt_trigger = getent("trigger_hurt","targetname");	//hier

	level.plateMoving1 = true;
	
	hurt_trigger enablelinkto();	//hier

	speed = 3;
	height = 52;

	if (level.plateDown1)
	{
		platemodel1 movez (height, speed);	//bewegt sich nach oben um 52 WE
		platemodel1 waittill ("movedone");
		level.plateDown1 = false;


	}
	else	//hier geht die türe zu und das erste (obere) türenteil bewegt sich nach unten
	{
		platemodel1 movez (height - (height * 2), speed);	//und dann wieder zurück um 52 WE
		
		hurt_trigger linkto (platemodel1);	//und hier
		
		platemodel1 waittill ("movedone");
		level.plateDown1 = true;
	}
	level.plateMoving1 = false;
}

BadMan

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
hurt_trigger = getent("trigger_hurt","targetname");
hurt_trigger enablelinkto();


Diese zwei packste ganz oben bei main rein (ich gehe jetzt mal von steinacker´s Skript ganz oben aus)
Der Grund ist wenn 2X

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
hurt_trigger enablelinkto();


aufgerufen wird gibt’s ne Fehlermeldung, da es ja schon aktiv ist. (Der Befehl ist Global wirksam)
Danach kann man

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
hurt_trigger linkto(wasauchimmer);



ganz normal verwenden.
steinacker

Zitat:

Der Grund ist wenn 2X
hurt_trigger enablelinkto();
aufgerufen wird gibt’s ne Fehlermeldung, da es ja schon aktiv ist. (Der Befehl ist Global wirksam)

daher die fehlermeldung, die ich hatte... Augenzwinkern
kann das sein, dass der trigger_hurt brush im radiant noch einen targetname benötigt

Edit:
also ich hab das nochmal getestet mit dem trigger_hurt

der brush braucht noch nen targetname, sonst gibts wieder fehler

und ich hab den nur an die obere platte verlinkt im script, diesmal aber auch beim öffnen, da sich der player sonst auch beim öffnen verletzt
und der trigger_hurt wirkt nicht sofort tödlich, so dass man noch rauskommen kann - aber am besten mal selbst testen

hier noch die änderungen im script:

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:
main()
{
	hurt_trigger = getent("trigger_hurt","targetname");
	hurt_trigger enablelinkto();

	level.plateDown1 = true;
	level.plateMoving1 = false;

	level.plateDown2 = true;
	level.plateMoving2 = false;

	level.plateDown3 = true;
	level.plateMoving3 = false;

	level.plateDown4 = true;
	level.plateMoving4 = false;

	thread plate_start1();
	thread plate_start2();
	thread plate_start3();
	thread plate_start4();
}

////////////////////////////////////////////plate1////////////////////
plate_start1()
{
	plate1 = getentarray ("switch","targetname");

	if ( isdefined(plate1) )
		for (i = 0; i < plate1.size; i++)
		plate1[i] thread plate_think1();
}

plate_think1()
{
	while (1)
	{
	self waittill ("trigger");

	if (!level.plateMoving1)
		thread plate_move1();
	}
}

plate_move1()
{
	platemodel1 = getent ("plate1", "targetname");
	
	hurt_trigger = getent("trigger_hurt","targetname");	//hier

	level.plateMoving1 = true;

	speed = 3;
	height = 52;

	if (level.plateDown1)
	{
		platemodel1 movez (height, speed);	//bewegt sich nach oben um 52 WE

		hurt_trigger linkto(platemodel1);

		platemodel1 waittill ("movedone");
		level.plateDown1 = false;


	}
	else	//hier geht die türe zu und das erste (obere) türenteil bewegt sich nach unten
	{
		platemodel1 movez (height - (height * 2), speed);	//und dann wieder zurück um 52 WE

		hurt_trigger linkto(platemodel1);

		platemodel1 waittill ("movedone");
		level.plateDown1 = true;
	}
	level.plateMoving1 = false;
}


der rest bleibt wie er ist, nur dass ich zum schluss den code mit dem radiusDamage wieder rausgenommen hab
Animus
leider versteh ich im moment ein bisl bahnhof.

ich taste mich erst ran an das scripten und häng da meist sehr lange davor bis ich die hälfte verstanden habe. bitte um nachsicht!

also 1.

mein script sieht so aus mal nur die platte 1:

Zitat:


main()
{
level.plateDown1 = true;
level.plateMoving1 = false;

level.plateDown2 = true;
level.plateMoving2 = false;

level.plateDown3 = true;
level.plateMoving3 = false;

level.plateDown4 = true;
level.plateMoving4 = false;

thread plate_start1();
thread plate_start2();
thread plate_start3();
thread plate_start4();
}

////////////////////////////////////////////plate1////////////////////
plate_start1()
{
plate1 = getentarray ("switch","targetname");

if ( isdefined(plate1) )
for (i = 0; i < plate1.size; i++)
plate1[i] thread plate_think1();
}

plate_think1()
{
while (1)
{
self waittill ("trigger");

if (!level.plateMoving1)
thread plate_move1();
}
}

plate_move1()
{
platemodel1 = getent ("plate1", "targetname");

level.plateMoving1 = true;

speed = 1;
height = 52;

platemodel1 playsound ("xdor");
platemodel1 movez (height, speed);
platemodel1 waittill ("movedone");
level.plateDown1 = false;
wait 6;

platemodel1 playsound ("xdor");
platemodel1 movez (height - (height * 2), speed);
platemodel1 waittill ("movedone");
level.plateDown1 = true;
level.plateMoving1 = false;
}


so schön und gut geht auch wie geschniert.
meine frage ist jetzt

wenn ich den befehl nur einmal aufrufen kann ist damit das script gemeint oder kann ich den nur einmal überhaupt aufrufen. also zb wenn ich 2türen hätte und die gleichzeitig geöffnet werden gibt es einen scriptfehler oder was?

dann muß ich den erstellen? also so wie die platte1 machen und drüberlegen da würde sich das ding ja nicht mitbewegen. sobald die tür zu geht aufpoppen und alles vernichten und nix mehr mit noch schnell durchhüpfen.

oder muß ich ein script_origin erstellen dort den trigger ranhängen und er bewegt sich dann mit oder so. ich seh das ja nicht nach dem compile wie das wirkt entweder gibts einen fehler oder nicht.

ich würde jetzt in meinem script oben nach main das rein tun:

Zitat:


hurt_trigger = getent("trigger_hurt","targetname");
hurt_trigger enablelinkto();


und wenn die platte1 runter geht das rein tun nur leider versteh ich das nicht!

Zitat:


hurt_trigger linkto(platemodel1);


der trigger_hurt hat den targetname"trigger_hurt" und ist damit verlinkt per script an die platte1. soweit so gut

aber wo ist der brush mit dem trigger in der map?

ich weiß ich hab viele fragen! aber hier ist noch eine zum befehl "hintstring" im taste N menu. was muß da eingegeben werden wenn ich zum benutzen die benutzentaste angezeigt haben will. man kann da ja nicht einfach F reinschreiben weil nicht jeder F als benutzentaste hat. viele spielen ja auch A S D F oder E S D F statt W A S D?
bangingbernie
Key: hintstring
Value: Press [Use] to activate the "was auch immer"!

Wichtig ist halt [Use].
Animus
@bangingbernie

danke für den hintstring!
OLD MAN WITH GUN
Du kannst beim Hintstring übrigens auch die Farbcodes verwenden (die man z.B. auch im Ingamechat verwendet).

Also z.B.
hintring: Press [^3[Use]^7] to activate whatever

Würde dann z.B. so aussehen:
Press [F] to activate whatever
Animus
@OLD MAN WITH GUN

aha das is ja mal was gutes thx
steinacker

Zitat:

aber wo ist der brush mit dem trigger in der map?


der trigger sind die beiden großen brushes vor und hinter der tür

wenn du möchtest, dass der player die use-taste verwenden soll, dann musst du einen trigger_use_touch verwenden
und da kannst du auch den hintstring als hinweis verwenden - finde ich aber nervig im game

hier mal als beispiel


und wenn du mehrere solcher türen einbauen willst, brauchst du für jede türe ein eigenes script und eigene targetnamen

du kannst entweder alles in eine datei reinpacken oder für jede türe eine eigene datei _door1.gsc, _door2.gsc
und auch andere targetnamen verwenden
und du musst auch drauf achten, ob deine türe in richtung x oder y platziert ist, je nachdem musst du dann movex oder movey verwenden, movez bleibt immer gleich

Edit:
hier gabs mal noch ein beitrag von OMWG zum thema hintstring:
interaktionsmeldungen