Hallo Zusammen,

mein Versuch, eine Tür als Modell einzubauen scheitert momentan an meiner Unfähigkeit, ein Flag (hier das Passable-flag) nach dem Öffnen) wieder rückgängig zu machen, so dass die geschlossene Tür wieder die Kollisionsabfrage korrekt durchführt.
Kann mir da jemand bitte weiterhelfen?

Hier das aktuelle Skript:
Code:
SOUND* sound_oeffnen = "door_open.wav";
var sound_oeffnen_handle;
SOUND* sound_schliessen = "door_open.wav";
var sound_schliessen_handle;

var Oeffnungs_abfrage = 0;

void anmbeh(ENTITY* ent, var *mode, var type)
{
	var anmbeh = 0;
	var anim_percentage;
//	var Oeffnungs_abfrage = 0;
	*mode = 1;
	
	
	while(anmbeh < 100 && type == 0 )
	{
		anmbeh += 8 * time_step;
		ent_animate(my, "open", anmbeh, NULL);
		anim_percentage = cycle(anim_percentage, 0, 100);
		wait(1);
	}	
	while(anmbeh <100 && type == 1 && Oeffnungs_abfrage == 0)
	{
		anmbeh += 8 * time_step;
		ent_animate(my, "close", anmbeh, NULL);
		anim_percentage = cycle(anim_percentage, 0, 100);
		Oeffnungs_abfrage = 1;
		wait(1);
		
	}	
	*mode = 0;
//	Oeffnungs_abfrage = 0;
}




function highlight_event()
{
	if (event_type == EVENT_TOUCH) // der Behälter wurde mit der Maus berührt?
	{
	  my.ambient = 100; // dann lass' ihn heller aussehen
	  
	}
	else // der Behälter wird nicht mehr berührt
	
	if (event_type == EVENT_RELEASE) // wurde die Maus von ihm wegbewegt?
		{
	  		my.ambient = 0; // dann stelle seinen Anfangs-Ambient-Wert wieder her (null)
	  	
		}
  	
}

MATERIAL* Bauerntuer_mat =
{
	// section: Diffuse:
	// entry: Red
	diffuse_red = 255;
	// entry: Green
	diffuse_green = 255;
	// entry: Blue
	diffuse_blue = 255;
	
	// section: Ambient:
	// entry: Red
	ambient_red = 50.0; //org. je 16.0
	// entry: Green
	ambient_green = 50.0;
	// entry: Blue
	ambient_blue = 50.0;
	
	//	// section: Sun:
	//	// entry: Red
	//	specular_red = 64.0;
	//	// entry: Green
	//	specular_green = 64.0;
	//	// entry: Blue
	//	specular_blue = 64.0;
	
	// section: Static Lighting:
	// entry: Red
	emissive_red = 255.0;
	// entry: Green
	emissive_green = 255.0;
	// entry: Blue
	emissive_blue = 255.0;
	//
	flags = tangent | ENABLE_RENDER;
	effect = "NM_Shader.fx";
}

action modeltuer() // diese Aktion ist beiden Z. zugewiesen
{  
	my.material=Bauerntuer_mat;
	var *anm_mode = sys_malloc(sizeof(var));
	*anm_mode = 0;
	// mache das Modell Mausempfindlich
  my.emask = ENABLE_TOUCH | ENABLE_RELEASE;
  // starte d. Function highlight_event wenn das Modell berührt oder losgelassen wird
  my.event = highlight_event; 
  while(1)
  {
		if((key_o) && (*anm_mode == 0) && (my.ambient > 50))
		{
			anmbeh(my, anm_mode, 0); //0 = type (siehe oben)
			snd_play (sound_oeffnen,100,0);
			set (my,PASSABLE);
		}	
		
		if((key_p) && (*anm_mode == 0) && (my.ambient > 50))
		{
			anmbeh(my, anm_mode, 1); //1 = type (siehe oben)
			snd_play (sound_oeffnen,100,0);	
					
		}
		Oeffnungs_abfrage = 0;
			
	wait(1);
	} 
set (my,POLYGON);	
}



LG