Blockland Forums > Modification Help
On Brick Hit If Projectile
<< < (7/7)
jes00:

--- Quote from: Superb on December 05, 2011, 11:04:13 PM ---You might also want to package

function FxDtsBrick::onPlant(%this,%stuff...)

and inside somewhere call

%this.health = %this.getDataBlock().defaultHealth;

--- End quote ---

--- Quote from: Destiny/Zack0Wack0 on December 05, 2011, 11:36:46 PM ---You still have the %col.getDatablock().Health things inside the if checks.

--- End quote ---
Ok, so this is my(still not working) code:

--- Code: ---//=========================================================================
// Skill_Mining Confirm
//=========================================================================
//This confirms to Skill_Core that for have Skill_Mining enabled.
$Skill::Mining = 1;
//=========================================================================
// Executions
//=========================================================================
// Misc
exec("./Tool_Pickaxe.cs");
// Ore
exec("./Ore/Copper.cs");
exec("./Ore/Tin.cs");
exec("./Ore/Iron.cs");
exec("./Ore/Coal.cs");
exec("./Ore/Gold.cs");
//=========================================================================
// Ore functions
//=========================================================================
package skillMining {

function SkillPickaxeProjectile::onCollision(%this,%obj,%col,%fade,%pos,%normal)
{
if(%col.getClassName() !$= "fxDtsBrick")
{
parent::onCollision(%this,%obj,%col,%fade,%pos,%normal);

if(%col.getDataBlock().isOre)
{
if(%col.getDatablock().Health >= 1)
{
%col.health -= getRandom(1,5);
commandToClient(%this,'centerPrint',"\c6You swing your pick at the ore.",3);
}

else if(%col.getDatablock().Health < 1)
{
%col.Health = %col.getDataBlock().defaultHealth;
%col.Disappear(%col.getDatablock().regrowTime);
%this.Resources +=  %col.getDataBlock().oreAmount;

messageClient(%this,'',"\c3You have mined some \c6" @ %col.getDataBlock().oreName @ "\c3.");
}
}
}

else
{
parent::onCollision(%this,%obj,%col,%fade,%pos,%normal);
}
}


function fxDTSBrick::onPlant(%data, %obj)
{
if(%obj.getDatablock().isOre == 1)
{
Parent::onPlant(%data, %obj);

%obj.Health = %obj.getDatablock().defaultHealth;
}

else
{
Parent::onPlant(%data, %obj);
}
}

}; activatePackage(skillMining);

--- End code ---
could changing SkillPickaxeProjectile::onCollision to fxDTSBrick::onCollision and have it check the projectile work?
Superb:

--- Quote from: jes00 on December 06, 2011, 11:35:53 AM ---could changing SkillPickaxeProjectile::onCollision to fxDTSBrick::onCollision and have it check the projectile work?

--- End quote ---

Yeah.

Ok, fixed it up for you once again.. lol.


--- Code: ---//=========================================================================
// Skill_Mining Confirm
//=========================================================================
//This confirms to Skill_Core that for have Skill_Mining enabled.
$Skill::Mining = 1;
//=========================================================================
// Executions
//=========================================================================
// Misc
exec("./Tool_Pickaxe.cs");
// Ore
exec("./Ore/Copper.cs");
exec("./Ore/Tin.cs");
exec("./Ore/Iron.cs");
exec("./Ore/Coal.cs");
exec("./Ore/Gold.cs");
//=========================================================================
// Ore functions
//=========================================================================
package skillMining {

function SkillPickaxeProjectile::onCollision(%this,%obj,%col,%fade,%pos,%normal)
{
//if(%col.getClassName() !$= "fxDtsBrick") should be
if(%col.getClassName() $= "fxDtsBrick")
{
parent::onCollision(%this,%obj,%col,%fade,%pos,%normal);

if(%col.getDataBlock().isOre)
{
//if(%col.getDatablock().Health >= 1) should be
if(%col.Health >= 1)
{
%col.health -= getRandom(1,5);
commandToClient(%this,'centerPrint',"\c6You swing your pick at the ore.",3);
}
//else if(%col.getDatablock().Health < 1) should be
else if(%col.Health < 1)
{
%col.Health = %col.getDataBlock().defaultHealth;
%col.Disappear(%col.getDatablock().regrowTime);
%this.Resources +=  %col.getDataBlock().oreAmount;

messageClient(%this,'',"\c3You have mined some \c6" @ %col.getDataBlock().oreName @ "\c3.");
}
}
}
parent::onCollision(%this,%obj,%col,%fade,%pos,%normal);
}


function fxDTSBrick::onPlant(%brick, %somethingelsewedontneed)
{
Parent::onPlant(%brick, %somethingelsewedontneed);

if(%brick.getDatablock().isOre == 1)
{
%obj.Health = %obj.getDatablock().defaultHealth;
}
}

}; activatePackage(skillMining);
--- End code ---
jes00:

--- Quote from: Superb on December 06, 2011, 12:06:47 PM ---Yeah.

Ok, fixed it up for you once again.. lol.

-Awesome code-

--- End quote ---
Much progress!

Only thing I can't figure out is the following:

* Why it does not show the centerprint
* Why it does not add the resources to the client after it is mined
Superb:

--- Quote from: jes00 on December 06, 2011, 12:52:58 PM ---Much progress!

Only thing I can't figure out is the following:

* Why it does not show the centerprint
* Why it does not add the resources to the client after it is mined
--- End quote ---

Thanks.

Ok, actually look at your code please, notice you have

commandToClient(%this,'centerPrint',"\c6You swing your pick at the ore.",3);

and

messageClient(%this,'',"\c3You have mined some \c6" @ %col.getDataBlock().oreName @ "\c3.");

and a couple other things that use %this.

now look at this

SkillPickaxeProjectile::onCollision(%this,%obj,%col,%fade,%pos,%normal)

%this is your skillpickaxeprojectile, which isn't a client, yikes!

try instead the following, %client = %obj.client; and also under that do

echo("Client object name => "@%client.name);

to see if i'm correct, which i think i am.


jes00:

--- Quote from: Superb on December 06, 2011, 01:56:41 PM ----Lots of stuff-

--- End quote ---
Thanks! *Topic Locked*
Navigation
Message Index
Previous page

Go to full version