local IS_IMPORTED = false local RESOURCE_NAME = "neuc_cars" local isClientsideScript = localPlayer ~= nil createVehicleMTA = createVehicle getVehicleTypeMTA = getVehicleType getElementModelMTA = getElementModel setElementModelMTA = setElementModel local coreUtils = {} coreUtils.getSharedCustomModelsTbl = function() if IS_IMPORTED then return exports[RESOURCE_NAME]:getCustomModels() end return customModels end coreUtils.getSharedElementModelsTbl = function() if IS_IMPORTED then return exports[RESOURCE_NAME]:getElementModels() end return elementModels end coreUtils.setElementCustomModel = function(...) if IS_IMPORTED then return exports[RESOURCE_NAME]:setElementCustomModel(...) end return setElementCustomModel(...) end function isDefaultID(elementType, id) id = tonumber(id) if not id then return false end if elementType and elementType ~= "vehicle" then return false end return id >= 400 and id <= 611, "vehicle" end function getBaseModelIdFromCustomModelId(id) local customInfo = coreUtils.getSharedCustomModelsTbl()[id] if customInfo then return customInfo.baseModel end return id end function getCustomModelName(id) local customInfo = coreUtils.getSharedCustomModelsTbl()[id] return customInfo and customInfo.name or nil end function isValidElement(element) return isElement(element) and getElementType(element) == "vehicle" end function getElementCustomModel(element) if not isValidElement(element) then return nil end return coreUtils.getSharedElementModelsTbl()[element] end function isCustomModelCompatible(id, elementOrElementType) local customInfo = coreUtils.getSharedCustomModelsTbl()[id] if not customInfo then return false end local elementType = type(elementOrElementType) == "string" and elementOrElementType or getElementType(elementOrElementType) return elementType == "vehicle" and customInfo.type == "vehicle" end function createVehicle(id, ...) local baseModel = getBaseModelIdFromCustomModelId(id) local vehicle = createVehicleMTA(baseModel, ...) if vehicle and id ~= baseModel then coreUtils.setElementCustomModel(vehicle, id) end return vehicle end function getVehicleType(id) local customModelInfo = coreUtils.getSharedCustomModelsTbl()[id] if customModelInfo then return getVehicleTypeMTA(customModelInfo.baseModel) end return getVehicleTypeMTA(id) end function getElementModel(element) if not isElement(element) then return false end if getElementType(element) ~= "vehicle" then return getElementModelMTA(element) end return getElementCustomModel(element) or getElementModelMTA(element) end function getElementBaseModel(element) if not isElement(element) then return false end if getElementType(element) ~= "vehicle" then return getElementModelMTA(element) end local customModel = getElementCustomModel(element) if not customModel then return getElementModelMTA(element) end local customInfo = coreUtils.getSharedCustomModelsTbl()[customModel] return customInfo and customInfo.baseModel or getElementModelMTA(element) end function setElementModel(element, id) if not isElement(element) then return false end local elementType = getElementType(element) if elementType ~= "vehicle" then return setElementModelMTA(element, id) end local baseModel = getBaseModelIdFromCustomModelId(id) local currBaseModel = getElementModelMTA(element) if currBaseModel ~= baseModel then setElementModelMTA(element, baseModel) else setElementModelMTA(element, 0) setElementModelMTA(element, baseModel) end return coreUtils.setElementCustomModel(element, (id ~= baseModel) and id or nil) end