CrazyLemon
Hallo Liebe Comunity,
Ich hab für meine neue map versucht eine Platform zu bauen die sich im Kreis bewegt und dies die ganze Zeit tut und nicht aufhört, ohne einen trigger zu drücken. Ich hab das Forum und Google durchsucht und jedes script ausprobiert, keins funktioniert.
Könnte mir vielleicht jemand helfen und ein funktionierendes Script posten?
Danke im Vorraus.
serthy
wenn syntax Fehler kommen, bitte melden
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:
|
/*========================================
Rotierende Dinge
ersetze rotateRoll durch:
rotateYaw oder rotatePitch
dadurch ändern sich die Drehachsen
speed:
zeit in der sich die Scheibe einmal um sich selbst dreht
-die erste Funktion ist für eine einzelne Scheibe
-key:targetname value:rotor
-die zweite für viele scheiben mit gleichem targetname
-key:targetname value:rotor
-alle Scheiben drehen sich gleich schnell und in gleicher Richtung
-die Wartezeit von speed - 0.1 nicht ändern oder in waittill( "rotatedone" ) ändern, sonst ruckelt es
du kannst auch eine neue Funktion nehmen: rotateTo( angle , time )
(angle ist dabei ein Vektor der so aussieht: (x,y,z) (Bsp: "rotor rotateTo( ( 360 , 0 , 180 ), 3 );"))
=======================================*/
/*** Funktion 1 ***/
_rotor()
{
speed = 1;
rotor = getent( "rotor" , "targetname" );
while( isdefined( rotor ) )
{
rotor rotateRoll( 360 , speed );
wait speed - 0.1;
}
}
/*** Funktion 2 ***/
_rotor_array()
{
speed = 1;
rotor = getentarray( "rotor" , "targetname" )
for( i = 0 ; i < rotor.size ; i++ )
{
if( isDefined( rotor[i] ) )
rotor[i] thread _rotate( speed );
}
}
_rotate( speed )
{
if( !isDefined( speed ) )
speed = 1;
while( isdefined( self ) )
{
self rotateRoll( 360 , speed );
wait speed - 0.1;
}
}
|
|
CrazyLemon
Also bei dem oberen kommt Syntax Error, er will erst die erste { wegmachen und dann das speed = 1
Bei der unteren hab ich keine Fehlermeldung jedoch pasiert einfach gar nichts. Muss ich das wie ne normale Tür auch mit dem Orig tool machen und dann auch script_brushmodel draus machen. Und wie muss ich die Funktionen bei der gesc eintragen? Also das er weis das er das ausführen muss.
MfG CrazyLemon
CrazyLemon
Danke, das funktioniert einwandfrei.
Kann ich das auch so verändern das sich das nur um 45° dreht und dann hin un der, wobei ich dann ja im radiant was verändern muss. Man muss sich das so vorstellen das an einer Wand ein Pendel(?!) wie bei einer alten standuhr ist und dieses sich die ganze zeit hin und her bewegt, wie macht man das dann im script bzw. radiant?
MfG Crazy
serthy
dazu brauchst du im radiant nichts ändern
im script nur das ändern:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
while(1)
{
rotor rotateyaw(45,1);
rotor waittill("rotatedone");
rotor rotateyaw(-45,1);
rotor waittill("rotatedone");
}
|
|
CrazyLemon
aber ich meine wenn ich das im radiant so lasse, dann bewegt sich das ding von der ausgangsposition aus 45° und dann wieder zur ausgansposition, ich will ja das es so zusagen zu der einen 25° und dann auf die andere 25° sprich es müsste anfangen sich um 25° zu drehen und ab dann, immer um 50°
du verstehst wie ich das meine?
serthy
dann so:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
rotor rotateYaw( 25 , 0.5 );
while(1)
{
rotor rotateyaw(-45,1);
rotor waittill("rotatedone");
rotor rotateyaw(45,1);
rotor waittill("rotatedone");
} |
|
CrazyLemon
Und wo muss ich das in deinem script ändern?
serthy
du brauchst nur die teile einfügen die du haben willst
r.b. rotateyaw(25,1) dreht das ding um einmalig 25 grad un einer sekunde
dadrunter ist eine while-schleife
was dadrinne steht wird unendlich lange wiederholt
also es bedeutet:
rotateyaw(25,1) >> dreht das pendel zu einer ausgangsposition
while(1){>>> wird immer wieder holt
rotateyaw(-50,2) dreht das pendel zurück
waittill(rotatedone) >>>>wartet bis das pendel sich nichtmehr bewegt
rotateyaw(50,2) >>> dreht das pendel wieder zurück
nachdem es sich wieder zurückgedreht hat fängt es on vorne an (in der while-schleife)
CrazyLemon
Ein Ausschnitt aus deinem Script :
_rotate( speed )
{
if( !isDefined( speed ) )
speed = 1;
while( isdefined( self ) )
{
self rotateRoll( 360 , speed );
wait speed - 0.1;
}
}
da muss ich das ja ändern, und das mit dem while steht ja was vn ist defniert, und das mit self rotateroll ist ja das mit demsich drehen, da versteh ich nicht wie ich das was wo einsetze, könntest du einmal posten wie das script dann fertig aussieht? Danke.
CrazyLemon
Also ich hab jetzt mal alles genaso gemacht wie du, es geht nicht >.< hab es mal hochgeladen
http://www.fileuploadx.de/723345
Also das ist halt ne zombie map, und ich hab ein Teil gemacht wie banginbernie erklärt hat, in dem roten raum an der wand sind die gelben pendel die ich meine die nicht funktionieren. Vielleicht findest du den Fehler.
Im grauen Raum sind verschieden blöcke die sich hoch und runter bewegen sollen, halt auch dauerhaft, was müsste ich dafür im script verändern?
Danke für deine hilfe.
MfG Crazy
serthy
http://www.fileuploadx.de/354759
die funhouse_1 hab ich nur berichtigt
die funhouse_2 hab ich so gemacht, dass es gut aussieht
also dein fehler war du hast die pendel alle nacheinander aufgerufen und davor noch die tür gehabt
es war so bei dir:
door_rotate();
pendel();
pendel2();
pendel3();
.
.
.
das bedeutet das du erst die tür aufrufst und die dann abgearbeitet wird, wenn die fertig ist dann erst pendel(), wenn das fertig ist pendel2() usw.
da aber in der tür und in jedem pendel eine while-schleife drin ist, die unendlich lange geht, kannst du auch genausolange drauf warten bis sich die dinger bewegen =)
also vor solchen dingen die GLEICHZEITIG ablaufen sollen immer ein >thread< davor, dann wird nicht darauf gewartet bis eine funktion fertig ist
thread door_rotate();
thread pendel();
thread pendel2();
thread pendel3();
.
.
.
dann habe ich in der funhouse_2 die winkel geändert (auslenkung) sonst rutscht man runter und ich habe jedem pendel eine unterschiedliche zeit zugewiesen, sonst schwingen die im takt und du kommst nie auf das nächste pendel
dann muss man bei pened 3 und 4 nch von Pitch in Roll umwandeln, sonst schwingen die nicht parallel zur wand, sondern in den raum rein und in die wand
zu den grauen blöcken:
was meinst du? ich hab nur den fahrstuhl gesehen, der wunderbar funktioniert
CrazyLemon
Erstmal ein RIESEN DANKESCHÖN dafür das du mir das gemacht/ gezeigt hast, es funktioniert alles.
Was ich mit dem grauen meinte ist, wenn du im radiant guckst, es sind 6 verschieden blöcke
die bis zum boden gehen (nachdem du mit dem fahrstuhl hochgefahren bist)
ich hatte es so vor gehabt das jeder zweite gleichzeitigt hoch und runter geht und das der erste und letzte nicht hoch und runter gehen da man da campen soll, also der erste muss vom boden nach oben, der zweite von oben zum boden, der drittwe wieder vom boden nach oben, undso weiter. du verstehst? da weis ich noch keine löseung für, vielleicht weist du ja was
MfG Crazy
serthy
warte ich schau mal nach bin grad verwirrt von deiner erklärung
und muss mal essen schnappen, aber die blöcke sollten auch kein problem sein