Gamestudio Links
Zorro Links
Newest Posts
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (AndrewAMD, SBGuy, TipmyPip, ozgur), 923 guests, and 6 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 4 of 8 1 2 3 4 5 6 7 8
Re: [REQ] converting a code to lite-c [Re: EvilSOB] #240934
12/13/08 13:49
12/13/08 13:49
Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
Cowabanga Offline OP
Expert
Cowabanga  Offline OP
Expert

Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
sorry but your function is bad, player can't jump with your function.

Re: [REQ] converting a code to lite-c [Re: Cowabanga] #240935
12/13/08 14:04
12/13/08 14:04
Joined: Nov 2007
Posts: 1,032
Croatia
croman Offline
Serious User
croman  Offline
Serious User

Joined: Nov 2007
Posts: 1,032
Croatia
that gravity is not a member of ENTITY problem try to solve with putting this define:
#define gravity skill70



Ubi bene, ibi Patria.
Re: [REQ] converting a code to lite-c [Re: croman] #240936
12/13/08 14:10
12/13/08 14:10
Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
Cowabanga Offline OP
Expert
Cowabanga  Offline OP
Expert

Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
ill try

Re: [REQ] converting a code to lite-c [Re: Cowabanga] #240938
12/13/08 14:17
12/13/08 14:17
Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
Cowabanga Offline OP
Expert
Cowabanga  Offline OP
Expert

Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
now player is flying, not falling, and can't jump.

Re: [REQ] converting a code to lite-c [Re: Cowabanga] #240941
12/13/08 14:43
12/13/08 14:43
Joined: Feb 2008
Posts: 3,232
Australia
EvilSOB Offline
Expert
EvilSOB  Offline
Expert

Joined: Feb 2008
Posts: 3,232
Australia
Unfortunately, thats what happens when you turn gravity off.


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial
Re: [REQ] converting a code to lite-c [Re: EvilSOB] #240946
12/13/08 15:05
12/13/08 15:05
Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
Cowabanga Offline OP
Expert
Cowabanga  Offline OP
Expert

Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
The gravity is ON, ON and ON

Re: [REQ] converting a code to lite-c [Re: Cowabanga] #240955
12/13/08 16:21
12/13/08 16:21
Joined: Oct 2004
Posts: 1,655
T
testDummy Offline
Serious User
testDummy  Offline
Serious User
T

Joined: Oct 2004
Posts: 1,655
pseudo-fixed, here (jump + fall)
with->
collision: model (not BSP)
version: Lite-C 7.50 (not full A7)

Code is and was a mess anyway.

Re: [REQ] converting a code to lite-c [Re: testDummy] #240958
12/13/08 16:55
12/13/08 16:55
Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
Cowabanga Offline OP
Expert
Cowabanga  Offline OP
Expert

Joined: Aug 2008
Posts: 2,838
take me down to the paradise c...
what do you mean?

Re: [REQ] converting a code to lite-c [Re: Cowabanga] #240968
12/13/08 17:39
12/13/08 17:39
Joined: Nov 2007
Posts: 1,032
Croatia
croman Offline
Serious User
croman  Offline
Serious User

Joined: Nov 2007
Posts: 1,032
Croatia
try with this gravity code:

Code:
//Gravity:
vec_set(temp, my.x); 
temp.z -= 1000; 
player_dist.z = -abs(c_trace (my.x, temp, IGNORE_ME | IGNORE_PASSABLE | USE_BOX));


it's from Peter Soxberg's (Dark_Samurai) code...and it works



Ubi bene, ibi Patria.
Re: [REQ] converting a code to lite-c [Re: croman] #241005
12/13/08 21:43
12/13/08 21:43
Joined: Oct 2004
Posts: 1,655
T
testDummy Offline
Serious User
testDummy  Offline
Serious User
T

Joined: Oct 2004
Posts: 1,655
player.c
Click to reveal..

Code:
#ifndef player_c
#define player_c
/////
//
//
#define nullframe	-2
#define blend		-1
#define stand		0
#define run			1
#define walk		2
#define jump		3
#define fall		4
#define attack_a	5
#define attack_b	6
#define attack_c	7
#define attack_d	8
#define attack_e	9
#define attack_f	10
//
#define move_x				skill22
#define move_y				skill23
#define move_z				skill24
#define force_x			skill25
#define force_y			skill26
#define force_z			skill27
#define velocity_x		skill28
#define velocity_y		skill29
#define velocity_z		skill30
#define animate			skill31
#define animate2			skill32
#define animblend			skill33
#define currentframe		skill34
#define blendframe		skill35
#define z_offset			skill50
#define jumping_mode		skill51
#define gravity			skill52
#define movement_mode	skill53
#define moving				skill54
#define hit_by_player	skill55
#define entity_type		skill56
//
//
function handle_animation(var animation_speed); 
function rotate_entity(var rotate_angle, var rotate_speed);
//
//
ENTITY* player_weapon;
ENTITY* target_enemy;
//
VECTOR* camera_move_to = { x=0;	y=0;	z=0; }
var camera_distance = 200;
var camera_pan;
var camera_tilt;
//
var space_press = 0;
var mouse_left_press = 0;
var mouse_right_press = 0;
var combo_continue = 0;
var player_lock_on = 0;
var airborne_attack = 0;
//
VECTOR* tempV = { x=0; 	 y=0; 	z=0; }
VECTOR* tempV2= { x=0; 	 y=0; 	z=0; }
ANGLE*  tempA = { pan=0; tilt=0; roll=0; }
ANGLE*  tempA2= { pan=0; tilt=0; roll=0; }
//
//
//
action attach_weapon()
{
	player_weapon = my;
	set(my,PASSABLE);
	proc_mode = PROC_LATE;
	while(you!=NULL) 
	{
		vec_for_vertex(tempV.x,  you, 1175);		//hand palm base
		vec_for_vertex(tempV2.x, you, 1240);		//hand palm tip
		vec_set(my.x, tempV.x);
		vec_diff(tempV.x, tempV2.x, tempV.x);
		vec_to_angle(tempA.pan, tempV.x);
		vec_set(my.pan, tempA.pan);
		wait(1);
	}
}
//
//

function handle_movement() 
{
	tempV.x = -1000;
	tempV.y = 0;
	my.moving = 0;
	if (key_w == 1 && key_s == 0 && key_a == 0 && key_d == 0) 	{ tempV.x = camera.pan; }
	if (key_s == 1 && key_w == 0 && key_a == 0 && key_d == 0) 	{ tempV.x = camera.pan + 180; }
	if (key_a == 1 && key_s == 0 && key_w == 0 && key_d == 0) 	{ tempV.x = camera.pan + 90; }
	if (key_d == 1 && key_s == 0 && key_a == 0 && key_w == 0) 	{ tempV.x = camera.pan - 90; }
	if (key_w == 1 && key_a == 1 && key_d == 0 && key_s == 0) 	{ tempV.x = camera.pan + 45; }
	if (key_w == 1 && key_d == 1 && key_a == 0 && key_s == 0) 	{ tempV.x = camera.pan - 45; }
	if (key_s == 1 && key_a == 1 && key_d == 0 && key_w == 0) 	{ tempV.x = camera.pan + 135; }
	if (key_s == 1 && key_d == 1 && key_a == 0 && key_w == 0) 	{ tempV.x = camera.pan - 135; }
	if (tempV.x != -1000) 
	{
		my.moving = 1;
		if (key_shift == 1)	{ tempV.y = 10 * time_step; } 
		else 						{ tempV.y = 15 * time_step; }
	}

	if (my.movement_mode == 0) 
	{
		my.move_x = fcos(tempV.x,tempV.y);
		my.move_y = fsin(tempV.x,tempV.y);
	}
	if (my.movement_mode == 1 || my.movement_mode == 2) 
	{
		tempV.y = fsin((my.animate * 1.2) + 45,15 * time_step);
		my.move_x = fcos(my.pan,tempV.y);
		my.move_y = fsin(my.pan,tempV.y);
		tempV.y = 0;
		if (tempV.x != -1000) 	tempV.y = 1;	//if we need to rotate whilst attacking (the player is pressing keys to rotate)
	}
	//
	c_move(my,nullvector,my.move_x, USE_AABB|IGNORE_PASSABLE|GLIDE);
	//
	//result = trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 4000));
	//if (result < 0)	{	my.z -= result;	my.velocity_z = 0;	}
	if (target_enemy == NULL) 
	{	
		if (tempV.y > 0) { rotate_entity(tempV.x,30); }		
	} 
	else 
	{
		vec_diff(tempV2.x,target_enemy.x,my.x);
		vec_to_angle(tempA2.pan,tempV2.x);
		rotate_entity(tempA2.pan,30);
	}
	//
	switch(my.movement_mode)
	{
 		case 0:		
			my.gravity = 6;
			if (my.move_x != 0 || my.move_y != 0) 		 //if we are moving
			{
				if (my.animblend == stand) //if our current animation is stand
				{ 
					if (key_shift == 1)	my.blendframe = walk; 
					else 						my.blendframe = run; 
				}
				if (my.animblend == run  && key_shift == 1)	my.blendframe = walk;
				if (my.animblend == walk && key_shift == 0)	my.blendframe = run; 
			} 
			else 
			{
				//if we arn't moving and our current animation is walk or run, blend and cycle the stand animation
				if (my.animblend > stand && my.animblend != jump && my.animblend != fall) 		my.blendframe = stand;
			}
			if (mouse_left == 0 && mouse_left_press == 1)	mouse_left_press = 0; 
			if (mouse_left == 1 && mouse_left_press == 0 && my.animblend >= stand) 
			{
				mouse_left_press = 1;
				my.blendframe = attack_a;
				if (my.jumping_mode == 1) 		airborne_attack = 1;
				else									airborne_attack = 0;
				my.movement_mode = 1;
				combo_continue = 0;
			}
			if (mouse_right == 0 && mouse_right_press == 1) 	mouse_right_press = 0;		///////////////
			if (mouse_right == 1 && mouse_right_press == 0) 
			{
				if (player_lock_on == 0) 
				{
					c_scan(player.x,player.pan,vector(360,180,250),SCAN_ENTS|SCAN_LIMIT|IGNORE_ME);
					if (you != NULL) 
					{
						if (you.entity_type == 2)  //make sure you've scanned an enemy
						{	player_lock_on = 1;		target_enemy = you;		}
					}
				} 
				else 
				{	player_lock_on = 0;		target_enemy = NULL;		}
				mouse_right_press = 1;
			}
			break;
 		case 1:		
			if (my.jumping_mode != 10) 									my.jumping_mode = 0;
			else if((my.animate >= 60)&&(my.animblend >= stand)) 	my.jumping_mode = 0; 
			if(mouse_left == 0 && mouse_left_press == 1) 			mouse_left_press = 0; 
			if(mouse_left == 1 && mouse_left_press == 0 && my.animate >= 30 && combo_continue == 0) 
			{	mouse_left_press = 1; 	combo_continue = 1; 	}
			break;
 		case 2:		
		my.jumping_mode = 0;
		if(mouse_left == 0 && mouse_left_press == 1)		mouse_left_press = 0;
		if(mouse_left == 1 && mouse_left_press == 0 && my.animate >= 30 && combo_continue == 0) 
		{		mouse_left_press = 1;		combo_continue = 1; 		}
		break;
	}
}
//
//
function handle_gravity() 
{
	result = c_trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 120),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);
	if(trace_hit == 0 && result == 0) { result = 120; }
	if(result<3) 
	{	
		//if(result<0)	result = c_trace(my.x,vector(my.x,my.y,my.z + 4000),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);	//!!FUDGE!! stop skyjumping
		//
		if(my.jumping_mode==0) 
		{
			my.force_z = -1 * result;
			if((key_space==0) && (space_press==1))	space_press = 0; 
			if((key_space==1) && (space_press==0) && (my.movement_mode==0) && (my.animblend>=stand) && (my.animblend!=jump) 	&& (my.animblend!=fall)) 
			{
				space_press = 1;
				my.jumping_mode = 1;
				my.force_z = 25;
				my.blendframe = jump;
				my.animate2 = 0;
				my.animblend = blend;
			}
		}
		if((my.jumping_mode==2) || (my.jumping_mode==3))	my.jumping_mode = 0;
	} 
	else 
	{
		if(my.jumping_mode==2) 
		{
			if(result>120) 
			{
				my.animate = 60;
				my.jumping_mode = 3;
			} 
			else	my.jumping_mode = 0;
		}
		if((my.jumping_mode==3) && (result<=120))		my.jumping_mode = 0;	
		if((my.jumping_mode==0) && (my.movement_mode==0))
		{
			if((result>120) && (my.animblend>=stand) && (my.animblend!=jump) && (my.animblend!=fall)) 
			{
				my.jumping_mode = 3;
				my.blendframe = fall;
				my.animate2 = 0;
				my.animblend = blend;
			}
		}
		my.force_z -= my.gravity * time_step;
		my.force_z = maxv(-30,my.force_z);
		if(my.movement_mode==2)		my.force_z = 0;
	}
 	my.velocity_z += (time_step * my.force_z) - (minv(time_step*0.7,1) * my.velocity_z);
	my.move_z = my.velocity_z * time_step;
}
//
//
//////////////////////////////
//Stable/rigid camera collision
//////////////////////////////
function handle_camera() 
{
	camera.pan -= mouse_force.x * 12 * time_step;
	camera.tilt += mouse_force.y * 8 * time_step;
	camera.tilt = clamp(camera.tilt,-30,10);
	tempA.pan = fcos(camera.tilt,-camera_distance);
	vec_set(camera.x,vector(my.x + fcos(camera.pan,tempA.pan),my.y + fsin(camera.pan,tempA.pan),my.z + 20 + fsin(camera.tilt,-camera_distance)));
	vec_diff(tempV.x,camera.x,my.x); 	//find the vector from the player to the camera
	vec_normalize(tempV.x,16); 			//get the magnitude of it's vector to 16 quants and store it in temp
	vec_add(tempV.x,camera.x); //add the vector (from player to camera) of a magnitude of 16 quants and add it to the camera's position.
	result = c_trace(my.x,tempV.x,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS);
	if(result > 0) 
	{
		vec_diff(tempV.x,my.x,target.x); //find the vector from the point the trace hit to the player
		vec_normalize(tempV.x,16); 		//get the magnitude of this vector to 16 quants and store in temp
		vec_set(camera.x,target.x);		//place the camera at the trace hit point
		vec_add(camera.x,tempV.x);			//move the camera away from the wall by the vector temp, 16 quants towards the player
	}
}
//
//
//////////////////////////////
//Smoother camera collision
//////////////////////////////
/*
function handle_camera() {
	camera_pan -= mouse_force.x * 12 * time_step;
	camera_tilt += mouse_force.y * 8 * time_step;
	camera_tilt = clamp(camera_tilt,-30,10);
	camera.pan = camera_pan;
	tempA.pan = fcos(camera_tilt,-camera_distance);
	vec_set(camera_move_to.x,vector(my.x + fcos(camera.pan,tempA.pan),my.y + fsin(camera.pan,tempA.pan),my.z + 20 + fsin(camera_tilt,-camera_distance)));
	var temp = minv(1,0.5 * time_step); //changing 0.5 will change how fast the camera moves, at 1 places us at target, this value is what allows the smooth movement
	camera.x += temp*(camera_move_to.x - camera.x);
	camera.y += temp*(camera_move_to.y - camera.y);
	camera.z += temp*(camera_move_to.z - camera.z);
	vec_diff(tempV.x,camera.x,my.x);
	vec_normalize(tempV.x,16);
	vec_add(tempV.x,camera.x);
	if (c_trace(my.x,tempV.x,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS) > 0) {
		vec_diff(tempV.x,my.x,target.x);
		vec_normalize(tempV.x,16);
		vec_set(camera.x,target.x);
		vec_add(camera.x,tempV.x);
	}
	vec_diff(tempV.x,my.x,camera.x);
	vec_to_angle(camera.pan,tempV.x);
}
*/
//
//
function rotate_entity(var rotate_angle, var rotate_speed)
{
	if(my.pan == rotate_angle)			return;
	result = ang(rotate_angle - my.pan);
	if (result > 0)		my.pan += rotate_speed * time_step;
	if (result < 0)		my.pan -= rotate_speed * time_step; 
	if ((ang(rotate_angle - my.pan) < 0) && (result > 0))	my.pan = rotate_angle; 
	if ((ang(rotate_angle - my.pan) > 0) && (result < 0))	my.pan = rotate_angle; 
}
//
//
function handle_sword_collision()
{
	you = NULL;
	vec_for_vertex(tempV.x, player_weapon,274); //sword base
	vec_for_vertex(tempV2.x,player_weapon, 54); //sword tip
	result = c_trace(tempV.x,tempV2.x,IGNORE_ME|IGNORE_PASSABLE|USE_BOX);
	if (you != NULL) {
		if ((you.entity_type == 2) && (you.hit_by_player == 0))
		{
			if (airborne_attack == 1 && my.animblend == attack_a) 	my.movement_mode = 2;
			you.hit_by_player = 1;
			if (target_enemy == NULL)		{	target_enemy = you; 		player_lock_on = 1; 	}
		}
	}
}
//
//
action player_action()
{
	c_setminmax(me);					//added to correct ground collisions
	wait(1);								//added to correct ground collisions
	player = me;
	my.gravity = 6;
	my.z_offset = -my.min_z;		//was 6	//added to correct ground collisions
	set(my,SHADOW);
	ent_create("sword.mdl", my.x, attach_weapon);
	wait(1);
	while(1) 
	{ //the main loop
		handle_gravity();
		handle_movement();
		handle_animation(1);
		handle_camera();
		wait(1);
	}
}
//
//
/////
#endif



Page 4 of 8 1 2 3 4 5 6 7 8

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1