Author Topic: My New Weapon won't show up  (Read 1065 times)

I made a new topic, because the first one was in the wrong section. I've made a Wiimote weapon for Blockland. The model's done, and it's supposed to be like the spear, you throw an invisible projectile. Here's my problem: I've taken the Spear script and changed it, but when I test it, the Wiimote won't show up, but Spear will. When I fire the Spear there's no sound, but the explosion sound is there. Here's the script. Tell me what went wrong.
Code: [Select]
//wiimote.cs


datablock AudioProfile(spearExplosionSound)
{
   filename    = "./wiimoteHit.wav";
   description = AudioClose3d;
   preload = false;
};

datablock AudioProfile(spearFireSound)
{
   filename    = "./wiimoteFire.wav";
   description = AudioClose3d;
   preload = true;
};


//wiimote trail
datablock ParticleData(spearTrailParticle)
{
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/thinring";
//animTexName = " ";

// Interpolation variables
colors[0] = "0.75 0.75 0.75 0.3";
colors[1] = "0.75 0.75 0.75 0.2";
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(spearTrailEmitter)
{
   ejectionPeriodMS = 5;
   periodVarianceMS = 0;

   ejectionVelocity = 0; //0.25;
   velocityVariance = 0; //0.10;

   ejectionOffset = 0;

   thetaMin         = 0.0;
   thetaMax         = 90.0;  

   particles = wiimoteTrailParticle;

   useEmitterColors = true;
   uiName = "Wiimote Trail";
};


//effects
datablock ParticleData(spearExplosionParticle)
{
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(spearExplosionEmitter)
{
   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 = "spearExplosionParticle";

   uiName = "Wiimote Smoke";
   emitterNode = TenthEmitterNode;
};

datablock ParticleData(spearExplosionParticle2)
{
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(spearExplosionEmitter2)
{
   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 = "spearExplosionParticle2";

   useEmitterColors = true;
   uiName = "Wiimote Chunk";
   emitterNode = HalfEmitterNode;
};

datablock ExplosionData(spearExplosion)
{
   //explosionShape = "";
   lifeTimeMS = 150;

   soundProfile = spearExplosionSound;

   emitter[0] = spearExplosionEmitter;
   emitter[1] = spearExplosionEmitter2;
   //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("SpearDirect",   '<bitmap:add-ons/Weapon_Wiimote/CI_wiimote> %1',       '%2 <bitmap:add-ons/Weapon_Wiimote/CI_wiimote> %1',1,1);
AddDamageType("SpearRadius",   '<bitmap:add-ons/Weapon_Wiimote/CI_wiimoteRadius> %1', '%2 <bitmap:add-ons/Weapon_Wiimote/CI_wiimoteRadius> %1',1,0);
datablock ProjectileData(spearProjectile)
{
   projectileShapeName = "./wiimoteProjectile.dts";
   directDamage        = 50;
   directDamageType  = $DamageType::SpearDirect;
   radiusDamageType  = $DamageType::SpearRadius;
   impactImpulse   = 1000;
   verticalImpulse   = 1000;
   explosion           = spearExplosion;
   particleEmitter     = spearTrailEmitter;

   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.00;

   hasLight    = false;
   lightRadius = 3.0;
   lightColor  = "0 0 0.5";

   uiName = "Wiimote";
};


//////////
// item //
//////////
datablock ItemData(spearItem)
{
category = "Weapon";  // Mission editor category
className = "Weapon"; // For inventory system

// Basic Item Properties
shapeFile = "./wiimote.dts";
mass = 1;
density = 0.2;
elasticity = 0.2;
friction = 0.6;
emap = true;

//gui stuff
uiName = "Wiimote";
iconName = "./icon_wiimote";
doColorShift = true;
colorShiftColor = "0.400 0.196 0 1.000";

// Dynamic properties defined by the scripts
image = spearImage;
canDrop = true;
};

//function spear::onUse(%this,%user)
//{
// //mount the image in the right hand slot
// %user.mountimage(%this.image, $RightHandSlot);
//}

////////////////
//weapon image//
////////////////
datablock ShapeBaseImageData(spearImage)
{
   // Basic Item properties
   shapeFile = "./wiimote.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 = wiimoteItem;
   ammo = " ";
   projectile = wiimoteProjectile;
   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] = wiimoteFireSound;
};

function spearImage::onCharge(%this, %obj, %slot)
{
%obj.playthread(2, spearReady);
}

function wiimoteImage::onAbortCharge(%this, %obj, %slot)
{
%obj.playthread(2, root);
}

function wiimoteImage::onFire(%this, %obj, %slot)
{
%obj.playthread(2, spearThrow);
Parent::onFire(%this, %obj, %slot);
}
« Last Edit: July 15, 2010, 04:15:02 AM by Flubbman »

Also, I made an attempt before, where the weapon actually showed up but there were many bugs and such on it. When I spawned it there, I noticed the colours were messed up on the body. Sadly, I didn't take pictures. When I say messed up, I mean that half of the Wiimote was grey on the side and white on top, and another half was the opposite. When I made the model, I made a cube, made it a rectangle, added a curve, and mirrored it. Here's the model. (I use Blender 2.49b.)

http://www.mediafire.com/?gozvhdyvhuvltmz

Its funny because im just learning MilkShape and i was having very similar issues


To my understanding the reason why it wont show up is because the game cant find the server.cs file

For example i just made a rocket, which has a server.cs file that simply executes another file in the folder, The Rocket showed up in the List as my rocket, but it wasnt in the items list when i started up.

This was because although the game found the Server.cs, it was unable to find what was being executed, so i edited the names to be sure, and whalla it worked

Other than the fact i have no idea how these random textures keep getting on my guns (I.E. Dark colors are becoming Stone like texture, Brown is becoming Wood like texture)


Also, make sure you have your Description.txt in your folder

Oh! and one more thing about that, When i was doing this i simply right clicked my Weapon_rocket folder and clicked "Add to Weapon_Rocket.rar "   i didnt see it was RAR and that does not work on BL.

Make sure its a .ZIP




The coloring thing, im having alot of issues with as well, but i figured out that editing one of the texture options will cause it to become white, i guess its not compatible with BL.

This option is Specular, i just dont touch it now since it messed with a gun, you can set it back to Black and move the bar to the "off" position.



Thats ill i know, even though some of it may not be correct, maybe i can help you help me.


Also, what does it say when you type in exec("add-ons/weapon_wiimote/server.cs");   into the prompt thingeh?

You didn't change the datablock names so it overwrites the original ones, what you must do is ctrl + H and type in Spear to be replaces and whatever your weapon is to replace it. This will replace all instances of the word 'spear' with something like 'Wiimote', also make sure there are no spaces in 'Wiimote'. This will change something like this:
Code: [Select]
datablock AudioProfile(SpearExplosionSound)
{
   filename    = "./wiimoteHit.wav";
   description = AudioClose3d;
   preload = false;
};
To this:
Code: [Select]
datablock AudioProfile(WiimoteExplosionSound)
{
   filename    = "./wiimoteHit.wav";
   description = AudioClose3d;
   preload = false;
};
« Last Edit: July 16, 2010, 08:57:21 AM by Crysist »

-snip-
Uhh... the two codes you posted was exactly the same.

Oh derp, i know what he's talkin bout, just messed up with the change this to this thing -.- lol



See how he changed the SpearExplosionSound to WiiMoteExplosionSound?


You need to do that for every single thing that says Spear

Do this by Highlighting the word "Spear" and look in the edit tab for Replace

And put WiiMote into the second colum

Oh derp, i know what he's talkin bout, just messed up with the change this to this thing -.- lol



See how he changed the SpearExplosionSound to WiiMoteExplosionSound?


You need to do that for every single thing that says Spear

Do this by Highlighting the word "Spear" and look in the edit tab for Replace

And put WiiMote into the second colum
He didn't, it said WiimoteExplosionSound on both.

Also, the major subject of this topic isn't that the original Spear has no fire sound, it's that the WIIMOTE won't work.

He didn't, it said WiimoteExplosionSound on both.

Also, the major subject of this topic isn't that the original Spear has no fire sound, it's that the WIIMOTE won't work.

Its a difference from yours, he messed up or sumtin



Everything on that script that says Spear needs to say WiiMote

He didn't, it said WiimoteExplosionSound on both.

Also, the major subject of this topic isn't that the original Spear has no fire sound, it's that the WIIMOTE won't work.
Oh whoops I changed both in the example, fixing.

Oh whoops I changed both in the example, fixing.

Lol'd

Its a difference from yours, he messed up or sumtin



Everything on that script that says Spear needs to say WiiMote
Except
Code: [Select]
%obj.playthread(2, spearReady);
and

Code: [Select]
%obj.playthread(2, spearThrow);
EDIT: Technically, it works perfect now! Except for the model being a little messed up, but I just made a mistake in Blender.

Except
Code: [Select]
%obj.playthread(2, spearReady);
and

Code: [Select]
%obj.playthread(2, spearThrow);
EDIT: Technically, it works perfect now! Except for the model being a little messed up, but I just made a mistake in Blender.

Yay! :D