Hallo,

ich habe wieder mal ein Problem bezüglich des Updates meiner 3dgs-Version. Habe von Version 6.1 auf 6.6 upgedatet.

Probleme habe ich mit einem älteren AUM-Script. Ausgangslage ist diese. Ich habe das Pfeil und Bogen Script verwendet. ES wird ein Pfeil an der Player temp Position erzeugt und dann in Richtung Gegner bewegt. Wenn der Gegner von dem Pfeil getroffen wird, verliert er Lebensenergie. Das funtionierte auch unter Version 6.1.

Unter Version 6.6 bleibt der Pfeil in der Hülle des Gegners stecken und der Gegner bleibt stehen, da er vom Pfeil blockiert wird. Hier poste ich mal die entscheidenden Teile des Scripts. Ich bin im Handbuch auf eine Anwesiung my.polygone=on gestoßen, konnte die aber nicht in der Befehlsübersicht finden.

Hiermit bewege ich den Pfleil. Der wird auf Tastendruck an der Player Temp-Position erstellt (ent_create).

Zitat:
function move_arrow()
{
wait (1);
my.push = -1;
my.ENABLE_PUSH = ON;
my.event = hurt_you;
my.passable = on;
my.pan = camera.pan;
my.tilt = camera.tilt;

my.skill12 = 50; // skill12, 13, 14 act like a var
my.skill13 = 0;
my.skill14 = 0;
my.skill12 *= time;
while (my.skill12 != 0) // moves until it hits something
{
if (vec_dist (my.x, player.x) < 100) {my.passable = on;}
// don't collide with the player
else {my.passable = off;}
ent_move (my.skill12, nullvector);
wait (1);
}
}




Das ist die event-Funktion die ausgelöst werden soll.

Zitat:
function hurt_you()
{
wait (1);
if (event_type == EVENT_PUSH)


{
my.skill12 = 0; // stop moving
you.skill5 -= 80; // damage = 80;
ent_remove (me);wait (1);
}
//if (event_type == event_block)
//{
// my.skill12 = 0; // stop the arrow
// my.passable = on; // the arrow won't move from now on so it shouldn't stand in our way
// }
}




Hier die Bewegung des Gegners.

Zitat:
...............

skeleton_speed.x = 3 * time;
skeleton_speed.y = 0;
vec_set (trace_temp, my.x);
trace_temp.z -= 10000;
trace_mode = ignore_me + use_box;
skeleton_speed.z = -trace (my.x, trace_temp.x) - 1; // place skeleton's feet on the ground
move_mode = ignore_passable + ignore_passents;
ent_move(skeleton_speed, nullvector);


...............



Vielleicht seht ihr ja den Fehler

GRuß, grinseengel


http://www.3dgs-hobbyschmiede.de