Blockland Forums > Modification Help
My New Weapon won't show up
Flubbman:
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: ---//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);
}
--- End code ---
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
Obibital:
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?
Crysist:
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: ---datablock AudioProfile(SpearExplosionSound)
{
filename = "./wiimoteHit.wav";
description = AudioClose3d;
preload = false;
};
--- End code ---
To this:
--- Code: ---datablock AudioProfile(WiimoteExplosionSound)
{
filename = "./wiimoteHit.wav";
description = AudioClose3d;
preload = false;
};
--- End code ---
Flubbman:
--- Quote from: Crysist on July 15, 2010, 11:54:11 AM ----snip-
--- End quote ---
Uhh... the two codes you posted was exactly the same.