F: Ich verwende den Split Screen Shooter aus AUM 30. Ich habe mich gefragt, ob man die Schussrate ändern kann, meine Waffe soll alle 1,3 Sekunden feuern können.
A: Hier gibt es das veränderte Skript.

 

F: Wie kann ich am Leichtesten ein Spiel wie Virtua Cop erstellen? Ich möchte eine Lightgun benutzen, also vereinfacht dargestellt möchte ich einen Gegner mit “Mausklick” töten können.
A: Verwenden Sie so etwas:

function enemy_dies()
{
    beep;
    // put the code that makes your enemies die here
    // change its animation frames, add some points to player's score, and so on
}

action my_enemy
{
   my.enable_click = on;
   my.event = enemy_dies;
}

 

F: Ich verwende Ihr Star Wars Text Skript und habe mich gefragt, wie ich ein anderes Level laden kann, nachdem der Text vorbei ist?
A: Klicken Sie hier für das modifizierte Skript.

 

F: Ich mag es nicht, wenn alle Dateien in einem Ordner sind, daher hätte ich gern eine solche Hierarchie.
- scripts
- graphics
- models
Ich möchte aber keine absoluten Pfadnamen eintragen, weil das Spiel dann die Skripte nicht mehr findet, wenn ich das fertige Projekt in einen anderen Ordner verschiebe. Können Sie helfen?
A: Hier ist ein Beispiel für relative Pfade:

path "..\\scripts";
path "..\\graphics";
path "..\\models";



F: Warum denkt die Engine, dass meine Models an einer anderen Stelle sind als ich sie in WED plaziert habe?
A: Stellen Sie sicher, dass der Origin im Zentrum des Models gesetzt ist. Falls dies das Problem nicht behebt, entfernen Sie die Actions und starten Sie das Level erneut; es könnte sein, dass Ihr Code die Models verschiebt.

 

F: Wie kann ich einer Entity eine Kamera mit Ego-Perspektive geben, z.B. einem Auto?
A: Hier ist ein Ausschnitt:

starter first_person_camera() // that's a 3rd person camera really
{
    while (player == null) {wait (1);}
    while (1)
    {
       camera.x = player.x + 5 * cos(player.pan); // place the camera 5 quants in front of the player's model
       camera.y = player.y + 5 * sin(player.pan); // play with 5; keep the same value for both "cos" and "sin" lines
       camera.z = player.z + 10; // place the camera 10 quants above player's origin (play with 10)
       camera.pan = player.pan;
       camera.tilt = player.tilt;
       camera.roll = player.roll;
       wait (1);
    }
}

 

F: Ich habe Schwierigkeiten die Partikel im Level zu clippen; egal wie ich mein Skript aufbaue, das Clipping scheint für Partikel nicht richtig zu funktionieren.
A: Hier ist ein Beispiel; mit “U”, “I”, “O” und “P” können Sie Werte ändern, bis Sie mit dem Ergebnis zufrieden sind. Vergessen Sie nicht, dass clip_particles in meinem Beispiel mit 1000 multipliziert wird.

text clip_txt
{
    layer = 5;
    pos_x = 10;
    pos_y = 10;
    font = _a4font;
    string = "Clip range:\nParticle range:";
    flags = visible;
}

panel clip_pan
{
   layer = 5;
   digits = 100, 10, 6, _a4font, 1, clip_range; // displays the "clip_range" value
   digits = 100, 20, 6, _a4font, 1000, clip_particles; // displays the "clip_particles" value multiplied by 1000
   flags = overlay, refresh, visible;
}

starter clip_them()
{
   while (1)
   {
      if (key_u == on)
      {
         clip_range += 10 * time;
      }
      if (key_i == on)
      {
         clip_range -= 10 * time;
      }
      clip_range = min(max(clip_range, 1000), 500000); // make sure that clip_range stays in this range: 1,000...500,000
      if (key_o == on)
      {
         clip_particles += 0.01 * time;
      }
      if (key_p == on)
      {
         clip_particles -= 0.01 * time;
      }
      clip_particles = min(max(clip_particles, 0), 1); // make sure that clip_particles stays in this range: 0...1
      wait (1);
   }
}

 

F: Wie kann ich alle Entities aus meinem Level entfernen, auch solche, die keine Action haben?
A: Hier ist eine Methode mit “Gewalt”; bereiten Sie sich auf empty pointer Errors vor. ;)

function remove_entities
{
    you = ent_next(null); // we retrieve the first entity
    while (1)
    {
       if (you != null) {ent_remove(you);} // if we can find an entity let's remove it
       wait (1); // we wait until the "you" pointer is valid again (if there are more entities left)
       you = ent_next(you); // we move on to the next entity
    }
}

on_r = remove_entities; // press the "R" key to remove all the entities

 

F: Wenn mein Charakter das Spiel startet und in eine bestimmte Richtung blickt, wie kann ich es einrichten, dass er nur in diese Richtung laufen kann und sich nicht drehen kann?
A: Hier ist ein Beispiel:

action she
{
    while (1)
    {
       temp.x = 5 * time; // 5 sets the speed
       temp.y = 0;
       temp.z = 0;
       move_mode = ignore_passable;
       if (key_a == on) // press the "A" key to move her
       {
          ent_move (temp, nullvector); // move in the direction given by the pan angle in Wed
          ent_cycle("walk", my.skill1); // animate the model
          my.skill1 += 5 * time; // animation speed
          my.skill1 %= 100; // loop the animation
       }
       wait (1);
    }
}