Q:
How can I create a main menu that includes a fire effect like in Quake3?
A:
Place the letters
in a 3D level, create paths that surround each letter and use the code below:
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
}
}
Q:
I'd like to have a fly through, as well as a player's camera in my game. Can
you help?
A: Place a small entity in your level and attach it the
action named camera2; press "C" to toggle the cameras.
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;
Q:
Anyone knows how can I resize the in-game view" I
have the game running at 1024x768 resolution, but
I want
to have a panel with a size of 1024x200 at
the bottom of the screen and have the game running
inside a 1024x568 window.
A:
Use this snippet:
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;
}

Q:
How can I add several actions to one entity?
A: You can't do that directly, but here's a workaround;
let’s say that you want to add 3 actions to an entity:
action one
{
my.ambient = 100;
}
action two
{
my.transparent = on;
}
action three
{
my.z = 200;
}
Keep the first action and change the 2nd and 3rd to functions:
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;
}
Now call function two and function three from within action one:
action
one // attach this action to your entity
{
my.ambient = 100;
two();
three();
}
That’s
it!
Q:
I'd like to have entities that react when "space" is pressed,
if they are "touched" by
the crosshair. How can I do that?
A: Use the code below:
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
}
Q:
How can I create a sky that
uses a sprite and the "cylinder" flag?
A:
Use this example:
sky
my_panorama
{
type = <skysprite.pcx>;
layer = 30;
tilt = -50;
flags = scene, cylinder, overlay, visible;
}

Q:
I have captured video inside one of my games and I edited it with Windows
Movie Maker, adding some cool effects to it. How can I take that
file
and
use it
in my game?
A:
Use the example below; it starts playing the movie as soon as the player approaches
the entity that has this action attached to it:
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);
}
Q:
Is it possible to make a quiz with A6?
A: Sure.
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?";
}
}
Q:
How can I get the closest vertex to the point where I have shot an enemy?
A: Use this example:
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);
}
}