Jeeveegee Posted November 5, 2012 Share Posted November 5, 2012 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
Renkon Posted November 5, 2012 Share Posted November 5, 2012 triggerServerEvent("getVehiclesForBox", getRootElement(), playerName) Switch to localPlayer And, you are then triggering ClientEvent with getRootElement. Use source instead. Link to comment
Jeeveegee Posted November 5, 2012 Author Share Posted November 5, 2012 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
Renkon Posted November 5, 2012 Share Posted November 5, 2012 triggerClientEvent("showVehicleButtons",source,vehicleModel1,vehicleModel2) to triggerClientEvent(source, "showVehicleButtons",source,vehicleModel1,vehicleModel2) Link to comment
Jeeveegee Posted November 5, 2012 Author Share Posted November 5, 2012 Alright so far it seems to work! So let's me try and get this straight: - triggerServerEvent() use localPlayer. - triggeringClientEvent() use source two times. Then it will always be that players gui only? Link to comment
Renkon Posted November 5, 2012 Share Posted November 5, 2012 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now