以下是经过汉化的代码:
local isSpeedSet = false
-- 车辆代码白名单(车辆 Model Hash)
Config.WhitelistVehicles = {
`police`] = true, -- 警车
`police2`] = true, -- 警车
`police3`] = true, -- 警车
`police4`] = true, -- 警车
`policeb`] = true, -- 警车
`policet`] = true, -- 警车
`riot`] = true, -- 警车
`avtr`] = true, -- 忆含车
`shelby6x6cullinan`] = true, -- 沐辞车
}
Citizen.CreateThread(function()
while true do
Citizen.Wait(100)
-- 等待玩家进入载具
while not IsPedInAnyVehicle(PlayerPedId(), false) do
Citizen.Wait(2500)
end
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
if vehicle and DoesEntityExist(vehicle) then
isSpeedSet = false
setSpeed(vehicle)
end
-- 监控玩家的载具变化
while isSpeedSet and IsPedInAnyVehicle(PlayerPedId(), false) do
local currentVeh = GetVehiclePedIsIn(PlayerPedId(), false)
-- 如果玩家换了车,重新设置速度
if currentVeh ~= vehicle then
setSpeed(currentVeh)
vehicle = currentVeh
end
Citizen.Wait(2500)
end
end
end)
function setSpeed(vehicle)
if not vehicle or not DoesEntityExist(vehicle) then
return
end
local vehicleClass = GetVehicleClass(vehicle)
local model = GetEntityModel(vehicle)
-- 如果车辆在白名单中,直接返回,不限制速度
if Config.WhitelistVehicles[model] then
SetVehicleMaxSpeed(vehicle, 0.0) -- 0.0 代表无限制
isSpeedSet = true
return
end
-- 排除飞机(16)和直升机(15)
if vehicleClass ~= 16 and vehicleClass ~= 15 then
local speed = Config.maxSpeed
if Config.useCategories and Config.Categories[vehicleClass + 1] then
speed = Config.Categories[vehicleClass + 1].maxSpeed
end
if Config.kmh then
speed = speed / Config.kmhValue
else
speed = speed / Config.mphValue
end
SetVehicleMaxSpeed(vehicle, speed)
isSpeedSet = true
end
end
### 注释翻译:
1. 添加了一些注释来解释代码的不同部分。
2. 修复了一些语法错误,比如缺少逗号等。
这部分代码应放在`client.lua`中,因为它与玩家的客户端行为和车辆交互有关。 |