Hi, everyone. This is my first time making addon for arma3. And right now I have made a HK416 assault rifle.
Not perfect work as you guys can see....but I do need help with the reload problem. :( Here is the short vedio: https://youtu.be/zQIUBNguqGE
As you can see when the mag was took out and there was no problem with that. But when it was starting to insert the mags, there was nothing there until the animation finished then the mag just pop out from nowhere.
And here is my code for model.cfg. Is there any step I missed?
class CfgSkeletons
{
class Default
{
isDiscrete = 1;
skeletonInherit = "";
skeletonBones[] = {};
};
class HK416 : Default
{
SkeletonBones[]=
{
"trigger", "", /// not in this model, but good to use
"bolt", "",
"bolt_catch", "",
"magazine", "",
"safety", "",
"muzzleFlash", "",
"OP", "",
"ForeSight", "",
"BackSight", ""
};
};
};
class CfgModels
{
class Default
{
sections[]=
{
"zasleh"
};
htMin = 1; // Minimum half-cooling time (in seconds)
htMax = 600; // Maximum half-cooling time (in seconds)
afMax = 0; // Maximum temperature in case the model is alive (in celsius)
mfMax = 0; // Maximum temperature when the model is moving (in celsius)
mFact = 1; // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)).
tBody = 100; // Metabolism temperature of the model (in celsius)
sectionsInherit="";
skeletonName = "HK416";
};
class HK416 : Default
{
skeletonName="HK416";
sectionsInherit = "";
sections[] = {"zasleh","muzzleFlash","Camo"};
class Animations
{
class trigger /// not in this model, but good to use
{
type = "rotation";
source = "reload";
sourceAddress = "clamp";
selection = "trigger";
axis = "trigger_axis";
minValue = 0;
maxValue = "1";
angle0 = "0";
angle1 = "rad -30";
};
class bolt
{
type = "translation";
source = "reload";
sourceAddress = clamp;
selection = "bolt";
axis = "bolt_axis";
minValue = 0.5;
maxValue = 1;
offset0 = 0;
offset1 = 0.3;
};
class bolt_2: bolt
{
minValue = 0;
maxValue = 0.5;
offset0 = 0;
offset1 = 0.7;
};
class bolt_empty: bolt{
source = "isEmptyNoReload";
minValue = 0;
maxValue = 1;
offset0 = 0;
offset1 = 1;
};
class bolt_reload_move_1: bolt_empty {
source="reloadMagazine"; // z: should work like that only if weapon is empty
minValue=0;
maxValue=0.00001;
};
class bolt_reload_move_2: bolt_reload_move_1 {
source="reloadMagazine"; // z: should work like that only if weapon is empty
minValue=0.78;
maxValue=0.80;
offset1 = -1;
};
class bolt_catch: bolt {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_2: bolt_2 {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_empty: bolt_empty {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_reload_move_1: bolt_reload_move_1 {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_reload_move_2: bolt_reload_move_2 {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class magazine_hide
{
type="hide";
source="reloadMagazine";
selection="magazine";
minValue=0.000000;
maxValue=1.00000;
hideValue=0.188;
unhideValue = 0.550;
};
class no_magazine
{
type="hide";
source="hasMagazine";
selection="magazine";
minValue=0.000000;
maxValue=1.00000;
hideValue=0.5;
unhideValue = -1.0;
};
class magazine_reload_move_1
{
type = "translation";
source = "reloadMagazine";
selection = "magazine";
axis = "magazine_axis";
minValue = 0.145;
maxValue = 0.170;
offset0 = 0.0;
offset1 = 0.5;
};
class magazine_reload_move_2: magazine_reload_move_1
{
minValue = 0.573;
maxValue = 0.602;
offset0 = 0.0;
offset1 = -0.5;
};
class muzzleFlashROT
{
type="rotationX";
source="ammoRandom"; //use ammo count as phase for animation
sourceAddress="loop"; //loop when phase out of bounds
selection="muzzleFlash"; //selection we want to rotate
axis=""; //no own axis - center of rotation is computed from selection
centerFirstVertex=true; //use first vertex of selection as center of rotation
minValue=0;
maxValue=4; //rotation angle will be 360/4 = 90 degrees
angle0="rad 0";
angle1="rad 360";
};
class OP_ROT
{
type="rotation";
source="zeroing2"; // use second muzzle zeroing for rotation
sourceAddress="loop"; // loop when phase out of bounds
selection="OP"; // selection we want to rotate
axis="OP_axis"; // has its own axis
minValue=0;
maxValue=3;
angle0="rad 0";
angle1="rad 65";
};
class BackSight_optic
{
type="rotation";
source="hasOptics";
selection="BackSight";
axis="BackSight_axis";
memory=1;
minValue=0.0000000;
maxValue=1.0000000;
angle0=0.000000;
angle1=(rad 70);
};
class ForeSight_optic: BackSight_optic
{
selection="ForeSight";
axis="ForeSight_axis";
angle1=(rad 70);
};
};
};
};