# ScriptComponentBehaviour
ScriptComponentBehaviours can be used to do anything from animating (rotating) windmills, to creating a custom weapon spawner, or even entirely new siege machines.
A basic example of a ScriptComponentBehaviour is the LumberJack
class in TaleWorlds.MountAndBlade.dll
:
public class Lumberjack : ScriptComponentBehaviour
{
private bool _initialized;
protected internal override void OnTick(float dt)
{
base.OnTick(dt);
if (!this._initialized)
{
this._initialized = true;
base.GameEntity.CreateSimpleSkeleton("human_skeleton");
base.GameEntity.CopyComponentsToSkeleton();
base.GameEntity.Skeleton.SetAnimationAtChannel("lumberjack", 0, 1f, -1f, 0f);
MetaMesh copy = MetaMesh.GetCopy("peasent_hatchet", true, false);
base.GameEntity.AddMultiMeshToSkeletonBone(copy, 27);
}
}
}
** Note: It is probably better to override OnInit()
instead of OnTick()
here. Since this is how it was written by TaleWorlds, this example will remain as-is for the time being.
Possible Reason: Meshes can not be Edited/Set etc in OnInit u have to wait atleast a Tick, else ur Game Crashes