Jump to content

A short question. Nothing difficulty. Simple one!:D


Maurize

Recommended Posts

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

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

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 by Guest
Link to comment
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

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

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 by Guest
Link to comment
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

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

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

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

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