| Blockland Forums > Modification Help |
| gunthatkillsuser |
| << < (3/3) |
| Space Guy:
Team Deathmatch Mod --> Tool_TeamGun.cs Look for the ::onFire function of the weapon. That has "if not S-Admin --> Kill player" |
| Flea:
I've got the simplest answer. Not sure it works though... Change: MuzzleVelocity = 25; To: MuzzleVelocity = -25; Thus the projectile moves backwards when shot hitting the shooter not the shootee(as ill call it) Also change: VelInheritFactor = 0.1: To: VelInheritFactor = 0; This causes the bullet to go were it was shot to, and not change direction due to player movement. |
| rkynick:
Thanks for all your suggestions. Space guy i tried doing what you did with your teamdm mod but then the awesomegun stopped updating(when i would make changes and restart it would be the old model) wtf is going on?(btw i want the gun to kill the user no matter what.) @flea that wont work for my needs cuz i want it to kill a player outside of a minigame as well. new gun code --- Code: ---//gun.cs //audio datablock AudioProfile(awesomegunShot1Sound) { filename = "./sound/gunShot1.wav"; description = AudioClose3d; preload = true; }; datablock AudioProfile(awesomegunHitSound) { filename = "./sound/arrowHit.wav"; description = AudioClose3d; preload = true; }; //shell datablock DebrisData(awesomegunShellDebris) { shapeFile = "./shapes/gunShell.dts"; lifetime = 2.0; minSpinSpeed = -400.0; maxSpinSpeed = 200.0; elasticity = 0.5; friction = 0.2; numBounces = 3; staticOnMaxBounce = true; snapOnMaxBounce = false; fade = true; gravModifier = 0; }; //muzzle flash effects datablock ParticleData(awesomegunFlashParticle) { dragCoefficient = 3; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 25; lifetimeVarianceMS = 15; textureName = "base/data/particles/star1"; spinSpeed = 10.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "0.9 0.9 0.0 0.9"; colors[1] = "0.9 0.5 0.0 0.0"; sizes[0] = 0.5; sizes[1] = 1.0; useInvAlpha = false; }; datablock ParticleEmitterData(awesomegunFlashEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 1.0; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "awesomegunFlashParticle"; }; datablock ParticleData(awesomegunSmokeParticle) { dragCoefficient = 3; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 525; lifetimeVarianceMS = 55; textureName = "base/data/particles/cloud"; spinSpeed = 10.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "0.5 0.5 0.5 0.9"; colors[1] = "0.5 0.5 0.5 0.0"; sizes[0] = 0.15; sizes[1] = 0.15; useInvAlpha = false; }; datablock ParticleEmitterData(awesomegunSmokeEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 1.0; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "awesomegunSmokeParticle"; }; //bullet trail effects datablock ParticleData(awesomegunbulletTrailParticle) { dragCoefficient = 3; gravityCoefficient = -0.0; inheritedVelFactor = 1.0; constantAcceleration = 0.0; lifetimeMS = 525; lifetimeVarianceMS = 55; textureName = "base/data/particles/thinRing"; spinSpeed = 10.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "1 0 0 1"; colors[1] = "1 0.1 0 0.5"; sizes[0] = 0.15; sizes[1] = 0.25; useInvAlpha = false; }; datablock ParticleEmitterData(awesomegunbulletTrailEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 0.0; velocityVariance = 0.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "sawesomegunbulletTrailParticle"; }; datablock ParticleData(awesomegunExplosionParticle) { dragCoefficient = 8; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 700; lifetimeVarianceMS = 400; textureName = "base/data/particles/cloud"; spinSpeed = 10.0; spinRandomMin = -50.0; spinRandomMax = 50.0; colors[0] = "1 0 0 1"; colors[1] = "1 0.1 0 0.5"; sizes[0] = 0.25; sizes[1] = 1.0; useInvAlpha = true; }; datablock ParticleEmitterData(awesomegunExplosionEmitter) { ejectionPeriodMS = 1; periodVarianceMS = 0; ejectionVelocity = 5; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 89; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "awesomegunExplosionParticle"; }; datablock ParticleData(awesomegunExplosionRingParticle) { dragCoefficient = 8; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 900; lifetimeVarianceMS = 100; textureName = "base/data/particles/star1"; spinSpeed = 10.0; spinRandomMin = -50.0; spinRandomMax = 50.0; colors[0] = "1 0 0.0 1"; colors[1] = "1 0.1 0.0 0.5"; sizes[0] = 0.2; sizes[1] = 0.2; useInvAlpha = false; }; datablock ParticleEmitterData(awesomegunExplosionRingEmitter) { lifeTimeMS = 90; ejectionPeriodMS = 1; periodVarianceMS = 0; ejectionVelocity = 5; velocityVariance = 0.0; ejectionOffset = 0.0; thetaMin = 89; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "awesomegunExplosionRingParticle"; }; datablock ExplosionData(awesomegunExplosion) { //explosionShape = ""; soundProfile = awesomegunHitSound; lifeTimeMS = 9950; particleEmitter = awesomegunExplosionEmitter; particleDensity = 1; particleRadius = 99; emitter[0] = awesomegunExplosionRingEmitter; faceViewer = true; explosionScale = "4 4 4"; shakeCamera = true; camShakeFreq = "10.0 11.0 10.0"; camShakeAmp = "1.0 1.0 1.0"; camShakeDuration = 0.5; camShakeRadius = 10.0; // Dynamic light lightStartRadius = 1; lightEndRadius = 2; lightStartColor = "1 1.0 1.1"; lightEndColor = "0 0 0"; }; AddDamageType("awesomegun", '<bitmap:add-ons/ci/gun> %1', '%2 <bitmap:add-ons/ci/gun> %1',0.5,1); datablock ProjectileData(awesomegunProjectile) { projectileShapeName = "./shapes/bullet.dts"; directDamage = 999; directDamageType = $DamageType::awesomegun; radiusDamageType = $DamageType::awesomegun; brickExplosionRadius = 1; brickExplosionImpact = true; //destroy a brick if we hit it directly? brickExplosionForce = 10; brickExplosionMaxVolume = 10; //max volume of bricks that we can destroy brickExplosionMaxVolumeFloating = 2; //max volume of bricks that we can destroy if they aren't connected to the ground impactImpulse = 700; verticalImpulse = 1000; explosion = awesomegunExplosion; particleEmitter = awesomegunbulletTrailEmitter; muzzleVelocity = 15; velInheritFactor = 0.1; armingDelay = 00; lifetime = 124000; fadeDelay = 3500; bounceElasticity = 0.5; bounceFriction = 0.20; isBallistic = true; gravityMod = 1.0; hasLight = true; lightRadius = 2.0; lightColor = "1 0 0.5"; }; ////////// // item // ////////// datablock ItemData(awesomegunItem) { category = "Weapon"; // Mission editor category className = "Weapon"; // For inventory system // Basic Item Properties shapeFile = "./shapes/pistol.dts"; rotate = false; mass = 1; density = 0.2; elasticity = 0.2; friction = 0.6; emap = true; //gui stuff uiName = "awesomegun"; iconName = "./ItemIcons/gun"; doColorShift = true; colorShiftColor = "1 1.1 1 1"; // Dynamic properties defined by the scripts image = stupidgunImage; canDrop = true; }; //function BowItem::onUse(%this, %player, %InvPosition) //{ // //check for quiver // //if you dont have it, regular bow // //if you do, super bow // // %client = %player.client; // // %mountPoint = %this.image.mountPoint; // %mountedImage = %player.getMountedImage(%mountPoint); // // // if(%mountedImage) // { // if(%mountedImage == bowImage.getId() || %mountedImage == superbowImage.getId()) // { // //some kind of bow mounted so, unmount it // %player.unMountImage(%mountPoint); // messageClient(%client, 'MsgHilightInv', '', -1); // %player.currWeaponSlot = -1; // } // else // { // //something other than bow mounted, so do bow selection and mount // if(%player.getMountedImage($BackSlot)) // { // if(%player.getMountedImage($BackSlot) == quiverImage.getId()) // { // %player.mountimage(superBowImage, $RightHandSlot, 1, %skin); // messageClient(%client, 'MsgHilightInv', '', %InvPosition); // %player.currWeaponSlot = %invPosition; // } // else // { // %player.mountimage(bowImage, $RightHandSlot, 1, %skin); // messageClient(%client, 'MsgHilightInv', '', %InvPosition); // %player.currWeaponSlot = %invPosition; // } // } // else // { // %player.mountimage(bowImage, $RightHandSlot, 1, %skin); // messageClient(%client, 'MsgHilightInv', '', %InvPosition); // %player.currWeaponSlot = %invPosition; // } // } // // } // else // { // //nothing mounted so do bow selection and mount // //something other than bow mounted, so do bow selection and mount // if(%player.getMountedImage($BackSlot)) // { // if(%player.getMountedImage($BackSlot) == quiverImage.getId()) // { // %player.mountimage(superBowImage, $RightHandSlot, 1, %skin); // messageClient(%client, 'MsgHilightInv', '', %InvPosition); // %player.currWeaponSlot = %invPosition; // } // else // { // %player.mountimage(bowImage, $RightHandSlot, 1, %skin); // messageClient(%client, 'MsgHilightInv', '', %InvPosition); // %player.currWeaponSlot = %invPosition; // } // } // else // { // %player.mountimage(bowImage, $RightHandSlot, 1, %skin); // messageClient(%client, 'MsgHilightInv', '', %InvPosition); // %player.currWeaponSlot = %invPosition; // } // } //} //////////////// //weapon image// //////////////// datablock ShapeBaseImageData(awesomegunImage) { // Basic Item properties shapeFile = "./shapes/pistol.dts"; emap = true; // Specify mount point & offset for 3rd person, and eye offset // for first person rendering. mountPoint = 0; offset = "0 0 0"; eyeOffset = 0; //"0.7 1.2 -0.5"; rotation = eulerToMatrix( "0 0 0" ); // When firing from a point offset from the eye, muzzle correction // will adjust the muzzle vector to point to the eye LOS point. // Since this weapon doesn't actually fire from the muzzle point, // we need to turn this off. correctMuzzleVector = true; // Add the WeaponImage namespace as a parent, WeaponImage namespace // provides some hooks into the inventory system. className = "WeaponImage"; // Projectile && Ammo. item = awesomegunItem; ammo = " "; projectile = awesomegunProjectile; projectileType = Projectile; casing = awesomegunShellDebris; shellExitDir = "1.0 -1.3 1.0"; shellExitOffset = "0 0 0"; shellExitVariance = 15.0; shellVelocity = 999.0; //melee particles shoot from eye node for consistancy melee = false; //raise your arm up or not armReady = true; doColorShift = true; colorShiftColor = awesomegunItem.colorShiftColor;//"1 1 1 1"; //casing = " "; // Images have a state system which controls how the animations // are run, which sounds are played, script callbacks, etc. This // state system is downloaded to the client so that clients can // predict state changes and animate accordingly. The following // system supports basic ready->fire->reload transitions as // well as a no-ammo->dryfire idle state. // Initial start up state stateName[0] = "Activate"; stateTimeoutValue[0] = 0.15; stateTransitionOnTimeout[0] = "Ready"; stateSound[0] = weaponSwitchSound; stateName[1] = "Ready"; stateTransitionOnTriggerDown[1] = "Fire"; stateAllowImageChange[1] = true; stateSequence[1] = "Ready"; stateName[2] = "Fire"; stateTransitionOnTimeout[2] = "Smoke"; stateTimeoutValue[2] = 0.14; stateFire[2] = true; stateAllowImageChange[2] = false; stateSequence[2] = "Fire"; stateScript[2] = "onFire"; stateWaitForTimeout[2] = true; stateEmitter[2] = awesomegunFlashEmitter; stateEmitterTime[2] = 0.05; stateEmitterNode[2] = "muzzleNode"; stateSound[2] = awesomegunShot1Sound; stateEjectShell[2] = true; stateName[3] = "Smoke"; stateEmitter[3] = awesomegunSmokeEmitter; stateEmitterTime[3] = 0.05; stateEmitterNode[3] = "muzzleNode"; stateTimeoutValue[3] = 0.01; stateTransitionOnTimeout[3] = "Reload"; stateName[4] = "Reload"; stateSequence[4] = "Reload"; stateTransitionOnTriggerUp[4] = "Ready"; stateSequence[4] = "Ready"; }; function awesomegunImage::onFire(%this,%obj,%slot) { %obj.kill($DamageType::awesomegun); } --- End code --- |
| Resonance_Cascade:
I also suggest deleting all the crap that's commented out about the bow image. It's not needed. |
| Space Guy:
Weapon datablock updating is very glitchy, anyway - it updates some things on lifetimes but not the states system or some stuff in projectiles. |
| Navigation |
| Message Index |
| Previous page |