limit = true
allowedTypes = { "Automobile" }
function getElementSpeed(element,unit)
if (unit == nil) then unit = 0 end
if (isElement(element)) then
local x,y,z = getElementVelocity(element)
if (unit=="mph" or unit==1 or unit =='1') then
return (x^2 + y^2 + z^2) ^ 0.5 * 100
else
return (x^2 + y^2 + z^2) ^ 0.5 * 180
end
else
return false
end
end
function setElementSpeed(element, unit, speed)
if (unit == nil) then unit = 0 end
if (speed == nil) then speed = 0 end
speed = tonumber(speed)
local acSpeed = getElementSpeed(element, unit)
if (acSpeed~=false) then
local diff = speed/acSpeed
local x,y,z = getElementVelocity(element)
setElementVelocity(element,x*diff,y*diff,z*diff)
return true
else
return false
end
end
function in_array(e, t)
for _,v in pairs(t) do
if (v==e) then return true end
end
return false
end
function round2(num, idp)
return tonumber(string.format("%." .. (idp or 0) .. "f", num))
end
function angle(vehicle)
local vx,vy,vz = getElementVelocity(vehicle)
local modV = math.sqrt(vx*vx + vy*vy)
if not isVehicleOnGround(vehicle) then return 0,modV end
local rx,ry,rz = getElementRotation(vehicle)
local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz))
local cosX = (sn*vx + cs*vy)/modV
return math.deg(math.acos(cosX))*0.5, modV
end
lp = getLocalPlayer()
ccEnabled = false
myveh = false
targetSpeed = 1
multiplier = 1
function cc()
if (not isElement(myveh)) then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
return false
end
if getVehicleEngineState(myveh) == false then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
return false
end
local x,y = angle(myveh)
if (x<15) then
local speed = getElementSpeed(myveh)
local targetSpeedTmp = speed + multiplier
if (targetSpeedTmp > targetSpeed) then
targetSpeedTmp = targetSpeed
end
if (targetSpeedTmp > 3) then
setElementSpeed(myveh, "k", targetSpeedTmp)
end
end
end
bindKey("j", "up", function()
local veh = getPedOccupiedVehicle(lp)
if (veh) then
if (lp==getVehicleOccupant(veh)) then
myveh = veh
if (ccEnabled) then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
else
targetSpeed = getElementSpeed(veh)
if targetSpeed > 4 then
if (limit) then
if in_array(getVehicleType(veh), allowedTypes) then
targetSpeed = round2(targetSpeed)
addEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=true
end
else
targetSpeed = round2(targetSpeed)
addEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=true
end
end
end
end
end
end)
bindKey("brake_reverse","down",function()
if ccEnabled then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
end
end)
bindKey("handbrake","down",function()
if ccEnabled then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
end
end)
addEventHandler("onClientPlayerVehicleExit", getLocalPlayer(), function(veh, seat)
if (seat==0) then
if (ccEnabled) then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
end
end
end)
function triggerVehicleSystem(sys)
local veh = getPedOccupiedVehicle(source)
if veh and getVehicleController(veh) == source then
if sys == "engine" then
if not getElementData(veh,"fuel") then setVehicleEngineState(veh, not getVehicleEngineState(veh)) return end
if getElementData(veh,"fuel") > 0 then
setVehicleEngineState(veh, not getVehicleEngineState(veh))
else
outputChatBox("Нет бензина!",source,200,0,0)
end
elseif sys == "lights" then
if getVehicleOverrideLights( veh ) ~= 2 then
setVehicleOverrideLights( veh, 2 )
else
setVehicleOverrideLights( veh, 1 )
end
elseif sys == "lock" then
setVehicleLocked(veh,not isVehicleLocked(veh))
end
end
end
addEvent("triggerVehicleSystem",true)
addEventHandler("triggerVehicleSystem",root,triggerVehicleSystem)
Z kodu licznika wnioskuje, ?e pojazdy typu "Automobile" maj? tylko dost?p do tego licznika, lecz mog? si? myli?.
Spr?buj to:
limit = true
function getElementSpeed(element,unit)
if (unit == nil) then unit = 0 end
if (isElement(element)) then
local x,y,z = getElementVelocity(element)
if (unit=="mph" or unit==1 or unit =='1') then
return (x^2 + y^2 + z^2) ^ 0.5 * 100
else
return (x^2 + y^2 + z^2) ^ 0.5 * 180
end
else
return false
end
end
function setElementSpeed(element, unit, speed)
if (unit == nil) then unit = 0 end
if (speed == nil) then speed = 0 end
speed = tonumber(speed)
local acSpeed = getElementSpeed(element, unit)
if (acSpeed~=false) then
local diff = speed/acSpeed
local x,y,z = getElementVelocity(element)
setElementVelocity(element,x*diff,y*diff,z*diff)
return true
else
return false
end
end
function in_array(e, t)
for _,v in pairs(t) do
if (v==e) then return true end
end
return false
end
function round2(num, idp)
return tonumber(string.format("%." .. (idp or 0) .. "f", num))
end
function angle(vehicle)
local vx,vy,vz = getElementVelocity(vehicle)
local modV = math.sqrt(vx*vx + vy*vy)
if not isVehicleOnGround(vehicle) then return 0,modV end
local rx,ry,rz = getElementRotation(vehicle)
local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz))
local cosX = (sn*vx + cs*vy)/modV
return math.deg(math.acos(cosX))*0.5, modV
end
lp = getLocalPlayer()
ccEnabled = false
myveh = false
targetSpeed = 1
multiplier = 1
function cc()
if (not isElement(myveh)) then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
return false
end
if getVehicleEngineState(myveh) == false then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
return false
end
local x,y = angle(myveh)
if (x<15) then
local speed = getElementSpeed(myveh)
local targetSpeedTmp = speed + multiplier
if (targetSpeedTmp > targetSpeed) then
targetSpeedTmp = targetSpeed
end
if (targetSpeedTmp > 3) then
setElementSpeed(myveh, "k", targetSpeedTmp)
end
end
end
bindKey("j", "up", function()
local veh = getPedOccupiedVehicle(lp)
if (veh) then
if (lp==getVehicleOccupant(veh)) then
myveh = veh
if (ccEnabled) then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
else
targetSpeed = getElementSpeed(veh)
if targetSpeed > 4 then
if (limit) then
targetSpeed = round2(targetSpeed)
addEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=true
end
else
targetSpeed = round2(targetSpeed)
addEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=true
end
end
end
end
end)
bindKey("brake_reverse","down",function()
if ccEnabled then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
end
end)
bindKey("handbrake","down",function()
if ccEnabled then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
end
end)
addEventHandler("onClientPlayerVehicleExit", getLocalPlayer(), function(veh, seat)
if (seat==0) then
if (ccEnabled) then
removeEventHandler("onClientRender", getRootElement(), cc)
ccEnabled=false
end
end
end)
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach