wesssley Posted February 25, 2023 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.
Doongogar Posted February 25, 2023 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
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators 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
wesssley Posted February 25, 2023 Author 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
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators 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
wesssley Posted February 26, 2023 Author 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
Other Languages Moderators Lord Henry Posted February 26, 2023 Other Languages Moderators 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
Recommended Posts