|
 |
Effekte bewegen (erledigt)      |
BadMan
Turnbeutelvergesser
 
Dabei seit: 31.01.2008
Beiträge: 278

|
|
| Effekte bewegen (erledigt) |
 |
So hab auch ma wieder ne frage und zwar hab ich einen Effekt mit einem „script_origin“ „targetname– fx1“ und folgendem Skript eingebunden
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:
|
movelight1(){
lamp = getent("lampmove2","targetname");
trig = getent ("lightswitch1", "targetname");
glow = getent ("fx1","targetname");
level._effect[ "beacon_glow" ] = loadfx( "misc/aircraft_light_wingtip_green" );
maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));
while(1){
trig waittill("trigger");
lamp movez(20,2);
glow movez(20,2);
lamp rotateyaw(270,2,0,0);
glow rotateyaw(270,2,0,0);
lamp waittill("movedone");
trig waittill("trigger");
lamp movez(-20,2);
glow movez(-20,2);
lamp rotateyaw(-270,2,0,0);
glow rotateyaw(-270,2,0,0);
lamp waittill("movedone");
}
}
|
|
Klappt auch soweit alles nur bewegt sich der script origin nicht hat da jemand ne Lösung wie ich den script origin alleine bewegen oder wie hier irgendwie an die Lampe binden kann oder is das gar nicht möglich
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von BadMan: 29.08.2008 01:17.
|
|
|
|
|
BadMan
Turnbeutelvergesser
 
Dabei seit: 31.01.2008
Beiträge: 278

|
|
Das hab ich auch schon mal probiert hab’s aber nochma getestet was mich wundert is das bei oben dem Skript keine Fehlermeldung kommt allerdings bewegt sich trotzdem nur die Lampe
Wenn ich ein anderes Skript nehme
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:
|
fan_spin(){
rotate_obj = getentarray("lampmove2","targetname");
glow = getent("fx1","targetname");
level._effect[ "beacon_glow" ] = loadfx( "misc/aircraft_light_wingtip_green" );
maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));
if(isdefined(rotate_obj)){
for(i=0;i<rotate_obj.size;i++){
rotate_obj[i] thread ra_rotate();
}
}
glow linkto(rotate_obj);
}
ra_rotate(){
if (!isdefined(self.speed) || self.speed == 0)
self.speed = 5;
if (!isdefined(self.script_noteworthy))
self.script_noteworthy = "y";
while(1){
if (self.script_noteworthy == "y")
self rotateYaw(360,self.speed);
else if (self.script_noteworthy == "x")
self rotateRoll(360,self.speed);
else if (self.script_noteworthy == "z")
self rotatePitch(360,self.speed);
wait ((self.speed)-0.1);
}
} |
|
Bekomme ich die Fehlermeldung
„Not an entity“ in der Zeile „glow linkto (rotate_obj);“
|
|
|
|
|
|
|
Das script_origin wird sich schon bewegen, nur der Effekt nicht, da Effekte nicht bewegt werden können. Der wird da abgespielt, wo sich das script_origin befand, als der Effekt aufgerufen wurde (egal, wo sich das script_origin danach hinbewegt).
Um eine Bewegung eines Effektes zu simulieren bedarf es da schon ein wenig mehr.
Zuerst sollte man den Effekt so abspielen, das er nicht eigenständig als Schleife abgespielt wird (die muss man in diesem Fall scripten).
Dann nimmt man statt eines script_origin das xmodel tag_origin (ist ein unscheinbares kleines Dreieck, welches einen TAG besitzt, an dem man einen Effekt per playfxontag abspielen lassen kann).
Müsste dann in etwa so aussehen:
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:
|
movelight1()
{
lamp = getent("lampmove2","targetname");
trig = getent ("lightswitch1", "targetname");
glow = getent ("fx1","targetname"); //das wäre dann das xmodel tag_origin als script_model
//muss gegen einen Effekt getauscht werden, der nur einmal abgespielt wird und nicht selber einen Loop hat)
level._effect[ "beacon_glow" ] = loadfx( "misc/aircraft_light_wingtip_green" );
glow thread let_it_glow();
while(1)
{
trig waittill("trigger");
lamp movez(20,2);
glow movez(20,2);
lamp rotateyaw(270,2,0,0);
glow rotateyaw(270,2,0,0);
lamp waittill("movedone");
trig waittill("trigger");
lamp movez(-20,2);
glow movez(-20,2);
lamp rotateyaw(-270,2,0,0);
glow rotateyaw(-270,2,0,0);
lamp waittill("movedone");
}
}
let_it_glow()
{
while(1)
{
playfxontag (level._effect["beacon_glow"], self , "tag_origin");
wait 0.5; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
} |
|
__________________
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 22.07.2008 16:27.
|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
zum drehen kannst du auch mal diese befehle versuchen
fan1 rotateRoll( 360, 5, 0, 0 );
fan2 rotateyaw( 360, 5, 0, 0 );
fan3 rotatePitch( 360, 5, 0, 0 );
das sind die drei ringe, die ich in der mp_voyager4 um die "spawnboxen" gemacht hab
rotateRoll = x-achse
rotateyaw = y-achse
rotatePitch = z-achse
bin mir da aber grad nich so sicher, mit den achsen
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
|
|
Link das tag_origin model an das Lampenmodel, dann sollte es eigentlich alle Bewegungen mitmachen. Und du sparst die die doppelten Befehle für move usw. (sollte eigentlich gehen)
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:
|
movelight1()
{
lamp = getent("lampmove2","targetname");
trig = getent ("lightswitch1", "targetname");
glow = getent ("fx1","targetname"); //das wäre dann das xmodel tag_origin als script_model
//muss gegen einen Effekt getauscht werden, der nur einmal abgespielt wird und nicht selber einen Loop hat)
level._effect[ "beacon_glow" ] = loadfx( "misc/aircraft_light_wingtip_green" );
glow thread let_it_glow();
glow linkto(lamp);
while(1)
{
trig waittill("trigger");
lamp movez(20,2);
lamp rotateyaw(270,2,0,0);
lamp waittill("movedone");
trig waittill("trigger");
lamp movez(-20,2);
lamp rotateyaw(-270,2,0,0);
lamp waittill("movedone");
}
}
let_it_glow()
{
while(1)
{
playfxontag (level._effect["beacon_glow"], self , "tag_origin");
wait 0.5; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
} |
|
__________________
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 22.07.2008 22:00.
|
|
|
|
|
|
|
Die Skriptseite findest Du HIER.
__________________

|
|
|
|
|
|
|
oder hier: Klick
__________________

|
|
|
|
|
BadMan
Turnbeutelvergesser
 
Dabei seit: 31.01.2008
Beiträge: 278

|
|
So neues problem hab ma nen aufzug gemacht mit 2 lichtern rot und grün nach oben leuchtet grün nach unten rot klapt auch ohne fehler
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:
|
main()
{
level._effect[ "fx_on" ] = loadfx( "test_fx/auf_on" );
level._effect[ "fx_off" ] = loadfx( "test_fx/auf_off" );
level.elevatorDown = true;
level.elevatorMoving = false;
thread elevator_start();
}
elevator_start()
{
elevator = getentarray ("01trig","targetname");
if ( isdefined(elevator) )
for (i = 0; i < elevator.size; i++)
elevator[i] thread elevator_think();
}
elevator_think()
{
while (1)
{
self waittill ("trigger");
if (!level.elevatorMoving)
thread elevator_move();
}
}
elevator_move()
{
elevatormodel = getent ("01", "targetname");
fx1 = getent ("01fx01","targetname");
fx2 = getent ("01fx02","targetname");
level.elevatorMoving = true;
speed = 1.1;
height =128;
fx1 linkto(elevatormodel);
fx2 linkto(elevatormodel);
if (level.elevatorDown) {
//elevatormodel playsound ("elevator");
fx1 thread fx1();
elevatormodel movez (height, speed);
elevatormodel waittill ("movedone");
level.elevatorDown = false;
}
else
{
//elevatormodel playsound ("elevator");
fx2 thread fx2();
elevatormodel movez (height - (height * 2), speed);
elevatormodel waittill ("movedone");
level.elevatorDown = true;
}
level.elevatorMoving = false;
}
fx1()
{
while(1)
{
if (!level.elevatorMoving)
return;
playfxontag (level._effect["fx_on"], self , "tag_origin");
wait 0.1; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
}
fx2()
{
while(1)
{
if (!level.elevatorMoving)
return;
playfxontag (level._effect["fx_off"], self , "tag_origin");
wait 0.1; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
} |
|
nur wollte ich eigentlich das wenn der aufzug steht grün leuchtet und bei der fahrt rot erstma zumindest
also meine frage gibt es da ne möglichkeit ohne das ganze skript zu endern problem is halt fx1 linkto aufzug da man sonst nen dreieck in der luft hat
|
|
|
|
|
BadMan
Turnbeutelvergesser
 
Dabei seit: 31.01.2008
Beiträge: 278

|
|
so habe das problem gelöst
main()
{
fx2 = getent ("01fx02","targetname");
level._effect[ "fx_on" ] = loadfx( "test_fx/auf_off" );
level._effect[ "fx_off" ] = loadfx( "test_fx/auf_on" );
level.elevatorDown = true;
level.elevatorstand = true;
level.elevatorMoving = false;
thread elevator_start();
fx2 thread fx2();
}
elevator_start()
{
elevator = getentarray ("01trig","targetname");
if ( isdefined(elevator) )
for (i = 0; i < elevator.size; i++)
elevator[i] thread elevator_think();
}
elevator_think()
{
elevatormodel = getent ("01", "targetname");
while (1)
{
self waittill ("trigger");
if (!level.elevatorMoving)
thread elevator_move();
}
}
elevator_move()
{
elevatormodel = getent ("01", "targetname");
fx1 = getent ("01fx01","targetname");
fx2 = getent ("01fx02","targetname");
level.elevatorMoving = true;
speed = 5;
height =360;
fx1 linkto(elevatormodel);
fx2 linkto(elevatormodel);
if (level.elevatorDown) {
//elevatormodel playsound ("elevator");
level.elevatorstand = false;
fx1 thread fx1();
elevatormodel movez (height, speed);
elevatormodel waittill ("movedone");
level.elevatorDown = false;
level.elevatorstand = true;
fx2 thread fx2();
}
else
{
//elevatormodel playsound ("elevator");
level.elevatorstand = false;
fx1 thread fx1();
elevatormodel movez (height - (height * 2), speed);
elevatormodel waittill ("movedone");
level.elevatorDown = true;
level.elevatorstand = true;
fx2 thread fx2();
}
level.elevatorMoving = false;
}
fx1()
{
while(1)
{
if (!level.elevatorMoving)
return;
playfxontag (level._effect["fx_on"], self , "tag_origin");
wait 0.122; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
}
fx2()
{
while(1)
{
if (!level.elevatorstand)
return;
playfxontag (level._effect["fx_off"], self , "tag_origin");
wait 0.122; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
}
findet ihr übrigens auch in der testmap von hier
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|