so hier mal nur die event wichtigen codeteile
Code:
action player1() // attach this action to the ship model
{
		
	#define schaden skill51
	#define health skill52
	
	my.health = 100;
	my.schaden = 10;
	
	while (1)
	{
			my.emask |= (ENABLE_IMPACT | ENABLE_SCAN); // the player is sensitive to collisions with level blocks and entities
		my.event = player_collisions; // and runs this event function if it collides with something
		

		if(my.health <= 0)
		{
			asteroid_destroy();
		}
		
		wait (1);
	}
}

action gegner()
{
		
	#define schaden skill51
	#define health skill52
	
	my.health = 100;
	my.schaden = 10;
	
	while(1)
	{
		
		my.emask |= (ENABLE_BLOCK | ENABLE_IMPACT); 
		my.event = gegner_event; 
		
				c_scan(my.x,my.pan,vector(360,20,750),IGNORE_ME | SCAN_LIMIT);
		
		if(you)
		{
			vec_set(temp,your.x);
			vec_sub(temp,my.x);
			vec_to_angle(my.pan,temp);
		}
		
		if(result > 450)
		{
			c_move(me,gegnergeschwindigkeit,NULLVECTOR,IGNORE_PASSABLE);
			
					}
		
		if(my.health <= 0)
		{
			enemy_destroy();
		}
		
		wait(1);
	}
	
}

function gegner_event()
{
	switch (event_type)
	{
		case EVENT_BLOCK:
		{
			my.health -= 10;
			
			blink();
			
			vec_to_angle(my.pan, normal);
			return;
		}
		
		case EVENT_IMPACT:
		{
			my.health -= you.schaden;
			you.health -= my.schaden;
			
			blink();
			return;
		}
	}
}


function player_collisions() // this is player's event function
{
	switch (event_type)
	{
		case EVENT_BLOCK:
		{
			my.health -= 10;
			
			blink();
			
			vec_to_angle(my.pan, normal);
			return;
		}
		
		case EVENT_IMPACT:
		{
			my.health -= you.schaden;
			you.health -= my.schaden;
			
			blink();
			return;
		}
	}

}


///////////////////////////////
function main()
{

	
	while(1)
	{
		on_mouse_left = players_laser;
		on_mouse_right = players_rocket;
		
		
		wait(1);
	}
		
}

// Schießen (Laser)


function players_laser()
{
	
	VECTOR plaser_offset;
	vec_set(plaser_offset.x, vector(20, 0, 0)); 
	vec_rotate(plaser_offset.x, player.pan);
	vec_add(plaser_offset.x, player.x);
	ent_create("laser1.mdl", plaser_offset.x, move_plaser);

	wait (1); 
}

function players_rocket()
{
	Raketenzaehler += 0.5;
	
	VECTOR plaser_offset;
	
	if(fraction(Raketenzaehler))
	vec_set(plaser_offset.x, vector(0, 20, 0));
	
	else
	vec_set(plaser_offset.x, vector(0, -20, 0)); 
	
	vec_rotate(plaser_offset.x, player.pan);
	vec_add(plaser_offset.x, player.x);
	ent_create("rakete.mdl", plaser_offset.x, move_procket);

	wait (1); 
}



function move_plaser()
{
	c_setminmax(me);
	set(my, PASSABLE);
	set(my, POLYGON);
	my.pan = player.pan; 

	my.emask |= (ENABLE_BLOCK | ENABLE_ENTITY); 
	my.event = remove_plaser; 
	
	#define schaden skill51
	#define health skill52
	
	my.schaden = 10;
	my.health = 10;
	
	while (my) 
	{
		if (vec_dist(my.x, player.x) > 70) 
			reset(my, PASSABLE); 
			
		if (vec_dist(my.x, player.x) > 900)
			remove_plaser();	
			
		c_move(my, vector(75 * time_step, 0, 0), nullvector, IGNORE_PASSABLE); 
		wait (1);
	}
}

function move_procket()
{
	c_setminmax(me);
	set(my, PASSABLE);
	set(my, POLYGON);
	my.pan = player.pan; 

	my.emask |= (ENABLE_BLOCK | ENABLE_ENTITY); 
	my.event = remove_procket; 
	
	#define schaden skill51
	#define health skill52
	
	my.schaden = 50;
	my.health = 10;
	
	

	while (my) 
	{
		if (vec_dist(my.x, player.x) > 70) 
			reset(my, PASSABLE); 
			
		if (vec_dist(my.x, player.x) > 900)
			remove_procket();	
			
		c_move(my, vector(50 * time_step, 0, 0), nullvector, IGNORE_PASSABLE); 
		
		wait (1);
	}
}

function remove_plaser() 
{
	wait (1);
	ent_remove(my);
}

function remove_procket() 
{
	wait (1);
	ent_create (explosion_pcx, my.x, asteroid_explodes); // create the explosion sprite	
	ent_remove(my);
}


action asteroid()
{
	c_setminmax(me);
	set(my, POLYGON);


	
	#define health skill51
	#define schaden skill52

	my.health = 30;
	my.schaden = 10;
	
	my.emask |= (ENABLE_IMPACT | ENABLE_BLOCK);
	my.event = schusstreffer_event;
	
	VECTOR asteroidengeschwindigkeit;
	var i = random(5);
	vec_set(asteroidengeschwindigkeit,vector(i, 0, 0));

	while (my)
	{
		my.z = player.z;
		
		c_move(my,asteroidengeschwindigkeit,NULLVECTOR,IGNORE_PASSABLE);
		
		if(my.health <= 0)
		{
			asteroid_destroy();
		}
		
		wait (1);
	}
}

function schusstreffer_event()
{
	switch (event_type)
	{
		case EVENT_BLOCK:
		{
			vec_to_angle(my.pan, bounce);
			return;
		}
	
		case EVENT_IMPACT:
		{
			my.health -= you.schaden;
			you.health -= my.schaden;
		
			blink();
			return;
		}
	}

}

function asteroid_destroy()
{
	vec_add(my.x, vector(0,0,5));
	ent_create (explosion_pcx, my.x, asteroid_explodes); // create the explosion sprite			
	wait (-0.2);	
	ent_remove(my);
}