function
particle_barrier()
{
my.bmap = redflare_pcx;
my.flare = on;
my.bright = on;
my.size = 10;
my.function = keep_particles;
my.skill_x = 0;
}
function
keep_particles()
{
my.lifespan = 10; // keep the particle alive
my.alpha = 30 + random(70); // show some activity
if ((my.z < 200) && (my.skill_x == 0))
{
my.z += 1;
}
else
{
my.skill_x = 1;
}
if ((my.z > 0) && (my.skill_x == 1))
{
my.z -= 1;
}
else
{
my.skill_x = 0;
}
}
F:
Einer meiner Lieblings-Codeschnipsel ist John Wayne von AUM 9. Wie kann
ich es erreichen, dass sich die Waffe beim Laufen auf und ab bewegt?
A:
Die neue Datei ist zu groß, um angezeigt zu werden; klicken Sie hier,
um das modifizierte John Wayne Skript herunterzuladen.
F:
Ein simpler Feuereffekt für Fackeln übersteigt mein Verständnis;
können Sie helfen?
A:
Sicher. Benutzen Sie diesen Code:
bmap fire_map = <flame.tga>;
function
fire_init();
function
fade_away();
action
fire_generator
{
my.invisible = on;
my.passable = on;
while (1)
{
effect(fire_init, 1, my.pos, normal);
wait (1);
}
}
function
fire_init()
{
my.bmap = fire_map;
my.alpha = 12; // play with this value
my.size = 5;
my.flare = on;
my.bright = on;
my.move = on;
my.x += 2 - random (4);
my.y += 2 - random (4);
my.z += 1 + random (1);
my.function = fade_away;
}
function
fade_away()
{
my.alpha -= 0.5 * time;
if (my.alpha <= 0)
{
my.lifespan = 0;
}
}
F:
Kann ich einen einfachen Code für Health Paks haben?
A:
Hier ist ein simples Beispiel:
action
simple_health
{
my.passable = on;
while (player == null) {wait (1);}
while (vec_dist (my.x, player.x) > 100) {wait (1);}
player._health += 25; // add 25 health points
ent_remove (me);
}
F:
In Ihrem Shooter Projekt (AUM 14), nachdem der Gegner stirbt, können
der Spieler und auch die Kugeln ohne Probleme durch den Körper des
Gegners. Ich möchte, dass es in meinem Projekt ebenso funktioniert,
aber das tut es nicht, selbst wenn ich das “passable” Flag für die
Feinde im WED setze! Was mache ich falsch?
A:
Fügen Sie diese Codezeile vor jede ent_move Anweisung:
move_mode
= ignore_you + ignore_passable
F:
Mein Spiel verwendet mehrere WAD Dateien. Ich hätte gern eine einzelne
Datei, die alle Texturen enthält; ist das möglich, ohne die Texturen
einzeln von Hand zu exportieren?
A:
Ja, ist es. Lassen Sie Ihr Level ausrechnen und Sie werden eine “level.$$w”
Datei in Ihrem Verzeichnis finden. Das ist die WAD Datei, die alle Texturen
enthält, die im Level benutzt werden. Benennen Sie diese zu level.wad
um, kopieren Sie sie in Ihr \wads Verzeichnis und fügen Sie diese
Ihrem Projekt hinzu. Alle anderen WAD Dateien für das Projekt sind
von nun an überflüssig. Natürlich sind die Namen level.$$w
und level.wad nur Beispiele, sie könnten bei Ihnen anders heißen.
F:
Ich habe zwei Himmelskuppeln für mein Level erstellt und würde
gern ihre Rotationsgeschwindigkeit und Ihre Transparenz im WED einstellen.
A:
Fügen Sie den Code unten in eine Ihrer WDL Dateien ein:
define
transparency skill1;
define
speed_pan skill2;
define
speed_tilt skill3;
define
speed_roll skill4;
//
uses transparency, speed_pan, speed_tilt, speed_roll
action
spheres
{
my.passable = on;
my.transparent = on;
my.alpha = my.transparency;
while (1)
{
my.pan += my.speed_pan * time;
my.tilt += my.speed_tilt * time;
my.roll += my.speed_roll * time;
wait (1);
}
}
F:
Ich bekomme “exec” nicht zum Laufen, können Sie mir ein Beispiel zeigen?
A:
Benutzen Sie den Code unten; drücken Sie “N”, um das Notepad aufzurufen.
Stellen Sie sicher, dass Sie die notepad.exe aus Ihrem Windows Verzeichnis
in Ihr Spielverzeichnis kopiert haben.
function
test_exec()
{
exec("notepad.exe", "");
}
on_n
test_exec;
F:
Ich mag den Code für Schwertkampf, aber ich finde es schwer, ihn für
die Ego-Perspektive umzusetzen. Ich habe die Kamera “im Spieler” plaziert,
aber wenn er angreift, macht das Model einen Satz nach vorn und man kann
es sehen.
A:
Fügen Sie der Action player_fight diese Zeile hinzu:
player.invisible
= on;
F:
Ich habe ein animiertes Sprite einer Explosion, aber ich möchte langsamer
durch die Animationen schalten... wie geht das?
A:
Ersetzen Sie die “2” im Beispiel unten durch einen kleineren Wert:
var
explo_pos;
string
explosion_pcx = <explo+6.pcx>;
function
animate_explosion()
{
wait (1);
my.passable = on;
my.ambient = 100;
while (my.frame < 7)
{
my.frame += 2
* time;
wait (1);
}
ent_remove (me);
}
action
exploder // this is where the explosion will appear
{
vec_set (explo_pos, my.pos);
}
function
explosion()
{
while (key_x == 1) {wait (1);}
ent_create(explosion_pcx, explo_pos, animate_explosion);
}
on_x
= explosion;