Most asked questions |
Top Previous Next |
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
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); } }
|