Nameless Posted July 25, 2012 Share Posted July 25, 2012 Hi Guys, Nameless here again This time I got a problem with guiSetText. I am trying to create a userpanel with point, money, etc (with sqlite). All players who are online, will be set in a gridview. When a player opens the userpanel (F2) he will see his own stats. When the player clicks on another player in the gridview, the stats of the player he clicked on will show. My problem now is: When PlayerA presses F2, and PlayerB has his userpanel open. PlayerB will get to see PlayerA his stats. Also when PlayerA clicks on another player in the gridview PlayerB will see the stats of the player PlayerA clicked on. Here is my code: Clientside: local GUIWindow local playerGridView local playerColumn --stat labels local GUILabelMoney2 local GUILabelPoints2 local GUILabelMatches2 local GUILabelFirst2 local GUILabelSecond2 local GUILabelThird2 local GUILabelKills2 function createGUIWindow(test) local width, height = guiGetScreenSize () local windowW,windowH = 700,350 --Main Window sizes local windowX = (width/2) - (windowW/2) --Main Window horizontal position local windowY = (height/2) - (windowH/2) --Main Window vertical position --Window GUIWindow = guiCreateWindow (windowX, windowY, windowW, windowH, "Player Information Screen", false) --Tabpanel local GUITabPanel = guiCreateTabPanel ( 0 ,0.1, windowW, windowH, true, GUIWindow ) local GUITabStatistics = guiCreateTab ( "Statistics", GUITabPanel ) --Labels local GUILabelPlayerName = guiCreateLabel(0.02,0.06,0.94,0.2,"[PLAYER] his stats:",true,GUITabStatistics) local GUILabelMoney = guiCreateLabel(0.02,0.11,0.94,0.2,"Money:",true,GUITabStatistics) GUILabelMoney2 = guiCreateLabel(0.09,0.11,0.94,0.2,"",true,GUITabStatistics) local GUILabelPoints = guiCreateLabel(0.02,0.16,0.94,0.2,"Points:",true,GUITabStatistics) GUILabelPoints2 = guiCreateLabel(0.09,0.16,0.94,0.2,"",true,GUITabStatistics) local GUILabelPlayTime = guiCreateLabel(0.35,0.11,0.94,0.2,"Playtime:",true,GUITabStatistics) local GUILabelMatches = guiCreateLabel(0.02,0.30,0.94,0.2,"Mathes played:",true,GUITabStatistics) GUILabelMatches2 = guiCreateLabel(0.15,0.30,0.94,0.2,"",true,GUITabStatistics) local GUILabelFirst = guiCreateLabel(0.02,0.35,0.94,0.2,"1st Place:",true,GUITabStatistics) GUILabelFirst2 = guiCreateLabel(0.11,0.35,0.94,0.2,"",true,GUITabStatistics) local GUILabelSecond = guiCreateLabel(0.02,0.40,0.94,0.2,"2nd Place:",true,GUITabStatistics) GUILabelSecond2 = guiCreateLabel(0.11,0.40,0.94,0.2,"",true,GUITabStatistics) local GUILabelThird = guiCreateLabel(0.02,0.45,0.94,0.2,"3rd Place:",true,GUITabStatistics) GUILabelThird2 = guiCreateLabel(0.11,0.45,0.94,0.2,"",true,GUITabStatistics) local GUILabelKills = guiCreateLabel(0.02,0.50,0.94,0.2,"Kills:",true,GUITabStatistics) GUILabelKills2 = guiCreateLabel(0.075,0.50,0.94,0.2,"",true,GUITabStatistics) --Gridview playerGridView = guiCreateGridList ( 0.60, 0.10, 0.35, 0.85, true, GUITabStatistics ) --Create a players column in the list playerColumn = guiGridListAddColumn( playerGridView, "Player", 0.85 ) triggerEvent ( "refreshGridView", getRootElement() ) triggerServerEvent("getallstats", getRootElement()) --Set label colors: guiLabelSetColor ( GUILabelPlayerName, 255, 0, 0 ) --Set all label fonts: guiSetFont ( GUILabelPlayerName, "default-bold-small" ) guiSetFont ( GUILabelMoney, "default-bold-small" ) guiSetFont ( GUILabelPoints, "default-bold-small" ) guiSetFont ( GUILabelMatches, "default-bold-small" ) guiSetFont ( GUILabelFirst, "default-bold-small" ) guiSetFont ( GUILabelSecond, "default-bold-small" ) guiSetFont ( GUILabelThird, "default-bold-small" ) guiSetFont ( GUILabelPlayTime, "default-bold-small" ) guiSetFont ( GUILabelKills, "default-bold-small" ) addEventHandler ( "onClientGUIClick", playerGridView, updateStats, false ) guiSetVisible(GUIWindow, false) end addEventHandler("onClientResourceStart", getRootElement(),createGUIWindow) ------------------------------------------------------------------------------------------------------------ addEvent("refreshGridView", true) function refreshPlayerGrid() guiGridListClear ( playerGridView ) --clear gridview if ( playerColumn ) then --If the column has been created, fill it with players for id, player in ipairs(getElementsByType("player")) do local row = guiGridListAddRow ( playerGridView ) guiGridListSetItemText ( playerGridView, row, playerColumn, getPlayerName ( player ), false, false ) end end end addEventHandler("refreshGridView", getRootElement(), refreshPlayerGrid) addEventHandler ( "onClientPlayerChangeNick", getRootElement(), refreshPlayerGrid) ------------------------------------------------------------------------------------------------------------ function showWindow(thePlayer) -- function for trigger if (guiGetVisible(GUIWindow) == true) then -- if window opened then guiSetVisible (GUIWindow,false ) -- close window showCursor(false) --disable cursor guiSetInputEnabled(false) --disable input focus else guiSetVisible (GUIWindow,true )-- enable --//-- showCursor(true) -- enable --//-- guiSetInputEnabled(true) --enable --//-- --trigger all stats event triggerServerEvent("getallstats",getRootElement(),thePlayer) end end addEvent( "showWdw", true ) addEventHandler( "showWdw", getRootElement(), showWindow ) ------------------------------------------------------------------------------------------------------------ function showStats(money, points, matches, first, second, third, kills) guiSetText ( GUILabelMoney2, money ) guiSetText ( GUILabelPoints2, points ) guiSetText ( GUILabelMatches2, matches ) guiSetText ( GUILabelFirst2, first ) guiSetText ( GUILabelSecond2, second ) guiSetText ( GUILabelThird2, third ) guiSetText ( GUILabelKills2, kills ) end addEvent( "showStats", true ) addEventHandler( "showStats", getRootElement(), showStats ) ------------------------------------------------------------------------------------------------------------ function updateStats() local playerName = guiGridListGetItemText ( playerGridView, guiGridListGetSelectedItem ( playerGridView ), 1 ) if(playerName ~= false and playerName ~= nil and playerName ~= "") then triggerServerEvent("getallstats",getRootElement(),getPlayerFromName(playerName)) end end ------------------------------------------------------------------------------------------------------------ Serverside: function refreshPlayerGrid() triggerClientEvent("refreshGridView", getRootElement()) end addEventHandler("onPlayerJoin", getRootElement(), refreshPlayerGrid) addEventHandler ( "onPlayerQuit", getRootElement(), refreshPlayerGrid) ------------------------------------------------------------------------------------------------------------ function getAllStats(thePlayer) local accountname = getAccountName (getPlayerAccount (thePlayer )) local money local points local matches local firstplace local secondplace local thirdplace local kills if( accountname ~= nil and accountname ~= false and accountname ~= "guest")then local statsConnection = dbConnect( "sqlite", "statistics.db" ) if(statsConnection)then local statsQuery = dbQuery ( statsConnection , "SELECT * FROM accountdata WHERE playername = ?" , accountname ) if(statsQuery)then local statsResults = dbPoll ( statsQuery , -1 ) if(statsResults ~= false and statsResults ~= nil) then for statsResults, row in pairs ( statsResults ) do --get all results from given player (thePlayer) money = ( row["money"]) points = ( row["points"]) matches = ( row["matches"]) firstplace = ( row["firstplace"]) secondplace = ( row["secondplace"]) thirdplace = ( row["thirdplace"]) kills = ( row["kills"]) end--end for loop triggerEvent("returnallstats", getRootElement() , money, points, matches, firstplace, secondplace, thirdplace, kills ) end --end statsResults end--end statsQuery end--end statsconnection end--end accountname end--end getAllStatsFunction addEvent("getallstats", true) addEventHandler("getallstats", getRootElement(), getAllStats) ------------------------------------------------------------------------------------------------------------ function returnAllStats(money, points, matches, first, second, third, kills) triggerClientEvent(source, "showStats", getRootElement(), money, points, matches, first, second, third, kills) end addEvent("returnallstats", true) addEventHandler("returnallstats",getRootElement(), returnAllStats) ------------------------------------------------------------------------------------------------------------ --BINDKEYS addEventHandler("onPlayerLogin", getRootElement(), function() bindKey(source, "F2", "down", function(player, key, state) triggerClientEvent(player,"showWdw", getRootElement(), player) end) end ) addEventHandler("onPlayerLogout", getRootElement(), function() unbindKey(source, "F2") end ) ------------------------------------------------------------------------------------------------------------ I hope you guys can help me with this problem! I am a beginning scripter, so if you have any other suggestions please feel free to post! Cheers, Nameless Link to comment
AeroXbird Posted July 25, 2012 Share Posted July 25, 2012 local GUIWindow local playerGridView local playerColumn --stat labels local GUILabelMoney2 local GUILabelPoints2 local GUILabelMatches2 local GUILabelFirst2 local GUILabelSecond2 local GUILabelThird2 local GUILabelKills2 function createGUIWindow(test) local width, height = guiGetScreenSize () local windowW,windowH = 700,350 --Main Window sizes local windowX = (width/2) - (windowW/2) --Main Window horizontal position local windowY = (height/2) - (windowH/2) --Main Window vertical position --Window GUIWindow = guiCreateWindow (windowX, windowY, windowW, windowH, "Player Information Screen", false) --Tabpanel local GUITabPanel = guiCreateTabPanel ( 0 ,0.1, windowW, windowH, true, GUIWindow ) local GUITabStatistics = guiCreateTab ( "Statistics", GUITabPanel ) --Labels local GUILabelPlayerName = guiCreateLabel(0.02,0.06,0.94,0.2,"[PLAYER] his stats:",true,GUITabStatistics) local GUILabelMoney = guiCreateLabel(0.02,0.11,0.94,0.2,"Money:",true,GUITabStatistics) GUILabelMoney2 = guiCreateLabel(0.09,0.11,0.94,0.2,"",true,GUITabStatistics) local GUILabelPoints = guiCreateLabel(0.02,0.16,0.94,0.2,"Points:",true,GUITabStatistics) GUILabelPoints2 = guiCreateLabel(0.09,0.16,0.94,0.2,"",true,GUITabStatistics) local GUILabelPlayTime = guiCreateLabel(0.35,0.11,0.94,0.2,"Playtime:",true,GUITabStatistics) local GUILabelMatches = guiCreateLabel(0.02,0.30,0.94,0.2,"Mathes played:",true,GUITabStatistics) GUILabelMatches2 = guiCreateLabel(0.15,0.30,0.94,0.2,"",true,GUITabStatistics) local GUILabelFirst = guiCreateLabel(0.02,0.35,0.94,0.2,"1st Place:",true,GUITabStatistics) GUILabelFirst2 = guiCreateLabel(0.11,0.35,0.94,0.2,"",true,GUITabStatistics) local GUILabelSecond = guiCreateLabel(0.02,0.40,0.94,0.2,"2nd Place:",true,GUITabStatistics) GUILabelSecond2 = guiCreateLabel(0.11,0.40,0.94,0.2,"",true,GUITabStatistics) local GUILabelThird = guiCreateLabel(0.02,0.45,0.94,0.2,"3rd Place:",true,GUITabStatistics) GUILabelThird2 = guiCreateLabel(0.11,0.45,0.94,0.2,"",true,GUITabStatistics) local GUILabelKills = guiCreateLabel(0.02,0.50,0.94,0.2,"Kills:",true,GUITabStatistics) GUILabelKills2 = guiCreateLabel(0.075,0.50,0.94,0.2,"",true,GUITabStatistics) --Gridview playerGridView = guiCreateGridList ( 0.60, 0.10, 0.35, 0.85, true, GUITabStatistics ) --Create a players column in the list playerColumn = guiGridListAddColumn( playerGridView, "Player", 0.85 ) triggerEvent ( "refreshGridView", getRootElement() ) triggerServerEvent("getallstats", getRootElement(), getLocalPlayer()) --Set label colors: guiLabelSetColor ( GUILabelPlayerName, 255, 0, 0 ) --Set all label fonts: guiSetFont ( GUILabelPlayerName, "default-bold-small" ) guiSetFont ( GUILabelMoney, "default-bold-small" ) guiSetFont ( GUILabelPoints, "default-bold-small" ) guiSetFont ( GUILabelMatches, "default-bold-small" ) guiSetFont ( GUILabelFirst, "default-bold-small" ) guiSetFont ( GUILabelSecond, "default-bold-small" ) guiSetFont ( GUILabelThird, "default-bold-small" ) guiSetFont ( GUILabelPlayTime, "default-bold-small" ) guiSetFont ( GUILabelKills, "default-bold-small" ) addEventHandler ( "onClientGUIClick", playerGridView, updateStats, false ) guiSetVisible(GUIWindow, false) end addEventHandler("onClientResourceStart", getRootElement(),createGUIWindow) ------------------------------------------------------------------------------------------------------------ addEvent("refreshGridView", true) function refreshPlayerGrid() guiGridListClear ( playerGridView ) --clear gridview if ( playerColumn ) then --If the column has been created, fill it with players for id, player in ipairs(getElementsByType("player")) do local row = guiGridListAddRow ( playerGridView ) guiGridListSetItemText ( playerGridView, row, playerColumn, getPlayerName ( player ), false, false ) end end end addEventHandler("refreshGridView", getRootElement(), refreshPlayerGrid) addEventHandler ( "onClientPlayerChangeNick", getRootElement(), refreshPlayerGrid) ------------------------------------------------------------------------------------------------------------ function showWindow(thePlayer) -- function for trigger if (guiGetVisible(GUIWindow) == true) then -- if window opened then guiSetVisible (GUIWindow,false ) -- close window showCursor(false) --disable cursor guiSetInputEnabled(false) --disable input focus else guiSetVisible (GUIWindow,true )-- enable --//-- showCursor(true) -- enable --//-- guiSetInputEnabled(true) --enable --//-- --trigger all stats event triggerServerEvent("getallstats",getRootElement(),thePlayer) end end addEvent( "showWdw", true ) addEventHandler( "showWdw", getRootElement(), showWindow ) ------------------------------------------------------------------------------------------------------------ function showStats(money, points, matches, first, second, third, kills) guiSetText ( GUILabelMoney2, money ) guiSetText ( GUILabelPoints2, points ) guiSetText ( GUILabelMatches2, matches ) guiSetText ( GUILabelFirst2, first ) guiSetText ( GUILabelSecond2, second ) guiSetText ( GUILabelThird2, third ) guiSetText ( GUILabelKills2, kills ) end addEvent( "showStats", true ) addEventHandler( "showStats", getRootElement(), showStats ) ------------------------------------------------------------------------------------------------------------ function updateStats() local playerName = guiGridListGetItemText ( playerGridView, guiGridListGetSelectedItem ( playerGridView ), 1 ) if(playerName ~= false and playerName ~= nil and playerName ~= "") then triggerServerEvent("getallstats",getRootElement(),getPlayerFromName(playerName)) end end ------------------------------------------------------------------------------------------------------------ You forgot to enter an arugment for getallstats, but you did require one on your serverside. Link to comment
Nameless Posted July 25, 2012 Author Share Posted July 25, 2012 Ty for replying AeroXbird, but I didnt forgot the argument. Link to comment
sockz Posted July 25, 2012 Share Posted July 25, 2012 thePlayer = serverside use localPlayer = client when triggering it serverside, use source. Link to comment
Jaysds1 Posted July 25, 2012 Share Posted July 25, 2012 serverside, use source. or client. Link to comment
Nameless Posted July 26, 2012 Author Share Posted July 26, 2012 Thanks for replying guys, but I really have no idea how to solve my problem.. Link to comment
Nameless Posted July 27, 2012 Author Share Posted July 27, 2012 Hi all, I fixed the problem: I deleted the returnAllStats function and put the triggerClientEvent(source, "showStats", getRootElement(), money, points, matches, first, second, third, kills) on the triggerEvent("returnallstats", getRootElement() , money, points, matches, firstplace, secondplace, thirdplace, kills ) his place. Now the 'source' is the player who opened the window or clicked the gridlist. Thanks for helping me! Cheers, Nameless 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