wesssley Posted February 25, 2023 Share Posted February 25, 2023 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
Doongogar Posted February 25, 2023 Share Posted February 25, 2023 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 1 Link to comment
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators Share Posted February 25, 2023 @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 1 1 Link to comment
wesssley Posted February 25, 2023 Author Share Posted February 25, 2023 (edited) 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 February 25, 2023 by wesssley Link to comment
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators Share Posted February 25, 2023 (edited) 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 February 25, 2023 by Lord Henry Link to comment
wesssley Posted February 26, 2023 Author Share Posted February 26, 2023 (edited) 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 February 26, 2023 by wesssley Link to comment
Other Languages Moderators Lord Henry Posted February 26, 2023 Other Languages Moderators Share Posted February 26, 2023 (edited) 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 February 26, 2023 by Lord Henry 1 Link to comment
Recommended Posts