Q: I need a simple action that does the following thing: when the "W" key is pushed, the entity should cycle through its "wave" movement once.
A: Here's your function:

action your_player
{
...........
while (1)
{
......................
if (key_w == 1)
{
while (key_w == 1) {wait (1);}
my.skill40 = 0;
while (my.skill40 < 100)
{
ent_cycle("wave", my.skill40);
my.skill40 += 3 * time; // 3 = animation speed
wait (1);
}
}
wait (1);
}
}

Q: I have an animated texture on a block and it is really slow.... does anybody have any idea how to speed it up some?
A: Decrease the number of frames for your texture or place an animated sprite over the block; you can control its animation speed this way:

function animated_sprite()
{
my.passable = on;
while (my.frame < 10)
{
my.frame += 1 * time;
wait (1);
}
}

Q: Can you tell me what is the function and in what file is the function that is activated by right click?
A: Sure. Check function mouse_toggle() in menu.wdl.

Q: I have added an entity to my level and it is named lampe_mdl_020. How can I get the values of its skills using C-script?
A: I am attaching an example; please note that you can only read the skills, you can't change their values:

entity* my_model;

function test_lamp()
{
my_model = ptr_for_name("lampe_mdl_020");
if (my_model.skill1 == 1) {beep; beep;} // beep twice if skill1 is set to 1 in Wed
}

Q: Once you set an entity as something, can you clear it, so that character no longer equals you?

entity* character;
character = you;

A: Sure. Use

character = null;

and character will be reset.

Q: Is there a way to have a sound follow an entity around as it moves?
A: Use short sounds with ent_playsound and ent_playloop.

Q: How can I create vars for entitys, like my._stupidhat?
A: These aren't vars, they are other names for skills. Use something like this:

define _stupidhat skill1;

and you have got yourself a funny name for skill1.

Q: When I use the inkey command to accept user input, how can I position it?
A: First of all you have to create a string:

string getvalue_str;

Now define a text that uses the string:

text my_txt
{
layer = 20;
pos_x = 27;
pos_y = 28;
font = arial_font;
string = getvalue_str;
}

When you use these lines in your code:

my_txt.visible = on;
inkey getvalue_str;

the cursor will appear at the position given by pos_x and pos_y.

Q: I am using ent_move for my player but anything that is set to passable will act just like a solid. What can I do?
A: Place this line before your ent_move line and everything will work ok:

move_mode = ignore_passable;

Q: I want to make a little triangle above the enemy so you can see if he is mad or not.
A: This piece of code will display the triangle if the enemy is mad (skill8 = 1).

string triangle_pcx = <triangle.pcx>;

function am_i_mad();

action my_model
{
ent_create (triangle_pcx, my.pos, am_i_mad);
while (1)
{
// your code here
wait (1);
}
}

function am_i_mad()
{
my.passable = on;
my.flare = on;
while (1)
{
if (you != null)
{
vec_set (temp, you.pos);
temp.z += 65; // above the head
vec_set (my.pos, temp);
if (you.flag8 == 1)
{
my.invisible = off;
}
else
{
my.invisible = on;
}
}
wait (1);
}
}