jtms
Hallo Leute,
ich möchte in meine map eine Lampe einbauen, die einen Wackelkontackt hat und deshalb immer vor sich hin blinkt.
Dazu hab ich folgendes Skript geschrieben:
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:
|
main()
{
dmglamp = getentarray ("dmglamp", "targetname");
if(isdefined(dmglamp))
{
for (i = 0; i < dmglamp.size; i++)
{
dmglamp[i] thread think();
}
}
}
think()
{
for (;;)
{
if(randomint(3) > 1)
{
self moveZ(-1000, 0.05);
}
else
{
self moveZ(174, 0.05);
}
wait(50);
}
}
|
|
Da ich noch ein skripting-Anfänger bin gehts nicht
Kann mir einer sagen wo der Fehler liegt?
mfg
JTMS
serthy
hey
versuch mal das ganze mit show/hide und zum testen immer schöööön viele iPrintLn() einbauen, da sieht man dann wo der fehler liegt
while( true )
{
wait( randomFloat( 1.0 ) );
model_an show();
model_aus hide();
wait( randomFloat( 2.0 ) );
model_an hide();
model_aus show();
}
bei dir ist momentan der fehler das sich das model einmal um -1000 nach unten bewegt, aber nur um 174 wieder nach oben, es wird auch nie wieder die ausgangsposition erreicht
bei sowas immer am besten die position merken und dann einfach wieder setzen:
self.old_origin = self.origin; << position speichern
self.origin -= ( 0 , 0 , 10000 ); << model um 10000 nach unten
self.origin = self.old_origin; << und wieder zurück
um das ganze noch schöner zu machen, denn im moment ist es ja nur ein model, musst du aber noch ein effect einfügen, so wie hier in etwa:
http://www.youtube.com/watch?v=OFp8rj58BmA
einfach weiterfragen bei problemen
jtms
Danke schonmal, auch für das vid, so in etwa hab ichs mir vorgestellt
Die Fragen:
was meinst du mit model? meinst du damit das light oder was?
Den satz blick ich nicht: "denn im moment ist es ja nur ein model, musst du aber noch ein effect einfügen"
sonst ist klar, danke schön
EDIT: Ich hab das mal mit deiner origin -= ... Lösung versucht, weil ich das andere nicht blick. Hab es so gemacht:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
|
wait(randomFloat(1.0));
self.origin -= (0, 0, 10000);
wait(randomFloat(2.0));
self.origin = self.old_origin;
|
|
Tut sich aber auch nichts.
P.S.: ich dachte, dass moveZ AUF -1000 verschiebt und nicht UM -1000
serthy
>> moveX moveY und moveZ bewegen dein objekt in eine richtung um eine bestimmte strecke
>>moveTo bewegt dein objekt zu einem bestimmten punkt
mit model meinte ich die dmglamp = getentarray ("dmglamp", "targetname"); - entities
was ist es denn dann, wenn keine models?
wie gesagt, baue überall da wo du nicht weißt was ganz genau passiert, iPrintLn()'s ein!
zb kann es hier sein das es keine "dmglamp" finden kann und es deshalb nicht funktioniert... oder oder oder..
EDIT:
wenn es so aussehen soll wie in dem video, brauchst du garnix direkt in der map machen
einfach einen effekt nehmen oder selber erstellen und dann einfach an der stelle abspielen lassen (weiß nicht ob es bei cod4 schon auto looping effekte gibt)
jtms
>> moveX moveY und moveZ bewegen dein objekt in eine richtung um eine bestimmte strecke
>>moveTo bewegt dein objekt zu einem bestimmten punkt
Ok, danke
Also als models würde ich jetzt xModels bezeichnen, allgemeiner (also alles was du mit getentarray findest) als entity. Meine meinung, da das sonst verwirrt.
Zu dem mit dem FX-Editor - weißt du, wie man sowas macht?
serthy
bei dem fx editor kann man keine tutorials machen, es ist alles learning by doing
einfach standart effekte öffnen, unter nem anderen namen speichern und dann rumspielen, die eine hälfte ist selbsterklärend (color, velocity, rotation, lifetime etc) und der rest musst du einfach rausfinden was am besten passt
bangingbernie
Zeroy hat ein schönes Tutorial dazu veröffentlicht:
Ein neues Skript mit dem Namen _lights.gsc in /raw/maps/mp/ erstellen.
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:
|
main()
{
precacheModel("com_studiolight_hanging_off"); // precache selected model
thread switch_start();
}
switch_start()
{
spotlight = getentarray( "switch", "targetname" ); // get triggers
if ( isdefined(spotlight) )
for ( i = 0 ; i < spotlight.size ; i++ )
spotlight[i] thread lights_off();
}
lights_off()
{
while (1)
{
speed = .01; // speed for moving on Z axis
height = -36; // high in units to move on Z axis
spotlight_hide = getent("spotlight_hide", "targetname"); // get script_brushmodel(s) in level
spotlight_model = getent( "spotlight_model", "targetname" ); // get xmodel _on
self waittill("trigger");
spotlight_hide movez (height, speed); // Move script_brushmodel(s) on Z axis
spotlight_model setmodel( "com_studiolight_hanging_off" ); // swap xmodel by _off
self playsound("light_switch_off");
spotlight_hide waittill ("movedone");
self waittill("trigger");
spotlight_hide movez (height - (height * 2), speed);
spotlight_model setmodel( "com_studiolight_hanging_on" ); // switch back to _on Xmodel
self playsound("light_switch_on");
spotlight_hide waittill ("movedone");
}
} |
|
In Deiner Map GSC Datei (/raw/maps/mp/mp_yourmap.gsc) dies nach maps\mp\_load::main(); hinzufügen.
Das _off model in Deine Zone Datei einfügen, in diesem Beispiel:
xmodel,com_studiolight_hanging_off
Im Radiant (ohne das com_studiolight_hanging_on Modell):
Der Trigger ist ein trigger_usetouch und hat den targetname = switch ;
The ShadowCaster script_brushmodel is "fest" und hat den targetname = spotlight_hide ;
Der Trigger ist mit dem ShawdowCaster script_brushmodel verbunden;
Das spotlight model (nicht im Bild) ist ein script_model und hat den targetname = spotlight_model ;
Der Sound im Script ist kein Stock-Sound - Du kannst "metal_click" benutzen (stock).
Das Skript funktioniert nicht, wenn die Shadow option in den GFX settings des Spiels abgeschaltet ist!
_____________________________________________________________
Für den Flacker-Effekt musst Du dann nur im Script
self waittill("trigger");
durch
wait(randomfloat(2));
ersetzen.
Die "2" sind die Sekunden - dass kannst Du ja dann noch verändern.
Quelle: http://wiki.modsrepository.com/index.php...s_Primary_Light
jtms
danke euch beiden
den fx-editor werd ich mir mal anschauen, jetzt nehm ich erstmal das skript von bernie (der fx-editor ist doch saukompliziert, oder?)
zwei fragen an bernie:
height - (height * 2)
kann ich nicht stattdessen einfach -height schreiben? ist ja das selbe
wenn du den caulk shaodw block über dem light hast, hast du dann nicht immer einen eckigen schatten an der decke??
Nightwing
Original von jtms
height - (height * 2)
kann ich nicht stattdessen einfach -height schreiben? ist ja das selbe
Macht keinen Sinn und geht auch nicht.
Das Script funktioniert ja so schon, wie es soll.
ToM