this code is corrected for what i forget:

Code:
ENTITY* door_ent;
action door()
{
        door_ent = me;
	while(1)
	{
		if(my.skill2  == 1)
		{
			var tmp_z = my.z + 50;
			while(my.z < tmp_z)
			{
				my.z += 5;
				wait(1);
			}
			my.skill2 = 2;
		}
		if(my.skill2  == 3)
		{
			var tmp_z = my.z - 50;
			while(my.z > tmp_z)
			{
				my.z -= 5;
				wait(1);
			}
			my.skill2 = 0;
		}
		wait(1);
	}
}

action opener()
{
	while(1)
	{
		c_scan(my.x, my.pan, vector(360, 180, t_switch_range), IGNORE_ME | SCAN_ENTS);
		if(you)
		{
			if((you == player)&&(key_enter))
			{
				for(you = ent_next(NULL); you; you = ent_next(you))
				{
					if(you == door_ent)
					{
						if(you.skill1 == my.skill1)
						{
							while(!key_enter){wait(1);}
							if(you.skill2 == 0)
							{
								var trig_percentage = 0;
								while(trig_percentage < 100)  //stops an infinite loop. 
								{
									trig_percentage += 2*time_step;
									ent_animate(me, "on", trig_percentage, ANM_CYCLE);
									wait(1);
								}
								you.skill2 = 1;
							}
							else
							{
								if(you.skill2 == 2)
								{
									var trig_percentage =0;
									while(trig_percentage < 100)  //stops an infinite loop. 
									{
										trig_percentage += 2*time_step;
										ent_animate(me, "on", trig_percentage, ANM_CYCLE);
										wait(1);
									}
									you.skill2 = 3;
								}								
							}
						}
					}
				}
				
			}
		}
		wait(1);
	}
}



Thanks Malice