Hallo liebe 3DGS Community,
Ich habe ein Script für meine Kiste geschrieben, eine ganz normale Kiste eben.
Das Script sollte so funktionieren:
Die kiste ist da, man schlägt einmal drauf und sie bewegt sich ein Stückchen,man schlägt noch einmal sie bewegt sich wieder ein Stückchen und beim dritten mal geht sie kaputt.
So weit in der Theorie....

Jedoch wenn ich meine Kiste "angreife" bewegt sie sich(besonders bei einem längeren Angriff) 2 mal.
Kurz: Es ist so als würde ich einmal angreifen die Kiste jedoch 2 mal verschieben.Ich hoffe ihr versteht es denn ich bin nicht allzu gut im schildern von Problemen.

Der Code für den Player basiert auf dem KHMovement von David Lancaster.


Code der Kiste:
Code:
var staerke=0;
var entfernung=20; //wie weit sie sich bewegt
var laenge = 0;

entity* target_enemy;
var boom_var;
var animdist;



action Kiste
{

   my.gravity = 6;
   my.polygon = ON;
 	your = target_enemy;
 	my.skill80==1;
	you = player;
	my.shadow = on;
	my.health = 5000;
	enemy_NR = 2;
	my.enable_scan = on;
	my.enable_entity = ON;
	my.FLAG1 = on;
	Lebensanzeige_verschwindet(); 
Kiste_Schaden();
	while(animdist < 100)
 {

	
		IF (my.hit_by_player == 1) 
		{
			my.move_x = player.move_x;
			my.move_y = player.move_y;
			my.move_z = player.move_z;
			while(player == NULL){wait(1);}
			
			c_move(my,nullvector,my.move_x,use_aabb | ignore_passable | glide);
			IF (player.animblend == blend || player.animblend < attack_a || my.animblend > attack_f) { my.hit_by_player = 0; }
		}
		 wait(1); 
		IF (player.animblend >= stand && target_enemy == my && player_lock_on == 0) && (player.animblend < attack_a || player.animblend > attack_f) { target_enemy = null; }
		IF (target_enemy == my && vec_dist(my.x,player.x) > 600) { target_enemy = null; }
		wait(1);

			if(my.health < -150)
			{

not_visiert();	
my.TRANSLUCENT = on;
my.alpha = 100;
my.enable_scan = off;
my.passable = on;
while(animdist < 100)
{
	
animdist += 5.5 * time_step; //gewünschte geschwindigkeit
ent_cycle("explo",animdist);
if(animdist > 15)
{

my.alpha -= 8;

}
wait(1);
}

			}

}
if(animdist > 100)
{

my.invisible = on;
animdist == 0;
Lade_c3();
}

}

function Kiste_Schaden
{

while(player == NULL){wait(1);}
while(1)
{


if(Player_hit_enemy == 1 && laenge < 6 )
{
if(player.animblend == attack_c)
{
	my.health = -160;
}
staerke=0;

if(player.animblend == attack_a && player.animate < 40 || player.animblend == attack_b && player.animate < 45)
{

my.x+=entfernung*cos(atk_pen)*time_step;
my.y+=entfernung*sin(atk_pen)*time_step; //schiesse ihn in die Richtung in die er schaut
my.z+=staerke*time_step; //lass ihn in die Luft fliegen
laenge += 3*time_step;
atk_once = 1;

}
else
{

	Player_hit_enemy = 0;
	laenge = 0;
	atk_once = 0;

} 
}
else
{

	Player_hit_enemy = 0;
	laenge = 0;
	atk_once = 0;

}

wait(1);
}
}



Es stehen ein paar Sachen drin die vollkommen unnötig sind dafür muss ich mich entschuldigen durch das ganze Rumprobieren herrscht dort einiges Durcheinander.

MFG Batman

Last edited by Ich_bin_Batman; 07/19/10 01:12.