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 → Complicated Cog Errors
Complicated Cog Errors
2001-03-31, 6:37 PM #1
For the past month I've been working on a JK TC. The main feature of it will be a MotS-style weapons system. Instead of pressing a number twice, you use a hotkey to switch to the secondary weapon.

However, I am not the best with cogs and I've run into an error with the fists cog I don't know how to fix.

First of all, here's the weap_fists cog:
Code:
# Jedi Knight Cog Script
# 
#This cog is Not supported by LEC.


symbols

#Models#

model	povModel1=fistv.3do					local
model	weaponMesh1=fistg.3do				local

model	povModel2=vibrov.3do					local
model	saberMesh2=vibrog.3do					local

# POV Keyframes#

keyframe	FpovfireAnim1=FistVl.key				local
keyframe	FpovfireAnim2=FistVr.key				local

keyframe	mountAnim=SabVmnt.key				local
keyframe dismountAnim=SabVdis.key				local
keyframe holdAnim=SabVhold.key					local
keyframe povSnapAnim1=SabVf1.key				local
keyframe povSnapAnim2=SabVf2.key				local
keyframe povSnapAnim3=SabVf1.key				local
keyframe povPreFireAnim=SabVrdy.key			local
keyframe povFireAnimF1=SabVsnp1.key			local
keyframe povFireAnimF2=SabVsnp2.key			local
keyframe povFireAnimB1=SabVb1.key				local
keyframe povFireAnimB2=SabVb2.key				local
keyframe povFireAnimL1=SabVl1.key				local
keyframe povFireAnimR1=SabVr1.key				local
keyframe povChargeAnim=SabVch.key				local

# External Keyframes#

keyframe	FmountAnim=FistVmnt.key				local
keyframe	FdismountAnim=FistVdis.key				local
keyframe	kick=kick.key							local

keyframe preFireAnimL=KYreadyl.key				local
keyframe preFireAnimR=KYreadyr.key				local
keyframe fireAnimF1=KYsnap1.key				local
keyframe fireAnimF2=KYsnap2.key				local
keyframe fireAnimB1=KYsabrb1.key				local
keyframe fireAnimB2=KYsabrb2.key				local
keyframe fireAnimL1=KYsabrl1.key				local
keyframe fireAnimR1=KYsabrr1.key				local
keyframe snapAnim1=KYsabrf1.key				local
keyframe snapAnim2=KYsabrf2.key				local
keyframe snapAnim3=KYsabrf1.key				local
keyframe chargeAnim=KYcharge.key				local
keyframe	holsterAnim=kyhlstr.key					local

#Sounds#

sound	fireSound1=SwingFist01.wav			local
sound	fireSound2=SwingFist04.wav			local

sound	dismountSound=putweaponaway01.WAV	local
sound	mountSound=kyhlstr.WAV				local
sound	hitSound01=kn1.WAV					local
sound	hitSound02=kn2.WAV					local
sound	hitSound03=kn3.WAV					local
sound	hitSound12=kn4.WAV					local
sound	hitSound14=kn5.WAV					local

sound	Smallswing=vibroreg.WAV				local
sound	Bigswing=vibrobig.WAV			local

#Templates#

template	projectile=+punch						local
template	kickproj=+kickproj						local

template	tpl_wall=+ssparks_wall					local
template	tpl_blood=+ssparks_blood				local
template	tpl_saber=+ssparks_saber				local

#Things#

thing		player								local

#Cogs#

cog		kyleCog								local

#Flex#

flex		leftWait=0.25							local
flex		rightWait=0.25							local
flex		FmountWait							local
flex		FholsterWait							local

flex		holsterWait							local

#Integers#

int		trackID=-1							local
int		nextAnim=0							local
int		FholsterTrack							local

int		assign								local
int		nosaber								local
int		mountAnimID							local
int		preAnimID							local
int		povPreAnimID							local
int		slashAnimID							local
int		povSlashAnimID						local
int		mode								local
int		slash								local
int		nextAttack							local    # 0=right 1=left
int		holsterTrack							local
int		vibrofists=119							local
int		firsttime1=1							local
int		stopchang1							local
int		desel1=0								local
int		lastweap1=0							local
int		knifewait								local

#Messages#

message	startup
message	activated
message	deactivated
message	selected
message	deselected
message	newplayer
message	autoselect
message	timer
message	fire
message	user3
message	loadlast
message	changeselect

end

# =============================================

code

startup:
   player = GetLocalPlayerThing();
   kyleCog = GetThingClassCog(player);
   ClearActorFlags(player, 0x2000);
   jkDisableSaber(player);

   leftWait     = GetKeyLen(FpovfireAnim1);
   rightWait    = GetKeyLen(FpovfireAnim2);
   FmountWait    = GetKeyLen(FmountAnim);

   Return;

#===========================================

fire:

if(!getinv(player, vibrofists))
{   

   if(mode == 0)
   {
   // Check that the player is still alive.
   if(GetThingHealth(player) <= 0)
   {
      Return;
   }

   // Alternate fists.
   if(nextAnim == 0)
   {
      SetPOVShake('-0.01 -.01 0.0', '1.0 0.0 0.0', .05, 80.0);
      PlaySoundThing(fireSound1, player, 1.0, 0.5, 2.5, 0x80);
      FireProjectile(player, projectile, -1, 8, '-0.02 0.03 0', '0 0 0', 1.0, 0, 0.0, 0.0);
      SetFireWait(player, leftWait);
   }
   else
   {
      SetPOVShake('0.01 -.01 0.0', '1.0 0.0 0.0', .05, 80.0);
      PlaySoundThing(fireSound1, player, 1.0, 0.5, 2.5, 0x80);
      FireProjectile(player, projectile, -1, 18, '0.02 0.03 0', '0 0 0', 1.0, 0, 0.0, 0.0);
      SetFireWait(player, rightWait);
   }

   jkPlayPOVKey(player, FpovfireAnim1[nextAnim], 1, 0x0a);
   nextAnim = 1-nextAnim;
}
if(mode == 1)
{
   player = GetLocalPlayerThing();
   SetPOVShake('0.03 -.03 0.0', '3.0 0.0 0.0', .05, 80.0);
   PlaySoundThing(firesound2, player, 1.0, 0.5, 2.5, 0x80);
   jkPlayPOVKey(player, FpovfireAnim1, 2, 0x32);
   PlayKey(player, kick, 1, 0x38);
   SetTimerEx(0.4, 5, 0, 0);
}
}

if(getinv(player, vibrofists))
{
	// Stop block animations, by sending a message to kyle.cog.
	SendMessage( kyleCog, user0 );

	// Underwater saber attacks.
	if (GetMajorMode(player) == 5)
	{
		jkEnableSaber( player, 20, 0.12, 0.25 );
		
		if (nextAttack == 0)
		{
			PlayMode( player, 8);
			jkPlayPOVKey( player, povFireAnimR1, 2, 0x38 );
			knifewait = getkeylen(povfireanimr1);
			nextAttack = 1;
		}
		else
		{
			PlayMode( player, 18);
			jkPlayPOVKey( player, povFireAnimL1, 2, 0x38 );
			knifewait = getkeylen(povfireaniml1);
			nextAttack = 0;
		}

		shakePos = VectorScale(RandVec(),.001);
		shakeAngle = VectorScale(RandVec(),.5);
		SetPOVShake(shakePos, shakeAngle, .05, 80.0);
		SetFireWait(player, knifewait);
		PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
	}
	else
	{
		mode = GetSenderRef();
		if (mode == 0)
		{
			// If we do another attack, reset the quick slash counter.
			thrust = GetThingThrust( player );
	
			// RIGHT Regular Strike
			if (VectorX(thrust) > 0)
			{
				jkEnableSaber( player, 20, 0.1, 0.25 );
	
				jkPlayPOVKey( player, povFireAnimR1, 2, 0x38 );
				PlayKey(player, fireAnimR1, 1, 0x38);
				knifewait = getkeylen(fireanimr1);
				shakePos = VectorScale(RandVec(),.001);
				shakeAngle = VectorScale(RandVec(),.5);
				SetPOVShake(shakePos, shakeAngle, .05, 80.0);
				PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
				SetFireWait(player, knifewait);
			}
			else
			// LEFT Regular Strike
			if (VectorX(thrust) < 0)
			{
				jkEnableSaber( player, 20, 0.1, 0.25 );
				jkPlayPOVKey( player, povFireAnimL1, 2, 0x38 );
				PlayKey(player, fireAnimL1, 1, 0x38);
				knifewait = getkeylen(fireaniml1);
				shakePos = VectorScale(RandVec(),.001);
				shakeAngle = VectorScale(RandVec(),.5);
				SetPOVShake(shakePos, shakeAngle, .05, 80.0);
				PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
				SetFireWait(player, knifewait);
			}
			else
			// BACKWARDS Strike
			if (VectorY(thrust) < -0.1)
			{
				jkEnableSaber( player, 20, 0.1, 0.25 );
	
				if (nextAttack == 0)
				{
					jkPlayPOVKey( player, povFireAnimB1, 2, 0x38 );
					PlayKey(player, fireAnimB1, 2, 0x38);
					knifewait = getkeylen(fireanimb1);
					nextAttack = 1;
				}
				else
				{
					jkPlayPOVKey( player, povFireAnimB2, 2, 0x38 );
					PlayKey(player, fireAnimB2, 2, 0x38);
					knifewait = getkeylen(fireanimb2);
					nextAttack = 0;
				}
				shakePos = VectorScale(RandVec(),.001);
				shakeAngle = VectorScale(RandVec(),.5);
				SetPOVShake(shakePos, shakeAngle, .05, 80.0);
				PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
				SetFireWait(player, knifewait);
			}
			else
			// STANDING Strike
			if (VectorY(thrust) < 0.1)
			{
				jkEnableSaber( player, 20, 0.1, 0.7 );
	
				if (nextAttack == 0)
				{
					jkPlayPOVKey( player, povFireAnimF1, 2, 0x38 );
					PlayKey(player, fireAnimF1, 2, 0x38);
					knifewait = getkeylen(fireanimf1);
					nextAttack = 1;
				}
				else
				{
					jkPlayPOVKey( player, povFireAnimF2, 2, 0x38 );
					PlayKey(player, fireAnimF2, 2, 0x38);
					knifewait = getkeylen(fireanimf2);
					nextAttack = 0;
				}
	
				shakePos = VectorScale(RandVec(),.001);
				shakeAngle = VectorScale(RandVec(),.5);
				SetPOVShake(shakePos, shakeAngle, .05, 80.0);
				PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
				SetFireWait(player, knifewait);
			}
			else
			{
				// QUICK slash.
				if (slash == 0)
				{
					// If after a second, we haven't attacked again, reset slash to 0.
					jkEnableSaber( player, 16, 0.1, 0.25 );
					povSlashAnimID = jkPlayPOVKey( player, povSnapAnim1, 2, 0x38);
					slashAnimID = PlayKey(player, snapAnim1, 1, 0x38);
					PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
					knifewait = getkeylen(snapanim1);
					shakePos = VectorScale(RandVec(),.001);
					shakeAngle = VectorScale(RandVec(),.5);
					SetPOVShake(shakePos, shakeAngle, .05, 80.0);
					SetFireWait(player, knifewait);
					slash = 1;
				}
				else
				if (slash == 1)
				{
					// Allow another second for the 3rd attack.
					jkEnableSaber( player, 16, 0.1, 0.25 );
					povSlashAnimID = jkPlayPOVKey( player, povSnapAnim2, 2, 0x38 );
					slashAnimID = PlayKey(player, snapAnim2, 1, 0x38);
					PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
					knifewait = getkeylen(snapanim2);
					shakePos = VectorScale(RandVec(),.001);
					shakeAngle = VectorScale(RandVec(),.5);
					SetPOVShake(shakePos, shakeAngle, .05, 80.0);
					SetFireWait(player, knifewait);
					slash = 2;
				}
				else
				if (slash == 2)
				{
					jkEnableSaber( player, 24, 0.1, 0.25 );
					povSlashAnimID = jkPlayPOVKey( player, povSnapAnim3, 2, 0x38 );
					slashAnimID = PlayKey(player, snapAnim3, 1, 0x38);
					knifewait = getkeylen(snapanim3);
					PlaySoundThing(smallswing, player, 1.0, -1, -1, 0x80);
					shakePos = VectorScale(RandVec(),.001);
					shakeAngle = VectorScale(RandVec(),.5);
					SetPOVShake(shakePos, shakeAngle, .05, 80.0);
					SetFireWait(player, knifewait);
					slash = 0;
				}
			}
		}
		// mode == 1
		else
		{
			// HEAVY slash.
			{
				jkEnableSaber( player, 64, 0.13, 1.2 );
				jkPlayPOVKey( player, povChargeAnim, 2, 0x38 );
				PlayKey(player, chargeAnim, 2, 0x38);
				knifewait = getkeylen(chargeanim);
				shakePos = VectorScale(RandVec(),.001);
				shakeAngle = VectorScale(RandVec(),.5);
				SetPOVShake(shakePos, shakeAngle, .05, 80.0);
				PlaySoundThing(bigswing, player, 1.0, -1, -1, 0x80);
				SetFireWait(player, knifewait-0.4);
			}
		}
	}
}

Return;

# ..........................................

activated:
   player = GetSourceRef();
   mode = GetSenderRef();
   jkSetWaggle(player, '0.0 0.0 0.0', 0);

   if(!getinv(player, vibrofists))
   {
   ActivateWeapon( player, leftWait, mode );
   }

   if(getinv(player, vibrofists))
   {
   mode = GetSenderRef();
   ActivateWeapon( player, 0.5, mode );
   ClearActorFlags(player, 0x2000);
   }

   Return;
# ..........................................

deactivated:
   player = GetSourceRef();
   mode = GetSenderRef();
   jkSetWaggle(player, '10.0 7.0 0.0', 350);
   DeactivateWeapon( player, mode );

if(getinv(player, vibrofists))
   {
   SetTimerEx(0.5, 1, 0, 0);
   }

Return;
# ..........................................

selected:
   player = GetSourceRef();

if(getinv(player, 125))
{
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 0) && (GetPrimaryFocus(0) == player))
	CycleCamera();
}

if(!getinv(player, 125))
{
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 1) && (GetPrimaryFocus(1) == player))
	CycleCamera();
}
   call loadlast;
   call changeselect;
   SetCurWeapon(player, 1);
   jkSetWaggle(player, '10.0 7.0 0.0', 350);

if(!getinv(player, vibrofists))

 {   
   PlayMode(player, 40);
   Print("Fists");
   jkSetPOVModel(player, povModel1);
   jkSetWeaponMesh(player, weaponMesh1);
   SetArmedMode(player, 0);
   trackID = jkPlayPOVKey(player, FmountAnim, 0, 20);
   SetMountWait(player, FmountWait);
   jkClearFlags(player, 0x5);
   lastweap1 = 0;
 }

if(getinv(player, vibrofists))

{
	assign = GetSenderRef();
	Print("Vibroblade");
	jkSetSaberInfo(player, side_mat, tip_mat, 0, 0, 0, tpl_wall, tpl_blood, tpl_saber);
	jkSetPOVModel( player, povModel2 );
	SetArmedMode( player, 2 );
	jkSetWeaponMesh( player, saberMesh2 );
	if (assign == 0)
	{
		PlayMode(player, 42);
		mountAnimID = jkPlayPOVKey( player, mountAnim, 0, 0x14 );
		SetTimerEx(0.7, 0, 0, 0);
	}
	else
	{
		PlayMode(player, 42);
		mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 );
		jkSetFlags(player, 0x80);
	}
	SetMountWait(player, GetKeyLen(mountAnim));
	jkDisableSaber(player);
	nosaber = 0;
	lastweap1=1;
}

Return;

# ..........................................

deselected:
player = GetSourceRef();
if(getcurrentcamera() == 0) Setinv(player, 125, 0);
if(getcurrentcamera() == 1) Setinv(player, 125, 1);
if(!getinv(player, vibrofists))
{
   jkPlayPOVKey(player, FdismountAnim, 0, 18);
   FholsterWait = GetKeyLen(holsterAnim);
   SetMountWait(player, FholsterWait);
   holsterTrack = PlayKey(player, holsterAnim, 1, 0x4);
   SetTimerEx(FholsterWait, 2, 0.0, 0.0);
   if (trackID != -1)
   {
      jkStopPOVKey(player, trackID, 0);
      trackID = -1;
   }
   jkSetWaggle(player, '0.0 0.0 0.0', 0);
}

if(getinv(player, vibrofists))
{
   jkSetFlags(player, 0x8);
   PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80);
   jkPlayPOVKey( player, dismountAnim, 0, 18 );
   holsterWait = GetKeyLen(holsterAnim);
   SetMountWait(player, holsterWait);
   holsterTrack = PlayKey(player, holsterAnim, 1, 0x4);
   SetTimerEx(holsterWait, 2, 0.0, 0.0);
	if (mountAnimID != -1)
	{
		jkStopPOVKey( player, mountAnimID, 0 );
		mountAnimID = -1;
	}
   jkSetWaggle(player, '0.0 0.0 0.0', 0);
   KillTimerEx(1);
   ClearActorFlags(player, 0x2000);
   jkDisableSaber(player);
   nosaber = 1;
}

   desel1=1;
   Return;

# ..........................................

autoselect:

   ReturnEx(100.0);

   Return;

# ..........................................

timer:

if(!getinv(player, vibrofists))
{
   id = GetSenderId();
   if (id == 2)
   {
    StopKey(player, holsterTrack, 0.0);
   }
   if (id == 5)
   {
      FireProjectile(player, kickproj, -1, 0, '-0.02 0.03 0', '0 0 0', 1.0, 0, 0.0, 0.0);
      SetFireWait(player, 1.0);
   }
}

if(getinv(player, vibrofists))
{
   id = GetSenderId();   
   if (id == 0)
   {
      PlaySoundThing(mountSound, player, 1.0, -1, -1, 0x80);
      jkSetFlags(player, 0x5);
   }
	else
	if (id == 1)
	{
		if (nosaber == 0)
		ClearActorFlags(player, 0x2000);
	}
	else
	if (id == 2)
	{
		StopKey(player, holsterTrack, 0.0);
	}
}

Return;

# ..........................................

changeselect:

stopchang1=0;

if(getinv(player, vibrofists))
   {
   setinv(player, vibrofists, 0);
   stopchang1=1;
   }

if(!getinv(player, vibrofists))
 {
  if(stopchang1 != 1)
   {
   setinv(player, vibrofists, 1);
   }
 }

If(firsttime1 == 1)
   {
   setinv(player, vibrofists, 0);
   firsttime1 = 0;
   }

Return;

# ..........................................

loadlast:

if(desel1 == 1)
{
if(lastweap1 == 0)
  {
  Setinv(player, vibrofists, 1);
  }

if(lastweap1 == 1)
   {
   Setinv(player, vibrofists, 0);
   }
   desel1=0;
}

Return;

# ..........................................

user3:
{
if(getcurrentcamera() == 0) Setinv(player, 125, 0);
if(getcurrentcamera() == 1) Setinv(player, 125, 1);
call selected;
call timer;
}
Return;

# ..........................................

newplayer:
   nosaber = 1;
   ClearActorFlags(player, 0x2000);
   jkDisableSaber(player);

   Return;

end

This cog has fists as the primary weapon, and kick as it's secondary fire. Vibroblade(alias Saber & Knife) is the secondary weapon.

Now, the problem. In my last cog post I was asking how to stop the glow - Vibroblade didn't need it. Well, changing the jksetflags in the timer message of Weap_saber from 0x5 to 0x1 did that, but somehow that got screwed up when I had two saber cogs.

So, could you look my cog over and tell me how to fix my lighting problem and any other errors that it has?

Thanks [http://forums.massassi.net/html/wink.gif]


------------------
Yub-Yub, Commander.

[This message has been edited by SaberMaster (edited March 31, 2001).]

[This message has been edited by Hideki (edited April 03, 2001).]
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.
2001-04-02, 12:39 PM #2
going up [http://forums.massassi.net/html/wink.gif]

I'm waiting for you, Hideki [http://forums.massassi.net/html/smile.gif]

------------------
And though your very flesh and blood
..Be what your Eagle eats and Drinks,
You'll praise him for the best of birds,
..Not knowing, what the Eagle thinks. -Cassandra
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.
2001-04-02, 9:15 PM #3
I was told by Hideki to tell that he's away for a few weeks with his name...

bah.

sigh... at least put your codes in a code tag.

And what is not working with this?
The whole thing or something specific isn't working?

And I don't do syntax error checking for you dude.

------------------
http://millennium.massassi.net/ - Millennium
2001-04-03, 12:54 PM #4
Sorry, but I can't read print that small.

My problem is that the saber lighting isn't working. If I just had one saber cog, and I changed the 0x5 jksetflags to 0x1 the glow would go. But, when I have two saber cogs(one is weap_fists, the other weap_saber), it doesn't work.

I don't know enough about the saber to get it to work, so I posted here for help.

------------------
And though your very flesh and blood
..Be what your Eagle eats and Drinks,
You'll praise him for the best of birds,
..Not knowing, what the Eagle thinks. -Cassandra
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.
2001-04-10, 10:20 AM #5
boosting again. [http://forums.massassi.net/html/frown.gif]
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.
2001-04-11, 12:52 PM #6
I, mere mortal, know very little about cog! (Spread the word, I'm trying to talk like Murray [http://forums.massassi.net/html/smile.gif])

I would like to suggest... that you get rid of the blood section... Bwahahahahahaha! We demonic soldiers of the damned (I'm not swearing, thats just what its called)do not like blood! [http://forums.massassi.net/html/smile.gif]Bwahahahahaha!

------------------
Viva la Monkey Island!
"I am Murray, the all powerful demonic skull, BWAHAHAHAHAHA!"-Murray
Viva la Monkey Island!
2001-04-11, 5:42 PM #7
+Ssparks_blood(if that's what you meant) looks identical to +ssparks_saber and +ssparks_wall ingame.

Believe me, there's not going to be any blood in my patches.

=================

Won't somebody help me with this? [http://forums.massassi.net/html/frown.gif]

------------------
And though your very flesh and blood
..Be what your Eagle eats and Drinks,
You'll praise him for the best of birds,
..Not knowing, what the Eagle thinks. -Cassandra

[This message has been edited by SaberMaster (edited April 12, 2001).]
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.
2001-04-12, 1:56 PM #8
Maybe you brought up too much part of the cog, posting bits and pieces may be easier for us to check, at least for me.

------------------
http://millennium.massassi.net/ - Millennium
2001-04-12, 6:34 PM #9
Sorry, but I really don't know what part of the cog it's in. I'll try to get the most important parts.

Code:
# ........................................................................................

selected:
   player = GetSourceRef();

if(getinv(player, 125))
{
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 0) && (GetPrimaryFocus(0) == player))
	CycleCamera();
}

if(!getinv(player, 125))
{
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 1) && (GetPrimaryFocus(1) == player))
	CycleCamera();
}
   call loadlast;
   call changeselect;
   SetCurWeapon(player, 1);
   jkSetWaggle(player, '10.0 7.0 0.0', 350);

if(!getinv(player, vibrofists))

 {   
   PlayMode(player, 40);
   Print("Fists");
   jkSetPOVModel(player, povModel1);
   jkSetWeaponMesh(player, weaponMesh1);
   SetArmedMode(player, 0);
   trackID = jkPlayPOVKey(player, FmountAnim, 0, 20);
   SetMountWait(player, FmountWait);
   jkClearFlags(player, 0x5);
   lastweap1 = 0;
 }

if(getinv(player, vibrofists))

{
	assign = GetSenderRef();
	Print("Vibroblade");
	jkSetSaberInfo(player, side_mat, tip_mat, 0, 0, 0, tpl_wall, tpl_blood, tpl_saber);
	jkSetPOVModel( player, povModel2 );
	SetArmedMode( player, 2 );
	jkSetWeaponMesh( player, saberMesh2 );
	if (assign == 0)
	{
		PlayMode(player, 42);
		mountAnimID = jkPlayPOVKey( player, mountAnim, 0, 0x14 );
		SetTimerEx(0.7, 0, 0, 0);
	}
	else
	{
		PlayMode(player, 42);
		mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 );
		jkSetFlags(player, 0x80);
	}
	SetMountWait(player, GetKeyLen(mountAnim));
	jkDisableSaber(player);
	nosaber = 0;
	lastweap1=1;
}

Return;

# ...........................................

deselected:
player = GetSourceRef();
if(getcurrentcamera() == 0) Setinv(player, 125, 0);
if(getcurrentcamera() == 1) Setinv(player, 125, 1);
if(!getinv(player, vibrofists))
{
   jkPlayPOVKey(player, FdismountAnim, 0, 18);
   FholsterWait = GetKeyLen(holsterAnim);
   SetMountWait(player, FholsterWait);
   holsterTrack = PlayKey(player, holsterAnim, 1, 0x4);
   SetTimerEx(FholsterWait, 2, 0.0, 0.0);
   if (trackID != -1)
   {
      jkStopPOVKey(player, trackID, 0);
      trackID = -1;
   }
   jkSetWaggle(player, '0.0 0.0 0.0', 0);
}

if(getinv(player, vibrofists))
{
   jkSetFlags(player, 0x8);
   PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80);
   jkPlayPOVKey( player, dismountAnim, 0, 18 );
   holsterWait = GetKeyLen(holsterAnim);
   SetMountWait(player, holsterWait);
   holsterTrack = PlayKey(player, holsterAnim, 1, 0x4);
   SetTimerEx(holsterWait, 2, 0.0, 0.0);
	if (mountAnimID != -1)
	{
		jkStopPOVKey( player, mountAnimID, 0 );
		mountAnimID = -1;
	}
   jkSetWaggle(player, '0.0 0.0 0.0', 0);
   KillTimerEx(1);
   ClearActorFlags(player, 0x2000);
   jkDisableSaber(player);
   nosaber = 1;
}

   desel1=1;
   Return;

# ...........................................

# ........................................................................................

timer:

if(!getinv(player, vibrofists))
{
   id = GetSenderId();
   if (id == 2)
   {
    StopKey(player, holsterTrack, 0.0);
   }
   if (id == 5)
   {
      FireProjectile(player, kickproj, -1, 0, '-0.02 0.03 0', '0 0 0', 1.0, 0, 0.0, 0.0);
      SetFireWait(player, 1.0);
   }
}

if(getinv(player, vibrofists))
{
   id = GetSenderId();   
   if (id == 0)
   {
      PlaySoundThing(mountSound, player, 1.0, -1, -1, 0x80);
      jkSetFlags(player, 0x1);
   }
	else
	if (id == 1)
	{
		if (nosaber == 0)
		ClearActorFlags(player, 0x2000);
	}
	else
	if (id == 2)
	{
		StopKey(player, holsterTrack, 0.0);
	}
}

Return;

# ........................................................................................

changeselect:

stopchang1=0;

if(getinv(player, vibrofists))
   {
   setinv(player, vibrofists, 0);
   stopchang1=1;
   }

if(!getinv(player, vibrofists))
 {
  if(stopchang1 != 1)
   {
   setinv(player, vibrofists, 1);
   }
 }

If(firsttime1 == 1)
   {
   setinv(player, vibrofists, 0);
   firsttime1 = 0;
   }

Return;

# ........................................................................................

loadlast:

if(desel1 == 1)
{
if(lastweap1 == 0)
  {
  Setinv(player, vibrofists, 1);
  }

if(lastweap1 == 1)
   {
   Setinv(player, vibrofists, 0);
   }
   desel1=0;
}

Return;

# ........................................................................................

user3:
{
if(getcurrentcamera() == 0) Setinv(player, 125, 0);
if(getcurrentcamera() == 1) Setinv(player, 125, 1);
call selected;
call timer;
}
Return;

# ...........................................


I just did some testing. When I switch from saber to fists and then knife(both saber & knife are in this cog), the knife won't work(IE, no sparks or damage). But when I have this error, and switch from saber to knife, the knife works fine again.

When I switch from knife to fists, I'm using a new hotkey that triggers user3. When that runs, it calls setup. But, with the value of vibrofists changed by changeselect, select will load the other weapon.

A lot of the normal messages have an if(getinv(player, vibrofists)) in them. So, depending on what Vibrofists is (0 or 1) most normal messages will run the code for the weapon being used.

Also, I only get this error when the jksetflags in timer is using the 0x1 flag(for no glow). If it's set to 0x5, it works fine.

------------------
And though your very flesh and blood
..Be what your Eagle eats and Drinks,
You'll praise him for the best of birds,
..Not knowing, what the Eagle thinks. -Cassandra

[This message has been edited by SaberMaster (edited April 12, 2001).]

[This message has been edited by SaberMaster (edited April 13, 2001).]
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.
2001-04-14, 12:41 PM #10
[http://forums.massassi.net/html/confused.gif]
Author of the JK DataMaster, Parsec, Scribe, and the EditPlus Cog Files.

↑ Up to the top!