Author Topic: What code do I use to switch datablocks?  (Read 1388 times)

Do I use this?
Code: [Select]
function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4);
            {
                  %obj.changedatablock(FirstPerson);
            }
}

Or this?
Code: [Select]
function ServerCMDSwitch(%this,%val,%client)
{
      %client.setdatablock(FirstPerson);
}

I'd use changedatablock.

So use this? Is this correct?
Code: [Select]
function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4);
            {
                  %obj.changedatablock(FirstPerson);
            }
}

Syntax error, and you might want to make sure %val is 1.

Do not put a ; after an if statement.

So... this?
Code: [Select]
function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4)
      {
            if($val == 1)
            {
                   %obj.changedatablock(FirstPerson);
             }
      }
}

Pretty well except it could be cleaned up a bit.
Here's a fancy way of doing if statements:

if(%trigger == 4 && %val == 1)

And for more fun, instead of %val == 1, you can just use %val, and instead of something == 0, you can just use !something.

as in:
if(%trigger == 4 && %val)
That would be the same thing as I said above.

So... this?
Code: [Select]
function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4 && %val == 1)
            {
                  %obj.changedatablock(FirstPerson);
            }
}

Yes, that will work.

Try it out.

It didn't work. Here is the script.
Code: [Select]
datablock PlayerData(ThirdPerson : PlayerStandardArmor)
{
   cameramaxdist = 5;
   cameraVerticalOffset = 10;
   cameraHorizontalOffset = 0;
   cameraTilt = -5;
   maxfreelookangle = 0;
   maxlookangle = 0;
   minlookangle = 0;
   minJetEnergy = 0;
   jetEnergyDrain = 0;
   canJet = 0;
   //thirdpersononly = 1;
   uiName = "TopDown";
   canRide = true;
   showEnergyBar = false;

   runSurfaceAngle  = 55;
   jumpSurfaceAngle = 55;
};

function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4 && %val == 1)
            {
                  %obj.changedatablock(FirstPerson);
            }
}

datablock PlayerData(FirstPerson : PlayerStandardArmor)
{
   maxfreelookangle = 0;
   maxlookangle = 0;
   minlookangle = 0;
   minJetEnergy = 0;
   jetEnergyDrain = 0;
   canJet = 0;
   //firstpersononly = 1;
   uiName = "TopDown";
   canRide = true;
   showEnergyBar = false;

   runSurfaceAngle  = 55;
   jumpSurfaceAngle = 55;
};

function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4 && %val == 1)
            {
                  %obj.changedatablock(ThirdPerson);
            }
}

It didn't work. Here is the script.
Code: [Select]
datablock PlayerData(ThirdPerson : PlayerStandardArmor)
{
   cameramaxdist = 5;
   cameraVerticalOffset = 10;
   cameraHorizontalOffset = 0;
   cameraTilt = -5;
   maxfreelookangle = 0;
   maxlookangle = 0;
   minlookangle = 0;
   minJetEnergy = 0;
   jetEnergyDrain = 0;
   canJet = 0;
   //thirdpersononly = 1;
   uiName = "TopDown";
   canRide = true;
   showEnergyBar = false;

   runSurfaceAngle  = 55;
   jumpSurfaceAngle = 55;
};

function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4 && %val == 1)
            {
                  %obj.changedatablock(FirstPerson);
            }
}

datablock PlayerData(FirstPerson : PlayerStandardArmor)
{
   maxfreelookangle = 0;
   maxlookangle = 0;
   minlookangle = 0;
   minJetEnergy = 0;
   jetEnergyDrain = 0;
   canJet = 0;
   //firstpersononly = 1;
   uiName = "TopDown";
   canRide = true;
   showEnergyBar = false;

   runSurfaceAngle  = 55;
   jumpSurfaceAngle = 55;
};

function ThirdPerson::onTrigger(%this,%obj,%trigger,%val)
{
      if(%trigger == 4 && %val == 1)
            {
                  %obj.changedatablock(ThirdPerson);
            }
}
HOLY forgetERONI

HOLY forgetERONI
???
What did you hope to accomplish by posting that?
Do you know what's wrong with it?

That function there at the bottom needs to be FirstPerson::

Ok, I fixed that. But now, when it loads the script, it makes 2 player types, how do I keep this in ONE?

Take out the UI name in one of them.

That will force it into one datablock?