hi !
das must du mit einem script machen !!! mach einfach einen neuen script und füge den script ein, speichere die datei im selben ordner wie das game als movement.wdl (sorry wenn ich dich unterschätze mit deinen 3dgs kentnissen ... und wenn sich das lächerlich anhört..) ! danach gehst du in deinen haupt script ! und fügst das gleich am anfang ein :
include<movement.wdl>;
also dann mal hier der script !! P.S.: du brauchst keine templates für das hier benutzen und ich würde auch keine benutzen... weis nicht ob der script mit den templates gleichzeitig läuft....

Weiters brauchst du nur noch einen Mauszeiger (arrow.pcx von den templates geht auch..) als dann wär das gute stück hier !! credits brauchst du nicht unbeding geben - aber cool wärs !
na dann CU und viel Erfolg für dein Game
P.S.: wenn du Probleme hast mit dem script schreib nur...
///////////////////////(c)2003
AuerMatthias@gmx.net ///////////////////////
function camera_move();
function init_skills();
var my_target[3];
var move_position[3];
var vecFrom[3];
var vecTo[3];
var move_dist[3];
var gravity_scan_height[3];
var gravity_scan_height_result;
bmap arrow = <arrow.pcx>;
function mouse_on()
{
MOUSE_MAP = arrow;
MOUSE_MODE += 2;
if (MOUSE_MODE > 2)
{
MOUSE_MODE=0;
}
while (MOUSE_MODE > 0)
{
MOUSE_POS.X = POINTER.X;
MOUSE_POS.Y = POINTER.Y;
wait(1);
}
}
function get_target()
{
init_skills();
mouse_to_level();
vec_set(my_target,target);
vec_set(move_position,target);
vec_sub(move_position,player.x);
if(mouse_left == 1)
{
vec_to_angle(player.pan,move_position);
}
player.tilt = 0;
}
function mouse_to_level()
{
if(mouse_left == 1)
{
vecFrom.X = MOUSE_POS.X;
vecFrom.Y = MOUSE_POS.Y;
vecFrom.Z = 10;
vec_set(vecTo,vecFrom);
vec_for_screen(vecFrom,CAMERA);
vecTo.Z = 5000;
vec_for_screen(vecTo,CAMERA);
return(trace(vecFrom,vecTo));
}
}
action player_move
{
player = me;
while (1)
{
get_target();
vec_set(gravity_scan_height,my.x);
gravity_scan_height.z -= 4000;
trace_mode = ignore_me + ignore_sprites + ignore_models + use_box;
gravity_scan_height_result = trace(my.x,gravity_scan_height);
if(gravity_scan_height_result > 5)
{
move_dist.z = -15 * time;
}
else
{
if(gravity_scan_height_result > 3)
{
move_dist.z = 0;
}
else
{
move_dist.z = 5*time;
}
}
if(mouse_left == 1)
{
move_dist.x = 15*time;
ent_cycle("walk", my.skill20);
my.skill20 += 4 * time;
my.skill20 %= 100;
}
else
{
move_dist.x = 0;
ent_cycle("stand", my.skill20);
my.skill20 += 2 * time;
my.skill20 %= 100;
}
move_mode = ignore_passable;
ent_move(move_dist.x,nullvector);
camera_move();
wait(1);
}
}