PDA

View Full Version : WTF...?



a_person
08-25-2004, 10:01 PM
Hi!
I have this thermal det cog but this real odd thing happens in it. In some levels the thermal doesnt throw. It does everything but fire the projectiles. and its always in particular levels like level 3,6,9 and 10. I only went as far as 10 so I assume there are others it doesnt work in.

The only thing I can think of is some levels have something conflicting with it, or something is missing from the levels.



# Jedi Knight Cog Script
#
# WEAP_THERMDET.COG
#
# WEAPON 4 Script - Thermal Detonator
#
# Fun to use and handy for clearing some elbow room. Not recommending
# for those with noodle arms. The longer you hold down the fire key
# (CTRL/Z) the farther you throw the detonator.
#
# The primary fire throws the detonator with the 3 second delay, the
# secondary makes it explode on impact.
#
# - Not affected by MagSealed sectors/surfaces.
#
# [YB & CYW]
#
# (C) 1997 LucasArts Entertainment Co. All Rights Reserved
# ================================================== ======================================
symbols
model povModel=detv.3do local
model weaponMesh=detg.3do local

keyframe mountAnim=detvmnt.key local
keyframe dismountAnim=detvdis.key local
keyframe povFireAnim=detvpst1.key local
keyframe prePOVThrowAnim=detvpre1.key local
#keyframe preThrowAnim=kyrthro0.key local
keyframe holsterAnim=kyhlstr.key local

sound throwSound=ThermalThrow01.wav local
sound clickSound=ThermClick01.wav local
sound clickSound2=ThermClick02.wav local
sound loopSound=ThermLoop01.wav local

flex delayTime=1.0 local
flex throwWait=0.8 local
flex mountWait local
flex autoAimFOV=10 local
flex autoAimMaxDist=5 local
flex holsterWait local

thing player local

int preThrowTrack local
int selectTrack local
int prePOVThrowTrack local
int mode local
int cocked=0 local
int holsterTrack local
int selectMode=1 local

message startup
message activated
message deactivated
message selected
message deselected
message autoselect
message timer
message newplayer
message splash

end
# ================================================== ======================================
code
startup:
// Setup delays and variables.
mountWait = GetKeyLen(mountAnim);
preThrowTrack=-1;
selectTrack=-1;
prePOVThrowTrack=-1;

Return;
# .................................................. ......................................
activated:
player = GetSourceRef();
mode = GetSenderRef();
if (mode > 1)
Return;
PlaySoundThing(clickSound[mode], player, 1.0, -1.0, -1.0, 0x80);
// Cock arm back for throw.
if(preThrowTrack == -1 && prePOVThrowTrack == -1)
{
prePOVThrowTrack = jkPlayPOVKey(player, prePOVThrowAnim, 1, 0x14);
preThrowTrack = PlayMode( player, 38 );
ActivateWeapon(player, 0, mode);
}
Return;
# .................................................. ......................................
deactivated:
player = GetSourceRef();
mode = GetSenderRef();
delayTime = DeactivateWeapon(player, mode); // allow activated messages again.
// Make sure both keys are up before continuing.
if (GetCurWeaponMode() != -1)
Return;
// Set maximum scale factor (2 second hold.)
if(delayTime > 2)
delayTime = 2;
// Set minimum scale factor
if(mode == 0)
{
if(delayTime < 0.7) delayTime = 0.7;
}
else
{
if(delayTime < 0.25) delayTime = 0.25;
}
if(preThrowTrack != -1 && prePOVThrowTrack != -1)
{
jkStopPOVKey(player, prePOVThrowTrack, 0);
StopKey(player, preThrowTrack, 0);
preThrowTrack = -1;
prePOVThrowTrack = -1;
}
// Throw the appropriate detonator.
SetPOVShake('0.0 -.003 0.0', '0.5 0.0 0.0', .05, 40.0);
jkPlayPOVKey(player, povfireAnim, 1, 0x38);
PlaySoundThing(throwSound, player, 1.0, 0.5, 2.5, 0x80);
SendTrigger(-1, 40+mode, player, 0, 0, delaytime);
ChangeInv(player, 4, -1.0);
SetMountWait(player, throwWait);
// If out of ammo try to autoswitch to another weapon
// if autoswitch is enabled else just switch to fists.
if(GetInv(player, 4) < 1)
{
if(GetAutoSwitch() & 1)
{
SelectWeapon(player, AutoSelectWeapon(player, 1));
}
else
{
SelectWeapon(player, 1);
}
}
jkSetWaggle(player, '0.0 0.0 0.0', 0);
SetTimerEx(throwWait, 0, 0, 0);
Return;
# .................................................. ......................................
timer:
if (GetSenderId() == 0)
{
// Start waggling after the throw.
jkSetWaggle(player, '10.0 7.0 0.0', 350);
}
else
if (GetSenderId() == 2)
{
StopKey(player, holsterTrack, 0.0);
}
Return;
# .................................................. ......................................
selected:
player = GetSourceRef();
jkSetWaggle(player, '10.0 7.0 0.0', 350);
// Play external mounting animation
PlayMode(player, 40);
// Setup the meshes and models.
jkSetPOVModel(player, povModel);
SetArmedMode(player, 0);
jkSetWeaponMesh(player, weaponMesh);
// Play the animation (NOLOOP + UNIQUE + ENDPAUSE).
// The animation is held at the last frame after it is played.
selectTrack = jkPlayPOVKey(player, mountAnim, 0, 0x14);
SetMountWait(player, GetKeyLen(mountAnim));
// Clear Lightsaber flag, and enable activation messages.
jkClearFlags(player, 0x5);
SetCurWeapon(player, 4);
SetMountWait(player, GetKeyLen(mountAnim));
Return;
# .................................................. ......................................
deselected:
player = GetSourceRef();
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(selectTrack != -1)
{
jkStopPOVKey(player, selectTrack, 0);
selectTrack = -1;
}
jkSetWaggle(player, '0.0 0.0 0.0', 0);
KillTimerEx(0);
if(preThrowTrack != -1 && prePOVThrowTrack != -1)
{
jkStopPOVKey(player, prePOVThrowTrack, 0);
StopKey(player, preThrowTrack, 0);
preThrowTrack = -1;
prePOVThrowTrack = -1;
}
Return;
# .................................................. ......................................
autoselect:
selectMode = GetSenderRef();
player = GetSourceRef();
// If the player has ammo
if(GetInv(player, 4) != 0)
{
// query for ammo
if(selectMode == -1)
{
ReturnEx(400.0);
Return;
}
if((selectMode == 0) && !(GetAutoPickup() & 2))
{
ReturnEx(400.0);
Return;
}
if((selectMode == 1) && !(GetAutoSwitch() & 2))
{
ReturnEx(400.0);
Return;
}
if((selectMode == 2) && !(GetAutoPickup() & 2))
{
ReturnEx(400.0);
Return;
}
ReturnEx(-2.0);
Return;
}
else
{
ReturnEx(-1.0);
}
Return;
# .................................................. ......................................
newplayer:
if(preThrowTrack != -1 && prePOVThrowTrack != -1)
{
jkStopPOVKey(player, prePOVThrowTrack, 0);
StopKey(player, preThrowTrack, 0);
preThrowTrack = -1;
prePOVThrowTrack = -1;
}
Return;
# .................................................. ......................................

end


And the client cog.



# Jedi Knight Cog Script
#
# Client_Rangi.COG
#
# Description
#
#
# This Cog is Not supported by LucasArts Entertainment Co
# This flag makes the cog act locally, no broadcasting, less lag.
flags=0x240
symbols

flex autoAimFOV=30 local
flex autoAimMaxDist=5 local

template projectile=+flarebolt local
template projectile2=+tribolt local
template projectile3=+529kaboom1 local
template projectile4=+529kaboom2 local
template projectile5=+airbolt local
template projectile6=+rippershot local
template projectile7=+rippershot2 local

vector randVec local

thing player local

flex ThrowForce local

message trigger

end
# ================================================== ======================================
code
trigger:

// Get random aiming error
randVec = VectorSet((Rand()-0.5)*5, (Rand()-0.5)*5, 0.0);
randVec2 = VectorSet((Rand()-0.5)*5, (Rand()-0.5)*5, 0.0);
randVec3 = VectorSet((Rand()-0.5)*5, (Rand()-0.5)*5, 0.0);
ThrowForce = GetParam(3);
if( (GetSourceRef() == 20) || (GetSourceRef() == 21) )
{
FireProjectile(GetParam(0), projectile, -1, -1, '0.0135 0.1624 0.0', '0 0 0', 1, 0x20, autoAimFOV, autoAimFOV*2);
}
else
if( (GetSourceRef() == 30) || (GetSourceRef() == 31) )
{
FireProjectile(GetParam(0), projectile2, -1, -1, '0.02 0.15 0.0', randVec1, 1.0, 0x20, autoAimFOV, autoAimMaxDist);
FireProjectile(GetParam(0), projectile2, -1, -1, '0.02 0.15 0.0', randVec2, 1.0, 0x20, autoAimFOV, autoAimMaxDist);
FireProjectile(GetParam(0), projectile2, -1, -1, '0.02 0.15 0.0', randVec3, 1.0, 0x20, autoAimFOV, autoAimMaxDist);
}
else
if(GetSourceRef() == 40)
{
FireProjectile(player, projectile3, -1, 15, '0.05 0 0', '0 0 0', ThrowForce, 0x1, 0.0, 0.0);
}
else
if(GetSourceRef() == 41)
{
FireProjectile(player, projectile4, -1, 15, '0.05 0 0', '0 0 0', ThrowForce, 0x1, 0.0, 0.0);
}
else
if(GetSourceRef() == 51)
{
FireProjectile(GetParam(0), projectile5, -1, -1, '0.0207 0.0888 0.00', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2);
}
else
if(GetSourceRef() == 2591)
{
FireProjectile(GetParam(0), projectile5, -1, -1, '0.0207 0.0888 0.00', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2);
}
else
if(GetSourceRef() == 2592)
{
FireProjectile(GetParam(0), projectile5, -1, -1, '0.0207 0.0888 0.00', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2);
FireProjectile(GetParam(0), projectile5, -1, -1, '0.0207 0.0888 0.00', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2);
}
else
if(GetSourceRef() == 2593)
{
FireProjectile(GetParam(0), projectile5, -1, -1, '0.0207 0.0888 0.00', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2);
FireProjectile(GetParam(0), projectile5, -1, -1, '0.0207 0.0888 0.00', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2);
}
else
if(GetSourceRef() == 60)
{
FireProjectile(GetParam(0), projectile6, -1, -1, fireOffset, '0 0 0', 1.0, 0x30, autoAimFOV, autoAimFOV*2 );
}
else
if(GetSourceRef() == 5911)
{
FireProjectile(GetParam(0), projectile7, -1, -1, fireOffset, '0 0 0', 1.0, 0x30, autoAimFOV, autoAimFOV*2 );
}

return;
end



Can anyone see what it is?
Thanks.

------------------
~Nightfire Mod (http://www.nightfire.uni.cc)~
~T3h L0st tut0rialz (http://www.nigelsjkprojects.orcon.net.nz/Millennium_backup/)~

Quib Mask
08-26-2004, 01:22 PM
We probably need to see your templates. I see no problem with the cog.

QM

darthslaw
08-26-2004, 02:09 PM
This is probably one of those cases where a cog just won't work.
I had this happen with my first crosshair attempt... didn't fire in the same levels you just listed, and I couldn't zoom out either in those levels.

Sadly, I dunno what to tell you http://forums.massassi.net/html/frown.gif

------------------
nytfyre m0d (http://www.nightfire.uni.cc/site/page.php) || f33l t3h p0w3r (http://www.geocities.com/qrphome/pwp3/) || t3h l0st c0gz (http://www.tbns.net/GBK/ol/index.htm) || OMF > * (http://www.bkkbazaar.com/omf/)

Ace1
08-26-2004, 03:47 PM
for some reason, sometimes jk just doesn't want to run certain cogs in some levels. sometimes listing the cogs in the static.jkl stops that

------------------
I am _ Ace_1 _ , and I approve this message.

a_person
08-27-2004, 03:58 AM
Ok the cog wont work so... If I dont change the +grenade template at all and I just change its explosion template (+grenade_exp). Do I need client cog for it. Because this would mean that jk is still firing a template from the level but the explosion would be different. Would this work if you can understand what im saying.

------------------
~Nightfire Mod (http://www.nightfire.uni.cc)~
~T3h L0st tut0rialz (http://www.nigelsjkprojects.orcon.net.nz/Millennium_backup/)~

darthslaw
08-27-2004, 02:09 PM
If you use any new templates (aside from things like the thing-based pov models, crosshairs, and such), you should use a client cog to fire them.

[/general guideline]

More clearly put, I suggest you use a client cog to fire it and see if it helps.

------------------
nytfyre m0d (http://www.nightfire.uni.cc/site/page.php) || f33l t3h p0w3r (http://www.geocities.com/qrphome/pwp3/) || t3h l0st c0gz (http://www.tbns.net/GBK/ol/index.htm) || OMF > * (http://www.bkkbazaar.com/omf/)

ZeqMacaw
08-27-2004, 06:45 PM
In the weapon cog's deactivated message handler, you currently have:
SendTrigger(-1, 40+mode, player, 0, 0, delaytime);

In the cog with the trigger handler, you currently have:
else
if(GetSourceRef() == 40)
{
FireProjectile(player, projectile3, -1, 15, '0.05 0 0', '0 0 0', ThrowForce, 0x1, 0.0, 0.0);
}
else
if(GetSourceRef() == 41)
{
FireProjectile(player, projectile4, -1, 15, '0.05 0 0', '0 0 0', ThrowForce, 0x1, 0.0, 0.0);
}

Note that player is undefined, so it is either -1, 0, or the value of player from a different cog. (I am not sure which is correct because I haven't tested it, but GBK and SaberMaster have mentioned the values elsewhere.) In your cog, the other FireProjectile commands use GetParam(0). However, for all of them in the trigger handler, you could just use GetSenderRef() instead of player or GetParam(0). I am not sure if that is the cause of your problem, but it certainly could be.

http://forums.massassi.net/html/smile.gif


[This message has been edited by ZeqMacaw (edited August 27, 2004).]

a_person
08-27-2004, 10:14 PM
Great spot ZeqMacaw! That was indeed the problem.

------------------
~Nightfire Mod (http://www.nightfire.uni.cc)~
~T3h L0st tut0rialz (http://www.nigelsjkprojects.orcon.net.nz/Millennium_backup/)~