Author Topic: Using emote instead of creating?  (Read 622 times)

Currently the script (s) I am using for my itmes create a spammy amount of emmiters and datablocks.
Because I currently use a single "base script" which creates a emote for all.

How can I make it so it USES the emote instead of CREATING and USING it?

Here's the code I am using for Hamburger:
Code: [Select]
//fpHamburger.cs

//audio
datablock AudioProfile(EatSound)
{
   filename    = "./Eat.wav";
   description = AudioClose3d;
   preload = true;
};

datablock ParticleData(fpHamburgereatParticle)
{
   dragCoefficient      = 5.0;
   gravityCoefficient   = -0.2;
   inheritedVelFactor   = 0.0;
   constantAcceleration = 0.0;
   lifetimeMS           = 1000;
   lifetimeVarianceMS   = 500;
   useInvAlpha          = false;
   textureName          = "./eat";
   colors[0]     = "1.0 1.0 1.0 1";
   colors[1]     = "1.0 1.0 1.0 1";
   colors[2]     = "0.0 0.0 0.0 0";
   sizes[0]      = 0.4;
   sizes[1]      = 0.6;
   sizes[2]      = 0.4;
   times[0]      = 0.0;
   times[1]      = 0.2;
   times[2]      = 1.0;
};

datablock ParticleEmitterData(fpHamburgereatEmitter)
{
   ejectionPeriodMS = 35;
   periodVarianceMS = 0;
   ejectionVelocity = 0.5;
   ejectionOffset   = 1.0;
   velocityVariance = 0.49;
   thetaMin         = 0;
   thetaMax         = 120;
   phiReferenceVel  = 0;
   phiVariance      = 360;
   overrideAdvance = false;
   particles = "fpHamburgereatParticle";

   uiName = "Emote - eat";
};

datablock ShapeBaseImageData(fpHamburgereatImage)
{
shapeFile = "base/data/shapes/empty.dts";
emap = false;

mountPoint = $HeadSlot;

stateName[0] = "Ready";
stateTransitionOnTimeout[0] = "FireA";
stateTimeoutValue[0] = 0.01;

stateName[1] = "FireA";
stateTransitionOnTimeout[1] = "Done";
stateWaitForTimeout[1] = True;
stateTimeoutValue[1] = 0.350;
stateEmitter[1] = fpHamburgereatEmitter;
stateEmitterTime[1] = 0.350;
stateSound[1] = EatSound;

stateName[2] = "Done";
stateScript[2] = "onDone";
};
function fpHamburgereatImage::onDone(%this,%obj,%slot)
{
%obj.unMountImage(%slot);
}

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

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

//gui stuff
uiName = "Hamburger";
iconName = "./Icon_fpHamburger";
doColorShift = false;

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

datablock ShapeBaseImageData(fpHamburgerImage)
{
   // Basic Item properties
   shapeFile = "./fpHamburger.dts";
   emap = true;

   // Specify mount point & offset for 3rd person, and eye offset
   // for first person rendering.
   mountPoint = 0;
   offset = "-.05 0 0";
   eyeOffset = 0; //"0.7 1.2 -0.5";
   rotation = eulerToMatrix( "-90 90 0" );

   className = "WeaponImage";
   item = fpHamburgerItem;

   //raise your arm up or not
   armReady = true;

   doColorShift = false;

   // Initial start up state
stateName[0]                     = "Ready";
stateTransitionOnTriggerDown[0]  = "Fire";
stateAllowImageChange[0]         = true;

stateName[1]                     = "Fire";
stateTransitionOnTimeout[1]      = "Ready";
stateAllowImageChange[1]         = true;
  stateScript[1]                   = "onFire";
stateTimeoutValue[1]    = 1;
stateSound[1] = EatSound;
};

function fpHamburgerImage::onFire(%this,%obj,%slot)
{


for(%i=0;%i<5;%i++)
{
%toolDB = %obj.tool[%i];
if(%toolDB $= %this.item.getID())
{
%obj.addhealth(65);
%obj.emote(fpHamburgereatImage);
%obj.tool[%i] = 0;
%obj.weaponCount--;
messageClient(%obj.client,'MsgItemPickup','',%i,0);
serverCmdUnUseTool(%obj.client);
break;
}
}
}

package fpHamburgerPackage
{
   function Armor::onCollision(%this, %obj, %col, %thing, %other)
   {
  if(%col.dataBlock $= "fpHamburgerItem" && %col.pickupNow !$= 1)
  {
if(!isObject(%col.spawnbrick))   
{
if((%obj.getDamageLevel() >= 1))
{
   %obj.setDamageLevel(0);
   %obj.emote(fpHamburgereatImage);
   %col.delete();
}
else
   %col.pickupNow = 1;
return;
}
  }
  Parent::onCollision(%this, %obj, %col, %thing, %others);
   }
};
activatePackage(fpHamburgerPackage);

Help appreciated, if you are able to help you will also receive credit in the final "product".


Uh, what exactly is wrong with this script. You haven't exactly been clear about what's wrong.

Uh, what exactly is wrong with this script. You haven't exactly been clear about what's wrong.

... The script creates emotes, spamming datablocks and emmiter wrench section.
How can I use it so it uses a emote instead?

If you don't want them to appear on the lists in wrench events, take the uiName's out the datablocks, if that's what you mean.

Won't it still spam datablocks, increasing the datablock count?

Bump. I mistaken the above.

I want the item to show in the wrench submenus. But I do not want the EMMITER (eat) TO BEVIEWED ON THE WRENCH SUBMENUS.