Jump to content

[HELP] Cruise Control


Yolanda

Recommended Posts

Hello,

I have found this great script: https://community.multitheftauto.com/index.php?p= ... ls&id=7546

However, I want to only allow these vehicle ids to be able using cruise control. I have asked around in irc and nobody replied. Hoping one of you kind people takes his or her time to do this simple task, I would be most grateful.

Desired vehicle IDs: http://pastebin.com/aqgSD6Jr

Server

  
-- Author: __Vector__  
  
addEvent ("enableVehicleCruiseSpeed", true); 
addEventHandler ("enableVehicleCruiseSpeed", getRootElement (), 
    function (state)  
        if state then  
            setElementSyncer (source, getVehicleController (source)); 
        else         
            setElementSyncer (source, true); 
        end;  
    end); 
  

Client

-- Author: __Vector__ 
  
local cruiseSpeedKey = "c"; 
local cruiseSpeedInfo = "Press \"" .. cruiseSpeedKey .. "\" key to enable/disable vehicle cruise speed"; 
local screenw, screenh = guiGetScreenSize (); 
local cruiseSpeedInfoLabel = guiCreateLabel (0.35 * screenw, screenh - 80, 0.5 * screenw, 30, cruiseSpeedInfo, false); 
guiSetFont (cruiseSpeedInfoLabel, "clear-normal"); 
guiSetProperty (cruiseSpeedInfoLabel, "TextColours", "tl:FFFFFF00 tr:FFFFFF00 bl:FFFFFF00 br:FFFFFF00"); 
guiSetVisible (cruiseSpeedInfoLabel, false); 
  
local cruiseSpeedInfoStateLabel = guiCreateLabel (0.35 * screenw, screenh - 58, 0.4 * screenw, 30, "", false); 
guiSetFont (cruiseSpeedInfoStateLabel, "clear-normal"); 
guiSetProperty (cruiseSpeedInfoStateLabel, "TextColours", "tl:FFFFFF00 tr:FFFFFF00 bl:FFFFFF00 br:FFFFFF00"); 
guiSetVisible (cruiseSpeedInfoStateLabel, false); 
  
local hideCruiseSpeedInfoTimer, hideCruiseSpeedInfoUpdaterAlive; 
local hideCruiseSpeedInfoStateTimer; 
  
local function hideCruiseSpeedInfoUpdater (dt) 
    dt = dt * 0.001; 
    local alpha = guiGetAlpha (cruiseSpeedInfoLabel); 
    alpha = alpha - 0.5 * dt; 
    if alpha <= 0 then guiSetVisible (cruiseSpeedInfoLabel, false); removeEventHandler ("onClientPreRender", getRootElement (), hideCruiseSpeedInfoUpdater); return; end; 
    guiSetAlpha (cruiseSpeedInfoLabel, alpha); 
end; 
  
local function hideCruiseSpeedInfoStateUpdater (dt) 
    dt = dt * 0.001; 
    local alpha = guiGetAlpha (cruiseSpeedInfoStateLabel); 
    alpha = alpha - 0.5 * dt; 
    if alpha <= 0 then guiSetVisible (cruiseSpeedInfoStateLabel, false); removeEventHandler ("onClientPreRender", getRootElement (), hideCruiseSpeedInfoStateUpdater); return; end; 
    guiSetAlpha (cruiseSpeedInfoStateLabel, alpha); 
end; 
  
  
local cruiseSpeedEnabled, cruiseSpeed; 
  
local function cruiseSpeedChecker () 
    local theVehicle = getPedOccupiedVehicle (getLocalPlayer ()); 
    local vX, vY, vZ = getElementVelocity (theVehicle); 
    local iv = 1/math.sqrt (vX^2 + vY^2 + vZ^2); 
    local mX, mY, mZ = vX * iv * cruiseSpeed, vY * iv * cruiseSpeed, vZ * iv * cruiseSpeed; 
    setElementVelocity (theVehicle, mX, mY, mZ); 
end; 
  
__cruiseSpeedCollisionChecker = {}; 
local function cruiseSpeedCollisionChecker () 
    __cruiseSpeedCollisionChecker (); 
end; 
  
local function toggleCruiseSpeedInfoState () 
    if isTimer (hideCruiseSpeedInfoStateTimer) then 
        killTimer (hideCruiseSpeedInfoStateTimer); 
    else 
        if guiGetVisible (cruiseSpeedInfoStateLabel) then 
            removeEventHandler ("onClientPreRender", getRootElement (), hideCruiseSpeedInfoStateUpdater); 
        end; 
    end; 
  
    guiSetVisible (cruiseSpeedInfoStateLabel, true); 
    guiSetAlpha (cruiseSpeedInfoStateLabel, 1); 
    if cruiseSpeedEnabled then guiSetText (cruiseSpeedInfoStateLabel, "Cruise Speed Enabled"); 
    else  guiSetText (cruiseSpeedInfoStateLabel, "Cruise Speed Disabled"); 
    end; 
    hideCruiseSpeedInfoStateTimer = setTimer ( 
        function () 
            addEventHandler ("onClientPreRender", getRootElement (), hideCruiseSpeedInfoStateUpdater); 
        end, 
        3000, 
        1); 
end; 
  
  
local function toggleCruiseSpeed () 
    if not cruiseSpeedEnabled then 
        local theVehicle = getPedOccupiedVehicle (getLocalPlayer ()); 
        local vX, vY, vZ = getElementVelocity (theVehicle); 
        cruiseSpeed = math.sqrt (vX^2 + vY^2 + vZ^2); 
        if cruiseSpeed < (10/180) then return; end; 
        triggerServerEvent ("enableVehicleCruiseSpeed", theVehicle, true); 
        addEventHandler ("onClientPreRender", getRootElement (), cruiseSpeedChecker); 
        addEventHandler ("onClientVehicleCollision", theVehicle, cruiseSpeedCollisionChecker); 
  
        bindKey ("accelerate", "down", toggleCruiseSpeed); 
        bindKey ("brake_reverse", "down", toggleCruiseSpeed); 
    else 
        triggerServerEvent ("enableVehicleCruiseSpeed",  getPedOccupiedVehicle (getLocalPlayer ()), false); 
        removeEventHandler ("onClientPreRender", getRootElement (), cruiseSpeedChecker); 
        removeEventHandler ("onClientVehicleCollision", getPedOccupiedVehicle (getLocalPlayer ()), cruiseSpeedCollisionChecker); 
  
        unbindKey ("accelerate", "down", toggleCruiseSpeed); 
        unbindKey ("brake_reverse", "down", toggleCruiseSpeed); 
    end; 
    cruiseSpeedEnabled = not cruiseSpeedEnabled; 
    toggleCruiseSpeedInfoState (); 
end; 
  
setmetatable (__cruiseSpeedCollisionChecker, {__call = function () toggleCruiseSpeed (); end}); 
  
local function onClientVehicleEnterHandler () 
    guiSetVisible (cruiseSpeedInfoLabel, true); 
    guiSetAlpha (cruiseSpeedInfoLabel, 1); 
    hideCruiseSpeedInfoTimer = setTimer ( 
        function () 
            hideCruiseSpeedInfoUpdaterAlive = true; 
            addEventHandler ("onClientPreRender", getRootElement (), hideCruiseSpeedInfoUpdater); 
        end, 
        3000, 
        1); 
    bindKey (cruiseSpeedKey, "down", toggleCruiseSpeed); 
    cruiseSpeedEnabled = false; 
end; 
  
addEventHandler ("onClientVehicleEnter", getRootElement (), 
    function (thePlayer, seat) 
        if (thePlayer == getLocalPlayer ()) and (seat == 0) then onClientVehicleEnterHandler (); end; 
    end); 
  
addEventHandler ("onClientResourceStart", getResourceRootElement (getThisResource ()), 
    function () 
        if isPedInVehicle (getLocalPlayer ()) then 
            local theVehicle = getPedOccupiedVehicle (getLocalPlayer ()); 
            if getVehicleController (theVehicle) == getLocalPlayer () then onClientVehicleEnterHandler (); end; 
        end; 
    end); 
  
  
addEventHandler ("onClientVehicleExit", getRootElement (), 
    function (thePlayer, seat) 
        if (thePlayer == getLocalPlayer ()) and (seat == 0) then 
            if isTimer (hideCruiseSpeedInfoTimer) then 
                guiSetVisible (cruiseSpeedInfoLabel, false); 
                killTimer (hideCruiseSpeedInfoTimer); 
            else 
                if hideCruiseSpeedInfoUpdaterAlive then 
                    guiSetVisible (cruiseSpeedInfoLabel, false); 
                    removeEventHandler ("onClientPreRender", getRootElement (), hideCruiseSpeedInfoUpdater); 
                end; 
            end; 
            unbindKey (cruiseSpeedKey, "down", toggleCruiseSpeed); 
        end; 
    end); 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...