| Blockland Forums > Modification Help |
| Stating/Animation with Weapons |
| (1/3) > >> |
| Uxie:
There is this problem I have with these two weapons that are completely similiar but color and naming. From TRON Legacy. The orange and blue Light discs. So, I copied the Spear script and edited it with quite some effort, but not alot. They have an issue I can't seem to fix. They both do not play the animations to fire. They do fire after holding, but doesn't show the animations. I will show the "LightdiscBlue" script just that because it is almost completely similiar to "LightdiscOrange". The orange one just has different colors and naming. --- Code: ---//LightdiscBlue.cs datablock AudioProfile(LightdiscBlueExplosionSound) { filename = "./LightdiscHit.wav"; description = AudioClose3d; preload = false; }; datablock AudioProfile(LightdiscBlueFireSound) { filename = "./LightdiscFire.wav"; description = AudioClose3d; preload = true; }; //LightdiscBlue trail datablock ParticleData(LightdiscBlueTrailParticle) { dragCoefficient = 3.0; windCoefficient = 0.0; gravityCoefficient = 0.0; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 600; lifetimeVarianceMS = 0; spinSpeed = 10.0; spinRandomMin = -50.0; spinRandomMax = 50.0; useInvAlpha = true; animateTexture = false; //framesPerSec = 1; textureName = "base/data/particles/dot"; //animTexName = " "; // Interpolation variables colors[0] = "0.0 0.7 0.9 0.9"; colors[1] = "0.0 0.9 1.0 0.8"; colors[2] = "1 1 1 0.0"; sizes[0] = 0.15; sizes[1] = 0.35; sizes[2] = 0.05; times[0] = 0.0; times[1] = 0.1; times[2] = 1.0; }; datablock ParticleEmitterData(LightdiscBlueTrailEmitter) { ejectionPeriodMS = 5; periodVarianceMS = 0; ejectionVelocity = 0; //0.25; velocityVariance = 0; //0.10; ejectionOffset = 0; thetaMin = 0.0; thetaMax = 90.0; particles = LightdiscBlueTrailParticle; useEmitterColors = true; uiName = "LightdiscBlue Trail"; }; //effects datablock ParticleData(LightdiscBlueExplosionParticle) { dragCoefficient = 3.0; windCoefficient = 0.0; gravityCoefficient = 0.5; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 900; lifetimeVarianceMS = 300; spinSpeed = 10.0; spinRandomMin = -50.0; spinRandomMax = 50.0; useInvAlpha = true; animateTexture = false; //framesPerSec = 1; textureName = "base/data/particles/cloud"; //animTexName = "~/data/particles/cloud"; // Interpolation variables colors[0] = "0.3 0.3 0.2 0.9"; colors[1] = "0.2 0.2 0.2 0.0"; sizes[0] = 4.0; sizes[1] = 7.0; times[0] = 0.0; times[1] = 1.0; }; datablock ParticleEmitterData(LightdiscBlueExplosionEmitter) { ejectionPeriodMS = 7; periodVarianceMS = 0; lifeTimeMS = 21; ejectionVelocity = 8; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "LightdiscBlueExplosionParticle"; uiName = "LightdiscBlue Smoke"; emitterNode = TenthEmitterNode; }; datablock ParticleData(LightdiscBlueExplosionParticle2) { dragCoefficient = 0.1; windCoefficient = 0.0; gravityCoefficient = 2.0; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 1000; lifetimeVarianceMS = 500; spinSpeed = 10.0; spinRandomMin = -50.0; spinRandomMax = 50.0; useInvAlpha = true; animateTexture = false; //framesPerSec = 1; textureName = "base/data/particles/chunk"; //animTexName = "~/data/particles/cloud"; // Interpolation variables colors[0] = "0.0 0.0 0.0 1.0"; colors[1] = "0.0 0.0 0.0 0.0"; sizes[0] = 0.5; sizes[1] = 0.5; times[0] = 0.0; times[1] = 1.0; }; datablock ParticleEmitterData(LightdiscBlueExplosionEmitter2) { ejectionPeriodMS = 1; periodVarianceMS = 0; lifetimeMS = 7; ejectionVelocity = 15; velocityVariance = 5.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 90; phiReferenceVel = 0; phiVariance = 360; overrideAdvance = false; particles = "LightdiscBlueExplosionParticle2"; useEmitterColors = true; uiName = "LightdiscBlue Chunk"; emitterNode = HalfEmitterNode; }; datablock ExplosionData(LightdiscBlueExplosion) { //explosionShape = ""; lifeTimeMS = 150; soundProfile = LightdiscBlueExplosionSound; emitter[0] = LightdiscBlueExplosionEmitter; emitter[1] = LightdiscBlueExplosionEmitter2; //particleDensity = 30; //particleRadius = 1.0; faceViewer = true; explosionScale = "1 1 1"; shakeCamera = true; camShakeFreq = "7.0 8.0 7.0"; camShakeAmp = "1.0 1.0 1.0"; camShakeDuration = 0.5; camShakeRadius = 15.0; // Dynamic light lightStartRadius = 4; lightEndRadius = 3; lightStartColor = "0.45 0.3 0.1"; lightEndColor = "0 0 0"; //impulse impulseRadius = 3.5; impulseForce = 2000; //radius damage radiusDamage = 40; damageRadius = 3.5; }; //projectile AddDamageType("LightdiscBlueDirect", '<bitmap:add-ons/Weapon_Lightdisc/CI_Lightdisc> %1', '%2 <bitmap:add-ons/Weapon_Lightdisc/CI_Lightdisc> %1',1,1); datablock ProjectileData(LightdiscBlueProjectile) { projectileShapeName = "./LightdiscBlue.dts"; directDamage = 50; directDamageType = $DamageType::LightdiscBlueDirect; radiusDamageType = $DamageType::LightdiscBlueDirect; impactImpulse = 1000; verticalImpulse = 1000; explosion = LightdiscBlueExplosion; particleEmitter = LightdiscBlueTrailEmitter; brickExplosionRadius = 0; brickExplosionImpact = true; //destroy a brick if we hit it directly? brickExplosionForce = 20; brickExplosionMaxVolume = 200; brickExplosionMaxVolumeFloating = 200; muzzleVelocity = 50; velInheritFactor = 1; armingDelay = 0; lifetime = 20000; fadeDelay = 19500; bounceElasticity = 0; bounceFriction = 0; isBallistic = true; gravityMod = 0.50; hasLight = True; lightRadius = 3.0; lightColor = "0 0 1"; uiName = "Lightdisc Blue"; }; ////////// // item // ////////// datablock ItemData(LightdiscBlueItem) { category = "Weapon"; // Mission editor category className = "Weapon"; // For inventory system // Basic Item Properties shapeFile = "./LightdiscBlue.dts"; mass = 1; density = 0.2; elasticity = 0.2; friction = 0.6; emap = true; //gui stuff uiName = "LightdiscBlue"; iconName = "./icon_LightdiscBlue"; doColorShift = true; colorShiftColor = "0.400 0.196 0 1.000"; // Dynamic properties defined by the scripts image = LightdiscBlueImage; canDrop = true; }; //function LightdiscBlue::onUse(%this,%user) //{ // //mount the image in the right hand slot // %user.mountimage(%this.image, $RightHandSlot); //} //////////////// //weapon image// //////////////// datablock ShapeBaseImageData(LightdiscBlueImage) { // Basic Item properties shapeFile = "./LightdiscBlue.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.1 0.2 -0.55"; // 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 = LightdiscBlueItem; ammo = " "; projectile = LightdiscBlueProjectile; projectileType = Projectile; //melee particles shoot from eye node for consistancy melee = false; //raise your arm up or not armReady = true; //casing = " "; doColorShift = true; colorShiftColor = "0.400 0.196 0 1.000"; // 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"; stateSequence[0] = "ready"; stateSound[0] = weaponSwitchSound; stateName[1] = "Ready"; stateTransitionOnTriggerDown[1] = "Charge"; stateAllowImageChange[1] = true; stateName[2] = "Charge"; stateTransitionOnTimeout[2] = "Armed"; stateTimeoutValue[2] = 0.7; stateWaitForTimeout[2] = false; stateTransitionOnTriggerUp[2] = "AbortCharge"; stateScript[2] = "onCharge"; stateAllowImageChange[2] = false; stateName[3] = "AbortCharge"; stateTransitionOnTimeout[3] = "Ready"; stateTimeoutValue[3] = 0.3; stateWaitForTimeout[3] = true; stateScript[3] = "onAbortCharge"; stateAllowImageChange[3] = false; stateName[4] = "Armed"; stateTransitionOnTriggerUp[4] = "Fire"; stateAllowImageChange[4] = false; stateName[5] = "Fire"; stateTransitionOnTimeout[5] = "Ready"; stateTimeoutValue[5] = 0.5; stateFire[5] = true; stateSequence[5] = "fire"; stateScript[5] = "onFire"; stateWaitForTimeout[5] = true; stateAllowImageChange[5] = false; stateSound[5] = LightdiscBlueFireSound; }; function LightdiscBlueImage::onCharge(%this, %obj, %slot) { %obj.playthread(2, LightdiscBlueReady); } function LightdiscBlueImage::onAbortCharge(%this, %obj, %slot) { %obj.playthread(2, root); } function LightdiscBlueImage::onFire(%this, %obj, %slot) { %obj.playthread(2, LightdiscBlueThrow); Parent::onFire(%this, %obj, %slot); } --- End code --- The states might have something to do with this I think. |
| Daenth:
--- Code: ---function LightdiscBlueImage::onCharge(%this, %obj, %slot) { %obj.playthread(2, spearReady); } function LightdiscBlueImage::onAbortCharge(%this, %obj, %slot) { %obj.playthread(2, root); } function LightdiscBlueImage::onFire(%this, %obj, %slot) { %obj.playthread(2, spearThrow); Parent::onFire(%this, %obj, %slot); } --- End code --- Animations for the spear are named "spearX". Changing it would result in it not playing the animation. |
| Uxie:
Wait what? You mean like spearXReady and spearXThrow? |
| Daenth:
--- Quote from: Uxie on May 19, 2011, 09:39:38 PM ---Wait what? You mean like spearXReady and spearXThrow? --- End quote --- No, no, no. I used X as the variable. Basically, it means that the animations always start with spear and end with ready or throw. --- Quote from: Daenth on May 19, 2011, 08:55:13 PM --- --- Code: ---function LightdiscBlueImage::onCharge(%this, %obj, %slot) { %obj.playthread(2, spearReady); } function LightdiscBlueImage::onAbortCharge(%this, %obj, %slot) { %obj.playthread(2, root); } function LightdiscBlueImage::onFire(%this, %obj, %slot) { %obj.playthread(2, spearThrow); Parent::onFire(%this, %obj, %slot); } --- End code --- --- End quote --- Just use that for the end to get the animation to work. |
| Uxie:
I can get confused easily sometimes. So, like: spearReadyX and spearThrowX? Edit: ^ Obviously not because I tried this. ^ |
| Navigation |
| Message Index |
| Next page |