Here is a good obstacle avoidance. I cant give credits, but its not written by myself...iam pretty sure ^^
Code:
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
function camera_setup()
{
	vec_set(camera.x,vector(0,-580,720));
	vec_set(camera.pan,vector(90,-50,0));
	vec_set(d3d_lodfactor,vector(12.5,25,50)); 
	sun_light = 0;
	camera.clip_near = 0;
	camera.clip_far = 4000;
	camera.fog_start = 100; 
	camera.fog_end = 4000; 
	fog_color = 4;
	d3d_fogcolor4.red = 150; 
	d3d_fogcolor4.green = 150; 
	d3d_fogcolor4.blue = 150;
	sky_color.red = d3d_fogcolor4.red; 
	sky_color.green = d3d_fogcolor4.green; 
	sky_color.blue = d3d_fogcolor4.blue; 
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
function main()
{
	warn_level = 6;
	fps_max = 60;
	video_set(800,600,32,0);
	freeze_mode = 1;
	level_load("1.WMB");
	wait(3);
	freeze_mode = 0;
	camera_setup();
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
ENTITY* target_ent;
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
action target_act()
{
	target_ent = my;
	set(my,TRANSLUCENT|POLYGON);
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
#define trace_hit1 skill69
#define trace_hit2 skill70

action zombie_act()
{
	VECTOR temp_vec; 
	VECTOR content_left; 
	VECTOR content_right;
	ANGLE temp_angle;
	while(!target_ent){wait(1);}
	wait(1);
	c_setminmax(my);
	set(my,TRANSLUCENT|POLYGON);
	while(1)
	{
		draw_text("BASIC OBSTACLE AVOIDANCE",10,10,COLOR_WHITE);
		if(c_trace(my.x,content_right,IGNORE_ME|USE_POLYGON|IGNORE_PASSABLE) + c_trace(my.x,content_left,IGNORE_ME|USE_POLYGON|IGNORE_PASSABLE) == 0)
		{
			
			vec_set(temp_vec,target_ent.x);  
			vec_sub(temp_vec,my.x); 
			vec_to_angle(temp_angle,temp_vec);
			if(ang(temp_angle.pan - my.pan) < -2 | ang(temp_angle.pan - my.pan) > 2)
			{
				my.pan += sign(ang(temp_angle.pan - my.pan)) * time_step * 7;
			}
		}
		vec_set(content_right,vector(35,-20,0));
		vec_rotate(content_right,my.pan);
		vec_add(content_right,my.x);
		draw_line3d(my.x,NULL,100);
		draw_line3d(my.x,COLOR_RED,100);
		draw_line3d(content_right.x,COLOR_RED,100);
		if(c_trace(my.x,content_right,IGNORE_ME|USE_POLYGON|IGNORE_PASSABLE) != 0 && c_trace(my.x,content_left,IGNORE_ME|USE_POLYGON|IGNORE_PASSABLE) == 0)
		{
			my.trace_hit1 = 1;
			my.pan += 10 * time_step; 
		}
		vec_set(content_left,vector(35,20,0));
		vec_rotate(content_left,my.pan);
		vec_add(content_left,my.x);
		draw_line3d(my.x,NULL,100);
		draw_line3d(my.x,COLOR_RED,100);
		draw_line3d(content_left.x,COLOR_RED,100);
		if(c_trace(my.x,content_left,IGNORE_ME|USE_POLYGON|IGNORE_PASSABLE) != 0 && c_trace(my.x,content_right,IGNORE_ME|USE_POLYGON|IGNORE_PASSABLE) == 0)
		{
			my.trace_hit2 = 1;
			my.pan -= 10 * time_step; 
		}
		if(vec_dist(my.x,target_ent.x) > 70)
		{
			c_move(my,vector(10 * time_step,0,0),nullvector,IGNORE_PASSABLE|GLIDE);
		}
		
		if (my.trace_hit2 && my.trace_hit1) my.pan=random(360);
		my.trace_hit1=0;
		my.trace_hit2=0;
		wait(1);
	}
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////


Edit: works like a charm.
Edit2: with good oa i meant "not bad, good 4 basic"

Last edited by rayp; 08/29/13 01:47.

Acknex umgibt uns...zwischen Dir, mir, dem Stein dort...
"Hey Griswold ... where u gonna put a tree that big ?"
1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected
rayp.flags |= UNTOUCHABLE;