F:
Wie kann ich ein Mneü erstellen, dass einen Feuereffekt wie in Quake
3 beinhaltet?
A: Plazieren Sie die Buchstaben
in einem 3D Level, erstellen Sie Pfade um die Buchstaben herum und verwenden
Sie den folgenden Code:
action patrol_path // attach this action to your fire sprite
{
my.ambient = 100;
my.flare = on;
my.skill10 = path_scan (my, my.x, my.pan, vector(360, 180, 1000));
if (my.skill10 == 0) {return;} // no path was found
ent_waypoint(my.skill1, 1); // start with the first vertex on the path
while (1)
{
temp.x = my.skill1 - my.x;
temp.y = my.skill2 - my.y;
temp.z = 0;
result = vec_to_angle (my_angle, temp);
if (result < 10)
{
ent_nextpoint(my.skill1);
}
my.x = my.skill1;
my.y = my.skill2;
sleep (0.1); // play with this value if you need to
change the speed
}
}
F:
Ich hätte in meinem Spiel gerne sowohl eine “Fly Through” als
auch eine Spielerkamera. Können Sie mir helfen?
A: Plazieren Sie eine kleine Entity in Ihrem Level
und geben Sie dieser die Action camera2; mit “C” können
Sie zwischen den Kameras umschalten.
view second_camera
{
}
action camera2
{
second_camera.pos_x = 0;
second_camera.pos_y = 0;
second_camera.size_x = screen_size.x;
second_camera.size_y = screen_size.y;
second_camera.visible = off;
camera.visible = on;
my.invisible = on;
while (1)
{
vec_set(second_camera.x, my.x);
second_camera.pan = my.pan;
second_camera.tilt = my.tilt;
my.pan -= 10 * mouse_force.x * time;
my.tilt += 10 * mouse_force.y * time;
move_mode = ignore_passable + glide;
ent_move (vector (10 * (key_w - key_s) * time,
0, 0), nullvector); // use "W" and "S" to
move the camera
wait (1);
}
}
function switch_cameras()
{
camera.visible = (camera.visible == off);
second_camera.visible = (camera.visible == off);
}
on_c = switch_cameras;
F:
Weiß jemand, wie ich die Größe meiner In-Game View ändern
kann? Mein Spiel läuft mit 1024 x 768 Pixeln, aber ich hätte
gern ein 1024 x 200 Pixel großes Panel am unteren Bildschirmrand
und das Spiel soll nur in einem 1024 x 568 Fenster laufen.
A:
Hier ist der Code:
bmap bottom_pcx = <bottom.pcx>;
panel bottom_pan
{
pos_x = 0;
pos_y = 568;
bmap = bottom_pcx;
layer = 15;
flags = overlay, refresh, visible;
}
starter camera_568()
{
camera.pos_x = 0;
camera.pos_y = 0;
camera.size_x = 1024;
camera.size_y = 568;
}

F:
Wie kann ich eine Entity mehrere Actions geben?
A: Das geht so direkt nicht, aber man kann es trotzdem
erreichen; sagen wir, Sie möchten einer Entity 3 Actions zuweisen:
action one
{
my.ambient = 100;
}
action two
{
my.transparent = on;
}
action three
{
my.z = 200;
}
Behalten Sie die erste und ändern sie die zweite und dritte in Funktionen:
function two(); // function declaration, place it at the top of the script
function three(); // function declaration, place it at the top of the script
function two()
{
my.transparent = on;
}
function three()
{
my.z = 200;
}
Rufen Sie diese beiden Funktionen dann von Action Eins aus auf:
action
one // attach this action to your entity
{
my.ambient = 100;
two();
three();
}
Das war’s
schon!
F:
Ich hätte genr Entities, die reagieren, wenn die Leertaste gedrückt
wird und sie vom Fadenkreuz “berührt” werden. Wie geht
das?
A: Hier ist der Code:
bmap mypointer_pcx = <mypointer.pcx>;
function touched_by_pointer();
starter mouse_in_center()
{
mouse_map = mypointer_pcx; // set the mouse pointer bitmap
mouse_pos.x = (screen_size.x - bmap_width(mypointer_pcx)) / 2;
// place the pointer in the center of the screen
mouse_pos.y = (screen_size.y - bmap_height(mypointer_pcx)) / 2;
// on the x and y axis
mouse_range = 5000; // objects of up to 5000 quants away can be
touched by the mouse
mouse_mode = 2; // show the pointer
}
action my_entity
{
my.enable_touch = on;
my.enable_release = on;
my.event = touched_by_pointer;
}
function touched_by_pointer()
{
if (event_type == event_touch) // touched by the mouse
{
my.skill40 = 1; // set this skill
}
if (event_type == event_release) // the mouse was moved away from
the entity?
{
my.skill40 = 0; // reset this skill
}
while (my.skill40 == 1) // as long as the mouse wasn't moved away
from the entity
{
if (key_space == on) // "space" was
pressed?
{
my.ambient = 100; // put the
code that does what you want here
}
wait (1);
}
my.ambient = 0; // the mouse was moved away here
}
F:
Wie kann ich einen Himmel aus einem Sprite mit dem “cylinder” Flag
generieren?
A: Hier ein Beispiel:
sky
my_panorama
{
type = <skysprite.pcx>;
layer = 30;
tilt = -50;
flags = scene, cylinder, overlay, visible;
}

F: Ich
habe ein Video von einem meiner Spiele aufgezeichnet und mit dem Windows
Movie Maker bearbeitet und dadurch einige coole Effekte hinzugefügt.
Wie kann ich diese Datei in meinem Spiel verwenden?
A:
Hier ist ein Beispiel; das Video wird abgespielt, sobald der Spieler sich der
Entity mit der folgenden Action nähert:
action
movie_trigger
{
// my invisible = on; // remove the comment after you set a proper position
for
the entity
while (player == null) {wait (1);}
while (vec_dist(player.x, my.x) > 100) {wait (1);} // wait until the player
has come closer than 100 quants to the entity
media_play("volcano.wmv", null, 80); // replace volcano.wmv with your
own wmv file
ent_remove (my);
}
F:
Kann man mit A6 ein Quizspiel machen?
A: Klar:
bmap
beverages_pcx = <beverages.pcx>;
bmap water1_pcx = <water1.pcx>;
bmap water2_pcx = <water2.pcx>;
bmap milk1_pcx = <milk1.pcx>;
bmap milk2_pcx = <milk2.pcx>;
bmap soda1_pcx = <soda1.pcx>;
bmap soda2_pcx = <soda2.pcx>;
function check_beverages(button_number);
text drinks_txt
{
layer = 25;
pos_x = 200;
pos_y = 450;
font = _a4font;
flags = visible;
}
panel beverages_pan
{
bmap = beverages_pcx;
pos_x = 100;
pos_y = 100;
layer = 15;
button = 50, 150, water2_pcx, water1_pcx, water2_pcx, check_beverages,
null, null;
button = 50, 200, milk2_pcx, milk1_pcx, milk2_pcx, check_beverages,
null, null;
button = 50, 250, soda2_pcx, soda1_pcx, soda2_pcx, check_beverages,
null, null;
flags = overlay, refresh, visible;
}
function check_beverages(button_number)
{
beverages_pan.visible = off;
if (button_number == 1) // water?
{
drinks_txt.string = "You have chosen water!
Good for you!";
}
if (button_number == 2) // milk?
{
drinks_txt.string = "Milk? That's a healty
beverage!";
}
if (button_number == 3) // soda?
{
drinks_txt.string = "Soda? Why do you like
to drink sodas?";
}
}
F: Wie
ermittele ich den Vertex, der dem Punkt am nächsten ist, an dem ich
den Feind getroffen habe?
A: Hier ein Beispiel:
var closest_vertex;
panel test_pan
{
digits = 5, 15, 6, _a4font, 1, closest_vertex;
flags = overlay, refresh, visible;
}
starter traced_vertex()
{
var trace_coords;
while (1)
{
if (key_space == 1)
{
while (key_space == 1) {wait
(1);}
vec_set(trace_coords.x, vector(1000,
0, 0)); // trace 1000 quants in front of the camera (the player)
vec_rotate(trace_coords.x,
camera.pan); // rotate "temp" in
the direction (angles) given by the camera (the player)
vec_add(trace_coords.x, camera.x);
// add the resulting vector to camera's (player's) position
result = c_trace (camera.x,
trace_coords.x, ignore_me | ignore_passable | get_hitvertex);
if ((result > 0) && (you
!= null)) // hit an entity?
{
closest_vertex
= hitvertex;
}
}
wait (1);
}
}