Jump to content

[HELP] GearBox bug


Dzsipszi

Recommended Posts

I found a very good script and its not mine. It has a bug: if you are in the vehicle you see the manual and if your friend enter a nearby vehicle or next to you in the car, the manual is gone and i dont know why. The guy who release this script stopped the updates in 2010-08. Here is the code:

local playerGear = 0  
local playerVehicleSeat = 0 
  
function setPlayerGear( key ) 
    if key == "num_add" then 
        if playerGear < 5 then 
            playerGear = playerGear + 1 
            playSoundFrontEnd( 4 ) 
        end 
    elseif key == "num_sub" then 
        if playerGear > -1 then 
            playerGear = playerGear - 1 
            playSoundFrontEnd( 4 ) 
        end 
    end 
end 
  
function setPlayerGearByCmd( command ) 
    if command == "gearu" then 
        setPlayerGear( "num_add" ) 
    elseif command == "geard" then 
        setPlayerGear( "num_sub" ) 
    end 
end  
  
function createImage() 
    gearbox = guiCreateStaticImage(0.8232,0.5508,0.1172,0.1563,"gearbox.png",true) 
    marker = guiCreateStaticImage(0.4667,0.4667,0.0833,0.0833,"marker.png",true,gearbox) 
end 
  
function manual() 
    local vehicle = getPedOccupiedVehicle( getLocalPlayer() ) 
    if vehicle and playerVehicleSeat == 0 then 
        local vehicleGear = getVehicleCurrentGear( vehicle ) 
        local velX, velY, velZ = getElementVelocity( vehicle ) 
        local vType = getVehicleType( vehicle ) 
         
        local velX2 = math.abs( velX ) 
        local velY2 = math.abs( velY ) 
        local velZ2 = math.abs( velZ ) 
  
        local visible 
        local dvel 
         
        if playerGear == 1 then dvel = 1.055 
        elseif playerGear == 2 then dvel = 1.012 
        elseif playerGear == 3 then dvel = 1.005 
        elseif playerGear == 4 then dvel = 1.0025 end 
  
        if vType ~= "Plane" and vType ~= "Helicopter" and vType ~= "Boat" and vType ~= "Trailer" and vType ~= "Train" and vType ~= "BMX" then 
            visible = true 
            if playerGear > 0 then 
                toggleControl( "accelerate", true ) 
                toggleControl( "brake_reverse", false ) 
                if playerGear < vehicleGear then 
                    if math.max( velX2, velY2, velZ2 ) ~= velZ2 then 
                        local x, y = velX / dvel, velY / dvel 
                        setElementVelocity ( vehicle, x, y, velZ ) 
                    end 
                end 
            elseif playerGear == 0 then 
                toggleControl( "accelerate", false ) 
                toggleControl( "brake_reverse", false )  
            elseif playerGear == -1 then 
                toggleControl( "accelerate", false ) 
                toggleControl( "brake_reverse", true ) 
                local state = false 
                local keys = getBoundKeys( "accelerate" ) 
                for key,_ in pairs(keys) do 
                    if getKeyState( key ) then 
                        state = true 
                    end 
                end  
                local keys2 = getBoundKeys( "brake_reverse" ) 
                for key,_ in pairs(keys2) do 
                    if getKeyState( key ) then 
                        state = true 
                    end 
                end  
                if state then 
                    setControlState( "accelerate", false ) 
                    setControlState( "brake_reverse", true ) 
                else 
                    setControlState( "accelerate", false ) 
                    setControlState( "brake_reverse", false ) 
                end 
            end 
            if vehicleGear < playerGear then 
                if math.max( velX2, velY2, velZ2 ) ~= velZ2 then 
                    local s = ( ( ( playerGear - vehicleGear ) / 100 ) + 1 ) 
                    s = s * ( ( ( playerGear - vehicleGear ) / 120 ) + 1 ) 
                    local x, y = velX / s, velY / s 
                    setElementVelocity ( vehicle, x, y, velZ ) 
                end 
            end 
        else 
            visible = false 
            toggleControl( "accelerate", true ) 
            toggleControl( "brake_reverse", true ) 
        end 
        if visible then 
            guiSetVisible( gearbox, true ) 
            if playerGear == -1 then 
                guiSetPosition( marker, 0.1583, 0.275, true ) 
            elseif playerGear == 0 then 
                guiSetPosition( marker, 0.4667, 0.4667, true ) 
            elseif playerGear == 1 then 
                guiSetPosition( marker, 0.3583, 0.275, true ) 
            elseif playerGear == 2 then 
                guiSetPosition( marker, 0.3583, 0.6417, true ) 
            elseif playerGear == 3 then 
                guiSetPosition( marker, 0.5583, 0.275, true ) 
            elseif playerGear == 4 then 
                guiSetPosition( marker, 0.5583, 0.6417, true ) 
            elseif playerGear == 5 then 
                guiSetPosition( marker, 0.7583, 0.275, true ) 
            end 
        else 
            guiSetVisible( gearbox, false ) 
        end 
    else 
        playerGear = 0 
        guiSetVisible( gearbox, false ) 
    end  
end 
  
function seat( player, seat ) 
    playerVehicleSeat = seat 
end 
  
  
bindKey( "num_add", "up", setPlayerGear ) 
bindKey( "num_sub", "up", setPlayerGear ) 
addEventHandler( "onClientResourceStart", getResourceRootElement(getThisResource()), createImage ) 
addEventHandler( "onClientRender", getRootElement(), manual ) 
addEventHandler( "onClientVehicleEnter", getRootElement(), seat ) 
addCommandHandler( "gearu", setPlayerGearByCmd ) 
addCommandHandler( "geard", setPlayerGearByCmd ) 

so the bug again: if a player enter a vehicle nearby the manual is gone. I need this script, and the debugscript 3 dont help so much. very old script

Link to comment
local playerGear = 0 
local playerVehicleSeat = 0 
  
function setPlayerGear( key ) 
    if key == "num_add" then 
        if playerGear < 5 then 
            playerGear = playerGear + 1 
            playSoundFrontEnd( 4 ) 
        end 
    elseif key == "num_sub" then 
        if playerGear > -1 then 
            playerGear = playerGear - 1 
            playSoundFrontEnd( 4 ) 
        end 
    end 
end 
  
function setPlayerGearByCmd( command ) 
    if command == "gearu" then 
        setPlayerGear( "num_add" ) 
    elseif command == "geard" then 
        setPlayerGear( "num_sub" ) 
    end 
end  
  
function createImage() 
    gearbox = guiCreateStaticImage(0.8232,0.5508,0.1172,0.1563,"gearbox.png",true) 
    marker = guiCreateStaticImage(0.4667,0.4667,0.0833,0.0833,"marker.png",true,gearbox) 
end 
  
function manual() 
    local vehicle = getPedOccupiedVehicle( getLocalPlayer() ) 
    if vehicle and playerVehicleSeat == 0 then 
        local vehicleGear = getVehicleCurrentGear( vehicle ) 
        local velX, velY, velZ = getElementVelocity( vehicle ) 
        local vType = getVehicleType( vehicle ) 
        
        local velX2 = math.abs( velX ) 
        local velY2 = math.abs( velY ) 
        local velZ2 = math.abs( velZ ) 
  
        local visible 
        local dvel 
        
        if playerGear == 1 then dvel = 1.055 
        elseif playerGear == 2 then dvel = 1.012 
        elseif playerGear == 3 then dvel = 1.005 
        elseif playerGear == 4 then dvel = 1.0025 end 
  
        if vType ~= "Plane" and vType ~= "Helicopter" and vType ~= "Boat" and vType ~= "Trailer" and vType ~= "Train" and vType ~= "BMX" then 
            visible = true 
            if playerGear > 0 then 
                toggleControl( "accelerate", true ) 
                toggleControl( "brake_reverse", false ) 
                if playerGear < vehicleGear then 
                    if math.max( velX2, velY2, velZ2 ) ~= velZ2 then 
                        local x, y = velX / dvel, velY / dvel 
                        setElementVelocity ( vehicle, x, y, velZ ) 
                    end 
                end 
            elseif playerGear == 0 then 
                toggleControl( "accelerate", false ) 
                toggleControl( "brake_reverse", false ) 
            elseif playerGear == -1 then 
                toggleControl( "accelerate", false ) 
                toggleControl( "brake_reverse", true ) 
                local state = false 
                local keys = getBoundKeys( "accelerate" ) 
                for key,_ in pairs(keys) do 
                    if getKeyState( key ) then 
                        state = true 
                    end 
                end 
                local keys2 = getBoundKeys( "brake_reverse" ) 
                for key,_ in pairs(keys2) do 
                    if getKeyState( key ) then 
                        state = true 
                    end 
                end 
                if state then 
                    setControlState( "accelerate", false ) 
                    setControlState( "brake_reverse", true ) 
                else 
                    setControlState( "accelerate", false ) 
                    setControlState( "brake_reverse", false ) 
                end 
            end 
            if vehicleGear < playerGear then 
                if math.max( velX2, velY2, velZ2 ) ~= velZ2 then 
                    local s = ( ( ( playerGear - vehicleGear ) / 100 ) + 1 ) 
                    s = s * ( ( ( playerGear - vehicleGear ) / 120 ) + 1 ) 
                    local x, y = velX / s, velY / s 
                    setElementVelocity ( vehicle, x, y, velZ ) 
                end 
            end 
        else 
            visible = false 
            toggleControl( "accelerate", true ) 
            toggleControl( "brake_reverse", true ) 
        end 
        if visible then 
            guiSetVisible( gearbox, true ) 
            if playerGear == -1 then 
                guiSetPosition( marker, 0.1583, 0.275, true ) 
            elseif playerGear == 0 then 
                guiSetPosition( marker, 0.4667, 0.4667, true ) 
            elseif playerGear == 1 then 
                guiSetPosition( marker, 0.3583, 0.275, true ) 
            elseif playerGear == 2 then 
                guiSetPosition( marker, 0.3583, 0.6417, true ) 
            elseif playerGear == 3 then 
                guiSetPosition( marker, 0.5583, 0.275, true ) 
            elseif playerGear == 4 then 
                guiSetPosition( marker, 0.5583, 0.6417, true ) 
            elseif playerGear == 5 then 
                guiSetPosition( marker, 0.7583, 0.275, true ) 
            end 
        else 
            guiSetVisible( gearbox, false ) 
        end 
    else 
        playerGear = 0 
        guiSetVisible( gearbox, false ) 
    end  
end 
  
function seat( player, seat ) 
    if ( player == localPlayer ) then 
        playerVehicleSeat = seat 
    end 
end 
  
  
bindKey( "num_add", "up", setPlayerGear ) 
bindKey( "num_sub", "up", setPlayerGear ) 
addEventHandler( "onClientResourceStart", getResourceRootElement(getThisResource()), createImage ) 
addEventHandler( "onClientRender", getRootElement(), manual ) 
addEventHandler( "onClientVehicleEnter", getRootElement(), seat ) 
addCommandHandler( "gearu", setPlayerGearByCmd ) 
addCommandHandler( "geard", setPlayerGearByCmd ) 

Try it.

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...