Jump to content
🛡️FORUMS ARE IN READ-ONLY MODE Read more... ×
Sign in to follow this  
Bonezz

wheels not changing to damaged ones!!

Recommended Posts

Hey im kinda new to modding arma 3 i have a car i put in the game everything works fine , just the wheels when i shoot them they get destroyed but the dont change to the damaged one like the proxy i put in the p3d file and i have all of the unhide wheels and  using the default proxy "\a3\data_f\proxies\damagewheel\damagewheel_4"  in model viewer when i do the anim they show up the damaged ones  not sure what im messing plz u if u have any idea let me know .

Share this post


Link to post
Share on other sites

Have you set up the animations in model.cfg?

 

You need to define the wheels and wheel proxies as skeleton bones, and set up the animations to hide the good wheel and display the damage proxy. It's not 'automatic', but is linked to animationSources that are often inherited from class Car_F.

 

For a working example, refer to the Arma3 Samples:

   \SteamLibrary\SteamApps\common\Arma 3 Samples\Addons\Test_Car_01

and search model.cfg for the keyword "wheel_1_1_".

Share this post


Link to post
Share on other sites
9 hours ago, UK_Apollo said:

Have you set up the animations in model.cfg?

 

You need to define the wheels and wheel proxies as skeleton bones, and set up the animations to hide the good wheel and display the damage proxy. It's not 'automatic', but is linked to animationSources that are often inherited from class Car_F.

 

For a working example, refer to the Arma3 Samples:

   \SteamLibrary\SteamApps\common\Arma 3 Samples\Addons\Test_Car_01

and search model.cfg for the keyword "wheel_1_1_".

Spoiler

class Rotation
{
    type = "rotation";
    memory = 1;
    minValue = 0;
    maxValue = 1;
    angle0 = 0;
    angle1 = 1;
};
class CfgSkeletons
{
    class Default
    {
        isDiscrete = 1;
        skeletonInherit = "";
        skeletonBones[] = {};
    };
    class Vehicle : Default {};
    class Car : Vehicle {
        skeletonBones[]=
        {
            "drivewheel","",

            "wheel_1_1_damper_land","",
            "wheel_1_2_damper_land","",
            "wheel_1_3_damper_land","",
            "wheel_1_4_damper_land","",

            "wheel_2_1_damper_land","",
            "wheel_2_2_damper_land","",
            "wheel_2_3_damper_land","",
            "wheel_2_4_damper_land","",

            "wheel_1_1_damper","wheel_1_1_damper_land",
            "wheel_1_2_damper","wheel_1_2_damper_land",
            "wheel_1_3_damper","wheel_1_3_damper_land",
            "wheel_1_4_damper","wheel_1_4_damper_land",

            "wheel_2_1_damper","wheel_2_1_damper_land",
            "wheel_2_2_damper","wheel_2_2_damper_land",
            "wheel_2_3_damper","wheel_2_3_damper_land",
            "wheel_2_4_damper","wheel_2_4_damper_land",

            "wheel_1_1_steering","wheel_1_1_damper",
            "wheel_1_2_steering","wheel_1_2_damper",
            "wheel_1_3_steering","wheel_1_3_damper",
            "wheel_1_4_steering","wheel_1_4_damper",

            "wheel_2_1_steering","wheel_2_1_damper",
            "wheel_2_2_steering","wheel_2_2_damper",
            "wheel_2_3_steering","wheel_2_3_damper",
            "wheel_2_4_steering","wheel_2_4_damper",

            "wheel_1_1","wheel_1_1_steering",
            "wheel_1_2","wheel_1_2_steering",
            "wheel_1_3","wheel_1_3_steering",
            "wheel_1_4","wheel_1_4_steering",

            "wheel_2_1","wheel_2_1_steering",
            "wheel_2_2","wheel_2_2_steering",
            "wheel_2_3","wheel_2_3_steering",
            "wheel_2_4","wheel_2_4_steering",

            "wheel_1_1_unhide","wheel_1_1",
            "wheel_1_2_unhide","wheel_1_2",
            "wheel_1_3_unhide","wheel_1_3",
            "wheel_1_4_unhide","wheel_1_4",

            "wheel_2_1_unhide","wheel_2_1",
            "wheel_2_2_unhide","wheel_2_2",
            "wheel_2_3_unhide","wheel_2_3",
            "wheel_2_4_unhide","wheel_2_4",

            "wheel_1_1_hide","wheel_1_1",
            "wheel_1_2_hide","wheel_1_2",
            "wheel_1_3_hide","wheel_1_3",
            "wheel_1_4_hide","wheel_1_4",

            "wheel_2_1_hide","wheel_2_1",
            "wheel_2_2_hide","wheel_2_2",
            "wheel_2_3_hide","wheel_2_3",
            "wheel_2_4_hide","wheel_2_4",

            "OtocVez","",
            "OtocHlaven","OtocVez",
            "directional",    "",

            "damageHide","",
            "damageVez","OtocVez",
            "damageHlaven","OtocHlaven",

            "ukaz_rychlo","",
            "ukaz_rychlo2","",
            "ukaz_rpm","",
            "mph","",
            "rpm","",
            "fuel","",
            "fuel_1","",
            "fuel_01","",
            "fuel_2","",
            "fuel_3","",
            "prop_01","",
            "prop_02","",
            "prop_2","",
            "prop_1","",
            "td1","",
            "td2","",
            "turn_left","",
            "turn_right","",
            "glass1","damageHide",
            "glass2","damageHide",
            "glass3","damageHide",
            "glass4","damageHide"
        };
    };
    class bmw_e30: Car
    {
        skeletonInherit="Car";
        skeletonBones[]=
        {
            "reverse_light","",
            "daylights","damageHide",
            "door1","",
            "door2","",
            "glass5","damageHide"
        };
    };

};

class CfgModels
{
    class Default
    {
        sectionsInherit = "";
        sections[] = {};
        skeletonName = "";
    };
    class Vehicle: Default
    {
        sections[] =
        {
            "cislo",
            "grupa",
            "side",
            "sektor",
            "clan",
            "clan_sign",
            "podsvit pristroju",
            "poskozeni",
            "L svetlo",
            "P svetlo",
            "zasleh"
        };
    };

    class Car: Vehicle
    {
        htMin = 60;        // Minimum half-cooling time (in seconds)
        htMax = 180;    // Maximum half-cooling time (in seconds)
        afMax = 100;    // Maximum temperature in case the model is alive (in celsius)
        mfMax = 8;        // 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 = 150;    // Metabolism temperature of the model (in celsius)

        sections[]=
        {
            "ammo",
            "zadni svetlo",
            "brzdove svetlo",
            "spz",
            "motor",
            "body",
            "clan",
            "clan_sign",
            "zasleh",
            "Light_R",
            "Light_L",
            "podsvit pristroju",
            "glass1",
            "glass2",
            "glass3",
            "glass4",
            "glass5",
            "glass6"
        };
        skeletonName="Car";
        class Animations
        {
            // destruct START
            class damageHide
            {
                type="hide";
                source="damage";
                selection="damageHide";
                hideValue=1.0;
            };
            class damageHideVez:damageHide
            {
                selection="OtocVez";
            };
            class damageHideHlaven:damageHide
            {
                selection="OtocHlaven";
            };

            // Wheels START
            // Wheels Complete Destruct START
            class wheel_1_1_destruct
            {
                type="hide";
                selection="wheel_1_1_hide";
                source="HitLFWheel";
                minValue = 0; // upravit na 0.99
                maxValue = 1; // upravit na 1.0
                hidevalue = 0.99999;
            };
            class wheel_1_2_destruct: wheel_1_1_destruct {source="HitLBWheel";selection="wheel_1_2_hide";};
            class wheel_1_3_destruct: wheel_1_1_destruct {source="HitLMWheel";selection="wheel_1_3_hide";};
            class wheel_1_4_destruct: wheel_1_1_destruct {source="HitLF2Wheel";selection="wheel_1_4_hide";};

            class wheel_2_1_destruct: wheel_1_1_destruct {source="HitRFWheel";selection="wheel_2_1_hide";};
            class wheel_2_2_destruct: wheel_1_1_destruct {source="HitRBWheel";selection="wheel_2_2_hide";};
            class wheel_2_3_destruct: wheel_1_1_destruct {source="HitRMWheel";selection="wheel_2_3_hide";};
            class wheel_2_4_destruct: wheel_1_1_destruct {source="HitRF2Wheel";selection="wheel_2_4_hide";};

            class wheel_1_1_destruct_unhide
            {
                type="hide";
                selection="wheel_1_1_unhide";
                source="HitLFWheel";
                minValue = 0;
                maxValue = 1;
                hidevalue = 0.00000;
                UnHidevalue = 1.00000;
            };
            class wheel_1_2_destruct_unhide: wheel_1_1_destruct_unhide {source="HitLBWheel";selection="wheel_1_2_unhide";};
            class wheel_1_3_destruct_unhide: wheel_1_1_destruct_unhide {source="HitLMWheel";selection="wheel_1_3_unhide";};
            class wheel_1_4_destruct_unhide: wheel_1_1_destruct_unhide {source="HitLF2Wheel";selection="wheel_1_4_unhide";};

            class wheel_2_1_destruct_unhide: wheel_1_1_destruct_unhide {source="HitRFWheel";selection="wheel_2_1_unhide";};
            class wheel_2_2_destruct_unhide: wheel_1_1_destruct_unhide {source="HitRBWheel";selection="wheel_2_2_unhide";};
            class wheel_2_3_destruct_unhide: wheel_1_1_destruct_unhide {source="HitRMWheel";selection="wheel_2_3_unhide";};
            class wheel_2_4_destruct_unhide: wheel_1_1_destruct_unhide {source="HitRF2Wheel";selection="wheel_2_4_unhide";};

            // Wheels Complete Destruct END

            #define DamageOffset 0.2

            // Wheels Damage START
            class wheel_1_1_Damage: wheel_1_1_destruct
            {
                type="translation";
                axis="Basic_Damper_Destruct_Axis";
                memory=1;
                selection="wheel_1_1_damper";
                source="HitLFWheel";
                minValue = 0.0;
                maxValue = 1;
                offset0 = 0;
                offset1 = DamageOffset;
            };
            class wheel_1_2_Damage: wheel_1_1_Damage {source="HitLBWheel";selection="wheel_1_2_damper";};
            class wheel_1_3_Damage: wheel_1_1_Damage {source="HitLMWheel";selection="wheel_1_3_damper";};
            class wheel_1_4_Damage: wheel_1_1_Damage {source="HitLF2Wheel";selection="wheel_1_4_damper";};

            class wheel_2_1_Damage: wheel_1_1_Damage {source="HitRFWheel";selection="wheel_2_1_damper";};
            class wheel_2_2_Damage: wheel_1_1_Damage {source="HitRBWheel";selection="wheel_2_2_damper";};
            class wheel_2_3_Damage: wheel_1_1_Damage {source="HitRMWheel";selection="wheel_2_3_damper";};
            class wheel_2_4_Damage: wheel_1_1_Damage {source="HitRF2Wheel";selection="wheel_2_4_damper";};


            class wheel_1_1_Damper_Damage_BackAnim: wheel_1_1_Damage {selection="wheel_1_1_damper";offset1 = -1.2*DamageOffset;};
            class wheel_1_2_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitLBWheel";selection="wheel_1_2_damper";};
            class wheel_1_3_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitLMWheel";selection="wheel_1_3_damper";};
            class wheel_1_4_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitLF2Wheel";selection="wheel_1_4_damper";};

            class wheel_2_1_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitRFWheel";selection="wheel_2_1_damper";};
            class wheel_2_2_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitRBWheel";selection="wheel_2_2_damper";};
            class wheel_2_3_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitRMWheel";selection="wheel_2_3_damper";};
            class wheel_2_4_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim {source="HitRF2Wheel";selection="wheel_2_4_damper";};

            // Wheels Damage END
            // Wheels END

                //Glass Damage START
                class Glass1_destruct
                {
                    type="hide";
                    selection="glass1";
                    source="HitGlass1";
                    minValue = 0;
                    maxValue = 1;
                    hidevalue = 0.99999;
                };
                class Glass2_destruct: Glass1_destruct {selection="glass2";source="HitGlass2";}; // Inherits from the the glass 1, only the selection and the source will be changed
                class Glass3_destruct: Glass1_destruct {selection="glass3";source="HitGlass3";};
                class Glass4_destruct: Glass1_destruct {selection="glass4";source="HitGlass4";};
                class Glass5_destruct: Glass1_destruct {selection="glass5";source="HitGlass5";};
                class Glass6_destruct: Glass1_destruct {selection="glass6";source="HitGlass6";};
                //Glass Damage END

            // destruct END
            class Fuel: Rotation
            {
                source="fuel";
                selection="fuel";
                axis="fuel_axis";
                maxValue=1;
                memory=1;
                angle0="rad -110";
                angle1=0;
            };
            class IndicatorSpeed: Rotation
            {
                source="speed";
                selection="mph";
                axis="mph_axis";
                memory=1;
                maxValue=38.900002;
                angle1="rad -265";
            };
            class IndicatorFuel: Rotation
            {
                type="rotation";
                source="fuel";
                selection="fuel_1";
                axis="fuel_1_axis";
                memory=1;
                minValue=0.000000;
                maxValue=1.000000;
                angle0=-0.087266;
                angle1=-1.658063;
            };
            class IndicatorRPM: Rotation
            {
                source="rpm";
                selection="rpm";
                axis="rpm_axis";
                memory=1;
                angle1="rad 80";
            };
            class DrivingWheel: Rotation
            {
                source="drivingWheel";
                selection="drivewheel";
                axis="drivewheel_axis";
                minValue=-1;
                maxValue=1;
                angle0=(rad 80);
                angle1=(rad -80);
            };
            class Steering_1_1
            {
                type="rotationY";
                source="drivingWheel";
                selection="wheel_1_1_steering";
                axis="wheel_1_1_steering_axis";
                memory=1;
                minValue= -1;
                maxValue= 1;
                angle0=1.047198;
                angle1=-1.047198;
            };
            class Steering_2_1: Steering_1_1
            {
                selection="wheel_2_1_steering";
                axis="wheel_2_1_steering_axis";
            };
            class Wheel_1_1
            {
                type="rotationX";
                source="wheel";
                selection="wheel_1_1";
                axis="wheel_1_1_axis";
                memory=1;
                sourceAddress="loop";
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1="rad -360";
            };
            class wheel_2_1: Wheel_1_1
            {
                selection="wheel_2_1";
                axis="wheel_2_1_axis";
            };
            class wheel_1_2: Wheel_1_1
            {
                selection="wheel_1_2";
                axis="wheel_1_2_axis";
            };
            class wheel_1_3: Wheel_1_1
            {
                selection="wheel_1_3";
                axis="wheel_1_3_axis";
            };
            class Wheel_2_2: Wheel_1_1
            {
                selection="wheel_2_2";
                axis="wheel_2_2_axis";
            };
            class Wheel_2_3: Wheel_1_1
            {
                selection="wheel_2_3";
                axis="wheel_2_3_axis";
            };
            class Wheel_1_4: Wheel_1_1
            {
                selection="wheel_1_4";
                axis="wheel_1_4_axis";
            };
            class Wheel_2_4: Wheel_1_1
            {
                selection="wheel_2_4";
                axis="wheel_2_4_axis";
            };
            class Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_1_damper_land";
                axis="posun wheel_1_1";
                animPeriod = 1;
                minValue="0";
                maxValue="1";
                offset0= "0.5";
                offset1= "-0.5";
                memory=1;
            };
            class wheel_2_1_Damper: Wheel_1_1_Damper
            {
                selection="wheel_2_1_damper_land";
            };
            class wheel_1_2_Damper: Wheel_1_1_Damper
            {
                selection="wheel_1_2_damper_land";
            };
            class Wheel_2_2_Damper: Wheel_1_1_Damper
            {
                selection="wheel_2_2_damper_land";
            };
            class daylights
            {
                type="hide";
                source="rpm";
                selection="daylights";
                minValue=-0.8;
                maxValue=0.2;
                unhidevalue=1;
                sourceAddress="clamp";
            };

            class reverse_light
            {
                type="Hide";
                selection="reverse_light";
                sourceAddress="clamp";
                source="Gear";
                minValue = -1;
                maxValue = 0;
                hideValue = "0.2";
            };
        };
    };

    class bmw_e30: Car
    {
        skeletonName = "bmw_e30";
        sectionsInherit = "Car";
        sections[]=
        {
            "Camo1",
            "Camo2",
            "Camo3",
            "license1",
            "license2",
            "license3",
            "license4",
            "license5",
            "license6",
            "turn_left",
            "turn_right",
            "td2",
            "td1",
            "body",
            "directional",
            "karoserie",
            "palivo"
        };
        class Animations: Animations
        {
            class wheel_1_1_Damage: wheel_1_1_Damage{offset1=0.18000001;};
            class wheel_1_2_Damage: wheel_1_2_Damage{offset1=0.18000001;};
            class wheel_2_1_Damage: wheel_2_1_Damage{offset1=0.18000001;};
            class wheel_2_2_Damage: wheel_2_2_Damage{offset1=0.18000001;};

            class wheel_1_1_Damper_Damage_BackAnim: wheel_1_1_Damper_Damage_BackAnim{offset1=-0.18000001;};
            class wheel_1_2_Damper_Damage_BackAnim: wheel_1_2_Damper_Damage_BackAnim{offset1=-0.18000001;};
            class wheel_2_1_Damper_Damage_BackAnim: wheel_2_1_Damper_Damage_BackAnim{offset1=-0.18000001;};
            class wheel_2_2_Damper_Damage_BackAnim: wheel_2_2_Damper_Damage_BackAnim{offset1=-0.18000001;};

            class DrivingWheel
            {
                type="rotation";
                source="drivingWheel";
                selection="drivewheel";
                axis="drivewheel_axis";
                memory=1;
                minValue=-1;
                maxValue=1;
                angle0=(rad 70);
                angle1=(rad -70);
            };
            class Steering_1_1
            {
                type="rotationY";
                source="drivingWheel";
                selection="wheel_1_1_steering";
                axis="wheel_1_1_steering_axis";
                memory=1;
                minValue="rad -90";
                maxValue="rad +90";
                angle0=1.0471981;
                angle1=-1.0471981;
            };
            class Steering_2_1: Steering_1_1
            {
                selection="wheel_2_1_steering";
                axis="wheel_2_1_steering_axis";
                angle0=1.0471981;
                angle1=-1.0471981;
            };
            class IndicatorSpeed: Rotation
            {
                source="speed";
                selection="mph";
                axis="mph_axis";
                memory=1;
                maxValue=28;
                angle0=0.17453299;
                angle1=-3.141593;
            };
            class IndicatorRPM: Rotation
            {
                type="rotation";
                source="rpm";
                selection="rpm";
                axis="rpm_axis";
                memory=1;
                minValue=0;
                maxValue=7500;
                angle0=(rad 0);
                angle1=(rad 250);
            };
            class fuel
            {
                type="rotation";
                source="fuel";
                selection="fuel";
                axis="fuel_axis";
                memory=1;
                minValue=0;
                maxValue=1;
                angle0=0;
                angle1="rad +55";
            };
            class prop_01
            {
                type="rotation";
                source="rpm";
                selection="prop_1";
                axis="prop_1_axis";
                memory=1;
                minValue=1000;
                maxValue=7000;
                angle0="rad 30";
                angle1="rad 35";
            };

            class daylights
            {
                type="hide";
                source="rpm";
                selection="daylights";
                minValue=-0.8;
                maxValue=0.2;
                unhidevalue=1;
                sourceAddress="clamp";
            };

            class reverse_light
            {
                type="Hide";
                selection="reverse_light";
                sourceAddress="clamp";
                source="Gear";
                minValue = -1;
                maxValue = 0;
                hideValue = "0.2";
            };

            class damageHidedoor1: damageHide
            {
                selection="door1";
            };
            class damageHidedoor2: damageHide
            {
                selection="door2";
            };

            class Glass5_destruct
            {
                type="hide";
                selection="glass5";
                source="HitGlass5";
                minValue = 0;
                maxValue = 1;
                hidevalue = 0.99999;
            };
            class Wheel_1_1_Damper: Wheel_1_1_Damper
            {
                type="translation";
                source="damper";
                selection="wheel_1_1_damper_land";
                axis="posun wheel_1_1";
                animPeriod = 1;
                minValue="0";
                maxValue="1";
                offset0= "0.5";
                offset1= "-0.5";
                memory=1;
            };
            class wheel_2_1_Damper: Wheel_1_1_Damper
            {
                selection="wheel_2_1_damper_land";
            };
            class wheel_1_2_Damper: Wheel_1_1_Damper
            {
                selection="wheel_1_2_damper_land";
            };
            class Wheel_2_2_Damper: Wheel_1_1_Damper
            {
                selection="wheel_2_2_damper_land";
            };
            class turn_left
            {
                type="hide";
                hideValue=0;
                minValue=-1;
                maxValue=0.5;
                minPhase=-1;
                maxPhase=0.5;
                source="turn_left";
                sourceAddress=0;
                selection="turn_left";
            };
            class turn_left_signal
            {
                type="hide";
                hideValue=0;
                minValue=-0.5;
                maxValue=0.5;
                minPhase=-0.5;
                maxPhase=0.5;
                source="time";
                sourceAddress=0;
                selection="turn_left";
            };
            class turn_right
            {
                type="hide";
                hideValue=0;
                minValue=-1;
                maxValue=0.5;
                minPhase=-1;
                maxPhase=0.5;
                source="turn_right";
                sourceAddress=0;
                selection="turn_right";
            };
            class turn_right_signal
            {
                type="hide";
                hideValue=0;
                minValue=-0.5;
                maxValue=0.5;
                minPhase=-0.5;
                maxPhase=0.5;
                source="time";
                sourceAddress=0;
                selection="turn_right";
            };
            class ani_directional
            {
                type="rotation";
                angle0=0;
                angle1=0;
                axis="";    //unknown :(
                memory=0;
                minValue=0;
                maxValue=1000;
                minPhase=0;
                maxPhase=1000;
                source="user";
                sourceAddress=0;
                selection="directional";
            };
        };
    };
};
 

this the model.cfg im using i got it from the samples files 

Share this post


Link to post
Share on other sites

We probably need to see your config.cpp also, at least the parts relevant to class inheritance and animationSources{}. Post all of it using hastebin.com or something similar if you wish.

Share this post


Link to post
Share on other sites
Spoiler

#include "basicdefines_A3.hpp"
class DefaultEventhandlers;

class CfgPatches {

    class bmw_e30 {
        units[] = {"bmw_e30"};
        weapons[] = {};
        requiredVersion = 0.1;
        requiredAddons[] = {"A3_Soft_F","ym_data"};
    };
};

class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;

class CfgVehicles
{
    class Car;
    class Car_F: Car
    {
        class HitPoints /// we want to use hitpoints predefined for all cars
        {
            class HitLFWheel;
            class HitLF2Wheel;
            class HitRFWheel;
            class HitRF2Wheel;
            class HitBody;
            class HitGlass1;
            class HitGlass2;
            class HitGlass3;
            class HitGlass4;
        };
        class EventHandlers;
   class AnimationSources;
    };

    class bmw_e30_base: Car_F
    {
        model     = "\bmw_e30\bmw_e30";  /// simple path to model
        picture    = "\YM_data\UI\map_car_E30.paa"; /// icon in map
        Icon    = "\YM_data\UI\map_car_E30.paa"; /// icon in map
        displayName = "1991 BMW M3 E90"; /// displayed in Editor
        hiddenSelections[] = {"camo1","license1","license2","license3","license4","license5","license6"}; ///we want to allow changing the color of this selection
        hiddenSelectionsTextures[] = {"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""};
        author = "Mado S.Yaghi";
        terrainCoef     = 2;     /// different surface affects this car more, stick to tarmac
        turnCoef         = 3;     /// should match the wheel turn radius
        precision = 10;
        brakeDistance = 3;
        fireResistance     = 5;     /// lesser protection against fire than tanks
        armor             = 65;     /// just some protection against missiles, collisions and explosions
        cost = 50000;
        transportMaxBackpacks     = 3; /// just some backpacks fit the trunk by default
        transportSoldier         = 3; /// number of cargo except driver
        slingLoadCargoMemoryPoints[]=
        {
            "SlingLoadCargo1",
            "SlingLoadCargo2",
            "SlingLoadCargo3",
            "SlingLoadCargo4"
        };
        
        /// some values from parent class to show how to set them up
        wheelDamageRadiusCoef     = 0.9;             /// for precision tweaking of damaged wheel size
        wheelDestroyRadiusCoef     = 0.4;            /// for tweaking of rims size to fit ground
        maxFordingDepth         = 0.5;            /// how high water would damage the engine of the car
        waterResistance         = 1;            /// if the depth of water is bigger than maxFordingDepth it starts to damage the engine after this time
        crewCrashProtection        = 0.25;            /// multiplier of damage to crew of the vehicle => low number means better protection
        driverLeftHandAnimName     = "drivewheel"; /// according to what bone in model of car does hand move
        driverRightHandAnimName = "drivewheel";    /// beware, non-existent bones may cause game crashes (even if the bones are hidden during play)
        class Library
        {
            year="1991";
            manufacturer="BMW";
            model="M3 E30";
            engineLayout="S6";
            country="DEU";
            libTextDesc="";
        };

        class eventhandlers
        {};

        class TransportItems /// some first aid kits in trunk according to safety regulations
        {
        };

        class AnimationSources    {};
        class UserActions {};
        class Turrets {}; /// doesn't have any gunner nor commander
        class HitPoints: HitPoints
        {
            class HitLFWheel: HitLFWheel    {armor=0.125; passThrough=0;}; /// it is easier to destroy wheels than hull of the vehicle
            class HitLF2Wheel: HitLF2Wheel    {armor=0.125; passThrough=0;};

            class HitRFWheel: HitRFWheel    {armor=0.125; passThrough=0;};
            class HitRF2Wheel: HitRF2Wheel     {armor=0.125; passThrough=0;};

            class HitFuel             {armor=0.50; material=-1; name="fueltank"; visual=""; passThrough=0.2;}; /// correct points for fuel tank, some of the damage is aFRLied to the whole
            class HitEngine         {armor=0.50; material=-1; name="engine"; visual=""; passThrough=0.2;};
            class HitBody: HitBody     {name = "body"; visual="camo1"; passThrough=1;}; /// all damage to the hull is aFRLied to total damage

            class HitGlass1: HitGlass1 {armor=0.10;}; /// it is pretty easy to puncture the glass but not so easy to remove it
            class HitGlass2: HitGlass2 {armor=0.10;};
            class HitGlass3: HitGlass3 {armor=0.10;};
            class HitGlass4: HitGlass4 {armor=0.10;};
        };

        driverAction         = driver_offroad01; /// what action is going the driver take inside the vehicle. Non-existent action makes the vehicle inaccessible
        cargoAction[]         = {passenger_low01}; /// the same of all the crew
        hideWeaponsDriver = true;
        hideWeaponsCargo = true;
        getInAction         = GetInLow;         /// how does driver look while getting in
        getOutAction         = GetOutLow;         /// and out
        cargoGetInAction[]     = {"GetInLow"};     /// and the same for the rest, if the array has fewer members than the count of crew, the last one is used for the rest
        cargoGetOutAction[] = {"GetOutLow"};     /// that means all use the same in this case

        #include "sounds.hpp"    /// sounds are in a separate file to make this one simple
        #include "pip.hpp"        /// PiPs are in a separate file to make this one simple
        #include "physx.hpp"    /// PhysX settings are in a separate file to make this one simple

        /// memory points where do tracks of the wheel appear
        // front left track, left offset
        memoryPointTrackFLL = "TrackFLL";
        // front left track, right offset
        memoryPointTrackFLR = "TrackFLR";
        // back left track, left offset
        memoryPointTrackBLL = "TrackBLL";
        // back left track, right offset
        memoryPointTrackBLR = "TrackBLR";
        // front right track, left offset
        memoryPointTrackFRL = "TrackFRL";
        // front right track, right offset
        memoryPointTrackFRR = "TrackFRR";
        // back right track, left offset
        memoryPointTrackBRL = "TrackBRL";
        // back right track, right offset
        memoryPointTrackBRR = "TrackBRR";

        class Damage
            {
                tex[]={};
                mat[]=
                {
                 "ym_data\common\metallic_co.rvmat",
                 "ym_data\common\metallic1_damage.rvmat",
                 "ym_data\common\metallic1_destruct.rvmat",
                 "ym_data\common\glass_veh.rvmat",
                 "ym_data\common\glass_veh_damage.rvmat",
                 "ym_data\common\glass\glass_destruct.rvmat"
                };
            };

        class Exhausts /// specific exhaust effects for the car
        {
            class Exhaust1 /// the car has two exhausts - each on one side
            {
                position     = "exhaust1_pos";          /// name of initial memory point
                direction     = "exhaust1_dir";    /// name of memory point for exhaust direction
                effect         = "ExhaustEffectOffroad";    /// what particle effect is it going to use
            };

            class Exhaust2
            {
                position     = "exhaust2_pos";
                direction     = "exhaust2_dir";
                effect         = "ExhaustEffectOffroad";
            };
        };

        class Reflectors    /// only front lights are considered to be reflectors to save CPU
        {
            class LightCarHeadL01     /// lights on each side consist of two bulbs with different flares
            {
                color[]         = {1900, 1800, 1700};        /// approximate colour of standard lights
                ambient[]        = {5, 5, 5};                /// nearly a white one
                position         = "LightCarHeadL01";        /// memory point for start of the light and flare
                direction         = "LightCarHeadL01_end";    /// memory point for the light direction
                hitpoint         = "Light_L";                /// point(s) in hitpoint lod for the light (hitPoints are created by engine)
                selection         = "Light_L";                /// selection for artificial glow around the bulb, not much used any more
                size             = 1;                        /// size of the light point seen from distance
                innerAngle         = 100;                        /// angle of full light
                outerAngle         = 179;                        /// angle of some light
                coneFadeCoef     = 10;                        /// attenuation of light between the above angles
                intensity         = 1;                        /// strength of the light
                useFlare         = true;                        /// does the light use flare?
                dayLight         = false;                    /// switching light off during day saves CPU a lot
                flareSize         = 1.0;                        /// how big is the flare

                class Attenuation
                {
                    start             = 1.0;
                    constant         = 0;
                    linear             = 0;
                    quadratic         = 0.25;
                    hardLimitStart     = 30;        /// it is good to have some limit otherwise the light would shine to infinite distance
                    hardLimitEnd     = 60;        /// this allows adding more lights into scene
                };
            };

            class LightCarHeadL02: LightCarHeadL01
            {
                position     = "LightCarHeadL02";
                direction     = "LightCarHeadL02_end";
                FlareSize     = 0.5;                        /// side bulbs aren't that strong
            };

            class LightCarHeadR01: LightCarHeadL01
            {
                position     = "LightCarHeadR01";
                direction     = "LightCarHeadR01_end";
                hitpoint     = "Light_R";
                selection     = "Light_R";
            };

            class LightCarHeadR02: LightCarHeadR01
            {
                position     = "LightCarHeadR02";
                direction     = "LightCarHeadR02_end";
                FlareSize     = 0.5;
            };
        };
        aggregateReflectors[] = {{"LightCarHeadL01", "LightCarHeadL02"}, {"LightCarHeadR01", "LightCarHeadR02"}}; /// aggregating reflectors helps the engine a lot
    };
    class bmw_e30_stock: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW M3 E30 ";
        hiddenSelectionsTextures[] = {"YM_data\common\black.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_black: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (BLACK)";
        hiddenSelectionsTextures[] = {"YM_data\common\black.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_Blue: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (BLUE)";
        hiddenSelectionsTextures[] = {"YM_data\common\blue.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_Red: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (Red)";
        hiddenSelectionsTextures[] = {"YM_data\common\red.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_White: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (White)";
        hiddenSelectionsTextures[] = {"YM_data\common\white.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_Yellow: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (Yellow)";
        hiddenSelectionsTextures[] = {"YM_data\common\yellow.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_Purple: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (Purple)";
        hiddenSelectionsTextures[] = {"YM_data\common\purple.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_Orange: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (Orange)";
        hiddenSelectionsTextures[] = {"YM_data\common\orange.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_Grey: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (Grey)";
        hiddenSelectionsTextures[] = {"YM_data\common\grey.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
    class bmw_e30_DightBlue: bmw_e30_base
    {
        scope    = 2;             /// makes the car visible in editor
        scopeCurator=2;            // scope 2 means it's available in Zeus mode (0 means hidden)
        crew     = "C_man_1";     /// we need someone to fit into the car
        side    = 3;             /// civilian car should be on civilian side
        faction    = CIV_F;        /// and with civilian faction
        displayName = "1991 BMW E30 (Light Blue)";
        hiddenSelectionsTextures[] = {"YM_data\common\darkblue.paa"};
        class EventHandlers
        {
            init="(_this select 0) execVM ""\bmw_e30\scripts\license.sqf"";";
        };
    };
};
 

here man thanks for replying .

Share this post


Link to post
Share on other sites

Try commenting out class AnimationSources {};

 

        class TransportItems /// some first aid kits in trunk according to safety regulations
        {
        };

        // class AnimationSources {};
        class UserActions {};

 

  • Like 1

Share this post


Link to post
Share on other sites

thanks man that worked .

one more thing would u know why my glass is doing this when its destroyed https://gyazo.com/4281002c5987ebb18466451f4b9df420

https://gyazo.com/2bc7eff11e52e7fbbcd04b16adfd4fa4

 

1 hour ago, UK_Apollo said:

Try commenting out class AnimationSources {};

 

        class TransportItems /// some first aid kits in trunk according to safety regulations
        {
        };

        // class AnimationSources {};
        class UserActions {};

 

 

Share this post


Link to post
Share on other sites

I guess that your window glass skeleton bones are not properly separated in the .p3d from other objects, so when the glass destruction animation is played, you are getting 'tearing' as it removes the glass but also pulls other bits of the car with it.

 

Select the glass selections in the model, probably names like "glass1", "glass2" etc. and apply Structure > Topology > Split.

That might be enough to fix it.

 

  • Like 1

Share this post


Link to post
Share on other sites
6 hours ago, UK_Apollo said:

I guess that your window glass skeleton bones are not properly separated in the .p3d from other objects, so when the glass destruction animation is played, you are getting 'tearing' as it removes the glass but also pulls other bits of the car with it.

 

Select the glass selections in the model, probably names like "glass1", "glass2" etc. and apply Structure > Topology > Split.

That might be enough to fix it.

 

thanks man 

Share this post


Link to post
Share on other sites
Sign in to follow this  

×