| Blockland Forums > Modification Help |
| Heavy Rocket Launcher Script |
| (1/3) > >> |
| TheKhoz:
I opened the Heavy Rocket Launcher and noticed there was no scripting. Why? And, how does the gun work without scripting? |
| phflack:
gun: --- Code: ---//gun.cs //audio datablock AudioProfile(gunShot1Sound) { filename = "./gunShot1.wav"; description = AudioClose3d; preload = true; }; datablock AudioProfile(bulletHitSound) { filename = "./bulletHit.wav"; description = AudioClose3d; preload = true; }; //shell datablock DebrisData(gunShellDebris) { shapeFile = "./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 = 2; }; //muzzle flash effects datablock ParticleData(gunFlashParticle) { 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(gunFlashEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 1.0; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "gunFlashParticle"; uiName = "Gun Flash"; }; datablock ParticleData(gunSmokeParticle) { 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(gunSmokeEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 1.0; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "gunSmokeParticle"; uiName = "Gun Smoke"; }; datablock ParticleData(gunExplosionParticle) { dragCoefficient = 8; gravityCoefficient = 1; 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] = "0.9 0.9 0.9 0.3"; colors[1] = "0.9 0.5 0.6 0.0"; sizes[0] = 0.25; sizes[1] = 0.75; useInvAlpha = true; }; datablock ParticleEmitterData(gunExplosionEmitter) { ejectionPeriodMS = 1; periodVarianceMS = 0; ejectionVelocity = 2; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 89; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "gunExplosionParticle"; useEmitterColors = true; uiName = "Gun Hit Dust"; }; datablock ParticleData(gunExplosionRingParticle) { dragCoefficient = 8; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 50; lifetimeVarianceMS = 35; textureName = "base/data/particles/star1"; spinSpeed = 500.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "1 1 0.0 0.9"; colors[1] = "0.9 0.0 0.0 0.0"; sizes[0] = 1; sizes[1] = 0; useInvAlpha = false; }; datablock ParticleEmitterData(gunExplosionRingEmitter) { lifeTimeMS = 50; ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 0; velocityVariance = 0.0; ejectionOffset = 0.0; thetaMin = 89; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "gunExplosionRingParticle"; useEmitterColors = true; uiName = "Gun Hit Flash"; }; datablock ExplosionData(gunExplosion) { //explosionShape = ""; soundProfile = bulletHitSound; lifeTimeMS = 150; particleEmitter = gunExplosionEmitter; particleDensity = 5; particleRadius = 0.2; emitter[0] = gunExplosionRingEmitter; faceViewer = true; explosionScale = "1 1 1"; shakeCamera = false; camShakeFreq = "10.0 11.0 10.0"; camShakeAmp = "1.0 1.0 1.0"; camShakeDuration = 0.5; camShakeRadius = 10.0; // Dynamic light lightStartRadius = 0; lightEndRadius = 2; lightStartColor = "0.3 0.6 0.7"; lightEndColor = "0 0 0"; }; AddDamageType("Gun", '<bitmap:add-ons/Weapon_Gun/CI_gun> %1', '%2 <bitmap:add-ons/Weapon_Gun/CI_gun> %1',0.2,1); datablock ProjectileData(gunProjectile) { projectileShapeName = "./bullet.dts"; directDamage = 30; directDamageType = $DamageType::Gun; radiusDamageType = $DamageType::Gun; brickExplosionRadius = 0; brickExplosionImpact = true; //destroy a brick if we hit it directly? brickExplosionForce = 10; brickExplosionMaxVolume = 1; //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 = 400; verticalImpulse = 400; explosion = gunExplosion; particleEmitter = ""; //bulletTrailEmitter; muzzleVelocity = 90; velInheritFactor = 1; armingDelay = 00; lifetime = 4000; fadeDelay = 3500; bounceElasticity = 0.5; bounceFriction = 0.20; isBallistic = false; gravityMod = 0.0; hasLight = false; lightRadius = 3.0; lightColor = "0 0 0.5"; uiName = "Gun Bullet"; }; ////////// // item // ////////// datablock ItemData(GunItem) { category = "Weapon"; // Mission editor category className = "Weapon"; // For inventory system // Basic Item Properties shapeFile = "./pistol.dts"; rotate = false; mass = 1; density = 0.2; elasticity = 0.2; friction = 0.6; emap = true; //gui stuff uiName = "Gun"; iconName = "./icon_gun"; doColorShift = true; colorShiftColor = "0.25 0.25 0.25 1.000"; // Dynamic properties defined by the scripts image = gunImage; canDrop = true; }; //////////////// //weapon image// //////////////// datablock ShapeBaseImageData(gunImage) { // Basic Item properties shapeFile = "./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 = BowItem; ammo = " "; projectile = gunProjectile; projectileType = Projectile; casing = gunShellDebris; shellExitDir = "1.0 -1.3 1.0"; shellExitOffset = "0 0 0"; shellExitVariance = 15.0; shellVelocity = 7.0; //melee particles shoot from eye node for consistancy melee = false; //raise your arm up or not armReady = true; doColorShift = true; colorShiftColor = gunItem.colorShiftColor;//"0.400 0.196 0 1.000"; //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] = gunFlashEmitter; stateEmitterTime[2] = 0.05; stateEmitterNode[2] = "muzzleNode"; stateSound[2] = gunShot1Sound; stateEjectShell[2] = true; stateName[3] = "Smoke"; stateEmitter[3] = gunSmokeEmitter; 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 gunImage::onFire(%this,%obj,%slot) { if(%obj.getDamagePercent() < 1.0) %obj.playThread(2, shiftAway); Parent::onFire(%this,%obj,%slot); } --- End code --- |
| phflack:
heavy RL: --- Code: ---//rocketLauncher.cs //audio datablock AudioProfile(HeavyrocketFireSound) { filename = "./HeavyrocketFireNEW.wav"; description = AudioClosest3d; preload = true; }; datablock AudioProfile(HeavyrocketExplodeSound) { filename = "./Heavy_RL_blast.wav"; description = AudioDefault3d; preload = true; }; datablock AudioProfile(HeavyrocketLoopSound) { filename = "./HeavyrocketLoop.wav"; description = AudioCloseLooping3d; preload = true; }; //muzzle flash effects datablock ParticleData(HeavyrocketLauncherFlashParticle) { dragCoefficient = 1; gravityCoefficient = 1.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 1500; lifetimeVarianceMS = 150; textureName = "base/data/particles/star1"; spinSpeed = 10.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "0.9 0.1 0.0 0.9"; colors[1] = "0.9 0.2 0.0 0.0"; sizes[0] = 0.25; sizes[1] = 0.0; useInvAlpha = false; }; datablock ParticleEmitterData(HeavyrocketLauncherFlashEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 10.0; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 180; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "HeavyrocketLauncherFlashParticle"; uiName = "Heavy RL Spark"; }; //smoke effects datablock ParticleData(HeavyrocketLauncherSmokeParticle) { dragCoefficient = 5; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 300; lifetimeVarianceMS = 250; textureName = "base/data/particles/cloud"; spinSpeed = 10.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "0.5 0.5 0.5 0.0"; colors[1] = "0.5 0.5 0.5 0.9"; colors[2] = "0.5 0.5 0.5 0.0"; sizes[0] = 0.25; sizes[1] = 1.0; sizes[2] = 1.75; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; useInvAlpha = false; }; datablock ParticleEmitterData(HeavyrocketLauncherSmokeEmitter) { ejectionPeriodMS = 5; periodVarianceMS = 0; ejectionVelocity = 10.0; velocityVariance = 0.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 25; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "HeavyrocketLauncherSmokeParticle"; uiName = "Heavy RL Smoke"; }; //Trail datablock ParticleData(HeavyrocketTrailParticle) { dragCoefficient = 0.1; gravityCoefficient = -0.06; windCoefficient = 0.35; inheritedVelFactor = 0; constantAcceleration = 0; lifetimeMS = 3000; lifetimeVarianceMS = 1000; textureName = "base/data/particles/cloud"; spinSpeed = 10; spinRandomMin = -600; spinRandomMax = 700; colors[0] = "1 1 0 0.5"; colors[1] = "1 0 0 0.3"; colors[2] = "0.1 0.1 0.1 0.3"; colors[3] = "0.1 0.1 0.1 0.4"; sizes[0] = 0.6; sizes[1] = 0.7; sizes[2] = 0.8; sizes[3] = 0.9; times[0] = 0; times[1] = 0.1; times[2] = 0.15; times[3] = 1; useInvAlpha = false; }; datablock ParticleEmitterData(HeavyrocketTrailEmitter) { ejectionPeriodMS = 10; periodVarianceMS = 0; ejectionVelocity = 0.3; velocityVariance = 0.15; ejectionOffset = 0.1; thetaMin = 135; thetaMax = 180; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "HeavyrocketTrailParticle"; uiName = "Heavy Rocket Trail"; }; //Explosion// ///////////// datablock ParticleData(HeavyrocketExplosionParticle) { dragCoefficient = 3; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 1000; lifetimeVarianceMS = 500; textureName = "base/data/particles/cloud"; spinSpeed = 10.0; spinRandomMin = -50.0; spinRandomMax = 50.0; colors[0] = "0.2 0.2 0.2 0.9"; colors[1] = "0.4 0.4 0.4 0.2"; colors[2] = "0.8 0.8 0.8 0.2"; sizes[0] = 10.0; sizes[1] = 15.0; sizes[2] = 15.0; useInvAlpha = true; }; datablock ParticleEmitterData(HeavyrocketExplosionEmitter) { ejectionPeriodMS = 10; periodVarianceMS = 0; ejectionVelocity = 10; velocityVariance = 1.0; ejectionOffset = 3.0; thetaMin = 89; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "HeavyrocketExplosionParticle"; uiName = "Heavy Rocket Explosion Smoke"; emitterNode = TenthEmitterNode; }; datablock ParticleData(HeavyrocketExplosionFlashParticle) { dragCoefficient = 8; gravityCoefficient = -0.5; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 55; lifetimeVarianceMS = 10; textureName = "base/data/particles/star1"; spinSpeed = 10.0; spinRandomMin = -500.0; spinRandomMax = 500.0; colors[0] = "1 0.4 0.1 0.8"; colors[1] = "1 0.0 0.0 0.2"; sizes[0] = 13; sizes[1] = 20; useInvAlpha = false; }; datablock ParticleEmitterData(HeavyrocketExplosionFlashEmitter) { lifeTimeMS = 50; ejectionPeriodMS = 15; periodVarianceMS = 0; ejectionVelocity = 5; velocityVariance = 0.0; ejectionOffset = 3.0; thetaMin = 0; thetaMax = 180; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "HeavyrocketExplosionFlashParticle"; uiName = "Heavy Rocket Explosion Flash"; }; ///////////////// //--Explosion--// ///////////////// datablock ExplosionData(HeavyrocketExplosion : tankShellExplosion) { //explosionShape = ""; explosionShape = "add-ons/Weapon_Rocket_Launcher/explosionSphere1.dts"; soundProfile = HeavyrocketExplodeSound; lifeTimeMS = 150; particleEmitter = HeavyrocketExplosionEmitter; // particleEmitter = HeavyrocketExplosionFlashEmitter; particleDensity = 10; particleRadius = 0.2; emitter[0] = HeavyrocketExplosionFlashEmitter; // debris = HeavyrocketFlareDebris; // debrisNum = 50; // debrisNumVariance = 10; // debrisPhiMin = 0; // debrisPhiMax = 360; // debrisThetaMin = 0; // debrisThetaMax = 180; // debrisVelocity = 120; // debrisVelocityVariance = 30; faceViewer = true; explosionScale = "1 1 1"; shakeCamera = true; camShakeFreq = "10.0 11.0 10.0"; camShakeAmp = "3.0 10.0 3.0"; camShakeDuration = 1.5; camShakeRadius = 30.0; // Dynamic light lightStartRadius = 5; lightEndRadius = 20; lightStartColor = "1 0.2 0.0 1"; lightEndColor = "0 0 0 0"; damageRadius = 13; radiusDamage = 200; impulseRadius = 13; impulseForce = 1500; playerBurnTime = 0; }; //AddDamageType("HeavyRocketDirect", '<bitmap:add-ons/Weapon_Rocket_Launcher/CI_rocket> %1', '%2 <bitmap:add-ons/Weapon_Rocket_Launcher/CI_rocket> %1',1,1); //AddDamageType("HeavyRocketRadius", '<bitmap:add-ons/Weapon_Rocket_Launcher/CI_rocketRadius> %1', '%2 <bitmap:add-ons/Weapon_Rocket_Launcher/CI_rocketRadius> %1',1,0); datablock ProjectileData(HeavyrocketLauncherProjectile) { projectileShapeName = "Add-Ons/Projectile_GravityRocket/RocketGravityProjectile.dts"; directDamage = 50; directDamageType = $DamageType::RocketDirect; radiusDamageType = $DamageType::RocketRadius; impactImpulse = 4000; verticalImpulse = 1000; explosion = HeavyrocketExplosion; particleEmitter = HeavyrocketTrailEmitter; brickExplosionRadius = 5; brickExplosionImpact = false; //destroy a brick if we hit it directly? brickExplosionForce = 40; brickExplosionMaxVolume = 40; //max volume of bricks that we can destroy brickExplosionMaxVolumeFloating = 80; //max volume of bricks that we can destroy if they aren't connected to the ground (should always be >= brickExplosionMaxVolume) sound = HeavyrocketLoopSound; muzzleVelocity = 52; velInheritFactor = 1.0; armingDelay = 00; lifetime = 8000; fadeDelay = 3500; bounceElasticity = 0.5; bounceFriction = 0.20; isBallistic = true; gravityMod = 1; hasLight = true; lightRadius = 5.0; lightColor = "1 0.5 0.0"; uiName = "MAS Heavy Rocket"; }; ////////// // item // ////////// datablock ItemData(HeavyrocketLauncherItem) { category = "Weapon"; // Mission editor category className = "Weapon"; // For inventory system // Basic Item Properties shapeFile = "./Heavy RL.dts"; rotate = false; mass = 1; density = 0.2; elasticity = 0.2; friction = 0.6; emap = true; //gui stuff uiName = "MAS Heavy RL"; iconName = "./icon_HeavyRLNEW"; doColorShift = true; colorShiftColor = "0.420 0.420 0.420 1.000"; // Dynamic properties defined by the scripts image = HeavyrocketLauncherImage; canDrop = true; }; //////////////// //weapon image// //////////////// datablock ShapeBaseImageData(HeavyrocketLauncherImage) { // Basic Item properties shapeFile = "./Heavy RL.dts"; emap = true; doColorShift = true; colorShiftColor = "0.420 0.420 0.420 1.000"; // 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 = BowItem; ammo = " "; projectile = HeavyrocketLauncherProjectile; projectileType = Projectile; //casing = rocketLauncherShellDebris; shellExitDir = "1.0 -1.3 1.0"; shellExitOffset = "0 0 0"; shellExitVariance = 15.0; shellVelocity = 7.0; //melee particles shoot from eye node for consistancy melee = false; //raise your arm up or not armReady = true; minShotTime = 1000; //minimum time allowed between shots (needed to prevent equip/dequip exploit) //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.1; stateTransitionOnTimeout[0] = "Ready"; stateSound[0] = weaponSwitchSound; stateName[1] = "Ready"; stateTransitionOnTriggerDown[1] = "Fire"; stateAllowImageChange[1] = true; stateTransitionOnNoAmmo[1] = "NoAmmo"; stateSequence[1] = "Ready"; stateName[2] = "Fire"; stateSequence[2] = "Fire"; stateTransitionOnTimeout[2] = "Smoke"; stateTimeoutValue[2] = 0.1; stateFire[2] = true; stateAllowImageChange[2] = false; stateSequence[2] = "Fire"; stateScript[2] = "onFire"; stateWaitForTimeout[2] = true; stateEmitter[2] = HeavyrocketLauncherFlashEmitter; stateEmitterTime[2] = 0.1; // stateEmitterNode[2] = tailNode; stateSound[2] = HeavyrocketFireSound; stateSequence[2] = "Fire"; //stateEjectShell[2] = true; stateName[3] = "Smoke"; stateEmitter[3] = HeavyrocketLauncherSmokeEmitter; stateEmitterTime[3] = 0.05; stateEmitterNode[3] = "muzzleNode"; stateTimeoutValue[3] = 0.1; stateSequence[3] = "TrigDown"; stateTransitionOnTimeout[3] = "CoolDown"; stateName[5] = "CoolDown"; stateTimeoutValue[5] = 2.5; stateTransitionOnTimeout[5] = "Reload"; stateSequence[5] = "TrigDown"; stateName[4] = "Reload"; stateTransitionOnTriggerUp[4] = "Ready"; stateSequence[4] = "TrigDown"; stateName[6] = "NoAmmo"; stateTransitionOnAmmo[6] = "Ready"; }; function HeavyrocketLauncherImage::onFire(%this,%obj,%slot) { if(%obj.getDamagePercent() < 1.0) %obj.playThread(2, plant); Parent::onFire(%this,%obj,%slot); } $zombie::ammo::Gun[$zombie::ammo::Listcount++] = HeavyrocketLauncherProjectile; $zombie::ammo::AmmoHeavyrocketLauncherProjectile = 6; --- End code --- note - too long to post in one reply :D |
| Blaze0:
How did you get that. |
| takato14:
--- Quote from: TheKhoz on October 21, 2010, 11:48:24 PM ---I opened the Heavy Rocket Launcher and noticed there was no scripting. Why? And, how does the gun work without scripting? --- End quote --- What do you mean when you say "No scripting"? As in no functions or no server.cs altogether? Because both addons have those things... Perhaps the gun references a "Weapon_Gun.cs" file rather than keeping all the code in the server.cs? I know the Heavy Rocket does. |
| Navigation |
| Message Index |
| Next page |