PDA

View Full Version : Simple Cog



H.Q. Pendragon
03-08-2005, 11:29 PM
I don't know much about cogging, but I remember something about being able to create an unfair lightsaber. I'm not planning on using it in mp, because I don't play mp. I recently downloaded the Haven 16 level, and I need something other than quick fists that can help me beat him. It takes forever with a lightsaber, and when I do vanquish him (ghosts cannot be kill, only dematerialized), he respawns back in his original cell. Surely you could help me Shred. Some thing that simple could take you like 1/bijillionth of a second.

Shred18
03-08-2005, 11:48 PM
Me? I'm an artist, not a cogger... yeah..

Why dont you just play with a mod active? heres one: http://www.massassi.net/levels/files/1060.shtml

H.Q. Pendragon
03-08-2005, 11:59 PM
Thanks man. I know it's like asking Da Vinci to draw a stick figure, but that ghost is friggin' hard to beat.

H.Q. Pendragon
03-09-2005, 12:02 AM
I use to have this mod. All this will do in close range is crush me to death. I just want a "one-hit-kills" lightsaber, besides, this pack interfears with the have one.

Shred18
03-09-2005, 12:07 AM
# Jedi Knight Cog Script
#
# WEAP_SABER.COG
#
# WEAPON Script - Lightsaber
#
# [CYW]
#
# (C) 1997 LucasArts Entertainment Co. All Rights Reserved
# ================================================== ======================================


symbols

message startup
message activated
message deactivated
message selected
message deselected
message newplayer
message autoselect
message timer
message fire
message killed

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

model povModel=sabv.3do local
model saberMesh=sabg.3do local

# .................................................. ......................................
# POV animations

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

keyframe povPreBlockAnim=SabVblk.key local

# .................................................. ......................................
# External animations

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 preBlockAnim=KYblock.key local
keyframe holsterAnim=kyhlstr.key local

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

sound dismountSound=LtSaberOff01.WAV local
sound mountSound=LtSaberOn01.WAV local
sound hitSound01=LtSaberHit01.WAV local
sound hitSound02=LtSaberHit02.WAV local
sound hitSound03=LtSaberHit03.WAV local
sound hitSound12=LtSaberHit12.WAV local
sound hitSound14=LtSaberHit14.WAV local
sound swingSound01=LtSaberSwing01.WAV local
sound swingSound02=LtSaberSwing02.WAV local
sound swingSound03=LtSaberSwing03.WAV local
sound swingSound04=LtSaberSwing04.WAV local
sound swingSound05=LtSaberSwing05.WAV local
sound swingSound06=LtSaberSwing06.WAV local
sound swingSound07=LtSaberSwing07.WAV local
sound swingSound08=LtSaberSwing08.WAV local
sound swingSoundDbl01=LtSaberSwingDbl01.WAV local
sound humSound01=LtSaberLp01.WAV local

flex damage local
flex bladeLen local
flex holsterWait local

thing player local
thing antagonist local

vector ppos local
vector apos local
vector diff local
vector thrust local

flex damage local
flex type local
flex dot local

# .................................................. ......................................
# Animation tracks

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 humChannel local
int holsterTrack local
int slashSound local

int assign local
int nosaber local

vector shakePos local
vector shakeAngle local

cog kyleCog local

end

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

code

startup:
// Set up player with saber.
player = GetLocalPlayerThing();

kyleCog = GetThingClassCog(player);

ClearActorFlags(player, 0x2000);
jkDisableSaber(player);
slash = 0;
nextAttack = 0;
slashAnimID=-1;
povSlashAnimID=-1;
return;

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

timer:
id = GetSenderId();

if (id == 0)
{
// Play mounting sound.
PlaySoundThing(mountSound, player, 1.0, -1, -1, 0x80);
humChannel = PlaySoundThing(humSound01, player, 1.0, -1, -1, 0x81);
jkSetFlags(player, 0x5);
}
else
if (id == 1)
{
// Make sure a loose timer doesn't come in and reset the block after we deselect the saber.
if (nosaber == 0)
SetActorFlags(player, 0x2000);
}
else
if (id == 2)
{
StopKey(player, holsterTrack, 0.0);
}

return;

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

selected:
assign = GetSenderRef();

// Go to external
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 0) && (GetPrimaryFocus(0) == player))
CycleCamera();

// Setup the meshes and models.
jkSetPOVModel( player, povModel );
SetArmedMode( player, 2 );
jkSetWeaponMesh( player, saberMesh );
jkSetWaggle(player, '10.0 7.0 0.0', 350);

if (assign == 0)
{
// Play the animation (NOLOOP + UNIQUE + ENDPAUSE).
// The animation is held at the last frame after it is played.
PlayMode(player, 42);
mountAnimID = jkPlayPOVKey( player, mountAnim, 0, 0x14 );
SetTimerEx(0.7, 0, 0, 0);
}
else
{
mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 );
humChannel = PlaySoundThing(humSound01, player, 1.0, -1, -1, 0x81);
jkSetFlags(player, 0x80);
}

SetMountWait(player, GetKeyLen(mountAnim));

// Set saber flags, and allow activation of the weapon
SetCurWeapon( player, 10 );

// Set autoblock on.
SetActorFlags(player, 0x2000);
jkDisableSaber(player);
nosaber = 0;
return;

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

deselected:
// Back to POV
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 1) && (GetPrimaryFocus(1) == player))
CycleCamera();

// Shrink saber.
jkSetFlags(player, 0x8);

// Dismount the Lightsaber.
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);

// Clear variables
slash = 0;
nextAttack = 0;
slashAnimID = -1;
povSlashAnimID = -1;

StopSound( humChannel, 0.5 );

// Disable autoblock
KillTimerEx(1);
ClearActorFlags(player, 0x2000);
jkDisableSaber(player);
nosaber = 1;
return;

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

activated:
mode = GetSenderRef();

jkSetWaggle(player, '0.0 0.0 0.0', 0);

if (mode > 1)
return;

povPreAnimID = -1;
preAnimID = -1;

ActivateWeapon( player, 0.5, mode );

// Disable autoblock
ClearActorFlags(player, 0x2000);

return;

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

deactivated:
mode = GetSenderRef();

jkSetWaggle(player, '10.0 7.0 0.0', 350);
DeactivateWeapon( player, mode );

// Enable autoblock
SetTimerEx(0.5, 1, 0, 0);

return;

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

fire:
// Stop block animations, by sending a message to kyle.cog.
SendMessage( kyleCog, user0 );

// Underwater saber attacks.
if (GetMajorMode(player) == 5)
{
jkEnableSaber( player, 99999999999.9, 0.15, 0.25 );

if (nextAttack == 0)
{
PlayMode( player, 8);
jkPlayPOVKey( player, povFireAnimR1, 2, 0x38 );
nextAttack = 1;
}
else
{
PlayMode( player, 18);
jkPlayPOVKey( player, povFireAnimL1, 2, 0x38 );
nextAttack = 0;
}

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

SetFireWait(player, 1.0);

slashSound = Rand()*7;
PlaySoundThing(swingSound01[slashSound], 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, 50, 0.15, 0.25 );

jkPlayPOVKey( player, povFireAnimR1, 2, 0x38 );
PlayKey(player, fireAnimR1, 1, 0x38);

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

// PlaySoundThing(swingSound02, player, 1.0, -1, -1, 0x80);
slashSound = Rand()*7;
PlaySoundThing(swingSound01[slashSound], player, 1.0, -1, -1, 0x80);
SetFireWait(player, 0.8);
}
else
// LEFT Regular Strike
if (VectorX(thrust) < 0)
{
jkEnableSaber( player, 50, 0.15, 0.25 );

jkPlayPOVKey( player, povFireAnimL1, 2, 0x38 );
PlayKey(player, fireAnimL1, 1, 0x38);

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

// PlaySoundThing(swingSound02, player, 1.0, -1, -1, 0x80);
slashSound = Rand()*7;
PlaySoundThing(swingSound01[slashSound], player, 1.0, -1, -1, 0x80);
SetFireWait(player, 0.8);
}
else
// BACKWARDS Strike
if (VectorY(thrust) < -0.1)
{
jkEnableSaber( player, 50, 0.15, 0.25 );

if (nextAttack == 0)
{
jkPlayPOVKey( player, povFireAnimB1, 2, 0x38 );
PlayKey(player, fireAnimB1, 2, 0x38);
nextAttack = 1;
}
else
{
jkPlayPOVKey( player, povFireAnimB2, 2, 0x38 );
PlayKey(player, fireAnimB2, 2, 0x38);
nextAttack = 0;
}
shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

slashSound = Rand()*7;
PlaySoundThing(swingSound01[slashSound], player, 1.0, -1, -1, 0x80);
SetFireWait(player, 0.8);
}
else
// STANDING Strike
if (VectorY(thrust) < 0.1)
{
jkEnableSaber( player, 50, 0.25, 0.7 );

if (nextAttack == 0)
{
jkPlayPOVKey( player, povFireAnimF1, 2, 0x38 );
PlayKey(player, fireAnimF1, 2, 0x38);
nextAttack = 1;
}
else
{
jkPlayPOVKey( player, povFireAnimF2, 2, 0x38 );
PlayKey(player, fireAnimF2, 2, 0x38);
nextAttack = 0;
}

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

// PlaySoundThing(swingSound02, player, 1.0, -1, -1, 0x80);
slashSound = Rand()*7;
PlaySoundThing(swingSound01[slashSound], player, 1.0, -1, -1, 0x80);
SetFireWait(player, 0.8);
}
else
{
// QUICK slash.
if (slash == 0)
{
// If after a second, we haven't attacked again, reset slash to 0.
jkEnableSaber( player, 40, 0.15, 0.25 );

povSlashAnimID = jkPlayPOVKey( player, povSnapAnim1, 2, 0x38);
slashAnimID = PlayKey(player, snapAnim1, 1, 0x38);
PlaySoundThing(swingSound01, player, 1.0, -1, -1, 0x80);

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

SetFireWait(player, 0.25);
slash = 1;
}
else
if (slash == 1)
{
// Allow another second for the 3rd attack.
jkEnableSaber( player, 40, 0.15, 0.25 );

povSlashAnimID = jkPlayPOVKey( player, povSnapAnim2, 2, 0x38 );
slashAnimID = PlayKey(player, snapAnim2, 1, 0x38);
PlaySoundThing(swingSound03, player, 1.0, -1, -1, 0x80);

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

SetFireWait(player, 0.25);
slash = 2;
}
else
if (slash == 2)
{
jkEnableSaber( player, 60, 0.2, 0.25 );

povSlashAnimID = jkPlayPOVKey( player, povSnapAnim3, 2, 0x38 );
slashAnimID = PlayKey(player, snapAnim3, 1, 0x38);
PlaySoundThing(swingSound02, player, 1.0, -1, -1, 0x80);

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

SetFireWait(player, 1.0);
slash = 0;
}
}
}
// mode == 1
else
{
// HEAVY slash.
{
jkEnableSaber( player, 160, 0.3, 1.2 );
jkPlayPOVKey( player, povChargeAnim, 2, 0x38 );
PlayKey(player, chargeAnim, 2, 0x38);

shakePos = VectorScale(RandVec(),.001);
shakeAngle = VectorScale(RandVec(),.5);
SetPOVShake(shakePos, shakeAngle, .05, 80.0);

PlaySoundThing(swingSoundDbl01, player, 1.0, -1, -1, 0x80);
SetFireWait(player, 2.0);
}
}
}
return;

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

newplayer:
slash = 0;
nextAttack = 0;
slashAnimID=-1;
povSlashAnimID=-1;
// Disable autoblock
ClearActorFlags(player, 0x2000);
jkDisableSaber(player);

// Back to POV, since the saber should never get autoselected at start for a multiplayer game.
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 1) && (GetPrimaryFocus(1) == player))
CycleCamera();

return;

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

autoselect:
// Return the saber when out of everthing except the fists

// If the player has the weapon
if(GetInv(player, 10) != 0.0)
{
ReturnEx(200.0);
}
else
{
ReturnEx(-1.0);
}

Return;

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

killed:
if (player == GetSenderRef())
{
if (GetCurWeapon(player) == 10)
PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80);
nosaber = 1;
}
Return;


end

H.Q. Pendragon
03-09-2005, 12:11 AM
Once again, what's little to you will bring years of ghostbusting enjoyment to my JK. Thanks. :D

H.Q. Pendragon
03-09-2005, 12:43 AM
Come on Shred, what are you trying to pull. I'm no expert at cogging, but I can at least change sounds, projectiles, and animations. Your cog only made Kyle reach for his hip. Funny thing is, when I change the value you changed, I can't get it to work either. What's up with that? :confused:

H.Q. Pendragon
03-09-2005, 01:18 AM
Once again my fault. Sorry for pointing the blame Shred. I created a gob with the original weap_fist.cog from the res2.gob, and it does the same thing. What am I doing wrong!

H.Q. Pendragon
03-09-2005, 02:17 AM
Sorry to post a new topic so soon, but Shred18 gave me a cog, and it should work, but I can't get it too. How hard is it to get some help around here? I don't mean to sound ugly, but I'm having a legitament problem, and on one is answering me. Sorry again to the moderators. I would just like some answers before I get one of theses: :banned:

I've got a Cog. It's for a weapon. When I use it, all Kyle does is reach for his holster, and replace his weapon with the exact same weapon. (Bryar -> Bryar; Fist -> Fist). First thing I did was lose my cool on Shred, which was wrong, and I apologise, but I did some testing, and I found out I couldn't even get it to work in the resource/cog file. Then I tried the saber cog lucasarts made, and it did the same thing. It must be something wrong on my part. I've tried gobex, patch commander, and manual input, how do you correctly get a lightsaber cog to work. If you need referance to the cog, it is in the simple cog post right under this one.

Sorry again to the moderator for two consecutive post on the same subject in the same day. :(

zagibu
03-09-2005, 03:17 AM
I can send you a complete gob this evening, if I don't forget it...

H.Q. Pendragon
03-09-2005, 03:31 AM
That would be very aprecieated, pardon my grammer. I'm just so confused when it comes to anything but texture editing. Thank you very much.

gbk
03-09-2005, 09:03 AM
Originally posted by H.Q. Pendragon
...When I use it, all Kyle does is reach for his holster, and replace his weapon with the exact same weapon.....

That usually indicates some sort of problem with the cog. Have you run PARSEC on it?


Sorry again to the moderator for two consecutive post on the same subject in the same day. :(
Thats ok. I took the liberty of merging them.... ;)

H.Q. Pendragon
03-09-2005, 09:25 AM
I have never heard of PARSEC, but I think the problem lies with me. I went as far as to pull the "weap_saber.cog" from the JK res2.gob, and placed it (unmodified) in a gob made with gobex, a gob made with patch commander, and even in the resources/cog file. Even the un modified cog gives me problems. But if PARSEC might help me with my problem, I'd be willing to try.

H.Q. Pendragon
03-09-2005, 11:05 AM
I GOT IT TO WORK! :D All I had to do was change the beginning numbers, like Shred said, but to a value that JK would except. My saber has 5000 hit on every swing, even scratches. So thanks a whole lot guys, I weild a lightsaber that can wreck an chicken walker in one hit. :cool: