Jump to content

Vehicle GUI


GerardWay

Recommended Posts

Could anyone fix this for me please? The GUI works fine, but whenever I click the name of a Vehicle and click 'Select' the panel closes but doesn't spawn that vehicle.

Client.lua

GUIEditor = { 
    gridlist = {}, 
    window = {}, 
    button = {} 
} 
  
local vehs = {"BMX", "Coach", "Patriot", "QuadBike", "Maverick", "Stuntplane", "Rancher", "Comet", "Barracks"} 
  
        GUIEditor.window[1] = guiCreateWindow(1135, 180, 231, 588, "", false) 
        guiWindowSetSizable(GUIEditor.window[1], false) 
        guiSetVisible(GUIEditor.window[1], false) 
        GUIEditor.gridlist[1] = guiCreateGridList(17, 19, 204, 390, false, GUIEditor.window[1]) 
        guiGridListAddColumn(GUIEditor.gridlist[1], "Free Vehicles", 0.9) 
        for i, v in ipairs (vehs) do 
        row = guiGridListAddRow(GUIEditor.gridlist[1]) 
        guiGridListSetItemText (GUIEditor.gridlist[1], row, 1, tostring(v), false, false) 
        end 
        GUIEditor.button[1] = guiCreateButton(23, 419, 199, 68, "Select", false, GUIEditor.window[1]) 
        GUIEditor.button[2] = guiCreateButton(25, 491, 197, 68, "Cancel", false, GUIEditor.window[1])     
         
addEventHandler("onClientGUIClick", root, 
function() 
if (source == GUIEditor.button[2]) then 
guiSetVisible(GUIEditor.window[1], false) 
showCursor(false) 
end 
end 
) 
  
addEvent("openGUI", true) 
addEventHandler("openGUI", root, 
function() 
guiSetVisible(GUIEditor.window[1], true) 
showCursor(true) 
end 
) 
  
addEventHandler("onClientGUIClick", root,  
function () 
     if (source == GUIEditor.button[1]) then 
        local vehicleName = guiGridListGetItemText(GUIEditor.gridlist[1], guiGridListGetSelectedItem(GUIEditor.gridlist[1]), 1) 
                local id = getVehicleModelFromName(vehicleName) 
                    triggerServerEvent("spawnVehicle", localPlayer, id) 
                    guiSetVisible(GUIEditor.window[1], false) 
                    showCursor(false) 
  end 
  end 
) 

Server.lua

function showPanel(thePlayer) 
triggerClientEvent(thePlayer, "openGUI", root) 
end 
  
function onResourceStart() 
    for index, players in ipairs(getElementsByType("player")) do 
        bindKey(players, "F4", "down", showPanel)              
    end 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), onResourceStart) 
  
function onPlayerJoin() 
    bindKey(source, "F4", "down", showPanel)       
end 
addEventHandler("onPlayerLogin", getRootElement(), onPlayerJoin) 
  
addEvent("spawnVehicle", true ) 
addEventHandler("spawnVehicle", root, 
    function ( vehID ) 
     if ( isElement ( vehicles [ source ] ) ) then 
            destroyElement ( vehicles [ source ] ) 
        end  
         
     vehicles [ source ] = createVehicle ( vehID, getElementPosition ( source ) ) 
        if ( vehicles [ source ] ) then 
            setVehicleColor ( vehicles [ source ], 255, 255, 255 ) 
        end 
      setTimer ( warpPedIntoVehicle, 200, 1, source, vehicles [ source ] ) 
end 
) 
  
function destroyVehicle() 
    if ( isElement ( vehicles [ source ] ) ) then 
        destroyElement ( vehicles [ source ] ) 
    end 
end 
addEventHandler("onPlayerLogout", root, destroyVehicle) 
addEventHandler("onPlayerQuit", root, destroyVehicle) 
addEventHandler("onPlayerWasted", root, destroyVehicle) 

Link to comment

Test

GUIEditor = { 
    gridlist = {}, 
    window = {}, 
    button = {} 
} 
  
local vehs = {"BMX", "Coach", "Patriot", "QuadBike", "Maverick", "Stuntplane", "Rancher", "Comet", "Barracks"} 
  
        GUIEditor.window[1] = guiCreateWindow(1135, 180, 231, 588, "", false) 
        guiWindowSetSizable(GUIEditor.window[1], false) 
        guiSetVisible(GUIEditor.window[1], false) 
        GUIEditor.gridlist[1] = guiCreateGridList(17, 19, 204, 390, false, GUIEditor.window[1]) 
        guiGridListAddColumn(GUIEditor.gridlist[1], "Free Vehicles", 0.9) 
        for i, v in ipairs (vehs) do 
        row = guiGridListAddRow(GUIEditor.gridlist[1]) 
        guiGridListSetItemText (GUIEditor.gridlist[1], row, 1, tostring(v), false, false) 
        end 
        GUIEditor.button[1] = guiCreateButton(23, 419, 199, 68, "Select", false, GUIEditor.window[1]) 
        GUIEditor.button[2] = guiCreateButton(25, 491, 197, 68, "Cancel", false, GUIEditor.window[1])     
        
addEventHandler("onClientGUIClick", root, 
function() 
if (source == GUIEditor.button[2]) then 
guiSetVisible(GUIEditor.window[1], false) 
showCursor(false) 
end 
end 
) 
  
addEvent("openGUI", true) 
addEventHandler("openGUI", root, 
function() 
guiSetVisible(GUIEditor.window[1], true) 
showCursor(true) 
end 
) 
  
addEventHandler("onClientGUIClick", root, 
function () 
     if (source == GUIEditor.button[1]) then 
        local vehicleName = guiGridListGetItemText(GUIEditor.gridlist[1], guiGridListGetSelectedItem(GUIEditor.gridlist[1]), 1) 
                local id = getVehicleModelFromName(vehicleName) 
                    triggerServerEvent("spawnVehicle", localPlayer, id) 
guiSetVisible(GUIEditor.window[1], false) 
                    showCursor(false) 
  end 
  end 
) 

function showPanel(thePlayer) 
triggerClientEvent(thePlayer, "openGUI", root) 
end 
  
function onResourceStart() 
    for index, players in ipairs(getElementsByType("player")) do 
        bindKey(players, "F4", "down", showPanel)             
    end 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), onResourceStart) 
  
function onPlayerJoin() 
    bindKey(source, "F4", "down", showPanel)       
end 
addEventHandler("onPlayerLogin", getRootElement(), onPlayerJoin) 
  
vehicles = {} 
  
addEvent("spawnVehicle", true ) 
addEventHandler("spawnVehicle", root, 
    function ( vehID ) 
     if ( isElement ( vehicles [ source ] ) ) then 
            destroyElement ( vehicles [ source ] ) 
        end 
        
     vehicles [ source ] = createVehicle ( vehID, getElementPosition ( source ) ) 
        if ( vehicles [ source ] ) then 
            setVehicleColor ( vehicles [ source ], 255, 255, 255 ) 
        end 
      setTimer ( warpPedIntoVehicle, 200, 1, source, vehicles [ source ] ) 
end 
) 
  
function destroyVehicle() 
    if ( isElement ( vehicles [ source ] ) ) then 
        destroyElement ( vehicles [ source ] ) 
    end 
end 
addEventHandler("onPlayerLogout", root, destroyVehicle) 
addEventHandler("onPlayerQuit", root, destroyVehicle) 
addEventHandler("onPlayerWasted", root, destroyVehicle) 

Link to comment
function showPanel(thePlayer) 
triggerClientEvent(thePlayer, "openGUI", root) 
end 
  
function onResourceStart() 
    for index, players in ipairs(getElementsByType("player")) do 
        bindKey(players, "F4", "down", showPanel)             
    end 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), onResourceStart) 
  
function onPlayerJoin() 
    bindKey(source, "F4", "down", showPanel)       
end 
addEventHandler("onPlayerLogin", getRootElement(), onPlayerJoin) 
  
vehicles = { } 
  
addEvent("spawnVehicle", true ) 
addEventHandler("spawnVehicle", root, 
    function ( vehID ) 
     if ( isElement ( vehicles [ source ] ) ) then 
            destroyElement ( vehicles [ source ] ) 
        end 
        
     vehicles [ source ] = createVehicle ( vehID, getElementPosition ( source ) ) 
        if ( vehicles [ source ] ) then 
            setVehicleColor ( vehicles [ source ], 255, 255, 255 ) 
        end 
      setTimer ( warpPedIntoVehicle, 200, 1, source, vehicles [ source ] ) 
end 
) 
  
function destroyVehicle() 
    if ( isElement ( vehicles [ source ] ) ) then 
        destroyElement ( vehicles [ source ] ) 
    end 
end 
addEventHandler("onPlayerLogout", root, destroyVehicle) 
addEventHandler("onPlayerQuit", root, destroyVehicle) 
addEventHandler("onPlayerWasted", root, destroyVehicle) 

Try this server-side.

Link to comment
addEvent("spawnVehicle", true ) 
addEventHandler("spawnVehicle", root, 
    function ( vehID ) 
     if ( isElement ( vehicles [ source ] ) ) then 
            destroyElement ( vehicles [ source ] ) 
        end 
        
     vehicles [ source ] = createVehicle ( vehID, getElementPosition ( source ) ) 
        if ( vehicles [ source ] ) then 
            setVehicleColor ( vehicles [ source ], 255, 255, 255 ) 
        end 
      setTimer ( warpPedIntoVehicle, 200, 1, source, vehicles [ source ] ) 
end 
) 

Don't use source, Trigger player too.

Client:

triggerServerEvent("spawnVehicle", localPlayer, localPlayer, id) 

Server:

addEvent("spawnVehicle", true ) 
addEventHandler("spawnVehicle", root, 
    function ( thePlayer, vehID ) 
  

Link to comment

You just forgot to define the table at server side:

vehicles = { } 

And this was given to you already in previous replies, so if it still not working then you failed at copying the code in the right way or you have something wrong with the encoding and i don't think you have any problem with the meta file because the GUI is work and this show that the client/server side defined well.

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