example
example

求助 车辆性能改装无效?

IamDiWang

活跃的用户
论坛元老
高级用户
认证用户
一个奇怪的问题,部分车辆的性能改装只有涡轮,我强行去除了改车插件对于功能是否可用的检查,全部显示出来进行改装依然无效,推测是部分车辆无法应用一些改装导致SetVehicleMod调用无效,应该是由于车辆meta数据里的属性导致的,但是我之前并未听说gta的车辆改装还有这种限制,有没有人知道这是什么原因?
 

IamDiWang

活跃的用户
论坛元老
高级用户
认证用户
如图上面俩车就只有一个具有完整的性能改装,另一个只能改涡轮(车辆调教是我自己写的功能,所以不受影响(没用调用GTA原生性能改装))
顺带附上改装选项检测函数以证明我为什么说它不是改车插件的问题。

function optionsShouldShow(menu)
local newOptions = {}

for i = 1, #menu.options, 1 do
local shouldShow = true

if (menu.options.modType ~= nil) then
if (GetNumVehicleModData(customVehicle, menu.options.modType) < 0) then
shouldShow = false
end
end

if (menu.options.modType == 'extras') then
if (menu.options.price ~= nil) then
menu.options.priceForSub = menu.options.price
menu.options.price = nil
end
end

if (shouldShow and menu.options.openSubMenu ~= nil) then
local subMenu = Config.Menus[menu.options.openSubMenu]
local tempShouldShow = false
for i = 1, #subMenu.options, 1 do
if (subMenu.options.modType ~= nil) then
if (GetNumVehicleModData(customVehicle, subMenu.options.modType) >= 0 or subMenu.options.openSubMenu ~= nil) then
tempShouldShow = true
break
end
end
end

shouldShow = tempShouldShow
end

if (not isOpenByAdmin) then
if (customConfigPosIndex and customConfigPosIndex > 0 and customConfigPosIndex <= #Config.Positions and Config.Positions[customConfigPosIndex] and (Config.IsUpgradesOnlyForWhitelistJobPoints == true and jobName ~= Config.Positions[customConfigPosIndex].whitelistJobName)) then
if (menu.options.openSubMenu == 'upgrade') then
shouldShow = false
end
end
end

if (shouldShow == true) then
table.insert(newOptions, menu.options)
end
end

return newOptions
end
 

IamDiWang

活跃的用户
论坛元老
高级用户
认证用户
function GetNumVehicleModData(vehicle, modType)
SetVehicleModKit(vehicle, 0)

if (modType == 'plateIndex') then
return 5
elseif (modType == 'color1') then
return 0
elseif (modType == 'color2') then
return 0
elseif (modType == 'wheelColor') then
return 0
elseif (modType == 'pearlescentColor') then
return 0
elseif (modType == 'tyreSmokeColor') then
return 0
elseif (modType == 'neonColor') then
return 0
elseif (modType == 'dashboardColor') then
return 0
elseif (modType == 'interiorColor') then
return 0
elseif (modType == 'paintType1' or modType == 'paintType2') then
return 5
elseif (modType == 'windowTint') then
return GetNumVehicleWindowTints(vehicle) - 1
elseif (modType == 'modXenon') then
return 12
elseif (modType == 'livery') then
return GetVehicleLiveryCount(vehicle) - 1
elseif (modType == 'extras') then
local tempCount = -1
for id = 0, 25, 1 do
if (DoesExtraExist(vehicle, id)) then
tempCount = tempCount + 1
end
end
return tempCount
elseif (type(modType) == 'number' and modType >= 17 and modType <= 22) then
return 0
elseif (type(modType) == 'number') then
return GetNumVehicleMods(vehicle, modType) - 1
end

return -1
end
它调用的是原版的GetNumVehicleMods,不显示是因为这个函数返回的值无效
 

Yann

站长
管理成员
GTAOS管理组
认证卖家
认证用户
本 月 名 人 榜 最 佳
顶部