datablock ItemData(HatItem)
{
category = "Item"; // Mission editor category
equipment = true;
//its already a member of item namespace so dont break it
//className = "Item"; // For inventory system
// Basic Item Properties
shapeFile = "./Hat.dts";
mass = 1;
density = 0.2;
elasticity = 0.2;
friction = 0.6;
emap = true;
//gui stuff
uiName = "Demian's Hat";
iconName = "./HatIcon";
doColorShift = false;
//colorShiftColor = "0.200 0.200 0.200 1.000";
// Dynamic properties defined by the scripts
image = HatImage;
canDrop = true;
};
//Images
datablock ShapeBaseImageData(HatImage)
{
shapeFile = "./Hat.dts";
emap = true;
mountPoint = $HeadSlot;
offset = "0 -0.05 0.1";
eyeOffset = "0 0 10 1";
rotation = eulerToMatrix("0 0 0");
scale = "1 1 1";
doColorShift = false;
//colorShiftColor = "0.392 0.196 0.0 1.000";
};
datablock ShapeBaseImageData(HatImage)
{
// Basic Item properties
shapeFile = "base/data/shapes/empty.dts";
emap = true;
// Specify mount point & offset for 3rd person, and eye offset
// for first person rendering.
mountPoint = 0;
offset = "0.13 0.2 -0.8";
rotation = eulerToMatrix("0 0 0");
eyeOffset = "0.13 0.2 -0.8";
eyeRotation = 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 = false;
// Add the WeaponImage namespace as a parent, WeaponImage namespace
// provides some hooks into the inventory system.
className = "ToolImage";
// Projectile && Ammo.
item =HatItem;
//melee particles shoot from eye node for consistancy
melee = true;
//raise your arm up or not
armReady = false;
doColorShift = true;
colorShiftColor = HatItem.colorShiftColor; //"0.200 0.200 0.200 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.5;
stateTransitionOnTimeout[0] = "Ready";
stateName[1] = "Ready";
stateTransitionOnTriggerDown[1] = "Fire";
stateAllowImageChange[1] = true;
stateName[2] = "Fire";
stateTransitionOnTriggerUp[2] = "Ready";
stateScript[2] = "onFire";
stateSound[2] = "HatEquipsound";
};
function HatImage::onFire(%this, %obj, %slot)
{
%client=%obj.client;
if(!%obj.Hatison)
{
%obj.Hatison = 1;
%client.centerPrint("\c6You put on the hat.",3);
for(%i = 0;$hat[%i] !$= "";%i++)
{
%obj.hideNode($hat[%i]);
}
%obj.unmountimage(1);
%obj.mountimage(Hatimage, 1);
serverPlay3d(HatEquipSound,%pos);
}else{
%obj.Hatison = 0;
%client.centerPrint("\c6You took off the hat.",3);
%obj.unmountimage(1);
%client.applyBodyParts();
%client.applyBodyColors();
serverPlay3d(HatUnequipSound,%pos);
}
}Hopefully this should work but i haven't tested it sorry that you didn't want commands