Q: I'm working on a multiplayer game which is working fine starting through WED if I use -sv, -cl etc. How do you go about coding the startup files?

A: You can use separate batch files for client, server, etc or you can use the engine itself (load a dummy level and use "exec").

 

Q: I like your footprint code in Aum9; how can I change it to create footprints only when the player is outdoors?

A: Add scan_texture to trace_mode and compare the name of the texture with “your_snow_texture”. If these names are the same, create the footprints.

 

Q: How can I make that my enemy hear sounds and attack me?

A: Check the distance between the player and your enemy (or use scan) and if the player makes a certain "noise" (opens a door, etc) set a variable and then check its value in enemy's action.

 

Q: How can you define a variable for a certain entity and then change its properties?

A: You need to use pointers for that. Here's a sample:


entity* golden_fish;

action my_fish // attach this action to your fish model
{
golden_fish = me;
.......................
}


Now you can type golden_fish.ambient = 100 at the console (or put it in any function / action) and your fish will become brighter

 

Q: I have started to play a wave file by pressing the space button in my action. The wave file plays once from beginning to end. Can I stop it somehow before it ends?

A: Yes, you can. Here's the code:

var sound_handle;

action your_action

{

          ...........

          sound_handle = snd_play (my_great_music, 40, 0);

          ...........

          while (something)

          {

                   if (key_s == 1) // press S to stop the sound

                   {

                             snd_stop (sound_handle);

                   }

          }

}

 

Q: I am trying to create a speedo for my game. I would like to use 2 panels; the first is the clock, and the second is the needle that indicates the speed. I need to make the needle rotate or 'roll'. Is this possible with a panel?

A: Use two entities; their definitions should be similar to the bow entity in this Aum edition. This way you will be able to change the roll angle.

 

Q: Can you change a Map entities texture by script?

A: Yes, you can use morph or use u and v to shift the texture (it should be twice the original size) until you see the new one.

 

Q: I was wondering if there is a way, instead of deleting the particle when the particle life expires, but to delete the particle when it passes a certain position or becomes X far away from where it started?

A: Yes, you can use particle's skill_x ... skill_z.

 

Q: I'm using Geometricks' attach_entity function. I did a generic attach statement, but my models were scaled, so the guns did not line up correctly. Can I scale the guns via script to match a model scaled in WED?

A: The answer is easy if you know the scale in Wed:

function attach_prop_entity()
{
    // new stuff from here on
    my.scale_x = 0.3; // if you have scaled the original model to 0.3 in Wed
    my.scale_y = 0.3;
    my.scale_z = 0.3;
    // new stuff ends here

    my.passable = on;
    while(you) // prevent empty synoym error if parent entity was removed
    {
        if(your.shadow == on) { my.shadow = on; }
        vec_set(my.x,you.x);
        vec_set(my.pan,you.pan);

        // increment _ANIMDIST by elapsed time
        my._ANIMDIST += 50*TIME; // replace 50 with engine speed in game
        while(my._ANIMDIST > 100)
        {
            my._ANIMDIST -= 100;
        }
        ent_frame("Frame",my._ANIMDIST);
        wait(1);
    }
    remove(my);
}
 

 

Q: Is there a way for a (template) enemy to slowly fade from existence after a certain time and then remove itself?

A: First of all, comment a line in action robot2:

ACTION robot2
{
    MY._FORCE = 2;
    MY._FIREMODE = DAMAGE_SHOOT+FIRE_PARTICLE+HIT_FLASH+0.05;
    // MY._HITMODE = HIT_GIB;//HIT_EXPLO; // comment this line
    MY._WALKSOUND = _SOUND_ROBOT;
    anim_init();
    drop_shadow(); // attach shadow to robot
    actor_fight();
    // if(MY.FLAG4 == ON) { patrol(); }
    // create(<arrow.pcx>,MY.POS,_ROBOT_TEST_WATCHER); // used to activate watcher drone
}

Attach this piece of code at the end of the state_die function:

    // If entity 'gibs' after death
    if((ME != player) && ((MY._HITMODE & MODE_HIT) == HIT_GIB))//(MY._HITMODE & HIT_GIB))
    {
        _gib(25); // use new "gib" function
        actor_explode(); // ends with the removal of this entity
        return;
    }
    MY.PASSABLE = ON; // body remains

    // new stuff from here on
    my.transparent = on;
    my.alpha = 100;
    while (my.alpha > 0)
    {
        my.alpha -= 2 * time;
        wait (1);
    }
    ent_remove (me);
    // new stuff ends here
}