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);
}
}