Invisible head when uncloaking

Author Topic: Invisible head when uncloaking  (Read 1858 times)

I'm in a bit of a pickle.

I'm making a weapon that involves cloaking and uncloaking. Everything works great, except the head stays invisible after uncloaked.

Code: [Select]
function Player::SetAlpha(%this,%alpha)
{
//accentColor hatColor headColor hipColor larmColor
//lhandColor llegColor packColor rarmColor rhandColor rlegColor secondPackColor

//Had to use a somewhat hacky way, setWord didn't seem to work
%this.client.accentColor = getWord(%this.client.accentColor,0) SPC getWord(%this.client.accentColor,1) SPC getWord(%this.client.accentColor,2) SPC %alpha;
%this.client.chestColor = getWord(%this.client.chestColor,0) SPC getWord(%this.client.chestColor,1) SPC getWord(%this.client.chestColor,2) SPC %alpha;
%this.client.hatColor = getWord(%this.client.hatColor,0) SPC getWord(%this.client.hatColor,1) SPC getWord(%this.client.hatColor,2) SPC %alpha;
%this.client.headColor = getWord(%this.client.headColor,0) SPC getWord(%this.client.headColor,1) SPC getWord(%this.client.headColor,2) SPC %alpha;
%this.client.hipColor = getWord(%this.client.hipColor,0) SPC getWord(%this.client.hipColor,1) SPC getWord(%this.client.hipColor,2) SPC %alpha;
%this.client.LArmColor = getWord(%this.client.LArmColor,0) SPC getWord(%this.client.LArmColor,1) SPC getWord(%this.client.LArmColor,2) SPC %alpha;
%this.client.LHandColor = getWord(%this.client.LHandColor,0) SPC getWord(%this.client.LHandColor,1) SPC getWord(%this.client.LHandColor,2) SPC %alpha;
%this.client.LLegColor = getWord(%this.client.LLegColor,0) SPC getWord(%this.client.LLegColor,1) SPC getWord(%this.client.LLegColor,2) SPC %alpha;
%this.client.packColor = getWord(%this.client.packColor,0) SPC getWord(%this.client.packColor,1) SPC getWord(%this.client.packColor,2) SPC %alpha;
%this.client.RArmColor = getWord(%this.client.RArmColor,0) SPC getWord(%this.client.RArmColor,1) SPC getWord(%this.client.RArmColor,2) SPC %alpha;
%this.client.RHandColor = getWord(%this.client.RHandColor,0) SPC getWord(%this.client.RHandColor,1) SPC getWord(%this.client.RHandColor,2) SPC %alpha;
%this.client.RLegColor = getWord(%this.client.RLegColor,0) SPC getWord(%this.client.RLegColor,1) SPC getWord(%this.client.RLegColor,2) SPC %alpha;
%this.client.secondPackColor = getWord(%this.client.secondPackColor,0) SPC getWord(%this.client.secondPackColor,1) SPC getWord(%this.client.secondPackColor,2) SPC %alpha;

%this.setNodeColor($accent[%this.client.accent],%this.client.accentColor);
%this.setNodeColor($chest[%this.client.chest],%this.client.chestColor);
%this.setNodeColor($hat[%this.client.hat],%this.client.hatColor);
%this.setNodeColor(headskin,this.client.headColor);
%this.setNodeColor($hip[%this.client.hip],%this.client.hipColor);
%this.setNodeColor($LArm[%this.client.LArm],%this.client.LArmColor);
%this.setNodeColor($LHand[%this.client.LHand],%this.client.LHandColor);
%this.setNodeColor($LLeg[%this.client.LLeg],%this.client.LLegColor);
%this.setNodeColor($pack[%this.client.pack],%this.client.packColor);
%this.setNodeColor($RArm[%this.client.RArm],%this.client.RArmColor);
%this.setNodeColor($RHand[%this.client.RHand],%this.client.RHandColor);
%this.setNodeColor($RLeg[%this.client.RLeg],%this.client.RLegColor);
if($secondpack[%this.client.secondpack] !$= "none")
%this.setNodeColor($secondPack[%this.client.secondPack],%this.client.secondPackColor);


}

function Player::Cloak(%this)
{
%this.isCloaked = 1;
%this.isCloaking = 1;
%this.startFade(2000,0,1);
%this.schedule(100,SetAlpha,0.95);
%this.schedule(200,SetAlpha,0.90);
%this.schedule(300,SetAlpha,0.85);
%this.schedule(400,SetAlpha,0.80);
%this.schedule(500,SetAlpha,0.75);
%this.schedule(600,SetAlpha,0.70);
%this.schedule(700,SetAlpha,0.65);
%this.schedule(800,SetAlpha,0.60);
%this.schedule(900,SetAlpha,0.55);
%this.schedule(1000,SetAlpha,0.50);
%this.schedule(1100,SetAlpha,0.45);
%this.schedule(1200,SetAlpha,0.40);
%this.schedule(1300,SetAlpha,0.35);
%this.schedule(1400,SetAlpha,0.30);
%this.schedule(1500,SetAlpha,0.25);
%this.schedule(1600,SetAlpha,0.20);
%this.schedule(1700,SetAlpha,0.15);
%this.schedule(1800,SetAlpha,0.10);
%this.schedule(1900,SetAlpha,0.05);
%this.schedule(2000,SetAlpha,0.01);
%this.schedule(2000,setShapeName,"");
%this.schedule(2000,eval,"%this.isCloaking = 0;");
}

function Player::Uncloak(%this)
{
%this.isCloaking = 1;
%this.setShapeName(%this.client.name);
%this.startFade(2000,0,0);
%this.schedule(100,SetAlpha,0.05);
%this.schedule(200,SetAlpha,0.10);
%this.schedule(300,SetAlpha,0.15);
%this.schedule(400,SetAlpha,0.20);
%this.schedule(500,SetAlpha,0.25);
%this.schedule(600,SetAlpha,0.30);
%this.schedule(700,SetAlpha,0.35);
%this.schedule(800,SetAlpha,0.40);
%this.schedule(900,SetAlpha,0.45);
%this.schedule(1000,SetAlpha,0.50);
%this.schedule(1100,SetAlpha,0.55);
%this.schedule(1200,SetAlpha,0.60);
%this.schedule(1300,SetAlpha,0.65);
%this.schedule(1400,SetAlpha,0.70);
%this.schedule(1500,SetAlpha,0.75);
%this.schedule(1600,SetAlpha,0.80);
%this.schedule(1700,SetAlpha,0.85);
%this.schedule(1800,SetAlpha,0.90);
%this.schedule(1900,SetAlpha,0.95);
%this.schedule(2000,SetAlpha,1.00);
%this.schedule(2000,eval,"%this.isCloaked = 0;");
%this.schedule(2000,eval,"%this.isCloaking = 0;");
}

function Player::Eval(%this,%val)
{
eval(%val);
}

Any ideas?

I don't really have time to help you properly, but here's some things you might benefit from:
For the many getWord functions you have, you should use:
Code: [Select]
getWords(%sting, start, end);
Also, for the many schedules you're using, you should just use one function that schedules itself, and decreases/increases the value, stopping and calling extra functions when it reaches a certain value.

have you put in the headnode in the uninvisible thingie?

Okay I found your error:
Code: [Select]
%this.setNodeColor(headskin,this.client.headColor);You forgot the %, it didn't give an error because 'this' could have been the name of an object.

[Edit] Try this:
Code: [Select]
function Player::SetAlpha(%this, %alpha)
{
%client = %this.client;
%client.accentColor = getWords(%client.accentColor, 0, 2) SPC %alpha;
%client.chestColor = getWords(%client.chestColor, 0, 2) SPC %alpha;
%client.hatColor = getWords(%client.hatColor, 0, 2) SPC %alpha;
%client.headColor = getWords(%client.headColor, 0, 2) SPC %alpha;
%client.hipColor = getWords(%client.hipColor, 0, 2) SPC %alpha;
%client.LArmColor = getWords(%client.LArmColor, 0, 2) SPC %alpha;
%client.LHandColor = getWords(%client.LHandColor, 0, 2) SPC %alpha;
%client.LLegColor = getWords(%client.LLegColor, 0, 2) SPC %alpha;
%client.packColor = getWords(%client.packColor, 0, 2) SPC %alpha;
%client.RArmColor = getWords(%client.RArmColor, 0, 2) SPC %alpha;
%client.RHandColor = getWords(%client.RHandColor, 0, 2) SPC %alpha;
%client.RLegColor = getWords(%client.RLegColor, 0, 2) SPC %alpha;
%client.secondPackColor = getWords(%client.secondPackColor, 0, 2) SPC %alpha;
%client.applyBodyColors();
}

function Player::Cloak(%this)
{
if(%this.isCloaked || %this.isCloaking)
return;
%this.isCloaked = 1;
%this.isCloaking = 1;
%this.startFade(2000, 0, 1);
%this.alpha = 1;
%this.schedule(100, "CloakStep", -0.05);
}

function Player::Uncloak(%this)
{
if(!%this.isCloaked || %this.isCloaking)
return;
%this.isCloaked = 0;
%this.isCloaking = 1;
%this.setShapeName(%this.client.name);
%this.startFade(2000, 0, 0);
%this.alpha = 0;
%this.schedule(100, "CloakStep", 0.05);
}

function Player::Cloakstep(%this, %change)
{
%this.alpha += %change;
if(%this.alpha == 0)
{
%this.alpha = 0.01;
%this.setShapeName("");
%this.isCloaking = 0;
%stop = 1;
}
else if(%this.alpha == 1)
{
%this.isCloaking = 0;
%stop = 1;
}
%this.setAlpha(%this.alpha);
if(!%stop)
%this.schedule(100, "CloakStep", %change);
}
« Last Edit: February 14, 2008, 10:59:34 AM by Randy »


I'm not sure what it does exactly, so I just left it in.

startfade makes the player's shadow dissappear

EDIT :
function Player::Cloakstep(%this, %change)
{
   %this.alpha += %change;
   if(%this.alpha == 0)
   {
      %this.alpha = 0.01;
      %this.setShapeName("");
      %this.isCloaking = 0;
      %stop = 1;
   }
   else if(%this.alpha == 1)
   {
      %this.isCloaking = 0
      %stop = 1;
   }
   %this.setAlpha(%this.alpha);
   if(!%stop)
      %this.schedule(100, "CloakStep", %change);
}
Lol, syntax error  :cookieMonster:
« Last Edit: February 13, 2008, 08:36:33 PM by Curiosity Core »