|
|
Mehrere Script Fragen/Hilfegesuche |
|
Mehrere Script Fragen/Hilfegesuche |
|
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!
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!
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.
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.
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.
|
|
|
|
|
|
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!
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
|
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!
//Edit: Hab dich geaddet..^^
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DjTranceFire: 09.04.2013 17:27.
|
|
|
|
|
serthy
Codemeister
Dabei seit: 29.07.2010
Beiträge: 628
|
|
Ich hab dich glaube sogar schon drin ;D
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
|
/*
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.
|
|
|
|
|
|
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!
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!
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!
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!
@Serthy: Wann bist du denn immer online, nicht das man sich immer verpasst..
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|