Jump to content

Gui appears for all players and so is the loaded mysql-data.


Jeeveegee

Recommended Posts

Here are the scripts, serverside and client-side. They are used to load the players vehicle from the mysql database, which can contain a maximum of two cars. Everytime the player presses F4 the gui pops up with the car data for that player, but then it also pops up at every other player. I read something about it having to do with using 'getRootElement()' and 'source' and I tried to figure that out but everything I tried failed.

Here's the script.

Client-Side

  
function createVehicleWindow() 
     
    local Width = 200 
    local Height = 200 
    local X = 100 
    local Y = 400 
     
    vehicleWindow = guiCreateWindow(X, Y, Width, Height, "Vehicle Window", false) 
    guiWindowSetSizable(vehicleWindow, false) 
     
    guiSetVisible(vehicleWindow, false) 
end 
  
  
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), 
function() 
    bindKey ("F4", "down", showVehicleWindow) 
    createVehicleWindow() 
end 
) 
  
  
function showVehicleWindow() 
  
    getVisible = guiGetVisible (vehicleWindow) 
     
    if (getVisible == true) then     
        guiSetVisible (vehicleWindow, false) 
        showCursor(false) 
        guiSetInputEnabled(false)    
    end 
  
    if (getVisible == false) then 
        local playerName = getPlayerName(getLocalPlayer()) 
        triggerServerEvent("getVehiclesForBox", getRootElement(), playerName)    
    end 
end 
  
function vehicleWindowButtons(vehicleModel1,vehicleModel2) 
     
    local vehicleName1 = getVehicleNameFromModel( vehicleModel1 ) 
    local vehicleName2 = getVehicleNameFromModel( vehicleModel2 ) 
     
    X = 0.05 
    Y = 0.15 
    Width = 0.4 
    Height = 0.15 
    btnCar1 = guiCreateButton(X, Y, Width, Height, vehicleName1, true, vehicleWindow) 
     
    X = 0.55 
    Y = 0.15 
    Width = 0.4 
    Height = 0.15 
    btnCar2 = guiCreateButton(X, Y, Width, Height, vehicleName2, true, vehicleWindow) 
     
    guiSetVisible (vehicleWindow, true) 
    showCursor(true) 
    guiSetInputEnabled(true) 
         
    addEventHandler("onClientGUIClick", btnCar1, spawnVehicle1, false) 
    addEventHandler("onClientGUIClick", btnCar2, spawnVehicle2, false) 
end 
addEvent("showVehicleButtons",true) 
addEventHandler("showVehicleButtons", getRootElement(), vehicleWindowButtons) 
  
function spawnVehicle1() 
    local playerName = getPlayerName(getLocalPlayer()) 
    triggerServerEvent("spawnVehicleOne", getRootElement(), playerName) 
end 
  
function spawnVehicle2() 
    local playerName = getPlayerName(getLocalPlayer()) 
    triggerServerEvent("spawnVehicleTwo", getRootElement(), playerName) 
end 
  

Server-Side

  
--GET VEHICLE FOR GUI BOX 
  
function getStoredVehicles(playerName) 
    local result = mysql_query(handler, "SELECT vehicleModel FROM vehicles WHERE playerName = '"..playerName.."'") 
    if (result) then 
        local numRows = mysql_num_rows(result) 
        outputChatBox(numRows) 
        if (numRows > 0) then 
         
            mysql_data_seek(result, 0) 
            local row = mysql_fetch_assoc(result) 
            vehicleModel1 = row['vehicleModel'] 
             
            if (numRows > 1) then 
             
                mysql_data_seek(result, 1) 
                local row = mysql_fetch_assoc(result) 
                vehicleModel2 = row['vehicleModel'] 
             
            end 
            triggerClientEvent("showVehicleButtons",getRootElement(),vehicleModel1,vehicleModel2) 
        else 
            return nil 
        end 
    end 
    mysql_free_result(result) 
end 
addEvent("getVehiclesForBox", true) 
addEventHandler("getVehiclesForBox", getRootElement(), getStoredVehicles) 
  
--SPAWN FIRST VEHICLE 
  
function spawnFirstVehicle(playerName) 
  
    local result = mysql_query(handler, "SELECT * FROM vehicles WHERE playerName = '"..playerName.."'") 
    if (result) then 
        local numRows = mysql_num_rows(result) 
        if (numRows > 0) then 
         
            mysql_data_seek(result, 0) 
            local row = mysql_fetch_assoc(result) 
             
            local vehicleModel = row['vehicleModel'] 
            local vehicleHealth = row['vehicleHealth'] 
            local vehicleColor1 = row['vehicleColor1'] 
            local vehicleColor2 = row['vehicleColor2'] 
            local vehicleX = row['vehicleX'] 
            local vehicleY = row['vehicleY'] 
            local vehicleZ = row['vehicleZ'] 
            local vehicleA = row['vehicleA'] 
             
            local newVehicle = createVehicle (vehicleModel,0,0,0) 
            local spawnVeh = spawnVehicle(newVehicle, vehicleX, vehicleY, vehicleZ, 0, 0, vehicleA) 
            if spawnVeh then outputChatBox("Vehicle was spawned", source) else outputChatBox("Error", source) end 
             
        end 
    end 
end 
addEvent("spawnVehicleOne", true) 
addEventHandler("spawnVehicleOne", getRootElement(), spawnFirstVehicle) 
  
--SPAWN SECOND VEHICLE 
  
function spawnSecondVehicle(playerName) 
  
local result = mysql_query(handler, "SELECT * FROM vehicles WHERE playerName = '"..playerName.."'") 
    if (result) then 
        local numRows = mysql_num_rows(result) 
        if (numRows > 0) then 
         
            mysql_data_seek(result, 1) 
            local row = mysql_fetch_assoc(result) 
             
            local vehicleModel = row['vehicleModel'] 
            local vehicleHealth = row['vehicleHealth'] 
            local vehicleColor1 = row['vehicleColor1'] 
            local vehicleColor2 = row['vehicleColor2'] 
            local vehicleX = row['vehicleX'] 
            local vehicleY = row['vehicleY'] 
            local vehicleZ = row['vehicleZ'] 
            local vehicleA = row['vehicleA'] 
             
            local newVehicle = createVehicle (vehicleModel,0,0,0) 
            local spawnVeh = spawnVehicle(newVehicle, vehicleX, vehicleY, vehicleZ, 0, 0, vehicleA) 
            if spawnVeh then outputChatBox("Vehicle was spawned", source) else outputChatBox("Error", source) end 
        end 
    end  
end 
addEvent("spawnVehicleTwo", true) 
addEventHandler("spawnVehicleTwo", getRootElement(), spawnSecondVehicle) 
  

Link to comment

Alright so I changed what you told me to do, but it's still showing the GUI to every player. Anything else I might have missed?

Client-Side

  
function createVehicleWindow() 
     
    local Width = 200 
    local Height = 200 
    local X = 100 
    local Y = 400 
     
    vehicleWindow = guiCreateWindow(X, Y, Width, Height, "Vehicle Window", false) 
    guiWindowSetSizable(vehicleWindow, false) 
     
    guiSetVisible(vehicleWindow, false) 
end 
  
  
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), 
function() 
    bindKey ("F4", "down", showVehicleWindow) 
    createVehicleWindow() 
end 
) 
  
  
function showVehicleWindow() 
  
    getVisible = guiGetVisible (vehicleWindow) 
     
    if (getVisible == true) then     
        guiSetVisible (vehicleWindow, false) 
        showCursor(false) 
        guiSetInputEnabled(false)    
    end 
  
    if (getVisible == false) then 
        local playerName = getPlayerName(getLocalPlayer()) 
        triggerServerEvent("getVehiclesForBox", localPlayer, playerName)     
    end 
end 
  
function vehicleWindowButtons(vehicleModel1,vehicleModel2) 
     
    local vehicleName1 = getVehicleNameFromModel( vehicleModel1 ) 
    local vehicleName2 = getVehicleNameFromModel( vehicleModel2 ) 
     
    X = 0.05 
    Y = 0.15 
    Width = 0.4 
    Height = 0.15 
    btnCar1 = guiCreateButton(X, Y, Width, Height, vehicleName1, true, vehicleWindow) 
     
    X = 0.55 
    Y = 0.15 
    Width = 0.4 
    Height = 0.15 
    btnCar2 = guiCreateButton(X, Y, Width, Height, vehicleName2, true, vehicleWindow) 
     
    guiSetVisible (vehicleWindow, true) 
    showCursor(true) 
    guiSetInputEnabled(true) 
         
    addEventHandler("onClientGUIClick", btnCar1, spawnVehicle1, false) 
    addEventHandler("onClientGUIClick", btnCar2, spawnVehicle2, false) 
end 
addEvent("showVehicleButtons",true) 
addEventHandler("showVehicleButtons", getRootElement(), vehicleWindowButtons) 
  
function spawnVehicle1() 
    local playerName = getPlayerName(getLocalPlayer()) 
    triggerServerEvent("spawnVehicleOne", localPlayer, playerName) 
end 
  
function spawnVehicle2() 
    local playerName = getPlayerName(getLocalPlayer()) 
    triggerServerEvent("spawnVehicleTwo", localPlayer, playerName) 
end 
  
  

Server-Side

  
--GET VEHICLE FOR GUI BOX 
  
function getStoredVehicles(playerName) 
    local result = mysql_query(handler, "SELECT vehicleModel FROM vehicles WHERE playerName = '"..playerName.."'") 
    if (result) then 
        local numRows = mysql_num_rows(result) 
        outputChatBox(numRows) 
        if (numRows > 0) then 
         
            mysql_data_seek(result, 0) 
            local row = mysql_fetch_assoc(result) 
            vehicleModel1 = row['vehicleModel'] 
             
            if (numRows > 1) then 
             
                mysql_data_seek(result, 1) 
                local row = mysql_fetch_assoc(result) 
                vehicleModel2 = row['vehicleModel'] 
             
            end 
            triggerClientEvent("showVehicleButtons",source,vehicleModel1,vehicleModel2) 
        else 
            return nil 
        end 
    end 
    mysql_free_result(result) 
end 
addEvent("getVehiclesForBox", true) 
addEventHandler("getVehiclesForBox", getRootElement(), getStoredVehicles) 
  
--SPAWN FIRST VEHICLE 
  
function spawnFirstVehicle(playerName) 
  
    local result = mysql_query(handler, "SELECT * FROM vehicles WHERE playerName = '"..playerName.."'") 
    if (result) then 
        local numRows = mysql_num_rows(result) 
        if (numRows > 0) then 
         
            mysql_data_seek(result, 0) 
            local row = mysql_fetch_assoc(result) 
             
            local vehicleModel = row['vehicleModel'] 
            local vehicleHealth = row['vehicleHealth'] 
            local vehicleColor1 = row['vehicleColor1'] 
            local vehicleColor2 = row['vehicleColor2'] 
            local vehicleX = row['vehicleX'] 
            local vehicleY = row['vehicleY'] 
            local vehicleZ = row['vehicleZ'] 
            local vehicleA = row['vehicleA'] 
             
            local newVehicle = createVehicle (vehicleModel,0,0,0) 
            local spawnVeh = spawnVehicle(newVehicle, vehicleX, vehicleY, vehicleZ, 0, 0, vehicleA) 
            if spawnVeh then outputChatBox("Vehicle was spawned", source) else outputChatBox("Error", source) end 
             
        end 
    end 
end 
addEvent("spawnVehicleOne", true) 
addEventHandler("spawnVehicleOne", getRootElement(), spawnFirstVehicle) 
  
--SPAWN SECOND VEHICLE 
  
function spawnSecondVehicle(playerName) 
  
local result = mysql_query(handler, "SELECT * FROM vehicles WHERE playerName = '"..playerName.."'") 
    if (result) then 
        local numRows = mysql_num_rows(result) 
        if (numRows > 0) then 
         
            mysql_data_seek(result, 1) 
            local row = mysql_fetch_assoc(result) 
             
            local vehicleModel = row['vehicleModel'] 
            local vehicleHealth = row['vehicleHealth'] 
            local vehicleColor1 = row['vehicleColor1'] 
            local vehicleColor2 = row['vehicleColor2'] 
            local vehicleX = row['vehicleX'] 
            local vehicleY = row['vehicleY'] 
            local vehicleZ = row['vehicleZ'] 
            local vehicleA = row['vehicleA'] 
             
            local newVehicle = createVehicle (vehicleModel,0,0,0) 
            local spawnVeh = spawnVehicle(newVehicle, vehicleX, vehicleY, vehicleZ, 0, 0, vehicleA) 
            if spawnVeh then outputChatBox("Vehicle was spawned", source) else outputChatBox("Error", source) end 
        end 
    end  
end 
addEvent("spawnVehicleTwo", true) 
addEventHandler("spawnVehicleTwo", getRootElement(), spawnSecondVehicle) 
  

Link to comment

If you want to make something done by a certain player client-side, to pass over some function server-side, and to come back to client only for HIM, use

triggerServerEvent(event, localPlayer, args..)

and then, inside the event handler

triggerClientEvent(source,event,source,args...)

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