Jump to content

É possível saber/obter ElementData?


Recommended Posts

queria saber se é possível obter por algum comando quantas pessoas estão com certo ElementData, alguém poderia me ajudar com isso?

Exemplo:
tem uma ElementData no meu servidor que seta no player quando o mesmo entra em serviço quando dá certo comando em tal local.
O ElementData é "TrabalhoPolicia"
Queria saber se através de um comando, como por exemplo "/policiais", tem como mostrar quantos jogadores estão com este ElementData.

 

Link to comment

pra isso você teria que usar a mesma linha de racíocinio do seu chat
 

function Policiais(thePlayer)
    for i,players in pairs(getElementsByType("player")) do -- loop que pega todos os elementos do tipo player
    local policiais = getElementData(players, "TrabalhoPolicia") -- filtra o loop para somente quem tem o elementdata
        if policiais == true then -- se o elementdata for igual a true então...
		outputChatBox("Existem "..tonumber(policiais).." Em Serviço", thePlayer, 255, 255, 255, true) -- mostra quantos existem para quem executou o comando
        end -- fecha o if
    end -- fecha o loop
end -- fecha a função
addCommandHandler("ptr", Policiais) -- seta o comando ptr na função

pode dar algo de errado ja q n testei, n sei ao certo se vai funcionar

  • Like 1
Link to comment
  • Other Languages Moderators

@SciptNovato dará erro pois tonumber(policiais) não consegue converter true pra número.

@wesssley tente isso:

function obterPoliciais(thePlayer)
    local contador = 0
    for _, player in pairs(getElementsByType("player")) do -- Para cada jogador conectado no server, faça:
        local policial = getElementData(player, "TrabalhoPolicia") -- Obtém a data TrabalhoPolicia deste jogador, será false se ele não tiver.
        if policial then -- Se o jogador tem essa elementData, então:
            contador = contador + 1 -- Acrescenta +1 na contagem de policiais.
        end -- Fecha o if
    end -- Fecha o loop
    outputChatBox("Existem "..contador.." policiais em serviço.", thePlayer) -- Mostra quantos policiais existem para quem executou o comando
end -- Fecha a função
addCommandHandler("policiais", obterPoliciais) -- Comando para ativar essa função: /policiais

 

  • Like 1
  • Thanks 1
Link to comment


Obrigado @Lord Henry e ScriptNovato.

Queria tirar outra dúvida, como faço a checagem de skin tambem? Queria fazer o seguinte:

Se o jogador possui o ElementData "TrabalhoPolicia" e estiver com certa skin, por exemplo, skin de id 2 ele recebesse certa quantidade de valor depois de um determinado tempo.

Tentei getElementModel, mas não consegui, irei colocar o código normal aqui.

 

Dinheiroganho = 5000
PlayersM = 1 
function salario (thePlayer)
    for i,player in ipairs(getElementsByType("player")) do
        if ( player ) then
                    if getElementData(player, "TrabalhoPolicia") then
					local players = getPlayerCount()
					if players >= PlayersM then

                            givePlayerMoney(player,Dinheiroganho)
                             outputChatBox("Você recebeu seu salário", player, 255,0,0, true)	-- output teste
							
							else
                             outputChatBox("Você não tem recebeu seu salário por não ter mais de 10 players online", player, 255,0,0, true)	 -- output teste						
							end
                    end
                end
            end
        end
setTimer(salario,3000,0)   ----- milissegundos

 

Edited by wesssley
Link to comment
  • Other Languages Moderators

Considere que GivePlayerMoney só funciona server-side. Pois se você fizer client-side, ele muda só na HUD mas não dá dinheiro de verdade.

Faça assim: (server-side)

Dinheiroganho = 5000
PlayersM = 1

function salario (thePlayer)
    local players = getElementsByType("player")
    for i,player in ipairs(players) do
        if isElement(player) then
            if getElementData(player, "TrabalhoPolicia") and getElementModel(player) == 0 then -- No lugar de 0, coloque o ID da skin que você quer verificar.
                if #players >= PlayersM then
                    givePlayerMoney(player, Dinheiroganho)
                    outputChatBox("Você recebeu seu salário", player, 255, 0, 0, true) -- output teste
                else
                    outputChatBox("Você não recebeu seu salário por não ter mais de "..PlayersM.." players online", player, 255, 0, 0, true) -- output teste
                end
            end
        end
    end
end
setTimer(salario, 3000, 0) -- milissegundos

 

Edited by Lord Henry
Link to comment

Muito bom, e deixa eu perguntar, em relação a tabela, é possível fazer uma "tabela" na qual ficaria os ids das skins, caso seja mais de uma skin? para o script não ficar com vários " getElementModel(player) ==

local IDSKIN = {
    {2},
    {122}
}

e em 

getElementModel(player) == 0
tentei 
getElementModel(player) == ..IDSKIN
tentei de outras formas porém não consegui fazer de forma alguma

(Não sei se tabela é o termo certo pra isso)

Edited by wesssley
Link to comment
  • Other Languages Moderators
local Dinheiroganho = 5000
local PlayersM = 1
local skinIDs = {2, 122}

function salario (thePlayer)
    local players = getElementsByType("player") -- Players recebe todos os jogadores conectados no server.
    for i,player in ipairs(players) do -- Para cada player conectado no server, faça:
        if isElement(player) then -- Se player ainda é um elemento, então:
            if getElementData(player, "TrabalhoPolicia") then -- Se player tem essa elementData, então:
                for i,id in ipairs(skinIDs) do -- Para cada id da tabela skinIDs, faça:
                    if getElementModel(player) == id then -- Se o ID da skin do player é um ID da tabela, então:
                        if #players >= PlayersM then -- Se tem mais jogadores do que o necessário para receber salário, então:
                            givePlayerMoney(player, Dinheiroganho) -- Dá dinheiro pro policial.
                            outputChatBox("Você recebeu seu salário", player, 255, 0, 0, true) -- output teste
                        else -- Se não tem jogadores online suficiente, então:
                            outputChatBox("Você não recebeu seu salário pois não tem mais do que "..PlayersM.." players online", player, 255, 0, 0, true) -- output teste
                        end
                        break -- Para de verificar os outros IDs da tabela de skins e sai deste loop, pois já encontrou o ID correto.
                    end
                end
            end
        end
    end
end
setTimer(salario, 3000, 0) -- milissegundos

 

Edited by Lord Henry
  • Thanks 1
Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...