Maurize Posted May 20, 2012 Share Posted May 20, 2012 i want to retrieve the number of specific players... for example: local players = getElementsByType( "player" ) for i, v in ipairs( players ) do if ( getDatabase( v, "Admin" ) > 0 ) then -- And now? I have to get all players which have this data "true" to a number and trigger it to client to fill the playerlist with this data... thanks, Link to comment
Castillo Posted May 20, 2012 Share Posted May 20, 2012 function getAdmins ( ) local players = { } for i, v in ipairs ( getElementsByType ( "player" ) ) do if ( getDatabase ( v, "Admin" ) > 0 ) then table.insert ( players, v ) end end return players end To count the players you can do: #getAdmins ( ) Link to comment
Maurize Posted May 20, 2012 Author Share Posted May 20, 2012 maybe a shorter way? check this so u see what i mean:) addEvent( "onElementDataServer", true ) addEventHandler( "onElementDataServer", elementPlayer, function() local playerOnline = getPlayerCount() local playerMax = getMaxPlayers() local players = getElementsByType( "player" ) for i, v in ipairs( players ) do if ( getDatabase( v, "Fraktion" ) == 1 ) then playerPolice = elseif ( getDatabase( v, "Fraktion" ) == 2 ) then playerBallas = end if ( getDatabase( v, "Admin" ) > 0 ) then playerAdmins = end end local resourceVersion = getResourceInfo( resourceRoot, "version" ) triggerClientEvent( "onElementDataInfos", source, playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) end end ) Link to comment
Jaysds1 Posted May 20, 2012 Share Posted May 20, 2012 (edited) try this: addEvent( "onElementDataServer", true ) addEventHandler( "onElementDataServer", elementPlayer,function() local playerOnline = getPlayerCount() local playerMax = getMaxPlayers() local players = getElementsByType( "player" ) playerBallas = 0 -- Add variable before the loop and define it as 0 playerPolice = 0 playerAdmins = 0 for i, v in ipairs( players ) do if ( getDatabase( v, "Fraktion" ) == 1 ) then playerPolice = playerPolice+1 --add 1 for every person that's on this team elseif ( getDatabase( v, "Fraktion" ) == 2 ) then playerBallas = playerBallas+1 end if ( getDatabase( v, "Admin" ) > 0 ) then playerAdmins = playerAdmins+1 end end local resourceVersion = getResourceInfo( resourceRoot, "version" ) triggerClientEvent( "onElementDataInfos", source, playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) end end ) Edited May 20, 2012 by Guest Link to comment
Castillo Posted May 20, 2012 Share Posted May 20, 2012 addEvent ( "onElementDataServer", true ) addEventHandler ( "onElementDataServer", elementPlayer, function ( ) local playerOnline = getPlayerCount ( ) local playerMax = getMaxPlayers ( ) local players = getElementsByType ( "player" ) local policePlayers = { } local ballasPlayers = { } local adminPlayers = { } for i, v in ipairs( players ) do if ( getDatabase( v, "Fraktion" ) == 1 ) then table.insert ( policePlayers, v ) elseif ( getDatabase( v, "Fraktion" ) == 2 ) then table.insert ( ballasPlayers, v ) end if ( getDatabase( v, "Admin" ) > 0 ) then table.insert ( adminPlayers, v ) end end local resourceVersion = getResourceInfo ( resourceRoot, "version" ) triggerClientEvent ( "onElementDataInfos", source, playerOnline, playerMax, policePlayers, ballasPlayers, adminPlayers, resourceVersion ) end ) Link to comment
Maurize Posted May 20, 2012 Author Share Posted May 20, 2012 so far so good... now it seems to be a problem client side.. addEvent( "onElementDataInfos", true ) bindKey( "tab", "both", function() if ( guiGetVisible( guiElement1 ) == false ) then guiSetVisible( guiElement1, true ) guiGridListClear(guiElement2) triggerServerEvent( "onElementDataServer", elementPlayer ) addEventHandler( "onElementDataInfos", elementPlayer, function( playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) pOnline = playerOnline pMax = playerMax pPolice = playerPolice pBallas = playerBallas pAdmins = playerAdmins rVersion = resourceVersion end ) guiSetText( guiElement3, pOnline.."/"..pMax.." Spieler online!" ) guiSetText( guiElement4, pPolice.." Polizisten online!" ) guiSetText( guiElement5, pBallas.." Ballas online!" ) guiSetText( guiElement6, pAdmins.." Admins online!" ) guiSetText( guiElement7, "Resource Version: "..rVersion ) for id, player in ipairs( getElementsByType( "player" ) ) do triggerServerEvent( "onElementDataUpdate", player ) if ( getElementData( player, "listData1" ) > 0 ) then wanteds = getElementData( player, "listData1" ) else wanteds = 0 end local guiElement12 = guiGridListAddRow( guiElement2 ) guiGridListSetItemText( guiElement2, guiElement12, guiElement9, getPlayerName( player ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement10, getElementData( player, "listData1" ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement11, getPlayerPing( player ), false, false ) end else guiSetVisible( guiElement1, false ) end end ) "attempt to concantenate global "pMax" a nil value" .... any hints or something? btw u are a big help, mates! EDIT: if i press twice. first bug is gone but new one arrives... ( attempt to concantenate global "pPolice" a table value ) Link to comment
Jaysds1 Posted May 20, 2012 Share Posted May 20, 2012 (edited) try this: addEvent( "onElementDataInfos", true ) bindKey( "tab", "both",function() if ( guiGetVisible( guiElement1 ) == false ) then guiSetVisible( guiElement1, true ) guiGridListClear(guiElement2) triggerServerEvent( "onElementDataServer", localPlayer ) addEventHandler( "onElementDataInfos", localPlayer,function( playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) tostring(pOnline) = playerOnline tostring(pMax) = playerMax tostring(pPolice) = playerPolice tostring(pBallas) = playerBallas tostring(pAdmins) = playerAdmins tostring(rVersion) = resourceVersion end) guiSetText( guiElement3, pOnline.."/"..pMax.." Spieler online!" ) guiSetText( guiElement4, pPolice.." Polizisten online!" ) guiSetText( guiElement5, pBallas.." Ballas online!" ) guiSetText( guiElement6, pAdmins.." Admins online!" ) guiSetText( guiElement7, "Resource Version: "..rVersion ) for id, player in pairs( getElementsByType( "player" ) ) do triggerServerEvent( "onElementDataUpdate", player ) if ( getElementData( player, "listData1" ) > 0 ) then wanteds = getElementData( player, "listData1" ) else wanteds = 0 end local guiElement12 = guiGridListAddRow( guiElement2 ) guiGridListSetItemText( guiElement2, guiElement12, guiElement9, getPlayerName( player ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement10, getElementData( player, "listData1" ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement11, getPlayerPing( player ), false, false ) end else guiSetVisible( guiElement1, false ) end end ) Edited May 20, 2012 by Guest Link to comment
Castillo Posted May 20, 2012 Share Posted May 20, 2012 addEvent( "onElementDataInfos", true ) bindKey( "tab", "both", function() if ( guiGetVisible( guiElement1 ) == false ) then guiSetVisible( guiElement1, true ) guiGridListClear(guiElement2) triggerServerEvent( "onElementDataServer", elementPlayer ) addEventHandler( "onElementDataInfos", elementPlayer, function( playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) pOnline = playerOnline pMax = playerMax pPolice = playerPolice pBallas = playerBallas pAdmins = playerAdmins rVersion = resourceVersion end ) guiSetText( guiElement3, playerOnline.."/"..playerMax.." Spieler online!" ) guiSetText( guiElement4, #playerPolice.." Polizisten online!" ) guiSetText( guiElement5, #playerBallas.." Ballas online!" ) guiSetText( guiElement6, #playerAdmins.." Admins online!" ) guiSetText( guiElement7, "Resource Version: "..rVersion ) for id, player in ipairs( getElementsByType( "player" ) ) do triggerServerEvent( "onElementDataUpdate", player ) if ( getElementData( player, "listData1" ) > 0 ) then wanteds = getElementData( player, "listData1" ) else wanteds = 0 end local guiElement12 = guiGridListAddRow( guiElement2 ) guiGridListSetItemText( guiElement2, guiElement12, guiElement9, getPlayerName( player ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement10, getElementData( player, "listData1" ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement11, getPlayerPing( player ), false, false ) end else guiSetVisible( guiElement1, false ) end end ) Link to comment
Maurize Posted May 20, 2012 Author Share Posted May 20, 2012 both are buggy... unexpected symbol near jaysds tostring( .. ) things and castillo, yours is buggy, too -> "attempt to concantenate global "pMax" a nil value" .. :> addEvent( "onElementDataInfos", true ) bindKey( "tab", "both", function() if ( guiGetVisible( guiElement1 ) == false ) then guiSetVisible( guiElement1, true ) guiGridListClear(guiElement2) triggerServerEvent( "onElementDataServer", elementPlayer ) addEventHandler( "onElementDataInfos", elementPlayer, function( playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) pOnline = playerOnline pMax = playerMax pPolice = playerPolice pBallas = playerBallas pAdmins = playerAdmins rVersion = resourceVersion end ) guiSetText( guiElement3, pOnline.."/"..pMax.." Spieler online!" ) guiSetText( guiElement4, #pPolice.." Polizisten online!" ) guiSetText( guiElement5, #pBallas.." Ballas online!" ) guiSetText( guiElement6, #pAdmins.." Admins online!" ) guiSetText( guiElement7, "Resource Version: "..rVersion ) for id, player in ipairs( getElementsByType( "player" ) ) do triggerServerEvent( "onElementDataUpdate", player ) if ( getElementData( player, "listData1" ) > 0 ) then wanteds = getElementData( player, "listData1" ) else wanteds = 0 end local guiElement12 = guiGridListAddRow( guiElement2 ) guiGridListSetItemText( guiElement2, guiElement12, guiElement9, getPlayerName( player ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement10, getElementData( player, "listData1" ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement11, getPlayerPing( player ), false, false ) end else guiSetVisible( guiElement1, false ) end end ) -- fixed some formal things. Link to comment
Jaysds1 Posted May 20, 2012 Share Posted May 20, 2012 try this: addEvent( "onElementDataInfos", true ) bindKey( "tab", "both", function() if ( guiGetVisible( guiElement1 ) == false ) then guiSetVisible( guiElement1, true ) guiGridListClear(guiElement2) triggerServerEvent( "onElementDataServer", elementPlayer ) addEventHandler( "onElementDataInfos", elementPlayer,function( playerOnline, playerMax, playerPolice, playerBallas, playerAdmins, resourceVersion ) pOnline = tostring(playerOnline) pMax = tostring(playerMax) pPolice = tostring(playerPolice) pBallas = tostring(playerBallas) pAdmins = tostring(playerAdmins) rVersion = tostring(resourceVersion) end ) guiSetText( guiElement3, pOnline.."/"..pMax.." Spieler online!" ) guiSetText( guiElement4, pPolice.." Polizisten online!" ) guiSetText( guiElement5, pBallas.." Ballas online!" ) guiSetText( guiElement6, pAdmins.." Admins online!" ) guiSetText( guiElement7, "Resource Version: "..rVersion ) for id, player in ipairs( getElementsByType( "player" ) ) do triggerServerEvent( "onElementDataUpdate", player ) if ( getElementData( player, "listData1" ) > 0 ) then wanteds = getElementData( player, "listData1" ) else wanteds = 0 end local guiElement12 = guiGridListAddRow( guiElement2 ) guiGridListSetItemText( guiElement2, guiElement12, guiElement9, getPlayerName( player ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement10, getElementData( player, "listData1" ), false, false ) guiGridListSetItemText( guiElement2, guiElement12, guiElement11, getPlayerPing( player ), false, false ) end else guiSetVisible( guiElement1, false ) end end ) Link to comment
Maurize Posted May 20, 2012 Author Share Posted May 20, 2012 nice one:D data is now a string with random letters and numbers:D fuck, this shit is complicated as hell! Link to comment
Maurize Posted May 20, 2012 Author Share Posted May 20, 2012 I solved problems:) i've triggered the data from server at spawn, so the data is already here if he opens the first time. So EVERYTHING WORKS! Good job! Jaysds1 as always, you are the best! And castillo, you of cause, too! Thanks alot! 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