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 » Mehrere Script Fragen/Hilfegesuche » 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 Mehrere Script Fragen/Hilfegesuche
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
DjTranceFire
Teetrinker


Dabei seit: 24.02.2012
Beiträge: 36


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

Hey Leute..
Nach einer etwas längeren Pause, habe ich mich entschlossen mich wieder voll und ganz dem mapping hinzugeben.
Bis jetzt läuft alles prima, hätte gedacht das ich etwas mehr eingerostet wäre, scheint aber alles gut! smile
Ein paar kleinere Scripts habe ich bereits verbaut und es läuft auch alles, ein paar größere Scripts fehlen jedoch noch.
An dieser Stelle hoffe ich, das mir hier jemand helfen kann. Im scripten war ich leider nie gut.
Was ich brauche, sind mehrere Scripts, diese werde ich mal alle in einen Beitrag werfen, um das Forum nicht zu sprengen.
Falls jemand nur bei einzelnen Scripts weiterhelfen kann, ist das natürlich nicht schlimm, ich nehme was ich bekomme! smile


Script 1: (Supermarkttür) (DONE!)
Das erste Script dürfte relativ leicht sein, ich bin mir auch relativ sicher, bereits Tutorials dazu gesehen zu haben.
Leider scheine ich zumindest was die Foren-/Googlesuche angeht etwas eingerostet zu sein, es Tutorial dazu ist jedenfalls nicht aufzutreiben.
Die Tür selbst soll aus 2 Teilen bestehen, welche sich mit einem Trigger (Use-Touch) gleichzeitig öffnen sollen.
Ein Teil nach links, eins nach rechts. Das ganze dann noch mit einem Sound versehen und fertig. smile

Script 2: (Erweitertes Aufzug-Script)
Den normalen Aufzug, für welchen man hier genügend Anleitungen findet, habe ich problemlos einbauen können,
dieser passt aber leider nicht ganz so gut in meine Map und müsste etwas erweitert werden.
Was ich brauche ist ein Aufzug der zusätzlich Türen steuert. Unten und oben sind es jeweils 2stk.
Der Aufzug selbst hat zusätzlich 4stk. Gedacht ist der Aufzug mit mit 4 Türen, zwei nach rechts, zwei nach links.
Oben und unten an den Ausgängen natürlich auch jeweils 2 Türen, damit man nicht in den Aufzugschacht sehen kann.
Hier mal 2 Screenshots wie das ganze aussehen soll:
Aufzugtür zu:
http://s1.directupload.net/images/130409/gfzib7v5.jpg
Aufzugtür auf:
http://s7.directupload.net/images/130409/rap8m9jo.png
3 Trigger um den Aufzug zu steuern, (Oben und unten um den Aufzug zu rufen und im Aufzug um ihn zum fahren zu bringen.
Zusätzlich würde ich gerne den Aufzug selbst mit einem Sound belegen, was aber kein Problem sein sollte,
der momentane Aufzug läuft ja auch mit Sound. smile
An dieser Stelle frage ich mich, ob es möglich ist, Models mit zu bewegen, oder ob ich eigene Knöpfe bauen muss.
Bei meinem Aufzug konnte ich den Button (Model) leider nicht zum Brushmodel machen, damit also auch nicht bewegen.

Script 3: (Schlüsselsystem)
Auf einer CoD2 Map, habe ich vor kurzem eine Art Schlüsselsystem gesehen. Die Funktion ist recht simple,
das Script für mich allerdings unmöglich. An einer vordefinierten Stelle auf der Map, ist ein Object welches man aufheben kann.
Das Object verschwindet nach dem Aufheben für 10-15sec., taucht dann wieder auf, ist aber NICHT erneut aufhebbar.
Man bekommt die Meldung man besitzt den Schlüssel bereits. Hat man nun den "Schlüssel", kann man diesen an anderer Stelle auf der Map nutzen.
Bei diesem Script verzweifel ich aber schon beim Gedanken, da ich nicht weiß wie ich "Schlüssel" sowie "Schlüsselloch" auf der Map erstelle,
das Schlüsselloch erst benutzbar mache wenn man den Schlüssel besitzt (vorher gibt es eine Meldung das man den Schlüssel benötigt)
und vorallem die gesamte Abfrage erstelle. Falls es für das Script irgendwie von Wichtigkeit sein sollte, ich brauche 4 verschiedene Schlüssel,
sowie 4 dazugehörige Schlüssellöcher.

Script 4: (Bonusitems)
Ebenfalls auf einer CoD2 Map, habe ich eine Art Bonussystem gesehen. Auf der Map verteilt lagen 8 Bonusitems, welche man eisammeln konnte.
Hatte man 4stk. konnte man eine Tür öffnen. Hatte man alle 8stk., konnte man damit beide Türen öffnen.
Ein Item konnte man natürlich jeweils nur einmal einsetzen, versucht man es erneut, gibt es eine Meldung.


Ich weiß, das ganze ist natürlich ein großer Schlag, trotzdem hoffe ich sehr, das mir hier jemand bei meinem Problemen helfen kann.
Wie ich die meisten Scripts benutze weiß ich, Script 1+2 sollte ich problemlos selber einbauen können.
Bei Script 3+4 bräuchte ich jedoch eine kleine Anleitung wie das ganze umzusetzen ist.
Ich hoffe das irgendjemand ein wenig Lust und vorallem Zeit hat, um mir zu helfen,
an dieser Stelle aber auf jeden Fall schonmal ein riesen Danke im vorraus!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DjTranceFire: 09.04.2013 14:09.

DjTranceFire ist offline Beiträge von DjTranceFire suchen Nehmen Sie DjTranceFire in Ihre Freundesliste auf
serthy
Codemeister


images/avatars/avatar-104.jpg


Dabei seit: 29.07.2010
Beiträge: 628


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

Kein problem, können wir gerne zusammen machen, schreib mich mal bei xf an (xf:serthy)

ps: und klaro, wenn alles fertig ist, stell ich das ergebnis hier rein, macht sich nur bedingt gut sowas direkt übers forum zu machen =)
serthy ist offline E-Mail an serthy senden Beiträge von serthy suchen Nehmen Sie serthy in Ihre Freundesliste auf
DjTranceFire
Teetrinker


Dabei seit: 24.02.2012
Beiträge: 36


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, das Problem mit der Supermarkttür (Script 1) habe ich hinbekommen.
Habe mit ein wenig hin und her basteln, kopieren usw. ein existierendes Türscript umgebaut.
Mag zwar sicherlich nicht das beste sein, klappt aber wunderbar! smile

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

	level.doorDown2 = true;
	level.doorMoving2 = false;

	level.doorDown3 = true;
	level.doorMoving3 = false;

	level.doorDown4 = true;
	level.doorMoving4 = false;

	thread door_start1();
	thread door_start2();
	thread door_start3();
	thread door_start4();
}

door_start1()
{
	door1 = getentarray ("doortrigger1","targetname");
	if ( isdefined(door1) )
	for (i = 0; i < door1.size; i++)
	door1[i] thread door_think1();
}

door_think1()
{
	while (1)
	{
		self waittill ("trigger");
		if (!level.doorMoving1)
		thread door_move1();
	}
}

door_move1()
{
	doormodel1 = getent ("door1", "targetname");
	level.doorMoving1 = true;
	speed = 1;
	height =-57;
	if (level.doorDown1) 
	{
		// doormodel1 playsound ("door");
		
		doormodel1 movey (height, speed);
		doormodel1 waittill ("movedone");
		level.doorDown1 = false;
	}
	else
	{
		// doormodel1 playsound ("door");
		
		doormodel1 movey (height - (height * 2), speed);
		doormodel1 waittill ("movedone");
		level.doorDown1 = true;
	}
	level.doorMoving1 = false;
}
///////////////////////////////////////////////////////////////////
door_start2()
{
	door2 = getentarray ("doortrigger1","targetname");
	if ( isdefined(door2) )
	for (i = 0; i < door2.size; i++)
	door2[i] thread door_think2();
}

door_think2()
{
	while (1)
	{
		self waittill ("trigger");
		if (!level.doorMoving2)
		thread door_move2();
	}
}

door_move2()
{
	doormodel2 = getent ("door2", "targetname");
	level.doorMoving2 = true;
	speed = 1;
	height =57;
	if (level.doorDown2) 
	{
		// doormodel2 playsound ("door");
		
		doormodel2 movey (height, speed);
		doormodel2 waittill ("movedone");
		level.doorDown2 = false;
	}
	else
	{
		// doormodel2 playsound ("door");
		
		doormodel2 movey (height - (height * 2), speed);
		doormodel2 waittill ("movedone");
		level.doorDown2 = true;
	}
	level.doorMoving2 = false;
}
///////////////////////////////////////////////////////////////////
door_start3()
{
	door3 = getentarray ("doortrigger2","targetname");
	if ( isdefined(door3) )
	for (i = 0; i < door3.size; i++)
	door3[i] thread door_think3();
}

door_think3()
{
	while (1)
	{
		self waittill ("trigger");
		if (!level.doorMoving3)
		thread door_move3();
	}
}

door_move3()
{
	doormodel3 = getent ("door3", "targetname");
	level.doorMoving3 = true;
	speed = 1;
	height =-57;
	if (level.doorDown3) 
	{
		// doormodel3 playsound ("door");
		
		doormodel3 movey (height, speed);
		doormodel3 waittill ("movedone");
		level.doorDown3 = false;
	}
	else
	{
		// doormodel3 playsound ("door");
		
		doormodel3 movey (height - (height * 2), speed);
		doormodel3 waittill ("movedone");
		level.doorDown3 = true;
	}
	level.doorMoving3 = false;
}
///////////////////////////////////////////////////////////////////
door_start4()
{
	door4 = getentarray ("doortrigger2","targetname");
	if ( isdefined(door4) )
	for (i = 0; i < door4.size; i++)
	door4[i] thread door_think4();
}

door_think4()
{
	while (1)
	{
		self waittill ("trigger");
		if (!level.doorMoving4)
		thread door_move4();
	}
}

door_move4()
{
	doormodel4 = getent ("door4", "targetname");
	level.doorMoving4 = true;
	speed = 1;
	height =57;
	if (level.doorDown4) 
	{
		// doormodel4 playsound ("door");
		
		doormodel4 movey (height, speed);
		doormodel4 waittill ("movedone");
		level.doorDown4 = false;
	}
	else
	{
		// doormodel4 playsound ("door");
		
		doormodel4 movey (height - (height * 2), speed);
		doormodel4 waittill ("movedone");
		level.doorDown4 = true;
	}
	level.doorMoving4 = false;
}



Das Script funktioniert jetzt für 2 Türen mit jeweils 2 Seiten, insgesamt also 4 Türen und 2 Trigger.
Das mit dem Aufzug sollte ich eigentlich auf diesem Wege auch hinbekommen, mal sehen! smile


//Edit: Hab dich geaddet..^^

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DjTranceFire: 09.04.2013 17:27.

DjTranceFire ist offline Beiträge von DjTranceFire suchen Nehmen Sie DjTranceFire in Ihre Freundesliste auf
serthy
Codemeister


images/avatars/avatar-104.jpg


Dabei seit: 29.07.2010
Beiträge: 628


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 hab dich glaube sogar schon drin ;D

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:
/*
	im radinat:

	trigger_use erstellen und ein targetname mit "door_1" geben
	dann soviele türen wie du willst erstellen (zB eine links, eine rechts)
	diese türen dann alle zu script_brushmodels oder zu script_models machen, je nachdem ob sie aus brushes oder aus xmodels bestehen
	dann deinen trigger anwählen, danach eine tür (reihenfolge beachten, und jede tür einzeln!) und W drücken, nun sollte eine 
	linie vom trigger zur tür zeigen
	das selbe mit den anderen türen machen
	auf diese weise wird dem trigger ein "target" von "auto01 irgendwas" zugeweisen, und die tür erhalten automatisch ein "targetname" mit
	"auto01 irgendwas", sodass wir später die türen dem trigger zuordnen können
	dann den trigger wieder anwählen und ein KVP (key-value-pair) mit "script_noteworthy" und "1.5;3.0" zuordnen
	die erste zahl 1.5 stellt hier dabei die zeit die die tür zum öffnen/schließen braucht dar, die zweite zahl, wie lange die tür offen bleiben soll
	dann setzt du beide türen so, wie sie in der map sein sollen wenn der trigger betätigt wird (zB geöffnet)
	dann wählst du jede tür einzeln an und gibts ihnen jeweils ein KVP von "script_target" und als value die aktuelle position der tür!
	auf diese position bewegt sich dann später die tür beim zB öffnen
	danach setzt du beide türen dahin wo sie sein sollen wenn der trigger nicht betätigt sein soll (zB geschlossen)

	das sollte es soweit gewesen sein, ich kommentier jz noch etwas mein script aus
*/
	
	
door_1_init() //das am start vom spiel aufrufen
{
	door_1_trigs = getEntArray( "door_1" , "targetname" );//alle trigger mit door_1 als targetname erfassen

	if( isDefined( door_1_trigs ) && door_1_trigs.size )
	{
		for( i = 0 ; i < door_1_trigs.size ; i++ )
		{
			door_1_trigs[i] thread door_1_think(); //durch jeden einzelnen trigger gehen und jeweils think()-funktion aufrufen lassen
		}
	}
}

door_1_think()
{
	//self ist hier der trigger!

	//falls keine türen mit W verbunden sind, ist hier schluss
	if( !isDefined( self.target ) )
		return iPrintLn( "door_1 at " + self.origin + " has no target defined!" );

	//self target wurde mit dem verbinden von tür und trigger automatisch erstellt und sollte "auto01 irgendwas" sein
	//muss aber nicht extra aufgerufen werden, einfach so wies hier unten steht =)
	self.doors = getEntArray( self.target , "targetname" ); //alle zum trigger gehörigen türen erfassen

	data = self.script_noteworthy; //falls du ein script_noteworthy mit den zeiten angegeben hast, werden diese hier erfasst

	moveTime = 1.5;
	openTime = 3.0;

	if( isDefined( data ) )//text bei jedem ';' splitten
		data = strTok( data , ";" );

	if( isDefined( data[0] ) ) //da es keine float() funktion gibt, hier ein kleiner workaround, sodass strings zu float konvertiert werden und weitergearbeitet werden kann
	{
		setCvar( "tmp" , data[0] );
		moveTime = getCvarFloat( "tmp" ) + 0.05;
	}

	if( isDefined( data[1] ) )
	{
		setCvar( "tmp" , data[1] );
		openTime = getCvarFloat( "tmp" ) + 0.05;
	}

	doors = [];

	//jetzt jede tür durchlaufen
	for( i = 0 ; i < self.doors.size ; i++ )
	{
		door = self.doors[i];

		//falls kein script_target (=zielposition) vorhanden ist, wird diese tür ignoriert!
		if( !isDefined( door.script_target ) )
		{
			iPrintLn( "door at " + door.origin + " has no script_target!" );

			continue;
		}

		//jetzt den einzelnen türen ihre start und zielposition merken lassen
		door.startPos = door.origin;
		door.goalPos = door.script_target;

		//tür scheint in ordnung zu sein, also merken
		doors[doors.size] = door;
	}

	//alle korrekten türen jetzt merken
	self.doors = doors;

	while( true )
	{
		self waittill( "trigger" , player ); //warten bis ein spieler den trigger aktiviert

		//jetzt jede tür ansprechen
		for( i = 0 ; i < self.doors.size ; i++ )
		{
			door = self.doors[i];

			//tür bewegt sich auf zielposition
			door moveTo( door.goalPos , moveTime , moveTime * 0.5 , moveTime * 0.5 );
		}

		//trigger wird hier deaktiviert, sodass anzeige kurz verschwindet, kannst du auch löschen wenn du magst
		self.origin -= ( 0 , 0 , 100000 );

		//warten, warten, warten.... jetzt gehts wieder zu ;-)
		wait( openTime );

		//jetzt wieder jede tür ansprechen
		for( i = 0 ; i < self.doors.size ; i++ )
		{
			door = self.doors[i];

			//tür wieder auf anfangsposition
			door moveTo( door.startPos , moveTime , moveTime * 0.5 , moveTime * 0.5 );
		}

		//trigger wieder aufg alte position
		self.origin += ( 0 , 0 , 100000 );
	}
}



hab dir mal was geschrieben, deins ist zwar nicht falsch, aber wenn du 20 türen erstellen willst, brauchst du 1000000 zeilen dafür, das wär mir zu viel aufwand xP
mit dem stück codeschnipsel von oben, kannst du x-türen auf einmal ansprechen, sie müssen nur so aufgesetzt sein wie beschrieben =)

habs nicht getestet, sollte aber so in etwa hinhauen
vll kannst dir ja was abscheune und es nach deinen wünschen anpassen

ich sehe das ist nich cod2, du müsstest setCvar()/getCvar() mit setDvar/getDvar() ersetzen ^^

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von serthy: 09.04.2013 17:33.

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


images/avatars/avatar-1617.jpg


Dabei seit: 15.01.2007
Beiträge: 4.857


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

Hier sind auch noch ein paar zusammengetragene Scripts: [SAMMLUNG] Diverse Scripts
Viel Spaß beim basteln.

ToM

__________________

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


Dabei seit: 24.02.2012
Beiträge: 36


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 Nightwing, den Link kenne ich..^^
Die Script in dem Beitrag helfen mir hier aber nur bedingt weiter, bei der Supermarkttür z.B.
Bei den anderen Scripts hilft mir da aber leider nichts, ich wüsste zumindest nicht wie! grosses Grinsen
Das Türscript habe ich inzwischen deutlich weiter verbreitet als es eigentlich gedacht war, ändern auf das Script von Serthy werde ich es hier also eher nicht mehr, zu viel Arbeit! grosses Grinsen
Auf den nächsten Maps werde ich es aber auf jeden Fall benutzen, da würde es das Leben dann wieder einfacher machen, danke dafür! smile
Wegen der anderen Scripts müssen wir dann mal in Ruhe bei XFire gucken, da gibts ja noch einige Abhängigkeiten..^^ Werde aber auf jeden Fall zusehen, das alles was gemacht wird hier landet.. Falls benötigt natürlich auch mit Anleitung! Zunge raus
@Serthy: Wann bist du denn immer online, nicht das man sich immer verpasst.. grosses Grinsen
DjTranceFire ist offline Beiträge von DjTranceFire suchen Nehmen Sie DjTranceFire 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 » Mehrere Script Fragen/Hilfegesuche

Impressum ||Datenschutzerklärung

Forensoftware: Wbb - WoltLab GmbH || zum Archiv