acp___(PL) Posted April 11, 2010 Share Posted April 11, 2010 Optional Arguments(...) * arguments...: A list of arguments to trigger with the event. You can pass any lua data type (except functions). You can also pass elements. table to?? executeSQLQuery( "SELECT player_nick, player_points FROM stats_mm WHERE player_points > 0" ) 1. wants all the rows in which the players have some points 2. I am interested in the column: player_nick, player_points 3. table called: stats_mm server side line 13 - triggerClientEvent ( "onPlayerReSortMeTableRankMM", g_Root, countPlayersInMM, tablePlayersInMM ) function pointsMM_endRace (rank_mm) local allPlayersPointsMM = executeSQLQuery( "SELECT player_nick, player_points FROM stats_mm WHERE player_points > 0" ) local countPlayersInMM = 0 local tablePlayersInMM = {} for i, playerdata in ipairs(allPlayersPointsMM) do tablePlayersInMM[i] = {} tablePlayersInMM[i][1] = playerdata[player_nick] tablePlayersInMM[i][2] = playerdata[player_points] countPlayersInMM = countPlayersInMM + 1 end setElementData ( source, "Points MM", playerPointsMMresult ) triggerClientEvent ( source, "onPlayerShowIlePunktowZaWyscigInMM", g_Root, playerPointsInMM, placesInMM ) triggerClientEvent ( "onPlayerReSortMeTableRankMM", g_Root, countPlayersInMM, tablePlayersInMM ) triggerClientEvent ( source, "onPlayerShowMeTableRankMM", g_Root, 30 ) outputDebugString("IV MM: " ..namePlayerMM.. " has finisched " ..placesInMM.. "/" ..playerPointsInMM.. "/" ..playerPointsMMresult, 3, 0, 0, 255) else end end client side both the value in line 20 do not exist line 20 - while countBombelkowanie > 0 and sortBombelkowanieEnd > 0 do function algorytmSortowania (the_numberActivPlayersInMM, the_the_table) local countPlayersInMM = 0 for i, k in ipairs(listaTop10points) do listaTop10points[i] = nil end local playerValue = the_numberActivPlayersInMM while playerValue > 0 do countPlayersInMM = countPlayersInMM + 1 listaTop10name[countPlayersInMM] = the_the_table[playerValue][1] listaTop10points[countPlayersInMM] = the_the_table[playerValue][2] playerValue = playerValue - 1 end local countBombelkowanie = countPlayersInMM - 1 local sortBombelkowanieEnd = countBombelkowanie - 1 local iterowanieBombelkowania = 0 while countBombelkowanie > 0 and sortBombelkowanieEnd > 0 do iterowanieBombelkowania = iterowanieBombelkowania + 1 outputConsole("algorytmSortowania while countBombelkowanie > 0 and sortBombelkowanieEnd > 0 do - c=" ..countBombelkowanie.. "/s=" ..sortBombelkowanieEnd.. "/i=" ..iterowanieBombelkowania ) countBombelkowanie = countBombelkowanie - 1 if listaTop10points[iterowanieBombelkowania] < listaTop10points[iterowanieBombelkowania + 1] then local tempNick = listaTop10name[iterowanieBombelkowania] local tempPoints = listaTop10points[iterowanieBombelkowania] listaTop10name[iterowanieBombelkowania] = listaTop10name[iterowanieBombelkowania + 1] listaTop10points[iterowanieBombelkowania] = listaTop10points[iterowanieBombelkowania + 1] listaTop10name[iterowanieBombelkowania + 1] = tempNick listaTop10points[iterowanieBombelkowania + 1] = tempPoints end if countBombelkowanie == 0 then countBombelkowanie = sortBombelkowanieEnd sortBombelkowanieEnd = sortBombelkowanieEnd - 1 iterowanieBombelkowania = 0 end end end function playerReSortMeTableRankMM (theCountPlayersInMM, the_table) algorytmSortowania(theCountPlayersInMM, the_table) end addEvent( "onPlayerReSortMeTableRankMM", true ) addEventHandler( "onPlayerReSortMeTableRankMM", g_Root, playerReSortMeTableRankMM ) Link to comment
Gamesnert Posted April 11, 2010 Share Posted April 11, 2010 You can pass any lua data type (except functions). A table is not a function, so you can send it. Link to comment
acp___(PL) Posted April 11, 2010 Author Share Posted April 11, 2010 is it the correct way to export table?? script still not working, but did not notify me of errors ... server side: function pointsMM_endRace (rank_mm) local allPlayersPointsMM = executeSQLQuery( "SELECT player_nick, player_points FROM stats_mm WHERE player_points > 0" ) local countPlayersInMM = 0 local tablePlayersInMMnick = {} local tablePlayersInMMpoints = {} for i, playerdata in ipairs(allPlayersPointsMM) do tablePlayersInMMnick[i] = playerdata[player_nick] tablePlayersInMMpoints[i] = playerdata[player_points] countPlayersInMM = countPlayersInMM + 1 end setElementData ( source, "Points MM", playerPointsMMresult ) triggerClientEvent ( source, "onPlayerShowIlePunktowZaWyscigInMM", g_Root, playerPointsInMM, placesInMM ) triggerClientEvent ( "onPlayerReSortMeTableRankMM", g_Root, countPlayersInMM, unpack(tablePlayersInMMnick), unpack(tablePlayersInMMpoints)) triggerClientEvent ( source, "onPlayerShowMeTableRankMM", g_Root, 30 ) outputDebugString("IV MM: " ..namePlayerMM.. " has finisched " ..placesInMM.. "/" ..playerPointsInMM.. "/" ..playerPointsMMresult, 3, 0, 0, 255) end end client side: function playerReSortMeTableRankMM (theCountPlayersInMM, ...) for i, k in ipairs(listaTop10points) do listaTop10points[i] = nil end local arg = {...} local j = 1 for i,v in ipairs(arg) do if i <= theCountPlayersInMM then listaTop10name[i] = arg[i] else listaTop10points[j] = arg[i] j = j + 1 end end algorytmSortowania(theCountPlayersInMM) end addEvent( "onPlayerReSortMeTableRankMM", true ) addEventHandler( "onPlayerReSortMeTableRankMM", g_Root, playerReSortMeTableRankMM ) Link to comment
PacMan Posted April 11, 2010 Share Posted April 11, 2010 triggerClientEvent ( "onPlayerReSortMeTableRankMM", g_Root, countPlayersInMM, unpack(tablePlayersInMMnick), unpack(tablePlayersInMMpoints)) In this example, you are call two unpack functions together, the syntax Lua is unacceptable, you first have to pack everything into one table, and then unpack it. Link to comment
acp___(PL) Posted April 14, 2010 Author Share Posted April 14, 2010 my table: how it will look like Table: allPlayersPointsMM local allPlayersPointsMM = executeSQLQuery( "SELECT player_nick, player_points FROM stats_mm WHERE player_points > 0" ) to do so as described above post does I need to use this: local allPlayersPointsMMpoints = executeSQLQuery( "SELECT player_nick FROM stats_mm WHERE player_points > 0" ) local allPlayersPointsMMnick = executeSQLQuery( "SELECT player_points FROM stats_mm WHERE player_points > 0" ) Link to comment
50p Posted April 14, 2010 Share Posted April 14, 2010 You don't have to query twice, just do it once and send the table returned from query to client. You can send tables with trigger(Client/Server)Event easily. Link to comment
acp___(PL) Posted April 14, 2010 Author Share Posted April 14, 2010 1) it must work: local allPlayersPointsMM = executeSQLQuery( "SELECT player_nick, player_points FROM stats_mm WHERE player_points > 0" ) triggerClientEvent ( "onPlayerReSortMeTableRankMM", g_Root, allPlayersPointsMM) 2) client-side: local tablePlayersInMM = {} for i, playerdata in ipairs(allPlayersPointsMM) do tablePlayersInMM[i] = {} tablePlayersInMM[i][1] = playerdata[player_nick] tablePlayersInMM[i][2] = playerdata[player_points] outputDebugString("function pointsMM_endRace (rank_mm) - nick: " ..playerdata[player_nick].. "/points: " ..playerdata[player_points], 3, 255, 0, 255) end Link to comment
vovo4ka Posted April 14, 2010 Share Posted April 14, 2010 Your table is very simple. One column should be the key. Two other easier to keep as 2 columns. Else you can try to store data in dbase table using lua user-data directly. But I am sure that this will not work due different data types (but you can try to use BLOB type). The best solution for this, in my opinion, to use serialization(convert table to string, store, and then parse) Link to comment
acp___(PL) Posted April 18, 2010 Author Share Posted April 18, 2010 (edited) you were write that the table can be sent in triggerClientEvent and server-side I do not have the error but the client side does not work what I'm doing wrong, how to draw nick and points from this table the entire table client-side is empty? or bad draw from the table information? server side: function pointsMM_endRace (rank_mm) local allPlayersPointsMM = executeSQLQuery( "SELECT player_nick, player_points FROM stats_mm WHERE player_points > 0" ) triggerClientEvent ( "onPlayerReSortMeTableRankMM", g_Root, allPlayersPointsMM) end addEvent('onPlayerFinish') addEventHandler('onPlayerFinish', g_Root , pointsMM_endRace) addEvent('onPlayerFinish') addEventHandler('onPlayerFinish', g_Root , pointsMM_endRace) client side: local listaTop10name = {} local listaTop10points = {} function playerReSortMeTableRankMM(the_allPlayersPointsMM) for i, k in ipairs(listaTop10points) do listaTop10points[i] = nil end local playersCountedInMM = 0 for i, playerdata in ipairs(the_allPlayersPointsMM) do listaTop10name = playerdata[player_nick] listaTop10points = playerdata[player_points] playersCountedInMM = i outputDebugString("function playerReSortMeTableRankMM(the_allPlayersPointsMM) - nick: " ..playerdata[player_nick].. "/points: " ..playerdata[player_points], 3, 255, 0, 255) end algorytmSortowania(playersCountedInMM) end addEvent( "onPlayerReSortMeTableRankMM", true ) addEventHandler( "onPlayerReSortMeTableRankMM", g_Root, playerReSortMeTableRankMM ) error on the client side: ERROR: ...ods\deathmatch\resources\2paq-mm\stats-mm_client.lua:12: attempt to concatenate field '?' (a nil value) Edited April 19, 2010 by Guest Link to comment
50p Posted April 18, 2010 Share Posted April 18, 2010 What line you get this error at? If you showed all your code here then you don't have player_nick variable declared anywhere. You try to get what's in table by variable which doesn't exist (thus 'nil value'). Use either: playerdata.player_nick or playerdata[ "player_nick" ]. 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