Jump to content

Ajuda Players online Team


Recommended Posts

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 by Giovany Mito
Link to comment
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 by MaligNos
  • Like 1
  • Thanks 1
Link to comment
  • Moderators

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

  • Thanks 1
Link to comment
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
  • Moderators

É 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

  • Thanks 1
Link to comment
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
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.

  • Thanks 1
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...