Full View config.installationparts.lua

Preview File Updated: v2.0.2 - 05.05.2024

-- @UseHelpUI: For advanced part installation which can prompt the player what they need to do now
Config.UseHelpUI = true

-- @DisableAbilityToRunWithParts - Is the player to be blocked from running with parts in hand?
Config.DisableAbilityToRunWithParts = true

-- @UseManualPartInstallation: Do you want the player to have to manually install each part separately to give the tuning process realism
Config.UseManualPartInstallation = true

-- @UseTargetForPartInstallation: Do you want to use target system for part installation
Config.UseTargetForPartInstallation = false

-- @TeleportToVehicleAfterInstallForMS: Is the player to be teleported to the vehicle for a millisecond, it will not be practically visible and the newly installed part in each player will synchronize
Config.TeleportToVehicleAfterInstallForMS = true

-- @TeleportToVehicleAfterFullInstallation: Is the mechanic to be transported to the vehicle after the installation of all parts is completed so that all Vehicle Properties are loaded 
Config.TeleportToVehicleAfterFullInstallation = true

-- @InstallationPartsPoints: Points for workshops to find purchased parts for the installation
Config.InstallationPartsPoints = {
    ['BennyS'] = {
        ['clean'] = vector3(-227.83, -1327.94, 29.89 + 1.0),
        ['repair'] = vector3(-227.83, -1327.94, 29.89 + 1.0),

        ['color1'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['color2'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['pearlescentColor'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['wheelColor'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['plateIndex'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['neonColor'] = vector3(-200.83, -1318.38, 30.09 + 1.0),

        [0] = vector3(-195.9, -1315.47, 30.09 + 1.0), -- Spoilers
        [1] = vector3(-195.9, -1315.47, 30.09 + 1.0), -- Front Bumper
        [2] = vector3(-195.9, -1315.47, 30.09 + 1.0), -- Rear Bumper
        [4] = vector3(-198.43, -1315.29, 30.09 + 1.0), -- Exhaust
        [7] = vector3(-195.9, -1315.47, 30.09 + 1.0), -- Hood

        [11] = vector3(-196.37, -1317.22, 30.09 + 1.0), -- Engine
        [12] = vector3(-196.42, -1315.07, 30.09 + 1.0), -- Brakes
        [13] = vector3(-196.42, -1315.07, 30.09 + 1.0), -- Transmission
        [15] = vector3(-196.42, -1315.07, 30.09 + 1.0), -- Suspension
        ['engineSwap'] = vector3(-196.37, -1317.22, 30.09 + 1.0), -- Engine
        [23] = vector3(-206.03, -1331.13, 29.91 + 1.0), -- Wheels
    },

    ['BennyS-Paintshop'] = {
        ['color1'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['color2'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['pearlescentColor'] = vector3(-200.83, -1318.38, 30.09 + 1.0),
        ['clean'] = vector3(-227.83, -1327.94, 29.89 + 1.0),
    },

    ...
    
}

-- @UseAdvancedEngineInstallation: Advanced engine installation with engine on stand
Config.UseAdvancedEngineInstallation = true

-- @UseAdvancedBrakesInstallation: Advanced brakes installation with jacks
Config.UseAdvancedBrakesInstallation = true

-- @UseAdvancedTransmissionInstallation: Advanced transmission installation with jacks
Config.UseAdvancedTransmissionInstallation = true

-- @UseAdvancedSuspensionInstallation: Advanced suspension installation with jacks
Config.UseAdvancedSuspensionInstallation = true

-- @UseAdvancedEngineSwapInstallation: Advanced engine swap installation with engine on stand
Config.UseAdvancedEngineSwapInstallation = true

-- @UseAdvancedWheelsInstallation: Advanced installation of each wheel separately 
Config.UseAdvancedWheelsInstallation = true


Config.ClassesOfVehiclesWithAdvancedInstallations = {
    [0] = true, -- Compacts
    [1] = true, -- Sedans
    [2] = true, -- SUVs
    [3] = true, -- Coupes
    [4] = true, -- Muscle
    [5] = true, -- Sports Classics
    [6] = true, -- Sports
    [7] = true, -- Super
    [8] = false, -- Motorcycles
    [9] = true, -- Off-road
    [10] = false, -- Industrial
    [11] = false, -- Utility
    [12] = true, -- Vans
    [13] = false, -- Cycles
    [14] = false, -- Boats
    [15] = false, -- Helicopters
    [16] = false, -- Planes
    [17] = false, -- Service
    [18] = true, -- Emergency
    [19] = false, -- Military
    [20] = true, -- Commercial
    [21] = false, -- Trains
    [22] = false, -- Open Wheel
}

Config.AdvancedInstallationsProps = {
    [11] = {
        helpUI = {
            getStand = "Take the engine on a stand.",
            installEngine = "Install the engine.",
        },
        standHash = joaat("prop_engine_hoist"),
        standOffset = {-0.085, 0.24, -1.3, 10.0, 30.0, 100.0},
        standBone = 57005,
        standAnimation = {"missfinale_c2ig_11", "pushcar_offcliff_m"},
        
        partHash = joaat("prop_car_engine_01"),
        partOffsetToStand = {-0.1, -1.6, 1.4, 0.0, 0.0, 0.0},

        installationPointDirection = 'front',
        installationOffset = vec(0.0, 0.2, 0.2),
        installationPointDirectionBackEngine = 'rear',
        installationOffsetBackEngine = vec(0.0, -0.2, 0.2),
        installationAnimation = {"mini@repair", "fixing_a_ped"},
        installationTime = 4000,
        openDoors = {4},
    },
    [12] = {
        helpUI = {
            getStand = "Take the jacks.",
            installStand = "Place the jacks under vehicle.",
            installPart = "Tune the brakes.",
        },
        standHash = joaat("xs_prop_x18_axel_stand_01a"),
        standBone = 28422,
        standOffset = {0.07, -0.44, -0.1, -80.0, 20.0, 0.0},
        standBone2 = 60309,
        standOffset2 = {0.0, -0.44, 0.275, -120.0, -20.0, 0.0},
        standAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        time = 3000,
        standInstallationPointDirection = 'front-left',
        standInstallationOffset = vec(0.1, -2.0, 0.2),
        standInstallationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        
        installation = {
            [1] = {
                pointDirection = "rear",
                offset = vec(0.4, 0.1, 0.2),
                animation = {"amb@world_human_vehicle_mechanic@male@base", "base"},
                time = 6000,
                pedDirection = 'front',
            },
            [2] = {
                pointDirection = "front",
                offset = vec(0.0, -0.1, 0.2),
                animation = {"amb@world_human_vehicle_mechanic@male@base", "base"},
                time = 6000,
                pedDirection = 'rear',
            },
        },
    },
    [13] = {
        helpUI = {
            getStand = "Take the jacks.",
            installStand = "Place the jacks under vehicle.",
            installPart = "Tune the transmission.",
        },
        standHash = joaat("xs_prop_x18_axel_stand_01a"),
        standBone = 28422,
        standOffset = {0.07, -0.44, -0.1, -80.0, 20.0, 0.0},
        standBone2 = 60309,
        standOffset2 = {0.0, -0.44, 0.275, -120.0, -20.0, 0.0},
        standAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        time = 3000,
        
        standInstallationPointDirection = 'front-left',
        standInstallationOffset = vec(0.1, -2.0, 0.2),
        standInstallationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        
        installation = {
            [1] = {
                pointDirection = "front",
                offset = vec(0.0, -0.1, 0.2),
                animation = {"amb@world_human_vehicle_mechanic@male@base", "base"},
                time = 6000,
                pedDirection = 'rear',
            },
        },
    },
    [15] = {
        helpUI = {
            getStand = "Take the jacks.",
            installStand = "Place the jacks under vehicle.",
            installPart = "Tune the suspension.",
        },
        standHash = joaat("xs_prop_x18_axel_stand_01a"),
        standBone = 28422,
        standOffset = {0.07, -0.44, -0.1, -80.0, 20.0, 0.0},
        standBone2 = 60309,
        standOffset2 = {0.0, -0.44, 0.275, -120.0, -20.0, 0.0},
        standAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        time = 3000,

        standInstallationPointDirection = 'front-left',
        standInstallationOffset = vec(0.1, -2.0, 0.2),
        standInstallationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        
        installation = {
            [1] = {
                pointDirection = "rear",
                offset = vec(0.4, 0.1, 0.2),
                animation = {"amb@world_human_vehicle_mechanic@male@base", "base"},
                time = 6000,
                pedDirection = 'front',
            },
            [2] = {
                pointDirection = "front",
                offset = vec(0.0, -0.1, 0.2),
                animation = {"amb@world_human_vehicle_mechanic@male@base", "base"},
                time = 6000,
                pedDirection = 'rear',
            },
        },
    },
    ['engineSwap'] = {
        helpUI = {
            getStand = "Take the engine on a stand.",
            installEngine = "Install the engine.",
        },
        standHash = joaat("prop_engine_hoist"),
        standOffset = {-0.085, 0.24, -1.3, 10.0, 30.0, 100.0},
        standBone = 57005,
        standAnimation = {"missfinale_c2ig_11", "pushcar_offcliff_m"},
        
        partHash = joaat("prop_car_engine_01"),
        partOffsetToStand = {-0.1, -1.6, 1.4, 0.0, 0.0, 0.0},

        installationPointDirection = 'front',
        installationOffset = vec(0.0, 0.2, 0.2),
        installationPointDirectionBackEngine = 'rear',
        installationOffsetBackEngine = vec(0.0, -0.2, 0.2),
        installationAnimation = {"mini@repair", "fixing_a_ped"},
        installationTime = 4000,
        openDoors = {4},
    },
    [23] = {
        helpUI = {
            getStand = "Take the jacks.",
            installStand = "Place the jacks under vehicle.",
            getWheel = "Take the wheel.",
            installWheel = "Install the wheel.",
        },
        standHash = joaat("xs_prop_x18_axel_stand_01a"),
        standBone = 28422,
        standOffset = {0.07, -0.44, -0.1, -80.0, 20.0, 0.0},
        standBone2 = 60309,
        standOffset2 = {0.0, -0.44, 0.275, -120.0, -20.0, 0.0},
        standAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        time = 3000,

        standInstallationPointDirection = 'front-left',
        standInstallationOffset = vec(0.1, -2.0, 0.2),
        standInstallationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        
        hash = joaat('prop_wheel_rim_01'),
        boneAttach = 57005,
        propPlacement = {0.169, -0.018, -0.22, -90.0, -110.0, 282.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationTime = 4000,

        installation = {
            [1] = {
                bone = "wheel_lf",
                animation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
                time = 6000,
            },
            [2] = {
                bone = "wheel_lr",
                animation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
                time = 6000,
            },
            [3] = {
                bone = "wheel_rf",
                animation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
                time = 6000,
            },
            [4] = {
                bone = "wheel_rr",
                animation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
                time = 6000,
            },
            [5] = {
                bone = "wheel_lm1",
                animation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
                time = 6000,
            },
            [6] = {
                bone = "wheel_rm1",
                animation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
                time = 6000,
            },
        },
    },
}

Config.InstallationPartsPropsList = {
    -- @param installationPointDirection: 'front', 'front-left', 'front-right', 'rear', 'rear-left', 'rear-right'

    ['clean'] = {
        hash = joaat('prop_sponge_01'),
        boneAttach = 28422,
        propPlacement = {0.0, 0.0, -0.01, 90.0, 0.0, 0.0},
        installationPointDirection = 'front-left',
        installationOffset = vec(0.1, -0.75, 0.2),
        installationAnimation = {"amb@world_human_maid_clean@", "base"},
        installationTime = 4000,
    },

    ['repair'] = {
        hash = joaat("prop_tool_wrench"),
        boneAttach = 57005,
        propPlacement = {0.119, -0.072, -0.05, -90.0, 120.0, 12.0},
        installationPointDirection = 'front',
        installationOffset = vec(0.4, 0.1, 0.2),
        installationPointDirectionBackEngine = 'rear',
        installationOffsetBackEngine = vec(0.0, -0.1, 0.2),
        installationAnimation = {"mini@repair", "fixing_a_ped"},
        installationTime = 4000,
        openDoors = {4},
    },

    ['color1'] = {
        hash = joaat('prop_cs_spray_can'),
        boneAttach = 57005,
        propPlacement = {0.119, -0.072, -0.05, -90.0, 120.0, 12.0},
        installationPointDirection = 'front-left',
        installationOffset = vec(-0.4, 0.15, 0.2),
        installationAnimation = {"anim@amb@business@weed@weed_inspecting_lo_med_hi@", "weed_spraybottle_stand_spraying_01_inspector"},
        installationTime = 4000,
    },

    ['color2'] = {
        hash = joaat('prop_cs_spray_can'),
        boneAttach = 57005,
        propPlacement = {0.119, -0.072, -0.05, -90.0, 120.0, 12.0},
        installationPointDirection = 'front-right',
        installationOffset = vec(-0.4, 0.15, 0.2),
        installationAnimation = {"anim@amb@business@weed@weed_inspecting_lo_med_hi@", "weed_spraybottle_stand_spraying_01_inspector"},
        installationTime = 4000,
    },
    
    ['pearlescentColor'] = {
        hash = joaat('prop_cs_spray_can'),
        boneAttach = 57005,
        propPlacement = {0.119, -0.072, -0.05, -90.0, 120.0, 12.0},
        installationPointDirection = 'front-left',
        installationOffset = vec(-0.4, 0.15, 0.2),
        installationAnimation = {"anim@amb@business@weed@weed_inspecting_lo_med_hi@", "weed_spraybottle_stand_spraying_01_inspector"},
        installationTime = 4000,
    },

    ['wheelColor'] = {
        hash = joaat('prop_cs_spray_can'),
        boneAttach = 57005,
        propPlacement = {0.119, -0.072, -0.05, -90.0, 120.0, 12.0},
        installationPointDirection = 'front-left',
        installationOffset = vec(-0.4, 0.15, 0.2),
        installationAnimation = {"anim@amb@business@weed@weed_inspecting_lo_med_hi@", "weed_spraybottle_stand_spraying_01_inspector"},
        installationTime = 4000,
    },

    ['plateIndex'] = {
        hash = joaat('p_num_plate_01'),
        boneAttach = 57005,
        propPlacement = {0.119, -0.072, -0.05, -90.0, 120.0, 12.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'rear',
        installationOffset = vec(0.0, -0.15, 0.2),
        installationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        installationTime = 4000,
    },

    ['neonColor'] = {
        hash = joaat('xs_prop_arena_lights_tube_l_a'),
        boneAttach = 57005,
        propPlacement = {0.169, -0.018, -0.22, 90.0, -110.0, 282.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'front-left',
        installationOffset = vec(0.2, -2.25, 0.2),
        installationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        installationTime = 4000,
    },

    [0] = { -- Spoiler
        hash = joaat('imp_prop_impexp_spoiler_02a'),
        boneAttach = 57005,
        propPlacement = {0.36, 0.078, -0.195, -20.0, -110.0, 10.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'rear',
        installationOffset = vec(0.0, -0.1, 0.2),
        installationAnimation = {"mini@repair", "fixing_a_ped"},
        installationTime = 4000,
    },

    [1] = { -- Front Bumper
        hash = joaat('imp_prop_impexp_front_bumper_01a'),
        boneAttach = 57005,
        propPlacement = {0.36, 0.078, -0.195, -20.0, -110.0, 10.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'front',
        installationOffset = vec(0.0, 0.1, 0.2),
        installationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        installationTime = 4000,
    },

    [2] = { -- Rear Bumper
        hash = joaat('imp_prop_impexp_rear_bumper_02a'),
        boneAttach = 57005,
        propPlacement = {0.36, 0.078, -0.195, -20.0, -110.0, 10.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'rear',
        installationOffset = vec(0.0, -0.1, 0.2),
        installationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        installationTime = 4000,
    }, 

    [4] = { -- Exhaust
        hash = joaat('imp_prop_impexp_exhaust_06'),
        boneAttach = 57005,
        propPlacement = {-0.04, -0.03, 0.09, 200.0, 220.0, 12.0},
        installationPointDirection = 'rear',
        installationOffset = vec(0.0, -0.1, 0.2),
        installationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        installationTime = 4000,
    },

    [7] = { -- Hood
        hash = joaat('prop_car_bonnet_02'),
        boneAttach = 60309,
        propPlacement = {0.025, 0.08, 0.255, -145.0, 290.0, 0.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'front',
        installationOffset = vec(0.0, 0.1, 0.2),
        installationAnimation = {"mini@repair", "fixing_a_ped"},
        installationTime = 4000,
    },

    [23] = { -- Wheels
        hash = joaat('prop_wheel_rim_01'),
        boneAttach = 57005,
        propPlacement = {0.169, -0.018, -0.22, -90.0, -110.0, 282.0},
        animation = {"anim@heists@box_carry@", "idle"},
        installationPointDirection = 'front-left',
        installationOffset = vec(0.15, -1.65, 0.2),
        installationAnimation = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer"},
        installationTime = 4000,
    },

    -- [32] = {
    --     hash = joaat('prop_ejector_seat_01'),
    --     boneAttach = 57005,
    --     propPlacement = {0.025, 0.08, 0.255, -145.0, 290.0, 0.0},
    -- }, -- Seat

    -- [39] = {
    --     hash = joaat("prop_car_engine_01"),
    --     propPlacement = {0.025, 0.08, 0.255, -145.0, 290.0, 0.0},
    -- }, -- Engine Block

}

Config.OnInstallationPart = {
    ['clean'] = function(vehicle, properties)

    end,
    ['repair'] = function(vehicle, properties)
        print('[Config.OnInstallationPart] Vehicle has been fixed.')

        -- properties['engineHealth'] = 1000.0

        if GetResourceState('VehicleDeformation') ~= 'missing' then
            exports['VehicleDeformation']:FixVehicleDeformation(vehicle)
        end
    end,
}

Last updated