F: Ich habe AUM 26 gelesen und mochte insbesondere den Artikel über die Kraftfelder, aber ich konnte nicht herausfinden, wie man die Partikel nach oben und unten bewegt, so wie den Lift im Office Level.
A: Ersetzen Sie zwei Funktionen in der forcefield.wdl mit diesen hier:

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;