Jump to content

Locklear

Former Developer
  • Content Count

    313
  • Joined

  • Last visited

  • Medals

Everything posted by Locklear

  1. Locklear

    Model.cfg animation issue regarding the bolt

    Glad to help. :)
  2. Locklear

    Model.cfg animation issue regarding the bolt

    When you animate the bolt catch, you inherit most of the animation properties from other animations, including offset, which affect the direction of a translation as well. If I understand your issue, you can either change direction of the CH_axis in the model, or you can add the offset1 property to all animations affecting the CH selection and change the +/- sign of its value. If I'm not mistaken, the following code might do the trick (just replace those classes and please let me know, if it did something useful :)). class bolt_catch: bolt { selection zz= "CH"; axis = "CH_axis"; offset1 = -0.3; }; class bolt_catch_2: bolt_2 { selection = "CH"; axis = "CH_axis"; offset1 = -0.7; }; class bolt_catch_empty: bolt_empty { selection = "CH"; axis = "CH_axis"; offset1 = -1; }; class bolt_catch_reload_move_1: bolt_reload_move_1 { selection = "CH"; axis = "CH_axis"; offset1 = -0.00001; }; class bolt_catch_reload_move_2: bolt_reload_move_2 { selection = "CH"; axis = "CH_axis"; offset1 = 1; };
  3. Scuba does effectively nothing. :) Concerning a uniform unable to equip any vest, I'm not aware of any way how to make it, sorry.
  4. For start, you might want to take a look at some community wiki pages, namely Arma 3 Cars Config Guidelines and Model Config.
  5. As a little follow-up to Julien's explanation, I'd like to add I was advised not to use a delete, and I'd recommend the same for the sake of clarity and to avoid any possible bugs that could be caused by the specifics of using that function.
  6. In general, the proxied model replaces the proxy in the original model, so the position of both the proxy and the proxied model matters, and adjusting either will have an effect. However, this is apparently not the case with characters, so if you want to adjust where, for example, a backpack is placed, you need to adjust the backpack's position in its model.
  7. It seems that the bracket error is gone, but I've found a bunch of various other mistakes. First of all, I'm kinda confused that you actually edit a base class, from which other pistols inherit their properties. If there is no particular reason for that, I'd prefer defining a new class for your new pistol, which I did. Also, the config lacks model of the pistol, which might be the reason for CTD. Also, you define the Mode_SemiAuto class inside cfgWeapons, but you have to define it outside of it. Last but not least, it seems that the mode[] property is missing. Long story short, please try the code below, it might be a good starting point. Please note I used the ACPC2 model as a placeholder, so the new pistol would work; it should be replaced by an actual new pistol's model. One last note: I write brackets slightly differently from the code you posted, which is IMO easier to navigate in, so you might consider adopting this way, as well. // Config created by swtx and modified by swtx class CfgPatches { class Project_Genesis_acp { units[] = {}; weapons[] = {"hgun_1991T"}; requiredVersion = 0.1; requiredAddons[] = {"A3_Weapons_F"}; version = ".01"; projectName = "Project_Genesis"; author = "swtx"; }; }; class Mode_SemiAuto; // External class reference class CfgWeapons { class Pistol_Base_F; // External class reference class hgun_1991T: Pistol_Base_F { scope = 2; model = "\A3\Weapons_F_Beta\Pistols\ACPC2\ACPC2_F.p3d"; picture = "\A3\Weapons_F_Beta\Pistols\ACPC2\Data\UI\gear_Acpc2_X_CA.paa"; author = "swtx"; displayName = "1911 Tactical"; drySound[] = {"Project_Genesis\Project_Genesis_acp\dry", 1, 1, 20}; reloadMagazineSound[] = {"Project_Genesis\Project_Genesis_acp\apc_reload", 1, 1, 30}; magazines[] = {"9Rnd_45ACP_Mag"}; inertia = 0.3; dexterity = 1.7; initSpeed = 320; modes[] = {Single}; recoil = "recoil_pistol_acpc2"; class Single: Mode_SemiAuto { sounds[] = { "StandardSound", "SilencedSound" }; class BaseSoundModeType { closure1[] = { "Project_Genesis\Project_Genesis_acp\null", 1.03514, 1, 30 }; closure2[] = { "Project_Genesis\Project_Genesis_acp\null", 1.03514, 1, 30 }; soundClosure[] = { "closure1", 0.5, "closure2", 0.5 }; }; class StandardSound : BaseSoundModeType { begin1[] = { "Project_Genesis\Project_Genesis_acp\acpsingle1", 2.51189, 1, 1400 }; begin2[] = { "Project_Genesis\Project_Genesis_acp\acpsingle1", 2.51189, 1, 1400 }; begin3[] = { "Project_Genesis\Project_Genesis_acp\acpsingle1", 2.51189, 1, 1400 }; soundBegin[] = { "begin1", 0.33, "begin2", 0.33, "begin3", 0.34 }; class SoundTails { class TailInterior { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\4-Five_tail_interior", 2, 1, 1400 }; frequency = 1; volume = "interior"; }; class TailTrees { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\4-Five_tail_trees", 2, 1, 1400 }; frequency = 1; volume = "(1-interior/1.4)*trees"; }; class TailForest { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\4-Five_tail_forest", 2, 1, 1400 }; frequency = 1; volume = "(1-interior/1.4)*forest"; }; class TailMeadows { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\4-Five_tail_meadows", 2, 1, 1400 }; frequency = 1; volume = "(1-interior/1.4)*(meadows/2 max sea/2)"; }; class TailHouses { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\4-Five_tail_houses", 2, 1, 1400 }; frequency = 1; volume = "(1-interior/1.4)*houses"; }; }; }; class SilencedSound : BaseSoundModeType { begin1[] = { "Project_Genesis\Project_Genesis_acp\suppressed_pistol1", 1, 1, 200}; begin2[] = { "Project_Genesis\Project_Genesis_acp\suppressed_pistol2", 1, 1, 200}; soundBegin[] = { "begin1", 0.5, "begin2", 0.5 }; class SoundTails { class TailInterior { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\Silencer_4-Five_tail_interior", 1, 1, 600 }; frequency = 1; volume = "interior"; }; class TailTrees { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\Silencer_4-Five_tail_trees", 1, 1, 600 }; frequency = 1; volume = "(1-interior/1.4)*trees"; }; class TailForest { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\Silencer_4-Five_tail_forest", 1, 1, 600 }; frequency = 1; volume = "(1-interior/1.4)*forest"; }; class TailMeadows { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\Silencer_4-Five_tail_meadows", 1, 1, 600 }; frequency = 1; volume = "(1-interior/1.4)*(meadows/2 max sea/2)"; }; class TailHouses { sound[] = { "A3\Sounds_F\arsenal\weapons\Pistols\4-Five\Silencer_4-Five_tail_houses", 1, 1, 600 }; frequency = 1; volume = "(1-interior/1.4)*houses"; }; }; }; recoil = "recoil_pistol_heavy"; recoilProne = "recoil_prone_pistol_heavy"; reloadTime = 0.1; dispersion = 0.065; minRange = 5; minRangeProbab = 0.3; midRange = 25; midRangeProbab = 0.6; maxRange = 50; maxRangeProbab = 0.1; aiRateOfFire = 2; aiRateOfFireDistance = 25; }; }; };
  8. If I may, I recommend to write curly brackets on separate lines, and to indent the properties listed between them, as seen below. It helps a lot with reading the code and finding any errors. Btw, if you use a localization key ($STR_A3…), you have to write it without quotation marks, else the string isn't transformed into its actual content in the game. And finally, values of the properties in the form of expressions won't work written in the way you used in your config. Please try adding __EVAL in front of the expression, as seen in the code below. This command should make the expression work. class CfgPatches { class HE_sniper_round { units[] = {}; weapons[] = {"srifle_GM6_F", "srifle_GM6_SOS_F"}; requiredVersion = 0.1; requiredAddons[] = {"A3_Weapons_F"}; }; }; class CfgAmmo { class B_127x108_Ball; class B_127x108_HE: B_127x108_Ball { hit = 60; explosive = 0.6; indirectHit = 6; indirectHitRange = 1; caliber = 3.6; deflecting = 10; typicalSpeed = 1060; airFriction = -0.00036; visibleFire = 10; // how much is visible when this weapon is fired audibleFire = 15; cost = 15; class CamShakeExplode { power = __EVAL(20^0.5); duration = __EVAL((round (20^0.5))*0.2 max 0.2); frequency = 20; distance = __EVAL((20^0.5)*3); }; class CamShakeHit { power = 20; duration = __EVAL((round (20^0.25))*0.2 max 0.2); frequency = 20; distance = 1; }; }; }; class CfgMagazines { class 5Rnd_127x108_Mag class 5Rnd_127x108_HE_Mag: 5Rnd_127x108_Mag { author = $STR_A3_Bohemia_Interactive; picture = "\A3\weapons_f\data\UI\M_5rnd_127x108_CA.paa"; displayName = "HE Round Mag"; initSpeed = 1060; ammo = "B_127x108_HE"; descriptionShort = $STR_A3_CfgMagazines_5Rnd_127x108_APDS_Mag1; }; }; class CfgWeapons { class Rifle_Long_Base_F class GM6_base_F: Rifle_Long_Base_F { magazines[] = {"5Rnd_127x108_Mag", "5Rnd_127x108_APDS_Mag", "5Rnd_127x108_HE_Mag"}; }; };
  9. Locklear

    Bad French translation

    Thank you, sir! I'll fix it for the next update.
  10. Locklear

    Raven Vest _co.paa location?

    It's \A3\Characters_F\Common\Data\tacticalvest_black_co.paa for V_TacVest_blk, and \A3\Characters_F\BLUFOR\Data\vests_rgr_co.paa for V_PlateCarrier3_rgr. However, V_PlateCarrier3_rgr have no selections defined in config, so in case you would inherit a new class from this one, don't forget to add hiddenSelections[] = {"camo"}.
  11. I found the issue in the model and fixed it; it should work with the next Dev Branch update and be included in Marksmen release. Boots are part of the camo1 selection (clothing_co.paa texture in the original model).
  12. Let me offer some clarification. In a uniform config, there's class ItemInfo with the uniformClass property. This property contains a soldier class, and the uniform is given the faction of that soldier. Soldiers aren't allowed to equip uniforms of other factions (and civilian ones), which is the source of the problems you encountered. The solution you found is the right one. Basically, in MySoldier's config, you want to have uniformClass = "MyUniform", and in MyUniform's config's class ItemInfo, you want to have uniformClass = "MySoldier". Once a soldier is connected with his uniform this way, everything works. Of course, several soldiers can use one uniform class, while only one of them is mentioned in the uniform's config - just their faction needs to be the same. In short, a uniform itself has no faction restriction, but it is given to it via connecting it with a particular soldier; the uniform then gains the soldier's faction.
  13. Locklear

    Marksmen DLC Weapon Feedback

    Soldiers' equipment has been tweaked a bit, and will be implemented soonâ„¢. Including SPMG's mags in Autorifleman's Assistant backpack.
  14. The skeleton in model.cfg is the key, or the selection dependency, to be precise. Example: "main_rotor_1", "", "main_rotor_1_static","main_rotor_1", "main_rotor_1_blur","main_rotor_1", "main_rotor_1_bend","main_rotor_1" Please note the main_rotor_1 selections is for the middle rotor part only, the blades are not part of this selection. On the contrary, the remaining selections are basically for rotors only. Rotation animation works with main_rotor_1, so everything spins as it should. Bending works with main_rotor_1_bend, utilizing the vertices' weights. Hiding works with main_rotor_1_static; the change between the default and the blurred rotor is handled in config.cpp, no animation needed: selectionHRotorMove = "main_rotor_1_blur"; selectionHRotorStill = "main_rotor_1_static";
  15. Let me offer you some clarification and a couple of tips. First of all, I recommend downloading Arma 3 Tools from Steam (you don't need to own Arma 3 for that). We have some sample assets with configs there, so you might want to take peek into model.cfg of a test heli there. To clarify the rotors' selections, there are usually three, as you noticed, named in Czech in older models, and in English in newer ones. In English, there's usually something like main_rotor, main_rotor_static, and main_rotor_blur. Basically, you just need two selections for hiding the solid rotor and unhiding the blurred one, which you seem to understand well. The _static selection serves another purpose. When a helicopter's rotor is not moving, the blades are bent down a bit, while once they rotate and gain some lift, they're straight, or even bent up slightly. We animate this movement, for which two selections are used. To put it shortly, the weight of the vertices of the blades is different, but to make rotor rotation work, the sum of weights of a vertex in main_rotor and main_rotor_static selections has to be 100. However, different weights allow the animation to manifest differently, according to the weight of a particular vertex. So if done right, a basic translation will move the tips of the blades much more than the other end, which will create the desired effect of the blades straightening up. In order to animations work like this with vertices' weights, isDiscrete property has to be set to 1.
  16. Locklear

    Sniper Ghillie config.cpp

    Long story short, I deployed a little tweak, which should solve the issue. The joy and happiness is coming in the next Dev-Branch update (most likely).
  17. Locklear

    Sniper Ghillie config.cpp

    I'm sorry, but changing ammo textures is currently not possible.
  18. I'm sorry, it's not possible. But it should be all right in the Dev Branch on Monday, and in the next patch in the Main Branch.
  19. The fix is ready and should be included in the next Dev Branch build.
  20. Thank you for reporting this, we are currently working on a fix, which shall be implemented soon.
  21. A quick look revealed that the character classes which uses this uniform have "camo" and "insignia" selections defined, while the model (ig_leader.p3d) uses "camo1" (the whole uniform) and "camo2" (the scarf) selections. So you shall change the textures in config, where you'll define "camo1" and "camo2" selections and their respective textures.
×