eggbeast 3684 Posted November 4, 2016 ok so i have imported the BI Lee Enfield rifle, and animated it to chamber a round after each bolt is actioned. in buldozer with "reload" animating from 0 to 1, it plays perfectly - see vid the trigger is pulled at 0.1-0.2 then the bolt is pulled back til about 0.5, then a round springs into view, and is chambered as the bolt goes forward. however in game, it plays completely backwards! i was quite surprised by this as all my other reload animations work ok on other weapons. any suggestions? - do i need to reverse the animation? if so, is there an easy way to do it e.g. using phase values, rather than recreating each animation and changing direction and time? or is something else at play here? seems really weird that it plays backwards in game. model.cfg is here class CfgSkeletons { class Default { isDiscrete=1; skeletonInherit=""; skeletonBones[]={}; }; class uns_leeenfield_skel: Default { skeletonInherit="Default"; skeletonBones[]= { "charging_handle","", "mount", "", "zasleh", "", "trigger", "", "bolt", "", "Magazine", "", "Bullettop", "Magazine", "Bullets", "Magazine", "clip_fixed", "Magazine", "dummyclip", "Magazine", "dummyrounds","dummyclip" }; }; }; class CfgModels { class Default { sectionsInherit=""; sections[]={}; skeletonName="Default"; }; class uns_leeenfield: Default { skeletonName="uns_leeenfield_skel"; sectionsInherit="Default"; sections[]= { "trigger","zasleh","mount", "magazine", "bullettop","bullets","clip", "dummyrounds","dummyclip", "bolt", "charging_handle" }; class Animations { class mount_hide { type="hide"; source="hasOptics"; selection="mount"; animPeriod=0; minValue=0; maxValue=1; minPhase=0; maxPhase=1; hideValue=0; unhideValue=0.1; sourceAddress="mirror"; }; //bullets //hide bullets during firing? class bullets_hide { type="hide"; source="revolving"; minValue = 0.0; maxvalue = 1; selection="bullets"; unhideValue = 0.4; hideValue = 0.00; }; class bullettop_hide: bullets_hide { selection="bullettop"; unhideValue = 0.2; }; //chamber round class bullettop_reload_lift { type = "translation"; source = "reload"; selection = "bullettop"; memory=1; axis = "bulletlift_axis"; minValue = 0.52; maxValue = 0.6; offset0 = 1; offset1 = 0; minPhase=1; maxPhase=0; }; class bullettop_reload_lift_reset: bullettop_reload_lift { minValue = 0.01; maxValue = 0.02; offset0 = -1; offset1 = 0; }; class bullettop_reload_translate { type = "translation"; source = "reload"; selection = "bullettop"; memory=1; axis = "bolt_axis"; minValue = 0.7; maxValue = 0.8; offset0 = 0; offset1 = -1; }; class bullettop_reload_translate_reset: bullettop_reload_translate { axis = "bolt_axis"; minValue = 0.01; maxValue = 0.02; offset0 = -1; offset1 = 0; }; //hide mag on reload mag class bullets_hide_reload { type="hide"; source = "reloadmagazine"; selection="bullets"; minValue = 0.0; maxvalue = 1; hideValue =0.0001; unhideValue =0.5625; }; class bullettop_hide_reload: bullets_hide_reload { selection="bullettop"; unhideValue =0.57; }; //hide dummyclip on reload mag class dummyclip_hide_reload1 { type="hide"; source = "reloadmagazine"; selection="dummyclip"; minValue = 0.0; maxvalue = 1; hideValue =0.000; unhideValue =0.4125; }; class dummyclip_hide_reload2 { type="hide"; source = "reloadmagazine"; selection="dummyclip"; minValue = 0.0; maxvalue = 1; hideValue =0.737; }; class dummyclipinsert_trans1 { type = "translation"; source = "reloadmagazine"; selection = "dummyclip"; memory=1; axis = "stripper_inout_axis"; minValue = 0.0; maxvalue = 0.01; offset0 = "0"; offset1 = 1; }; class dummyclipinsert_trans2: dummyclipinsert_trans1 { minValue = 0.4125; maxvalue = 0.4375; offset0 = "0"; offset1 = -1; }; class dummyclipinsert_trans3: dummyclipinsert_trans1 { minValue = 0.728; maxvalue = 0.735; }; //move dummyrounds into mag class dummyroundsin_trans { type = "translation"; source = "reloadmagazine"; selection = "dummyrounds"; memory=1; axis = "dummyrounds_axis"; minValue = 0.5; maxvalue = 0.5625; offset0 = "0"; offset1 = 1; }; class dummyrounds_hide { type = "hide"; source = "reloadmagazine"; selection = "dummyrounds"; hideValue = 0.5625; }; /* class magazine_hide { type="hide"; source="reloadMagazine"; sourceAddress="mirror"; selection="magazine"; minValue=0.0; maxValue=0.4;//causes loop? hideValue=0.5; }; */ class unloaded_magazine_hide { type = "hide"; source = "hasMagazine"; selection = "Magazine"; hideValue = 0.1; }; //bolt reload mag class bolt_reload_mag_begin { type="translation"; source="reloadMagazine"; selection="bolt"; axis="bolt_axis"; memory=1; minValue=0.2; maxValue=0.5; offset0=0; offset1=1.0; }; class bolt_reload_mag_end:bolt_reload_mag_begin { minValue=0.7; maxValue=0.8; offset0=0; offset1=-1.0; }; class charging_handle_reload_mag_rotation_begin { type="rotation"; source="reloadMagazine"; selection="charging_handle"; axis="bolt_axis"; memory=1; minValue=0.0; maxValue=0.2; angle0=0; angle1=-1.0; }; class charging_handle_reload_mag_rotation_end:charging_handle_reload_mag_rotation_begin { minValue=0.8; maxValue=1.0; angle0=0; angle1=1.0; }; class charging_handle_reload_mag_begin { type="translation"; source="reloadMagazine"; selection="charging_handle"; axis="bolt_axis"; memory=1; minValue=0.2; maxValue=0.5; offset0=0; offset1=1.0; }; class charging_handle_reload_mag_end:charging_handle_reload_mag_begin { minValue=0.7; maxValue=0.8; offset0=0; offset1=-1.0; }; //firing bolt class bolt_reload_begin { type="translation"; source="reload"; selection="bolt"; axis="bolt_axis"; memory=1; minValue=0.2; maxValue=0.5; offset0=0; offset1=1; }; class bolt_reload_end:bolt_reload_begin { minValue=0.7; maxValue=0.8; offset0=0; offset1=-1; }; class charging_handle_reload_rotation_begin { type="rotation"; source="reload"; selection="charging_handle"; axis="bolt_axis"; memory=1; minValue=0.0; maxValue=0.2; angle0=0; angle1=-1.0; }; class charging_handle_reload_rotation_end:charging_handle_reload_rotation_begin { minValue=0.8; maxValue=1.0; angle0=0; angle1=1.0; }; class charging_handle_reload_begin { type="translation"; source="reload"; selection="charging_handle"; axis="bolt_axis"; memory=1; minValue=0.2; maxValue=0.5; offset0=0; offset1=1.0; }; class charging_handle_reload_end:charging_handle_reload_begin { minValue=0.7; maxValue=0.8; offset0=0; offset1=-1.0; }; //firing other class trigger { type="rotationZ"; source="reload"; selection="trigger"; axis="trigger_axis"; minValue="0"; maxValue="0.1"; angle0="0"; angle1="rad -10"; }; class trigger_back: trigger { minValue="0.1"; maxValue="0.2"; angle1="rad 10"; }; class MuzzleFlashROT { type="rotationX"; source="ammoRandom"; sourceAddress="loop"; selection="zasleh"; axis="barrel_axis"; centerFirstVertex=true; minValue=0; maxValue=4; angle0="rad 0"; angle1="rad 360"; }; }; }; }; Share this post Link to post Share on other sites
reyhard 2082 Posted November 4, 2016 https://community.bistudio.com/wiki/Model_Config "The movement when reloading. Source is 1 as soon as shot is fired and returns to 0 within in reload time." Share this post Link to post Share on other sites
eggbeast 3684 Posted November 4, 2016 wow i never noticed this fact when doing anims for literally a hundred weapons lol boy oh boy, this stuff is hard enough to do, without having to think backwards. thanks! btw do you guys have a shotgun hand pump animation solution that doesn't use CBA, and would you possibly share the secret? Share this post Link to post Share on other sites
reyhard 2082 Posted November 5, 2016 btw do you guys have a shotgun hand pump animation solution that doesn't use CBA, and would you possibly share the secret? best to wait for 1.66 and weapon event handlers ;) (already available on devbranch) class rhs_weap_ak74m_Base_F: Rifle_Base_F { class Eventhandlers { fired = "hint format['2 f: %1', _this]"; }; Share this post Link to post Share on other sites