rehash sample only
-- untested, probably contains faults
-- primary fault with original code
---- incorrect use of vec_set instructions?
------ vec_set sets all three elements of VECTOR x,y,z, using pointer to first element x of source VECTOR?
------ do not vec_set(v.y, -), vec_set(v.z, -)
Code:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>        ///////////////////////////////////TWO CAMERA CODE/////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define look_ship 1
#define look_ranger 0

ENTITY* pl_ship;
ENTITY* pl_ranger;
ENTITY* player1;
var look = 1;

function camera_walking();
function camera_ship();

action act_ship() {
	pl_ship = me;
	me.ambient = 10;
	while(pl_ranger == NULL) { wait(1); }
	while(me != NULL) {
		if (player1 == me) {
			reset(me, PASSABLE);
			camera_ship();
			if (key_o) { // key_o sets to ranger mode
				player1 = pl_ranger; 
				set(me, PASSABLE);	// set ship to PASSABLE so ranger doesn't get stuck
			}
			if (key_z) {me.pan += 3*time_step;}
			if (key_x) {me.pan -= 3*time_step;}
			if (key_a){c_move (me,vector( 5,0,0),nullvector,GLIDE);}
			if (key_s){c_move (me,vector( -5,0,0),nullvector,GLIDE);}
			if (key_q){c_move (me,vector( 0,0,1),nullvector,GLIDE);}
			if (key_e){c_move (me,vector( 0,0,-1),nullvector,GLIDE);}
			if (key_c) {me.tilt += 3*time_step;}
			if (key_v) {me.tilt -= 3*time_step;}
			if (key_r) {me.roll -= 3*time_step;}
			if (key_t) {me.roll += 3*time_step;}
		}
		wait(1);
	}
}

action act_ranger() {
	pl_ranger = me;
	me.ambient = 10;
	while(pl_ship == NULL) { wait(1); }
	while(me != NULL) {
		if (player1 == NULL) { player1 = me; }		// defaults to pl_ranger
		if (player1 == me) {
			reset(me, PASSABLE);
			reset(me, INVISIBLE);
			camera_walking();
		
			if (key_k){c_move (me,vector( 5,0,0),nullvector,GLIDE);}
			if (key_l){c_move (me,vector( -5,0,0),nullvector,GLIDE);}
			if (key_h) {me.pan += 3*time_step;}
			if (key_j) {me.pan -= 3*time_step;}
			c_move (me,vector(0,0,-.5),nullvector,GLIDE);
			if (key_p) {	// key_p sets to ship mode
				player1 = pl_ship;
				set(me, PASSABLE | INVISIBLE);	// hide ranger
			}
		}
		wait(1);
	}
}

function main() {
	player1 = NULL;
	video_screen = 1;
	video_mode = 7;
	max_entities = 1000; // alows up to 1000 Entities. 
	level_load ("place.wmb");
	wait(3);
	
	ent_create("ship.mdl", vector(-3000, 0, 60), act_ship);
	ent_create("ranger.mdl", vector(100, 0, 30), act_ranger);
}	

function camera_ship() {
	if (player1 == NULL) { return 0; }
	// move the camera together with the player1 entity
	vec_set(camera.x, player1.x);
	vec_set(camera.pan, player1.pan);
}


function camera_walking() {
	if (player1 == NULL) { return 0; }
	// move the camera together with the player1 entity
	vec_set(camera.x, vector(player1.x, player1.y, player1.z + 50));
	vec_set(camera.pan, player1.pan);	
}




Last edited by testDummy; 09/29/09 19:12. Reason: 2009.09.29a syntax error