9.0 Ein Script dafür das ein Npc einen solange folgt bis schließlich flag1 auf 1 gesetzt wird! 

Dieser Script wird noch erweitert! Es kommt noch dazu das sich der Npc wehrt und den Spieler hilft!

entity* freund;//Zeiger Defination

var move_vec[3];//Move Vector
var radi[3];

define anim_skill, skill9;
define leben, skill21;
////////////////////////////////////////////////////////////////////////////////////
//Funktionen mit einen Parameter//
//////////////////////////////////
//Diese Funktion erlaubt einer Entity zu einer anderen zu drehen
entity* actor;//Wer soll sich drehen
entity* whom;
entity* ent_turn;

function actor_turn(whom, actor_to, turn_speed_actor)
{
ent_turn = whom;
actor = actor_to;
vec_set(temp, actor.x);
vec_sub(temp, ent_turn.x);
vec_to_angle(ent_turn.pan, temp);
}
/////////////////////////////////////////////////////////////////////////////////////
//Diese funktion animiert eine Entity
string string_put[10];
string string_var[10];
var anim_speed;

function ent_anim(string_put, anim_speed)
{
str_cpy(string_var, string_put);
ent_cycle(string_var, my.anim_skill);
my.anim_skill += anim_speed * time;
if(my.anim_skill > 100) { my.anim_skill -= 100;}
}
/**********************************************************************************/
//Gravitation Script
var vec_senken[3];

define fall_geschwindigkeit, skill3;//Anzihungs Geschwindigkeit
define boden_distanz, skill2;//Boden entfehrnung


function gravitation()
{
while(1)//Wiederhole Endlos
{

vec_set(temp, my.x);//Kopire my.x in temp
temp.z -= 5000;// Subrachiere 5000 von temp

trace_mode = ignore_me + ignore_passable + ignore_models + ignore_sprites + use_box;//Trace Anweisung
my.boden_distanz = trace(my.x, temp);//Trace von my.x 5500 Quants nach unten
//Wenn die Boden entfehrnung größer als 5 ist, und mein Fallschm zu ist, und die Sprung höhe erreicht ist, Gehe nach unten
if (my.boden_distanz > 5) { my.fall_geschwindigkeit = - 4;}

if(my.boden_distanz <= 5)
{
my.fall_geschwindigkeit = 0;
my.z -= my.boden_distanz;
}

//Bewege den Player nach unten
vec_senken.z = my.fall_geschwindigkeit;
move_mode = ignore_you + ignore_passable + ignore_sprites + glide;
ent_move(vec_senken, nullvector);
wait(1);
}
}
////////////////////////////////////////////////////////////////////////////////////
//Action Wegbegleiter

action wegbegleiter_01
{
freund = my;//Entity Zeiger
my.leben = 100;

gravitation();//Schaltet die Gravitation ein

while(my.leben > 0)
{

if(my.flag1 != on)
{

if(vec_dist(my.x, player.x) <= 1000) && (vec_dist(my.x, player.x) > 200)
{
actor_turn(my, player, 8);//Dreht die Entity zum Player

move_vec.x = 8 * time;//Geschwindiglkeit nach vorne
move_vec.y = 0;//Keine Seitlichen Bewegungen
move_vec.z = 0;//behalte deine Höhe

ent_move(move_vec, nullvector);//Bewegt die Entity nach vorne

ent_anim("walk", 15);//Spielt eine Loop animation ab 
}

if(vec_dist(my.x, player.x) > 1000)
{
ent_anim("stand", 15);//Spielt eine Loop animation ab 
}

if(vec_dist(my.x, player.x) <= 200)
{
actor_turn(my, player, 8);//Dreht die Entity zum Player
ent_anim("stand", 10);//Spielt eine Loop animation ab 
}
}
wait(1);

}