Massassi Forums Logo

This is the static archive of the Massassi Forums. The forums are closed indefinitely. Thanks for all the memories!

You can also download Super Old Archived Message Boards from when Massassi first started.

"View" counts are as of the day the forums were archived, and will no longer increase.

ForumsCog Forum → A very complex cog (my latest pet project) that needs very complex help
12
A very complex cog (my latest pet project) that needs very complex help
2002-07-27, 10:10 AM #41
Here's how I'd do it.
Code:
# armyo.cog
#
# Lord_Grismath (GrismathDynasty@hotmail.com) + [DP&SM]
symbols

message   startup
message   damaged
message   killed
message   touched
message   playeraction

thing     com0
thing     com1
thing     com2
thing     com3
thing     telething
thing     tghost                 local

vector    tempvec                local
vector    tempvec2               local
vector    motionVector           local

model     tmodel                 local

template  ghtemp=ghost           local
template  camera_tpl=+FarSight   local
template  comTemp0
template  comTemp1
template  comTemp2
template  comTemp3

int       player                 local
int       X=0                    local
int       poss=0                 local
int       comnum=-1              local
int       camera=-1              local

flex      thealth=0              local
flex      tempflex               local

end
#==============================================================#
code
#------------------------------------------------------
startup:
	Sleep(1);
	player = GetLocalPlayerThing();
	Print("Generalship Cog Implemented");
	call goto_camera;
Return;
#------------------------------------------------------
damaged:
	if(GetThingHealth(player) < 1)
	{
		SetThingHealth(player, 100);
		call return_player;
		poss = 0;
		ReturnEx(0);
	}
Return;
#------------------------------------------------------
playeraction:
	if(poss)
	{
		ReturnEx(0);
		Return;
	}
	if(GetParam(0) == 0)	//Jumping
	{
		tempflex = 0;
		// Only allow motion at one speed. i.e. disable running
		if(GetParam(2) != 0) tempflex = 2.8;
		motionVector = VectorSet(VectorX(motionVector), tempflex, VectorZ(motionVector));
		ReturnEx(0);
	}
	else if(GetParam(0) == 1)	// Crouching
	{
		tempflex = 0;
		if(GetParam(2) != 0) tempflex = 2.8;
		motionVector = VectorSet(VectorX(motionVector), -tempflex, VectorZ(motionVector));
		ReturnEx(0);
	}
	else if(GetParam(0) == 2)
	{
		// Activation will be allowed, since you're possessing a character.
		// call stop_power;
		// ReturnEx(0);
	}
	else if(GetParam(0) == 3)
	{
		// Firing is also allowed
		// ReturnEx(0);
	}
	else if(GetParam(0) == 4)	// Strafe
	{
		motionVector = VectorSet(GetParam(2), VectorY(motionVector), VectorZ(motionVector));
		ReturnEx(0);
	}
	else if(GetParam(0) == 5)	// Turn
	{
		tempvec = GetThingRotVel(camera);
		tempvec = VectorSet(VectorX(tempvec), GetParam(2), VectorZ(tempvec));
		SetThingRotVel(camera, tempvec);
		ReturnEx(0);
	}
	else if(GetParam(0) == 6)	// Fwd / Bkwd Motion
	{
		motionVector = VectorSet(VectorX(motionVector), VectorY(motionVector), GetParam(2));
		ReturnEx(0);
	}
	else if(GetParam(0) == 8)	// Pitch
	{
		tempvec = GetThingLVecPYR(camera);
		tempflex = VectorX(tempvec) + GetParam(1) / 100;
		// Limit the pitch vector (flipping over doesn't work right...)
		if(tempflex < -80) tempflex = -80;
		else if(tempflex > 80) tempflex = 80;
		tempvec = VectorSet(tempflex, VectorY(tempvec), VectorZ(tempvec));
		SetThingLookPYR(camera, tempvec);
		ReturnEx(0);
	}
	else if(GetParam(0) == 10)	// Select Inventory Item
	{
		ReturnEx(0);
	}
	else if(GetParam(0) == 11)	// Select Skill
	{
		ReturnEx(0);
	}
	else if(GetParam(0) == 12)	// Use Inventory Item
	{
		ReturnEx(0);
	}
	else if(GetParam(0) == 13)	// Use Skill
	{
		ReturnEx(0);
	}
	else if(GetParam(0) == 14)	// Other Actions
	{
		if(GetParam(2) == 0)	// Cycle Camera
		{
			Print("3rd person only...wraa");
			ReturnEx(0);	// This ReturnEx() is useless.
		}
		ReturnEx(1);
	}
	else
	{
		ReturnEx(0);
	}
	// Add up the various velocities.
	tempvec = GetThingLVec(camera);
	tempvec = VectorScale(tempvec, VectorZ(motionVector) / 3);
	tempvec2 = GetThingUVec(camera);
	tempvec2 = VectorScale(tempvec2, VectorY(motionVector) / 3);
	tempvec = VectorAdd(tempvec, tempvec2);
	tempvec2 = GetThingRVec(camera);
	tempvec2 = VectorScale(tempvec2, VectorX(motionVector) / 3);
	tempvec = VectorAdd(tempvec, tempvec2);
	SetThingVel(camera, tempvec);
Return;
#------------------------------------------------------
goto_camera:
	Print("Camera Activating...");
	motionVector = VectorSet(0, 0, 0);
	camera = FireProjectile(player, camera_tpl, -1, -1, '0 06 02', '0 0 0', 0, 0, 0, 0);
	SetThingLook(camera, GetThingLVec(player));
	SetCurrentCamera(0);
	SetCameraFocus(0, camera);
	TeleportThing(player, telething);
	StopThing(player);
	SetActionCog(GetSelfCog(), 0x7FFFFFFF);
	poss = 0;
	Print("Camera Activated");
Return;
#------------------------------------------------------
killed:
	if(GetSenderRef() != player) Return;
	return_player:
	if(poss == 1)
	{
		tghost = CreateThing(ghtemp, player);
		tmodel = GetThingModel(player);
		thealth = GetThingHealth(player);
		TeleportThing(player, telething);
		com0[comnum] = CreateThing(comTemp0[comnum], tghost);
		SetThingHealth(com0[comnum], thealth);
		Call stop_camera;
	}
	Return;
	stop_camera;
	SetCameraFocus(0, player)
	SetCurrentCamera(1);
	DestroyThing(camera);
	SetActionCog(-1, 0);
Return;
#------------------------------------------------------
touched:
	for(X = 0; X < 4; X = X + 1)
	{
		if(GetSenderRef() == com0[X])
		{
			if(GetThingHealth(com0[X]) > 0)
			{
				tmodel = GetThingModel(com0[X]);
				thealth = GetThingHealth(com0[X]);
				SetThingModel(player, tmodel);
				SetThingHealth(player, thealth);
				TeleportThing(player, com0[X]);
				DestroyThing(com0[X]);
				poss = 1;
				comnum = X;
				call stop_camera;
			}
		}
	}
Return;
#------------------------------------------------------
end
Try that. I dunno exactly how you want it to run.

------------------
The Sniper Missions. Current project, The Sniper Missions

The Magician Saber System.

[This message has been edited by Descent_pilot (edited July 27, 2002).]
Major projects working on:
SATNRT, JK Pistol Mod, Aliens TC, Firearms

Completed
Judgement Day (HLP), My level pack
2002-07-27, 2:34 PM #42
...could you please tell me what you've changed?
Cordially,
Lord Tiberius Grismath
1473 for '1337' posts.
2002-07-27, 5:51 PM #43
  • Pulse -> Damaged
  • Changed the stop_camera stuff
  • Other small things that are needed.
Try it, it might just work. [http://forums.massassi.net/html/wink.gif]

------------------
The Sniper Missions. Current project, The Sniper Missions

The Magician Saber System.
Major projects working on:
SATNRT, JK Pistol Mod, Aliens TC, Firearms

Completed
Judgement Day (HLP), My level pack
12

↑ Up to the top!