Giovany Mito Posted August 6, 2019 Share Posted August 6, 2019 olá, Então galera estou querendo fazer um script para a cada 20 minutos aparecer uma mensagem no chatbox no exemplo : - Servidor - O Time BALLAS é o maior online no momento com 10 Players Online Aparecer o time com mais players online a cada 20 minuto, como seria possivel Link to comment
DNL291 Posted August 6, 2019 Share Posted August 6, 2019 time = team ? Obter o team com mais players: getElementsByType countPlayersInTeam Timer + msg no chat: setTimer outputChatBox Link to comment
Giovany Mito Posted August 6, 2019 Author Share Posted August 6, 2019 (edited) 52 minutes ago, DNL291 said: time = team ? Obter o team com mais players: getElementsByType countPlayersInTeam Timer + msg no chat: setTimer outputChatBox Seria mais o menos isso ? function TOPTeamCont() local teams = getElementsByType("team") for i,team in ipairs(teams) do local teamName = getTeamName(team) outputChatBox ("#1a6cef**#FFFFFF[#1a6cefFW-INFORMA#FFFFFF]#e0e0e0A Maior Equipe Online no Momento é a ".. teamName .." , #FFFFFF Com[#1a6cef" .. countPlayersInTeam ( teamName ) .. "#FFFFFF]#e0e0e0 Online",getRootElement(),255,255,255,true) end end setTimer(TOPTeamCont, 5000, 100) Edited August 6, 2019 by Giovany Mito Link to comment
[M]ister Posted August 6, 2019 Share Posted August 6, 2019 (edited) local equipes = {} setTimer(function() if (#getElementsByType("team") > 0) then for _, team in ipairs(getElementsByType("team")) do table.insert(equipes,{nome = getTeamName(team),membros = countPlayersInTeam(team)}) end table.sort(equipes, function(a,b) return a.membros > b.membros end) if (equipes[1].membros > 0) then outputChatBox("Maior equipe: "..equipes[1].nome.." - "..equipes[1].membros.." membro(s)") end end end,5000,0) Edited August 6, 2019 by MaligNos 1 1 Link to comment
Giovany Mito Posted August 6, 2019 Author Share Posted August 6, 2019 Parece que funcionou vou testar com mais players Obrigado Link to comment
DNL291 Posted August 6, 2019 Share Posted August 6, 2019 No seu código o loop ta certo mas faltou a verificação do team com mais players. O código do MaligNos deve funcionar. Mas vou postar aqui a função que fiz que fará o mesmo, mas sem o table.insert/table.sort que tem um tempo na execução um pouco maior: local minutos = 20 function getTeamWithMorePlayers() local teams = getElementsByType("team") if #teams == 0 then return false end local teamName = false local highestTeamPlayerCount = 0 for _,team in pairs(teams) do local playerCount = countPlayersInTeam(team) if playerCount > highestTeamPlayerCount then highestTeamPlayerCount = playerCount teamName = getTeamName(team) end end return teamName, highestTeamPlayerCount end function TOPTeamCont() local teamName, playerCount = getTeamWithMorePlayers() if teamName and playerCount then outputChatBox ("#1a6cef**#FFFFFF[#1a6cefFW-INFORMA#FFFFFF]#e0e0e0A Maior Equipe Online no Momento é a ".. teamName .." , #FFFFFF Com[#1a6cef" .. playerCount .. "#FFFFFF]#e0e0e0 Online",getRootElement(),255,255,255,true) end end setTimer( TOPTeamCont, minutos * 60000, 0 ) Também, ali em minutos eu criei a variável do intervalo da execução do timer (que será a cada 20 minutos). 1 Link to comment
Giovany Mito Posted August 6, 2019 Author Share Posted August 6, 2019 2 minutes ago, DNL291 said: No seu código o loop ta certo mas faltou a verificação do team com mais players. O código do MaligNos deve funcionar. Mas vou postar aqui a função que fiz que fará o mesmo, mas sem o table.insert/table.sort que tem um tempo na execução um pouco maior: local minutos = 20 function getTeamWithMorePlayers() local teams = getElementsByType("team") if #teams == 0 then return false end local teamName = false local highestTeamPlayerCount = 0 for _,team in pairs(teams) do local playerCount = countPlayersInTeam(team) if playerCount > highestTeamPlayerCount then highestTeamPlayerCount = playerCount teamName = getTeamName(team) end end return teamName, highestTeamPlayerCount end function TOPTeamCont() local teamName, playerCount = getTeamWithMorePlayers() if teamName and playerCount then outputChatBox ("#1a6cef**#FFFFFF[#1a6cefFW-INFORMA#FFFFFF]#e0e0e0A Maior Equipe Online no Momento é a ".. teamName .." , #FFFFFF Com[#1a6cef" .. playerCount .. "#FFFFFF]#e0e0e0 Online",getRootElement(),255,255,255,true) end end setTimer( TOPTeamCont, minutos * 60000, 0 ) Também, ali em minutos eu criei a variável do intervalo da execução do timer (que será a cada 20 minutos). Entendi, obrigado pela ajuda. qual função ai no script faz que puxe o time com mais player ? Link to comment
DNL291 Posted August 6, 2019 Share Posted August 6, 2019 É uma verificação dentro do loop, em cada time eu obtenho os players e verifico se é maior que o do time anterior, se for armazeno na variável teamName. Daí no final do loop o valor da variável (teamName e highestTeamPlayerCount) serão correspondentes ao time com mais players. Se você quiser fazer uma classificação do time com mais players até o que menos têm, a função do MaligNos vai ser útil @Giovany Mito 1 Link to comment
Giovany Mito Posted August 6, 2019 Author Share Posted August 6, 2019 4 minutes ago, DNL291 said: É uma verificação dentro do loop, em cada time eu obtenho os players e verifico se é maior que o do time anterior, se for armazeno na variável teamName. Daí no final do loop o valor da variável (teamName e highestTeamPlayerCount) serão correspondentes ao time com mais players. Se você quiser fazer uma classificação do time com mais players até o que menos têm, a função do MaligNos vai ser útil @Giovany Mito Entendi, com esse do malignos então no caso se eu quiser fazer um comando de rank tipo aparecer 5 team dentro de um DX por exemplo, da certo ? Tipo um em baixo do outro, 1 maior até o 5 maior Link to comment
Giovany Mito Posted August 6, 2019 Author Share Posted August 6, 2019 3 minutes ago, DNL291 said: Sim. Entendi Vou tentar Fazer isso aqui então, Muito Obrigado Link to comment
[M]ister Posted August 6, 2019 Share Posted August 6, 2019 20 hours ago, MaligNos said: local equipes = {} setTimer(function() if (#getElementsByType("team") > 0) then for _, team in ipairs(getElementsByType("team")) do table.insert(equipes,{nome = getTeamName(team),membros = countPlayersInTeam(team)}) end table.sort(equipes, function(a,b) return a.membros > b.membros end) if (equipes[1].membros > 0) then outputChatBox("Maior equipe: "..equipes[1].nome.." - "..equipes[1].membros.." membro(s)") end end end,5000,0) Faltou um resete no array, daquele jeito só vai acumulando os valores a cada execução... um simples: equipes = {} na linha 3 já resolve. 1 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