function
torch_fx();
function
flame_fade();
bmap flame_pcx = <flame.pcx>;
action
torch
{
my.invisible = on;
my.passable = on;
while (1)
{
effect (torch_fx, 1, my.x, normal);
wait (1);
}
}
function
torch_fx()
{
temp.x = random(1) - 2;
temp.y = random(1) - 2;
temp.z = random(1) + 3;
vec_rotate (temp, my.pan);
vec_normalize (temp, 20);
vec_add(my.vel_x,temp);
my.bmap = flame_pcx;
my.flare = on;
my.bright = on;
my.size = 30;
my.move = on;
if (key_b == 1) // press "B" for beam
{
my.beam = on;
}
else
{
my.beam = off;
}
my.function = flame_fade;
my.lifespan = 100;
}
function
flame_fade()
{
my.alpha -= 1.3 * time;
if (my.alpha < 0) {my.lifespan = 0;}
}
F:
Ich würde gern für jede Templatewaffe einen anderen Sound haben
- geht das?
A:
Öffnen Sie weapons.wdl und fügen Sie folgende Zeilen am Anfang
ein:
sound
weapon1_wav = <weapon1.wav>;
sound
weapon2_wav = <weapon2.wav>;
sound
weapon3_wav = <weapon3.wav>;
und ersetzen Sie dann die Funktion _flashup mit dieser:
function
_flashup()
{
MY.SCALE_X
= 2;
MY.SCALE_Y
= 2;
vec_scale(MY.SCALE_X,actor_scale);
MY.PASSABLE
= ON;
//
Set flare only in D3D mode
if(VIDEO_MODE
> 8) { MY.FLARE = ON; }
else{
MY.TRANSPARENT = ON; }
MY.FACING
= ON;
MY.AMBIENT
= 100;
MY.LIGHTRED
= light_muzzle.RED;
MY.LIGHTGREEN
= light_muzzle.GREEN;
MY.LIGHTBLUE
= light_muzzle.BLUE;
MY.LIGHTRANGE
= 100;
wait(1);
if
(weapon_number == 1) {snd_play (weapon1_wav, 50, 0);}
if
(weapon_number == 2) {snd_play (weapon2_wav, 50, 0);}
if
(weapon_number == 3) {snd_play (weapon3_wav, 50, 0);}
//
PLAY_SOUND gun_wham,50; // comment this line!
remove(ME);
}
F:
Wie kann ich mit Hilfe des Mausrades die Waffen wechseln?
A:
Fügen Sie diese Zeilen an das Ende der Main Funktion an:
while
(1)
{
if (mickey.z > 5)
{
if (weapon_number == 6) {_gun_select7();}
if (weapon_number == 5) {_gun_select6();}
if (weapon_number == 4) {_gun_select5();}
if (weapon_number == 3) {_gun_select4();}
if (weapon_number == 2) {_gun_select3();}
if (weapon_number == 1) {_gun_select2();}
}
if (mickey.z < -5)
{
if (weapon_number == 2) {_gun_select1();}
if (weapon_number == 3) {_gun_select2();}
if (weapon_number == 4) {_gun_select3();}
if (weapon_number == 5) {_gun_select4();}
if (weapon_number == 6) {_gun_select5();}
if (weapon_number == 7) {_gun_select6();}
}
wait (1);
}
F:
Ich suche immer noch nach dem Code, in dem die Rauchfahne für den
Raketenwerfer definiert ist. Können Sie mir helfen?
A:
Öffnen Sie particle.wdl und suchen Sie nach der Funktion particle_smoke.
Ändern Sie die Bitmap, verringern Sie die Größe des Partikels
und erhöhen Sie die z Geschwindigkeit.
F:
Ich hätte gern einen Zähler, der startet, sobald das Level geladen
wird und von 120 Sekunden bis 0 herunterzählt. Wie kann ich das erreichen?
A:
Schreiben Sie folgenden Code an den Anfang Ihrer Haupt WDL-Datei (z.B.
office.wdl):
var seconds = 120;
panel
time_panel
{
pos_x = 0;
pos_y = 0;
layer = 10;
digits 10, 10, 3, _a4font, 1, seconds;
flags = visible, refresh, d3d;
}
function
count_down()
{
while(seconds > 0)
{
sleep (1);
seconds -= 1;
}
}
und diese Zeile am Ende der Main:
count_down();
F:
Weiß jemand, wie ich die Lautstärke eines bestimmten Sounds
ändern kann? Ich kenne sound_vol, aber dieser Wert beeinflußt
alle Wav Sounds.
A:
Benutzen Sie diesen Code:
var
my_volume;
bmap
slider_pcx = <slider.pcx>;
sound
mysound_wav = <mysound.wav>;
panel
mysound_pan
{
layer = 20;
pos_x = 20;
pos_y = 20;
hslider = 20, 95, 200, slider_pcx, 0, 100, my_volume;
flags = d3d, overlay, refresh, visible;
}
function
sound_volume() // call it in main
{
while (1)
{
if (key_s == 1) // press "S" to play the sound
{
while (key_s == 1) {wait (1);} // wait for the key to be released
snd_play (mysound_wav, my_volume, 0);
}
wait (1);
}
}
F:
Ich kann eine Datei öffnen und Daten schreiben, aber neue Daten überschreiben
die alten. Wie kann ich das beheben?
A:
Benutzen Sie den Code unten; jedes Mal, wenn er läuft, wird ein neuer
"aum" String in der data.txt Datei hinten angefügt.
var
data_handle;
function
add_data() // call it in main
{
data_handle = file_open_append("data.txt"); // open the file
file_str_write(data_handle, "aum "); // write "aum" inside the file
file_close(data_handle); // close the file
}
F:
Ich möchte einen Kameraeffekt programmieren; die Kamera soll um den
Spieler kreisen, wenn ich eine Taste drücke. Der Spieler steht in
der Mitte des Kreises und die Kamera soll sich darauf bewegen und dabei
stets den Spieler im Blick behalten.
A:
Hier ist der Code:
var camera_angle = 0;
view
rotating_camera
{
pos_x = 0;
pos_y = 0;
size_x = 640; // change this value to your screen resolution on x
size_y = 480; // and y
layer = 25; // must be bigger than camera's layer
}
function
camera_effect()
{
camera.visible = off;
rotating_camera.visible = on;
while (player == null) {wait (1);}
while (key_s == 0) // press "S" to stop the effect
{
rotating_camera.x = player.x + 500 * cos(camera_angle.pan);
rotating_camera.y = player.y + 500 * sin(camera_angle.pan);
rotating_camera.z = player.z + 300;
camera_angle += 1 * time;
vec_set (temp.x, player.x);
vec_sub (temp.x, rotating_camera.x);
vec_to_angle (rotating_camera.pan, temp); // look at the player
wait (1);
}
camera.visible = on;
rotating_camera.visible = off;
}
on_c
= camera_effect; // press "C" to start the rotating camera
F:
Ich habe eine "Attack" Animation für meinen Charakter erstellt; ich
möchte, dass die ganze Animation abgespielt wird, wenn ich die linke
Maustaste drücke.
A:
Benutzen Sie diesen Codeteil als Grundlage für Ihren eigenen Code:
action
attack_me
{
while(1)
{
if(mouse_left == 1)
{
my.skill20 = 0;
while (my.skill20 < 100)
{
ent_cycle("attack", my.skill20);
my.skill20 += 5 * time;
wait (1);
}
}
while (mouse_left == 1) {wait (1);} // disable looping
wait(1);
}
}