Q: What is the difference between "smoth" shadows and regular shadows?
A: Click here to get a zip file that includes an image and a test level with two identical areas, with and without "smooth" textures. The test level was kindly donated by Marco Grubert.
 

Q: How can I make it so that when I touch a cd it will take me to the new level?
A: Here's a snippet:

string nextlevel_wmb = <next.wmb>;

function beam_me_up();

action take_me_there // attach it to the cd
{
    my.enable_impact = on;
    my.event = beam_me_up;
}

function beam_me_up()
{
    wait (1);
    level_load (nextlevel_wmb);
}
 

Q: I have the standard version of 3D Gamestudio so I cant import terrain files. I could use models; is there a way to make my terrain model not passable, so my player can walk on it?
A: Make your terrain model passable and create a simple, invisible brush structure underneath it.
 

Q: How do you make actors that have skin animations (a character blinks his eyes or opens his mouth)?
A: Create several skins for that actor and add them to the model in Med. Use this piece of code to animate your character:

action imtalking
{
    while (1)
    {
        while (I am supposed to talk) // put your stuff here
        {
            my.skin = 1;
            waitt (3);
            my.skin = 2;
            wait (3)
            my.skin = 3;
            waitt (3);
        }
        wait (1);
    }
}
 

Q: Can someone give me a script that moves an entity using the arrow keys, but it does not move the camera anywhere?
A: The easy way is to define a new view and make it visible. Place this line at the beginning of office.wdl file:

view camera2{ }

and the following lines at the end of the main function:

camera.visible = off;
camera2.size_x = screen_size.x;
camera2.size_y = screen_size.y;
camera2.pos_x = 0;
camera2.pos_y = 0;
camera2.visible = on;  
 

Q: I need the cursor to change when I scroll over an npc. Can you help?
A: Here's the code:

bmap cursor_normal = <normal.pcx>;
bmap cursor_changed = <changed.pcx>;

function change_cursor();

action npc
{
    my.enable_touch = on;
    my.enable_release = on;
    my.event = change_cursor;
}

function change_cursor()
{
    wait (1);
    while (event_type == event_touch)
    {
        mouse_map = cursor_changed;
        wait (1);
    }
    while (event_type == event_release)
    {
        mouse_map = cursor_normal;
        wait (1);
    }
}
 

Q: I use the "pathcamera" code in Aum6. I need to stop the camera when it reaches the last point in the path.How do I do that?
A: Measure the coords xyz for the last path and then replace while (1) in cutcam.wdl with:

while (my.x < x_coord && my.y < y_coord && my.z > z_coord)

Please note that you might need to replace < with > and > cu < depending on your path.
 

Q: I'd like to keep the bullet hole marks on the walls - is it possible?
A: First of all, change this line in weapons.wdl:

DEFINE kMaxBulletHole 100; -> DEFINE kMaxBulletHole 1000; // 1000 bullet holes now

Replace function bullet_hole() with this one:

function bullet_hole()
{
     // check for maximum bullet holes at any time
     if(bullet_hole_index >= kMaxBulletHole)
     {
          bullet_hole_index = 0;
     }

     // check to see if its already in use
     temp = h_bullet_hole_array[bullet_hole_index];
     if(temp != 0)
     {
          // remove old hole
          p_bullet_hole_temp = ptr_for_handle(temp);
          remove(p_bullet_hole_temp);
     }

     // assign this as the new value in the array
     h_bullet_hole_array[bullet_hole_index] = handle(me);
     my.skill4 = bullet_hole_index;  // save index for removal

     bullet_hole_index += 1;  // increament index

     my.transparent = on;
     my.flare = on;
     my.passable = on;

     my.oriented = on;

     vec_to_angle(my.pan,normal); // rotate to target normal
}
 

Q: I have a few models and I need them to walk using the walk frames; I also have a character that has a "stand still" animation. Do you have some code?
A: Look at the enemy_fight action in this AUM edition - the code includes walking, standing still, attacking and dieing.
 

Q: How do you check if the player has entered a certain street?
A: Get the x and y coords (min and max) for the street in Wed and compare these values with player's position:

function street_checker() // start it in main
{
    while (1)
    {
        if (player.x > street_min_x && player.x < street_max_x && player.y > street_min_y && player.y < street_max_y)
        {
            // the player has entered the street
            // add your code here
        }
        else
        {
            // the player is outside the street
            // add your code here
        }
        wait (1);
    }
}