I'm making the sabers leave a little trail in my patch since I've realized some of you like them here at Massassi. I've made the cog. It's exactly how I want it to be. No problems. I was wondering if somebody could make me a cog for a hotkey so I could turn them on/off. You can modify this cog if you need to or you could just make the hotkey. This would be greatly appretiated. Here's the cog. Thanks again!
Code:
# Jedi Knight Missions Cog Script # # WEAP_SABER.COG # # WEAPON Script - Lightsaber w/ saber trail coding and color switching -Deathbane27 # # [CYW] + [RF] + [YB] # # (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 message user4 # Change Color message user6 # Controls light motion trails for blocking message user7 # Handles Lightsaber On/Off switch message user1 # Controls light motion trails for flipping # ........................................................................................ model povModel=sabv.3do local model saberMesh=sabg.3do local model fistMesh=fistg.3do local model povsaber=sabv-g.3do local model povsaber1=sabv-y.3do local model povsaber2=sabv-o.3do local model povsaber3=sabv-dr.3do local model povsaber4=sabv-b.3do local model povsaber5=sabv-p.3do local model povsaber6=sabv-r.3do local model povsaber7=sabv-lb.3do local model povsaber8=sabv-dp.3do local model povsaber9=sabv-s.3do local model saber=sabg-g.3do local model saber1=sabg-y.3do local model saber2=sabg-o.3do local model saber3=sabg-dr.3do local model saber4=sabg-b.3do local model saber5=sabg-p.3do local model saber6=sabg-r.3do local model saber7=sabg-lb.3do local model saber8=sabg-dp.3do local model saber9=sabg-s.3do local model Fan1=sabfan-g.3do local model Fan11=sabfan-y.3do local model Fan12=sabfan-o.3do local model Fan13=sabfan-dr.3do local model Fan14=sabfan-b.3do local model Fan15=sabfan-p.3do local model Fan16=sabfan-r.3do local model Fan17=sabfan-lb.3do local model Fan18=sabfan-dp.3do local model Fan19=sabfan-s.3do local model Fan2=sabfan-g1.3do local model Fan21=sabfan-y1.3do local model Fan22=sabfan-o1.3do local model Fan23=sabfan-dr1.3do local model Fan24=sabfan-b1.3do local model Fan25=sabfan-p1.3do local model Fan26=sabfan-r1.3do local model Fan27=sabfan-lb1.3do local model Fan28=sabfan-dp1.3do local model Fan29=sabfan-s1.3do local # --- Material List --- # material mat0=sabergreen0.mat local material mat01=sabergreen1.mat local material mat02=saberyellow0.mat local material mat03=saberyellow1.mat local material mat04=saberorange0.mat local material mat05=saberorange1.mat local material mat06=saberdred0.mat local material mat07=saberdred1.mat local material mat08=saberblue0.mat local material mat09=saberblue1.mat local material mat010=saberpurple0.mat local material mat011=saberpurple1.mat local material mat012=saberred0.mat local material mat013=saberred1.mat local material mat014=saberlblue0.mat local material mat015=saberlblue1.mat local material mat016=saberdpurple0.mat local material mat017=saberdpurple1.mat local material mat018=sabersilver0.mat local material mat019=sabersilver1.mat local # --- Spark templates for jkSetSaberInfo --- # template tpl_wall=+ssparks_wall local template tpl_blood=+ssparks_blood local template tpl_saber=+ssparks_saber 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=KYsabrf3.key local keyframe chargeAnim=KYcharge2.key local keyframe chargeAnim2=KYcharge.key local keyframe chargeAnim3=KYcharge3.key local keyframe stabAnim=KYstab2.key local keyframe spinL=spinl.key local keyframe spinR=spinr.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 swingSoundDbl02=LtSaberSwingDbl02.WAV local sound swingSoundDbl03=LtSaberSwingDbl03.WAV local sound humSound01=LtSaberLp01.WAV local # ........................................................................................ # Animation tracks int mountAnimID=-1 local int preAnimID=-1 local int povPreAnimID=-1 local int slashAnimID=-1 local int povSlashAnimID=-1 local # ........................................................................................ # Normal Variables thing player local flex damage local flex holsterWait local int mode local int slash local int nextAttack local int humChannel=-1 local int holsterTrack=-1 local int slashSound=-1 local int assign local int nosaber=1 local vector thrust local vector shakePos local vector shakeAngle local # ------------- Begin custom variables ---------------- sound sabcolorSound=lvrclik1.wav local int active=0 local int color=0 local flex bladelen=0.123 local flex keylen local flex fanwait local int fanindex local int volume=1.0 int crap=-1 int curAnim=-1 local int curPOVAnim=-1 local cog kyleCog local # -------------- End custom variables ----------------- end # ======================================================================================== code startup: player = GetLocalPlayerThing(); kyleCog = GetThingClassCog(player); // Clear parameters ClearActorFlags(player, 0x2000); jkDisableSaber(player); KillTimerEx(0); KillTimerEx(1); KillTimerEx(2); KillTimerEx(3); KillTimerEx(4); KillTimerEx(5); KillTimerEx(6); KillTimerEx(7); KillTimerEx(8); KillTimerEx(9); KillTimerEx(10); active = 0; slash = 0; nextAttack = 0; slashAnimID = -1; povSlashAnimID = -1; return; # ........................................................................................ timer: id = GetSenderId(); if (id == 0) { // Only play the hum sound if we still have the saber up. if ((GetCurWeapon( player ) == 10) && !nosaber) { // Play mounting sound. PlaySoundThing(mountSound, player, 1.0, -1, -1, 0x80); // Stop humming sound if(humChannel != -1) { StopSound( humChannel, 0.5 ); humChannel = -1; } jkSetFlags(player, 0x5); jkSetFlags(player, 0x80); humChannel = PlaySoundThing(humSound01, player, 1.0, -1, -1, 0x81); } // Turn on saber physically active = 1; jkEnableSaber( player, 60, 0.123, 1.0 ); jkSetPOVModel(player, povsaber ); mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 ); // Check if we're dead, lost the saber, or inactive if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to stationary saber blade jkSetWeaponMesh(player, saber ); } else if (id == 1) { // Check if we're dead, lost the saber, or inactive if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; if (nosaber == 0) SetActorFlags(player, 0x2000); jkEnableSaber( player, 60, 0.123, 1.0 ); } else if (id == 2) { StopKey(player, holsterTrack, 0.0); } else if (id == 3) { SetInv(player, 89, 0); } else if (id == 4) //This is the trail control { // Begin trail array, checking each step if we're dead, throwing the saber, or inactive KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to first fan jkSetWeaponMesh(player, Fan1 ); sleep(fanwait); KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to second fan jkSetWeaponMesh(player, Fan2 ); sleep(fanwait*5); KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to first fan jkSetWeaponMesh(player, Fan1 ); sleep(fanwait); KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to stationary saber blade jkSetWeaponMesh(player, saber ); } else if(id == 5) { jkSetWeaponMesh(player, fistMesh); // Switch to fists } else if(id == 6) // Special timer for DOUBLE slash { // Stop first trail sequence KillTimerEx(4); KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; jkSetWeaponMesh(player, saber ); KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Commence second trail sequence fanwait=(GetKeyLen(chargeAnim)/18); SetTimerEx(fanwait, 4, 0, 0); } else if (id == 7) // Trails with only the smaller fan (underwater, block, stab, flip) { KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to first fan jkSetWeaponMesh(player, Fan1 ); sleep(fanwait*7); KillTimerEx(0); if(GetThingHealth(player) < 1) Return; if(GetInv(player, 10) == 0) Return; if (active == 0) Return; // Change to stationary saber blade jkSetWeaponMesh(player, saber ); } else if (id == 8) { active=1; } else if (id == 9) { // if the mount anim is still playing stop it if (mountAnimID != -1) { jkStopPOVKey( player, mountAnimID, 0 ); mountAnimID = -1; } // Kill saber trail timers and change to saber handle KillTimerEx(0); KillTimerEx(4); KillTimerEx(6); KillTimerEx(7); jkSetWeaponMesh(player, saberMesh); jkSetPOVModel(player, povModel); // Turn off lightsaber jkSetFlags(player, 0x8); SendTrigger(-1, 131, player, volume, crap, 0); SetInv(player, 89, 1); SetTimerEx(0.2, 3, 0, 0); jkSetWaggle(player, '0.0 0.0 0.0', 0); // Clear slash variables slash = 0; nextAttack = 0; slashAnimID = -1; povSlashAnimID = -1; // Stop humming sound if(humChannel != -1) { StopSound( humChannel, 0.5 ); humChannel = -1; } } else if (id == 10) { //Make sure we don't have the saber on when dead jkSetWeaponMesh(player, saberMesh); // Clear parameters jkDisableSaber(player); nosaber = 1; active = 0; ClearActorFlags(player, 0x2000); jkDisableSaber(player); KillTimerEx(0); KillTimerEx(1); KillTimerEx(2); KillTimerEx(3); KillTimerEx(4); KillTimerEx(5); KillTimerEx(6); KillTimerEx(7); KillTimerEx(8); KillTimerEx(9); KillTimerEx(10); } Return; # ........................................................................................ selected: assign = GetSenderRef(); //Set timer for drawing the saber so we can't turn it on for a bit SetInv(player, 89, 1); SetTimerEx(0.4, 3, 0, 0); // Go to external if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 0) && (GetPrimaryFocus(0) == player)) CycleCamera(); // Setup the meshes and models. jkSetPOVModel(player, povModel); SetArmedMode( player, 0 ); 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, 40); mountAnimID = jkPlayPOVKey( player, mountAnim, 0, 0x14 ); } else { mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 ); } SetMountWait(player, GetKeyLen(mountAnim)); // Set saber flags, and allow activation of the weapon SetCurWeapon( player, 10 ); // Clear parameters jkDisableSaber(player); nosaber = 1; active = 0; Return; # ........................................................................................ deselected: // Don't allow lightsaber ON/OFF switch // SetInv(player, 89, 1); // Back to POV if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 1) && (GetPrimaryFocus(1) == player)) CycleCamera(); // Shrink saber jkSetFlags(player, 0x8); jkClearFlags(player, 0x80); // If saber is on, play saber off sound if (active == 1) { PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80); } // Dismount the Lightsaber. 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 the mount anim is still playing stop it if (mountAnimID != -1) { jkStopPOVKey( player, mountAnimID, 0 ); mountAnimID = -1; } // Kill saber trail timers and get rid of lightsaber blade KillTimerEx(4); KillTimerEx(6); KillTimerEx(7); KillTimerEx(0); jkSetWeaponMesh(player, saberMesh); jkSetWaggle(player, '0.0 0.0 0.0', 0); // Clear variables slash = 0; nextAttack = 0; slashAnimID = -1; povSlashAnimID = -1; // Stop humming sound if(humChannel != -1) { StopSound( humChannel, 0.5 ); humChannel = -1; } // Waylay any hum sound that hasn't started yet. KillTimerEx(0); // Disable autoblock KillTimerEx(1); ClearActorFlags(player, 0x2000); jkDisableSaber(player); nosaber = 1; active = 0; 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 ); // Set autoblock and damage on SetActorFlags(player, 0x2000); jkEnableSaber( player, 60, 0.123, 1.0 ); // Make sure autoblock and saber damage are on SetTimerEx(0.5, 1, 0, 0); Return; # ........................................................................................ deactivated: mode = GetSenderRef(); jkSetWaggle(player, '10.0 7.0 0.0', 350); DeactivateWeapon( player, mode ); // Set autoblock and damage on SetActorFlags(player, 0x2000); jkEnableSaber( player, 60, 0.123, 1.0 ); // Make sure autoblock and saber damage are on SetTimerEx(0.5, 1, 0, 0); return; # ........................................................................................ fire: // Turn the lightsaber ON if it's off if(active == 0) call user7; // Kill trail timers and select appropriate saber color KillTimerEx(0); KillTimerEx(4); KillTimerEx(6); KillTimerEx(7); jkSetWeaponMesh(player, saber ); // Stop block animations, by sending a message to kyle.cog. SendMessage( kyleCog, user0 ); // Underwater saber attacks. if (GetMajorMode(player) == 5) { jkEnableSaber( player, 50, 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); keylen=(0.8); fanwait = (keylen / 10); SetTimerEx(fanwait, 7, 0, 0); SetFireWait(player, 0.90); 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 ); keylen=GetKeyLen(fireAnimR1); fanwait = (keylen / 11); SetTimerEx(fanwait, 4, 0, 0); PlayKey(player, fireAnimR1, 1, 0x38); 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.65); } else // LEFT Regular Strike if (VectorX(thrust) < 0) { jkEnableSaber( player, 50, 0.15, 0.25 ); keylen=GetKeyLen(fireAnimL1); fanwait = (keylen / 11); SetTimerEx(fanwait, 4, 0, 0); jkPlayPOVKey( player, povFireAnimL1, 2, 0x38 ); PlayKey(player, fireAnimL1, 1, 0x38); 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.65); } else // BACKWARDS Strike if (VectorY(thrust) < -0.1) { jkEnableSaber( player, 50, 0.15, 0.25 ); keylen=GetKeyLen(stabAnim); fanwait = (keylen / 26); SetTimerEx(fanwait, 7, 0, 0); if (nextAttack == 0) { jkPlayPOVKey( player, povFireAnimB1, 2, 0x38 ); keylen=GetKeyLen(fireAnimB1); PlayKey(player, fireAnimB1, 2, 0x38); nextAttack = 1; } else { jkPlayPOVKey( player, povFireAnimB2, 2, 0x38 ); keylen=GetKeyLen(fireAnimB2); 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.6); } else // STANDING Strike if (VectorY(thrust) < 0.1) { jkEnableSaber( player, 50, 0.25, 0.7 ); if (nextAttack == 0) { jkPlayPOVKey( player, povFireAnimF1, 2, 0x38 ); keylen=GetKeyLen(fireAnimF1); fanwait = (keylen / 10); SetTimerEx(fanwait, 4, 0, 0); PlayKey(player, fireAnimF1, 2, 0x38); nextAttack = 1; } else { jkPlayPOVKey( player, povFireAnimF2, 2, 0x38 ); keylen=GetKeyLen(fireAnimF2); fanwait = (keylen / 10); SetTimerEx(fanwait, 4, 0, 0);; PlayKey(player, fireAnimF2, 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.75); } else { // QUICK slash. if (slash == 0) { // If after a second, we haven't attacked again, reset slash to 0. jkEnableSaber( player, 50, 0.15, 0.25 ); keylen=GetKeyLen(snapAnim1); fanwait = (keylen / 10); SetTimerEx(fanwait, 4, 0, 0); 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, 50, 0.15, 0.25 ); povSlashAnimID = jkPlayPOVKey( player, povSnapAnim2, 2, 0x38 ); keylen=GetKeyLen(snapAnim1); fanwait = (keylen / 10); SetTimerEx(fanwait, 4, 0, 0); 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.5); slash = 2; } else if (slash == 2) { jkEnableSaber( player, 130, 0.2, 0.25 ); keylen=GetKeyLen(stabAnim); fanwait = (keylen / 26); SetTimerEx(fanwait, 7, 0, 0); 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, 0.5); slash = 0; } } fanwait = (keylen / 10); SetTimerEx(fanwait, 3, 0, 0); } // mode == 1 else { // HEAVY slash. { thrust = GetThingThrust( player ); jkEnableSaber( player, 160, 0.3, 1.2 ); jkPlayPOVKey( player, povChargeAnim, 2, 0x38 ); keylen=GetKeyLen(chargeAnim2); Fanwait=(keylen / 24); SetTimerEx(fanwait*2, 4, ((10*color)+1), 0); SetTimerEx(keylen*2/5, 6, 0, 0); if (VectorY(thrust) > 0.1) { PlayKey(player, chargeAnim2, 2, 0x38); PlaySoundThing(swingSoundDbl01, player, 1.0, -1, -1, 0x80); } else if (VectorY(thrust) < -0.1) { PlayKey(player, chargeAnim3, 2, 0x38); PlaySoundThing(swingSoundDbl03, player, 1.0, -1, -1, 0x80); } else { PlayKey(player, chargeAnim, 2, 0x38); PlaySoundThing(swingSoundDbl02, player, 1.0, -1, -1, 0x80); } shakePos = VectorScale(RandVec(),.001); shakeAngle = VectorScale(RandVec(),.5); SetPOVShake(shakePos, shakeAngle, .05, 80.0); SetFireWait(player, 1.4); } } } return; # ........................................................................................ newplayer: // Reset everything slash = 0; active = 0; nextAttack = 0; slashAnimID=-1; povSlashAnimID=-1; ClearActorFlags(player, 0x2000); jkDisableSaber(player); KillTimerEx(0); KillTimerEx(1); KillTimerEx(2); KillTimerEx(3); KillTimerEx(4); KillTimerEx(5); KillTimerEx(6); KillTimerEx(7); KillTimerEx(8); KillTimerEx(9); KillTimerEx(10); // Back to POV 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, GetWeaponBin(10)) != 0.0) { ReturnEx(200.0); } else { ReturnEx(-1.0); } Return; # ........................................................................................ killed: if (GetLocalPlayerThing() == GetSenderRef()) { if (GetCurWeapon(player) == 10) { // Reset everything ClearActorFlags(player, 0x2000); jkDisableSaber(player); KillTimerEx(0); KillTimerEx(1); KillTimerEx(2); KillTimerEx(3); KillTimerEx(4); KillTimerEx(5); KillTimerEx(6); KillTimerEx(7); KillTimerEx(8); KillTimerEx(9); KillTimerEx(10); if (active == 1) { // Change to just saber handle and then make sure all stuff is cleared jkSetWeaponMesh(player, saberMesh); PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80); SetCurWeapon( player, GetWeaponBin(1) ); SetTimerEx(1.0, 10, 0, 0); } } nosaber = 1; active = 0; } Return; #............................................................................. user4: if(active == 0) Return; PlaySoundThing(sabcolorSound, player, 0.5, -1, -1, 0x80); if(color >= 9) color=0; else color=(color + 1); jkSetWeaponMesh(player, saber ); jkSetPOVModel(player, povsaber ); jkSetSaberInfo(player, mat0[(2*color)+1], mat0[(2*color)], 0.007, 0.004, bladelen, tpl_wall, tpl_blood, tpl_saber); mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 ); Return; #............................................................................. user6: keylen=GetKeyLen(snapAnim3); fanwait = (keylen / 20); SetTimerEx(fanwait, 7, 0, 0); slashSound = Rand()*7; PlaySoundThing(swingSound01[slashSound], player, 1.0, -1, -1, 0x80); Return; #............................................................................. user7: // If lightsaber is ON... if (active == 1) { // If we're drawing the lightsaber, don't do anything if (GetInv(player, 89) == 1) Return; // Turn OFF lightsaber SetArmedMode(player, 0); SetTimerEx(0.01, 9, 0, 0); // Disable autoblock KillTimerEx(1); ClearActorFlags(player, 0x2000); jkDisableSaber(player); nosaber = 1; active = 0; } else // If lightsaber is OFF... if (active == 0) { // If we're drawing the lightsaber, don't do anything if (GetInv(player, 89) == 1) Return; SetInv(player, 89, 1); SetTimerEx(1.0, 3, 0, 0); // Turn ON lightsaber SetArmedMode(player, 2); SetTimerEx(0.00001, 0, 0, 0); // Go to external if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 0) && (GetPrimaryFocus(0) == player)) CycleCamera(); // Set autoblock on and show that we have the saber SetActorFlags(player, 0x2000); nosaber = 0; } Return; #............................................................................. user1: if (active == 0) Return; keylen=GetKeyLen(snapAnim3); fanwait = (keylen / 8); SetTimerEx(fanwait, 7, 0, 0); PlaySoundThing(swingSound08, player, 1.0, -1, -1, 0x80); Return; #====================================================================== end
Ohh Crap! - Darien Fawkes (The Invisible Man)